Come archiviare in modo sicuro i dettagli SSN in un database mantenendo le ricerche?

2

La mia domanda è molto simile a questo , ma nella mia situazione non ho bisogno di recuperare il valore reale. La mia preoccupazione con il semplice hashing del valore è che poiché c'è un numero finito e (relativamente) piccolo di SSN possibile è che sarebbe troppo facile forzare i SSN.

L'SSN sarà davvero usato come valore di ricerca per i record multipli . La mia idea è di fare in modo che il server delle applicazioni esegua l'hash in chiaro usando un algoritmo lento come PBKDF2 con un salt statico. Il server delle applicazioni invia questi dati al server crittografico, che crittografa i dati con AES-256 in modalità CBC con un IV statico. I dati crittografati vengono quindi sottoposti a hashing con SHA-256 e questo viene inserito nel database come stringa esadecimale.

Ecco un diagramma di flusso:

Credochequestosiaunmodellomoltosicuropoichél'aggressoreavrebbebisognodiunaforzabruta:

  1. Idaticrittografati(minimo256bit!)
  2. L'IV(minimodi128bit.Puòesserearbitrariamentegrandepurchélasualunghezzasiaunmultiplodelladimensionedelblocco(16))
  3. Iltasto(altri256bit)
  4. IlsaleSSN(puòesserearbitrariamentegrande)
  5. SSN(1000000000opzioni-moltovelocedacalcolaremaconunalgoritmodihashinglentocivorràunpo'perottenerletutte)

Perquantomiriguarda,ilmiocollegahadueproblemi:

  1. VuoleassicurarsichenoncisianoduplicatidicifrarinelDB
  2. Ricerche.Avevaesaminatoalcunidocumentichedescrivevanolacrittografiasimmetricaricercabile( link 1 , < a href="http://outsourcedbits.org/2014/08/21/how-to-search-on-encrypted-data-searchable-symmetric-encryption-part-5/"> link 2 , < a href="http://bristolcrypto.blogspot.com/2013/11/how-to-search-on-encrypted-data-in.html"> link 3 ).

La mia risposta al n. 1 è che ciò richiederebbe la possibilità di recuperare il SSN in chiaro, che sarebbe anche in grado di fare un utente malintenzionato.

E per il n. 2, non sono un crittografo ma il mio ragionamento per la chiusura di queste idee è che io per primo non conosco algoritmi / librerie implementate e testate a supporto di questo, e queste abilitano la ricerca "parola chiave". A seconda di come funziona, la parola chiave in questo contesto sarebbe l'SSN e non vedo davvero come complicherebbe le cose con l'interrogazione del database.

Questa è una domanda abbastanza carica, ma il mio modello è sicuro e i miei punti sono precisi?

    
posta Lander 19.12.2014 - 05:37
fonte

0 risposte

Leggi altre domande sui tag