Come è sicuro il troncamento secondo PCI DSS?

4

Nella sezione 3.3 dello standard PCI , si dice che durante la visualizzazione dei PAN, limitando la visibilità ai primi 6 e le ultime 4 cifre del PAN sono considerate sicure. Facendo un po 'di matematica veloce, su un PAN a 16 cifre, tenendo conto del requisito del checksum, questo lascia solo 100.000 numeri di carte alla forza bruta per ottenere quello che voglio.

Se fosse fornito anche un hash, questo sarebbe stupidamente facile da decifrare, ma cosa mi impedisce di inviare spam a qualche sito di e-commerce con uno script finché non mi dice che ho ragione? Ciò non dovrebbe richiedere molto tempo. So che dover indovinare il codice di sicurezza a 3 cifre mi porterà a supposizioni di 100M, ma non tutti usano questo codice.

Il database della mia azienda mi fornisce nome, indirizzo, tipo di carta, PAN troncato e data di scadenza della carta / titolare, e questo mi sembra un sacco di informazioni per un attacco (almeno l'ingegneria sociale). Se sto leggendo correttamente lo standard PCI, anche questo lo rispetta.

Cosa mi manca?

Sto utilizzando questa tabella pratica (pagina 2) per un rapido riferimento

    
posta Jemmy 08.05.2015 - 00:32
fonte

3 risposte

3

Penso che abbia più senso nel contesto di quante informazioni extra vengono distribuite, piuttosto che quanto sarebbe facile forzare le cifre rimanenti.

Un PAN non è interamente un valore casuale, è composto da:

  • a six-digit Issuer Identification Number (IIN) (previously called the "Bank Identification Number" (BIN)) the first digit of which is the Major Industry Identifier (MII),
  • a variable length (up to 12 digits) individual account identifier
  • a single check digit calculated using the Luhn algorithm

link

Pertanto, utilizzando queste informazioni:

My company's database supplies me with name, address, card type, truncated PAN, and expiry date of the card/holder

Probabilmente potresti restringere abbastanza facilmente le prime 6 cifre a un numero abbastanza limitato di possibilità.

Questo lascia solo le ultime 4 cifre, una delle quali è una cifra di controllo e quindi non contiene alcuna entropia aggiuntiva.

Quindi in pratica stai dando via solo 3 cifre, anche se tutti i 10 consentiti sono esposti.

this leaves only 100,000 card numbers to brute force in order to get the one I want

Immagino che sarebbe abbastanza difficile eseguire un attacco di forza bruta dato che la maggior parte dei processori di pagamento blocca molto velocemente.

PCI DSS dice anche:

Note: It is a relatively trivial effort for a malicious individual to reconstruct original PAN data if they have access to both the truncated and hashed version of a PAN. Where hashed and truncated versions of the same PAN are present in an entity‘s environment, additional controls should be in place to ensure that the hashed and truncated versions cannot be correlated to reconstruct the original PAN.

Che dovrebbe impedire all'attaccante di mettere in scena un attacco di forza bruta offline.

Inoltre, questi sono i requisiti minimi. In linea di principio afferma che:

Requirement 7: Restrict access to cardholder data by business need to know

Immagino che la visualizzazione di tutte e 10 le cifre consentite per i clienti non rientri nella "necessità di sapere". Forse gli ultimi 4 sono richiesti per identificare quale carta è quale, ma la maggior parte degli utenti non avrebbe bisogno di conoscere i primi 6 tranne forse per mostrare il tipo di carta che è.

    
risposta data 08.05.2015 - 05:48
fonte
1

Migliore ipotesi, versione breve:

  1. È radicato nelle pratiche fisiche ed è stato mantenuto nella pratica digitale
  2. Non è significativamente diverso da ipotesi di forza bruta senza di esso

Ragionamento:

Storicamente, i numeri troncati vengono stampati sulle ricevute perché forniscono informazioni sufficienti per consentire l'identificazione dei chargeback in caso di restituzione o rimborso. Per i commercianti di carte fisiche, potrebbero non avere un database così sofisticato come fanno i commercianti di e-commerce. Senza queste informazioni sulla ricevuta, è più difficile abbinare la transazione.

Ricorda che il primo 6 è il numero IIN (alias BIN) , che sono tutti < a href="http://www.binlist.net/"> bene conosciuto . Se qualcuno vuole forzare una carta, può selezionare un BIN e sapranno la marca della carta da quella. Forzare brutemente i restanti 10 (senza dati troncati per fornire gli ultimi 4) è più difficile dei restanti 6 (se hai il numero troncato) ma non è un mondo di differenza.

Metti diversamente ... in termini matematici, la forzatura bruta di una scheda completa è relativamente banale, con una complessità di 10 ^ 10 (10 cifre, 10 posizioni, più 6 BIN già noti). Lasciarlo a 10 ^ 6 è significativo ma non sconvolgente; entrambi sono molto più semplici di una password alfanumerica di 8 cifre a 26 ^ 8. Ma:

Infine, la forzatura bruta non è offline. Non puoi forzare la forza bruta nel vuoto, devi pompare i tuoi tentativi di transazione attraverso un commerciante, un processore e il marchio della carta. Tutti hanno un certo grado di controllo degli attacchi di forza bruta. È giusto dire che i marchi delle carte sono sofisticati nelle loro analisi e capacità di reagire agli attacchi di forza bruta. I commercianti saranno meno così, ma più semplicemente motivati dal fatto che vengono accusati per tentativi di autorizzazione falliti, quindi un attacco di forza bruta porta il conto.

Sarebbe meglio richiedere la crittografia o l'hashing? Sicuro. Ma vedi # 1. Le pratiche legacy possono indugiare se non sono completamente infranti.

Avviso:

Ci sono un sacco di congetture in questa risposta, basate su boccate di conoscenza e logica ragionevole. Sono molto interessato a vedere qualcuno trovare una risposta migliore basata su una conoscenza più completa.

    
risposta data 08.05.2015 - 05:53
fonte
0

Gli altri post hanno fatto sì che i processori ti escludessero rapidamente se li invii spam con tentativi di autenticazione, quindi è dubbio che tu possa fare molti progressi lì.

If a hash were supplied as well, this would be stupidly easy to crack

Se per hash intendete l'output di un PAN con hash, allora dipende dall'algoritmo utilizzato. Considerare un algoritmo che utilizza un fattore di lavoro basato sul tempo (bcrypt, scrypt, pbkdf2) con un tempo di calcolo di circa 0,5 secondi. Delle 100k possibili uscite, diciamo che ci vogliono 50k tentativi per abbinarne una. Questo arriva a circa 17 ore per fare una partita. E se è stata utilizzata la salatura appropriata, si ottiene solo la chiave per una carta e si deve ricominciare da capo per la successiva.

    
risposta data 19.05.2015 - 21:43
fonte

Leggi altre domande sui tag