Invio di Sali per la generazione di chiavi

1

Sto lavorando a un progetto che utilizza una combinazione di un framework basato sul web (Django) e un'app installata (Python) ai fini dell'inserimento / caricamento dei dati. Dovrò inviare cartelle cliniche sul web e ho cercato di trovare un modo per creare un sistema che sia crittograficamente valido. Immagino di poter usare la tabella auth_user di django che contiene nomi utente e password hash e salate. Il formato predefinito per questo campo è

algorithm_____$#iter$Salt_____$_________hashedpassword_____________________
pbkdf2_sha256$100000$6ID5G1Xym$s2snCtv3UncgSfGIS49d38ksv9LYuLGEsvWQwU66/xE=

Se ho la password e il sale, posso ricreare la password con hash che voglio usare come chiave per AES. Il problema è che il sale viene creato in modo casuale da django durante la creazione della password.

La mia domanda è, creerebbe delle insicurezze per inviare il sale insieme alle informazioni crittografate?

Penso che non lo farebbe perché si presume che il sale sia conosciuto da un utente malintenzionato.

Domanda secondaria: l'AES è considerata sicura per le informazioni mediche? Ci sono delle insidie di cui dovrei essere a conoscenza?

    
posta horriblyUnpythonic 15.01.2014 - 20:54
fonte

1 risposta

1

Il consiglio standard è: Non eseguire il rollover sistema di sicurezza e si aspetta che sia sicuro, specialmente in un'area con forti norme per la sicurezza dei dati e soprattutto se sei nuovo sul campo (anche se è bello fare domande).

In primo luogo, la tua intuizione è giusta; non c'è alcun grosso problema nel rivelare il tuo sale, che non ha bisogno di essere tenuto segreto come la password (e l'hash). Tutto quello che deve essere il sale è avere un'alta probabilità di unicità (quindi tutti i conti non sono facilmente attaccabili in parallelo).

Successivamente, AES è un cifrario a blocchi sicuro e, se utilizzato in una corretta modalità di cifratura a blocchi, offre una buona dose di sicurezza. La modalità ECB deve essere assolutamente evitata in quanto perde spesso informazioni. Le modalità CBC e CTR sono sicure per mantenere il contenuto del tuo file segreto, tuttavia queste modalità non sono dotate di alcun tipo di codice di autenticazione / MAC incorporato che verifica che nessuno abbia manomesso i tuoi dati. Probabilmente dovresti utilizzare una modalità di crittografia autenticata, preferibilmente crittografica-poi-MAC .

Mi preoccupo che un intercettatore della rete possa ascoltare un cookie di sessione del server web django, quindi utilizzare quel cookie per accedere come amministratore e quindi ottenere tutti gli hash degli utenti e decrittografare tutte le informazioni inviate sopra rete a cui non dovrebbero avere accesso.

Sarei anche diffidente nei confronti di potenziali attacchi di replay (aggiungendo nonce una tantum alle richieste crittografate) o perdite di informazioni dalla dimensione delle risposte crittografate; ad esempio, se una persona anonima può presentare una richiesta al server ogni giorno per le cartelle cliniche di X e trovare la dimensione della risposta che ha visitato o non visitato di recente. Inoltre, sarei cauto su dove stanno andando le cartelle cliniche e saranno crittografati a riposo sugli hard disk dell'utente.

Mi preoccupo anche che tu stia eseguendo una registrazione di audit adeguata di chi sta visualizzando quali dati medici e se tali dati non possono essere facilmente manomessi.

Non conoscendo tutti i dettagli del tuo scenario e dei requisiti di sicurezza, penso che potrebbe essere meglio usare semplicemente TLS (precedentemente noto come SSL) con un certificato sicuro, oltre a una nota utility per fornire la crittografia completa del disco.

    
risposta data 15.01.2014 - 22:02
fonte

Leggi altre domande sui tag