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.