Cod PIN ( număr de identificare personal în engleză - număr personal de identificare) - un analog al unei parole . În timpul autorizării operațiunii, este folosit atât ca parolă pentru accesul titularului cardului la terminal (ATM), cât și ca cheie secretă pentru semnarea digitală a cererii. PIN-ul este furnizat pentru carduri de credit și similare (de exemplu, carduri SIM ); este folosit pentru a autoriza titularul cardului. PIN-ul ar trebui să fie cunoscut doar deținătorului cardului. De obicei, încercările de a intra corect sunt limitate (de cele mai multe ori nu mai mult de 3 ori), după care cardul este blocat pentru utilizare. Foarte des, abrevierea PIN este folosită cu codul de prefix, care este incorect, deoarece PIN este un număr, iar „număr” și „cod” sunt, de fapt, sinonime. Această problemă se numește sindrom RAS .
În telefoanele mobile, pentru a debloca PIN-ul, trebuie să introduceți așa-numitul PUK (uneori numit cod PUC). Prin urmare, PIN1 necesită PUK1, iar PIN2 necesită PUK2. Dacă PUK-ul este introdus incorect de 10 ori, cartela SIM este blocată definitiv.
În aplicațiile bancare, PIN-ul poate fi generat utilizând algoritmii IBM 3624 (un algoritm cripto determinist folosind PAN ca intrare) sau verificat folosind algoritmul VISA PVV. Al doilea algoritm, în principiu, permite situații în care nu numai singurul PIN stabilit de bancă, ci și alții (în 40% din cazuri) pot trece cecul. În medie, o valoare de test a PVV poate corespunde la 1,58 PIN-uri diferite, astfel încât securitatea sistemului nu scade din acest efect [1] [2] [3] .
În 2006, a fost lansat un zvon că introducerea unui cod PIN la un bancomat în sens invers ar suna automat poliția. În practică, astfel de sisteme, cum ar fi software-ul ATM SafetyPIN , nu au fost utilizate [4] [5] [6] .
PIN a fost dezvoltat și brevetat de inginerul scoțian James Goodfellow în 1965. . A dezvoltat un dispozitiv pentru emiterea automată de bani prin acceptarea unui card de carton (informația pe care era o zonă marcată cu carbon radioactiv-14), care avea o tastatură pentru introducerea unui PIN.
Standardul ISO 9564 este un standard PIN internațional care definește prevederile de bază pentru utilizarea sa.
Principii de bază pentru utilizarea PIN-ului:
Standardul stabilește, de asemenea, câteva caracteristici ale dispozitivului de introducere a codului PIN:
Verificarea este o verificare a corespondenței dintre codul PIN și numărul cardului. Această corespondență nu este unu-la-unu (este suficient să ne amintim că lungimea PIN-ului poate fi de 4 cifre, în timp ce numărul de cifre din numărul cardului este de 16). De asemenea, diferite valori ale codului PIN pot corespunde unui număr de card. Cerința pentru potrivirea numărului de card și a codului PIN este următoarea: pentru un număr de card arbitrar, setul de valori de cod PIN corespunzătoare acestui card trebuie să fie astfel încât probabilitatea de a ghici acest PIN să fie scăzută. Există două metode comune de generare/verificare PIN bazate pe algoritmii IBM 3624 și VISA PIN.
Algoritmul IBM 3624-Offset a fost creat pentru prima generație de ATM și a devenit astfel utilizat pe scară largă.
Particularitatea metodei este că chiar și ATM-ul oprit a putut verifica PIN-ul fără a fi nevoie de computere și de stocare pentru a gestiona bazele de date cu înregistrările utilizatorilor. În schimb, PIN-ul clientului poate fi generat dintr-un număr de card criptat cu o cheie secretă.
Algoritm: numărul cardului (16 cifre) este preluat și criptat folosind DES. După criptare, toate cifrele, cu excepția primelor patru, sunt eliminate. Cu toate acestea, ele pot fi valori „ A” - „ F” , care nu sunt acceptabile pentru configurația standard ATM. Un tabel de zecimalizare este aplicat acestor valori. Valoarea rezultată se numește PIN Natural.
Tabel de decimilizare:
0123456789ABCDEF
0123456789012345
Pentru a obține valoarea PIN, cifrele naturale PIN sunt adăugate modulo 10 cu cifrele corespunzătoare ale valorii PIN Offset, care este o secvență arbitrară de 4 cifre. Valoarea PIN Offset poate fi scrisă pe banda magnetică a cardului sau stocată în baza de date a emitentului.
Exemplu:
Numar card 4556 2385 7753 2239
Numărul cardului după criptarea DES 3F7C 2201 00CA 8AB3
Conform algoritmului, lăsăm primele patru cifre 3F7C
Conform tabelului de zecimalizare, obținem PIN natural 3572
PIN Offset 4344
PIN final 7816
Verificarea codului PIN introdus de deținătorul cardului se realizează prin compensarea PIN și numărul cardului. Este ușor de observat că valoarea PIN este complet determinată de numărul cardului și de valoarea PIN Offset. Probabilitatea de a ghici PIN-ul la prima încercare este 0,0001 [8] .
Algoritmul VISA este utilizat de multe sisteme bancare și este aplicabil nu numai cardurilor de tip VISA.
Acest algoritm generează o PVV (valoare de verificare PIN) bazată pe TSP (parametrul de securitate transformat). PVV, similar cu PIN Offset, poate fi stocat pe banda magnetică a cardului sau în baza de date a emitentului. Utilizatorul introduce un cod PIN, care este criptat de ATM și trimis la procesare cu datele cardului, unde PVV este calculat pe baza codului PIN introdus și comparat cu valoarea de pe banda magnetică.
Calculul PVV se realizează conform următorului algoritm:
Se bazează pe un șir TSP de 64 de biți, care are 16 caractere hexazecimale, care include (de la stânga la dreapta):
PAN 12 - 12 cifre din dreapta[ ce? ] cu excepția cifrei din dreapta, care este numărul de control.
PAN 12 este citit de la stânga la dreapta.
PVKI ( Indexul cheii de verificare PIN ) - un număr de la 1 la 6 este selectat de cheia de criptare
Cod PIN - 4 cifre
Exemplu :
PAN: 1234 5678 9012 3445 PVKI: 1 PIN: 9090 TSP: 5678901234419090
TSP este criptat cu algoritmul 3Des (lungimea efectivă a cheii 112 biți). După criptare, obținem un șir cu o lungime de 64 de biți, ceea ce este echivalent cu 16 caractere hexazecimale. În continuare, se formează PVV:
Șirul hexazecimal este scanat de la stânga la dreapta. Cifrele zecimale sunt selectate și stocate în PVV până când sunt găsite 4 cifre.
Dacă se găsesc mai puțin de patru cifre după prima scanare, atunci numai cifrele hexazecimale vor fi selectate în timpul celei de-a doua scanări, care sunt convertite în zecimale scăzând 10.
Exemplu :
Ieșire 3DES: 0FAB9CDEFFE7DCBA
PVV: 0975 (0, 9, 7, F=5)
Diferența dintre acești algoritmi constă în faptul că algoritmul IBM este un algoritm atât pentru generarea, cât și pentru verificarea unui cod PIN, în timp ce algoritmul PVV determină doar verificarea [9] .
Cu IBM 3624, fiecare număr de card are o singură valoare PIN.
Cu algoritmul VISA PVV, PIN-ul este o variabilă aleatorie și nu depinde de numărul cardului. Este ușor de calculat că în cazul alegerii unui PIN pentru fiecare număr de card conform unei legi equiprobabile, această valoare PVV corespunde la cel puțin două valori PIN cu o probabilitate de 42%. În același timp, numărul mediu de UDI care corespunde unei anumite valori PVV este de 1,58. Adică, atunci când utilizați VISA PVV, probabilitatea de a ghici un cod PIN este de 1,58 ori mai mare decât în cazul IBM 3624. Cu toate acestea, în ceea ce privește cantitatea necesară de enumerare a posibilelor PIN-uri în ordine, rămâne aceeași.
Conform cerințelor sistemelor internaționale de plată, valoarea codului PIN nu trebuie stocată (chiar într-o formă protejată) nici în terminalele de servicii, nici pe găzduirea emitentului.
Există mai multe posibilități pentru ca emitentul să recupereze codul PIN folosind datele pe care le are.
Dacă PIN-ul Offset/PVV este stocat pe o bandă magnetică, emitentul nu va putea în mod evident să recupereze PIN-ul. Prin urmare, depozitarea pe bandă magnetică este recomandată și reduce posibilitatea de compromis de către personalul băncii.
Când stochează PIN-ul Offset/PVV în baza de date a băncii folosind IBM 3624, emitentul poate calcula cu ușurință PIN-ul cardului. În cazul algoritmului VISA, emitentul poate selecta valoarea codului PIN corespunzătoare valorii PVV stocată în baza de date prin enumerarea a 10.000 de valori.
În 2002, studenții de la Universitatea din Cambridge au descoperit atacul tabelului de zecimalizare [8] .
Codul PIN pentru cardurile bancare este generat prin criptarea numărului cardului. Numărul criptat este o valoare hexazecimală și sunt luate primele patru cifre. Un tabel de zecimalizare este folosit pentru a converti această valoare în zecimal prin conversia A la 0, B la 1 etc. Aceste tabele nu sunt considerate module hardware confidențiale și pot fi furnizate împreună cu numărul cardului. Prin manipularea conținutului tabelului, devine posibil să aflați mai multe despre semnificația codului PIN decât prin excluderea combinațiilor individuale. De exemplu, dacă se folosește tabelul
0123456789ABCDEF
0000000100000000,
potrivirea cu PIN 0000 va confirma că PIN-ul nu conține numărul 7, care exclude mai mult de 10% din toate combinațiile posibile. Numărul mediu de încercări necesare pentru a ghici PIN-ul este de 15.
Dacă codul PIN este introdus incorect de trei ori , cartela SIM este blocată până când este introdus corect PUC ( Codul personal de deblocare ) , care oferă zece încercări de introducere. Dacă PUC-ul este introdus incorect, cartela SIM va fi blocată definitiv.
Dacă PIN-ul Offset/PVV este stocat pe o bandă magnetică, nu va fi posibilă schimbarea PIN-ului la ATM, deoarece schimbarea PIN-ului va avea ca rezultat modificarea PIN-ului Offset/PVV. Când este stocat în baza de date, nu este o problemă să schimbați PIN-ul, deoarece în acest caz valorile PIN Offset/PVV vor fi calculate pentru noul PIN și plasate în baza de date în locul valorilor anterioare.
Multe radiouri auto folosesc un sistem de introducere a codurilor după o întrerupere completă a curentului, care are ca scop prevenirea utilizării echipamentelor furate . Codul radioului auto este atribuit din fabrică sau introdus de utilizator atunci când este instalat. Dacă codul este introdus incorect de mai multe ori la rând, atunci radioul este blocat pentru o perioadă sau pentru totdeauna.