Usando qualsiasi algoritmo di hash per "fuzz", la carta è spesso reversibile.
Dato che ci sono solo una quantità limitata di numeri di carte, ricorda l'ultima cifra, forse una cifra di controllo. Non è necessario controllare tutto lo spazio della carta. È noto quali sono i prefissi degli emittenti delle carte, quindi esegui le tue ricerche lì. Così ora il tuo PAN a 16 cifre, ha perso l'ultima cifra per la cifra di controllo e la prima da 4 a 6 per l'emittente di carte. Non ci sono molte combinazioni di forza bruta, forse un solo PC con una GPU può farlo in poche ore.
Quindi anche i dati salati sono inutili quando puoi cercare esaurientemente l'intero spazio delle chiavi con pochi clic e un cluster AWS o maligno botnet e ottenere i risultati in un'ora. I computer sono abbastanza veloci da scorrere tutte le combinazioni per trovare l'hash che corrisponde. Il sale è generalmente noto e progettato per la protezione contro il precalcolo, ma non importa se è possibile ricalcolare rapidamente un nuovo set di dati completo basato su sale conosciuto.
Quindi ciò che è importante è l'algoritmo esatto usato in combinazione con un hash come MD5.
Qual è lo scopo di usare MD5 comunque? Se hai bisogno di un token, rappresenta un numero di carta che lo emette da uno spazio di chiavi indipendente. Un contatore sequenziale che inizia a 000000001 e crittografato con una chiave completamente segreta ti garantisce sempre un valore di output univoco per il blocco che non è completamente correlato ai dati della carta (e quindi non reversibile) senza che il database di mappatura venga compromesso.
Se hai davvero bisogno di sfogliare il numero della carta, guarda verso PBKDF2 per tutti gli usi in cui hai considerato un hash. Dal momento che è possibile riportare l'intenzione del sale rendendolo troppo costoso per la forza bruta (anche su GPU anche su cluster AWS).
Chiedi al tuo personale addetto alla conformità PCI se hai sostituito il numero 0 per A, 1 per B, ... 9 per J, ecc. e lo hai archiviato nel database se questo è abbastanza "strong".
L'uso diretto di MD5 sul numero di carta fuzz (anche con sale conosciuto) può essere interrotto al ritmo di 450 milioni / sec su una GPU (dal mio rapido google). Ricorda che abbiamo perso alcune cifre PAN in brute, quindi possiamo fare 10 cifre in 2 secondi.
Scusa se non al 100% sull'argomento, ma l'uso di MD5 per la "sicura" carta di credito sicura è uno scherzo nel 2013.