Memorizza le chiavi di crittografia su un server utilizzando Node.js e MySQL

5

Sto scrivendo un back-end / api web per un'applicazione iOS usando Node.js e MySQL. Nel mio database ho una tabella per i post. Vorrei che il contenuto dei post fosse crittografato. Supponiamo che io stia utilizzando questo AES per la crittografia.

Vorrei poter crittografare e decrittografare in modo sicuro i dati sul server. I dati inviati avanti e indietro sul client non saranno crittografati, ma inviati su HTTPS (è una buona idea)?

Le mie domande:

  1. Come dovrei generare le chiavi? Dovrebbero essere stringhe casuali?

  2. Dove dovrei memorizzare le chiavi poiché ci sarà una chiave diversa per ogni messaggio.

Modello di avversario
Mi piacerebbe proteggere contro qualcuno che ha già accesso al mio server che esegue l'API https (scritto in Node.js) e ha accesso al mio DB MySQL. Mi piacerebbe proiettare contro quella persona in grado di decodificare i dati crittografati in quella tabella. Pertanto, è importante che anche se dispongono di molti dati crittografati e di come funziona la crittografia non è possibile decodificare i dati.

    
posta Jason Silberman 19.04.2014 - 01:51
fonte

1 risposta

3

Spero di averlo capito correttamente. Il client invia un messaggio al server tramite connessione crittografata SSL. Il server riceve il messaggio e lo memorizza in un database. Sei preoccupato che se qualcuno entra nel server, può leggere il database e vedere tutti i messaggi.

Quindi, la crittografia sembra una scelta naturale. Criptare i messaggi (ognuno con una chiave diversa) prima di memorizzarli nel database. Il problema ora è, cosa fare con le chiavi. Non puoi semplicemente memorizzarli sul server mentre l'utente malintenzionato si trova sul server. Possono trovare facilmente le chiavi, estrarre l'intero database e decrittografare tutto.

Sembrerebbe che le migliori opzioni stiano memorizzando le chiavi su una macchina diversa e che la macchina esegua la crittografia / decrittografia. In questo modo l'autore dell'attacco dovrebbe prima entrare nella macchina, quindi nella macchina di crittografia / decrittografia. Non impossibile, ma si spera molto più difficile.

Un'altra opzione potrebbe essere un hardware crittografico. Questo è al di là delle mie competenze, ma le aziende vendono hardware che esegue operazioni crittografiche tra cui archiviazione, crittografia e decodifica di chiavi.

Ecco la parte difficile. Cosa impedisce all'hacker di interrogare ripetutamente l'altra macchina o l'hardware crittografico finché non ha decrittografato tutti i messaggi? Dovrai creare una sorta di rilevamento lì o qualcosa del genere.

In breve, dato il tuo modello avversario (attaccante con privilegi di root sulla scatola), il problema è piuttosto difficile. Speriamo che una di queste due opzioni ti sia utile o almeno generi altre risposte.

    
risposta data 25.04.2014 - 20:03
fonte

Leggi altre domande sui tag