Breaking VISA PIN
02 iulie 2008 în sectorul bancar şi EFTPoS
Mai jos este un articol l-am găsit recent. Aceasta una dintre cele mai complete descrieri ale PIN-ul de verificare Valoare (PVV) hacking.
Am crezut ca ar putea-o reproduc aici pentru meu locale de referinţă.
După cum s-au făcut comentarii cu privire la gramaticale folosite în textul original, am corectat unele erori evidente de a menţine în acelaşi timp, contextul original material.
http://69.46.26.132/ ~ biggold1/fastget2you/tutorial. php
--- Textul original ----
Cuvânt înainte
V-aţi întrebat vreodată ce s-ar întâmpla dacă ai pierdut carte de credit sau debit şi găseşte-l pe cineva. Această persoană ar trebui să poată retrage numerar de la un bancomat ghicitul, cumva, PIN-ul? Mai mult decât atât, dacă ai fi fost cineva care descoperă de carte va încerca să ghicesc PIN-ul şi să ia şansa de a obţine unele uşor de bani? Desigur, răspunsul la ambele întrebări ar trebui să fie "nu". Acest lucru nu se referă la cea de-a doua întrebare, este o chestiune de etică personală. Alăturat am încerca să răspundă la prima întrebare.
Toate informaţiile utilizate pentru acest lucru este publică şi poate fi găsit în mod liber la Internet. Restul este o chestiune de matematica si de programare, astfel încât să putem învăţa ceva şi să te distrezi. Eu nu dezvăluie secretele. În plus, obiectivul (şi definitivă) a acestui lucru este de a demonstra că PIN algoritmi sunt încă destul de puternice pentru a oferi suficiente garanţii. Ştim cu toţii tehnologie nu este punct slab.
Acest lucru analize una dintre cele mai comune PIN algoritmi, VISA PVV, folosite de mai multe ATM-uri carduri (de credit şi carduri de debit) şi încearcă să afle cum este rezistent la PIN ghicitul atacuri. Prin "ghicită" Eu nu înseamnă a alege aleator PIN şi a încercat-o într-un bancomat. Este bine cunoscut faptul că în general, ne sunt prezentate trei studii clinice pentru a intra în dreptul de PIN, dacă nu reuşim ATM ţine un astfel de card. Ca VISA PIN este de patru cifre lung este uşor să deducem că şansă pentru aleator PIN ghicitul este 3 / 10000 = 0,0003, se pare destul de mici pentru a fi în siguranţă; aceasta înseamnă că trebuie să-ţi pierzi carte cu mai mult de trei mii de ori ( sau a pierde mai mult de trei mii de carduri, în acelaşi timp:), până când există o şansă rezonabilă de a-şi pierde bani.
Ce Chiar mi-a vorbit de "ghicită" a fost spart codul PIN algoritm, astfel încât dat nici o carte, puteţi imediat să ştiu asociate PIN. Prin urmare, acest document de studii în care această posibilitate, analiza de algoritm şi de a propune o metodă de atac. În cele din urmă vom da un instrument care pune în aplicare atac şi să prezinte rezultatele estimate despre sansa de a sparge sistemul. Reţineţi că, atâta timp cât alte bancare legate de securitate algoritmi (alte PIN formate, cum ar fi IBM PIN sau carte de validare de semnături, cum ar fi CVV sau CVC) sunt similare cu VISA PIN-ul, la fel de analiză se poate face elastic aproape aceleaşi rezultate şi concluzii.
Una dintre cele mai comune PIN algoritmi este VISA PIN de verificare Valoare (PVV). Clientul este dat un cod PIN şi a unei benzi magnetice de carte. Codificate în benzi magnetice este un număr din patru cifre, numit PVV. Acest număr este o semnătura criptografică a PIN-ul şi alte date legate de carte. Când un utilizator introduce sale codul PIN de la ATM-uri citeşte cu benzi magnetice, encrypts şi trimite toate aceste informaţii la un computer central. Există un proces PVV este calculat folosind client introdus PIN-ul şi informaţiile despre cartea de criptare cu un algoritm. Procesul PVV este, comparativ cu PVV stocate în carte, în cazul în care acestea se potrivesc cu centrale de calculator revine la ATM autorizaţie pentru tranzacţie. A se vedea mai în detaliu.
De descriere a PVV algoritm poate fi găsită în două documente legate în pagina anterioară. În aceasta constă în rezumat de criptare de a 8 byte (64 bit) şir de date, numit Transformată Securitate Parametru (TSP), cu DES algoritm (DEA) în Electronic Code Book Mod (BCE), folosind un secret pe 64 biţi cheie. De PVV este derivat din producţia de procesul de criptare, care este un octet string 8. Cele patru cifre ale PVV (de la stânga la dreapta) să corespundă cu primele patru cifre zecimale (de la stânga la dreapta) de la ieşirea de la DES, atunci când a considerat ca o hexazecimal 16 de caractere (16 x 4 bit = 64 bit) şir. Dacă nu există patru cifre zecimale între cele 16 de caractere hexazecimale atunci PVV este completat luate (de la stânga la dreapta) şi caractere non zecimal decimalizing le prin utilizarea de conversie A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Iată un exemplu:
De ieşire de la DES: 0FAB9CDEFFE7DCBA
PVV: 0975
Strategia de a evita decimalization sărit de caractere până la patru cifre zecimale sunt găsit (care se întâmplă să fie aproape toate ori aşa cum vom vedea mai jos) este foarte inteligent, pentru că se evită o prejudecată în distribuţia de cifre, care a fost dovedit a fi fatale pentru alte sisteme, desi impactul asupra acestui sistem ar fi mult mai mici. Vezi, de asemenea, legate de o problemă nu se aplică la VISA PVV.
De TSP, văzut ca un hexazecimal 16 de caractere (64 bit) sir de caractere, este formata (de la stânga la dreapta), cu 11 cifre, de la dreapta PAN (numărul de card), excluzând ultima cifră (verifica cifre), o cifră de la 1 la 6 care selecteaza secrete criptând cheie şi, în final, cele patru cifre ale PIN. Iată un exemplu:
PAN: 1234 5678 9012 3445
Selector cheie: 1
PIN: 2468
TSP: 5678901234412468
În mod evident, problema de spargere VISA PIN constă în găsirea de secrete cheia de criptare DES. Metoda de care este de a face un brute force căutare a tasta spaţiu. Reţineţi că acest lucru nu este singura metoda, s-ar putea încerca să găsească un punct slab în DEA, mulţi au încercat, dar acest standard vechi este încă utilizat la scară largă (în prezent, a fost înlocuit cu AES şi RSA, totusi). Acest lucru este destul de robust, astfel încât brute force este singura metodă viabilă din punct de vedere (există unele atacuri, dar nu o mai bună practică în cazul nostru, pentru o sinteză a se vedea LASEC memoria şi pentru detalii, a se vedea Biham murdare & Shamir 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 şi Heys 2001).
Cheia selectorul cifre foarte probabil a fost introdus pentru a acoperi posibilitatea de a tasta un compromis. În acest caz, ele au doar de a emite noi carduri, utilizând un alt selector cheie. Anterioarele carduri poate fi înlocuită cu altele noi, sau pur şi simplu de ATM-uri transparent poate scrie o nouă PVV (corespunzător la noua cheie şi menţinerea în acelaşi PIN) data viitoare în care clientul utilizează lui / ei carte. Pentru a se agită de securitate toţi utilizatorii ar trebui să fie solicitat pentru a schimba PIN-urile lor, cu toate acestea, ar fi jenant pentru banca pentru a explica motivul, deci foarte probabil ca ele nu ar face o astfel de cerere.
Pregătirea de atac
Un brute force atac constă în criptând TSP cu o cunoscută PVV, folosind toate posibilele chei de criptare şi compara fiecare obţinute PVV cu cunoscut PVV. În cazul în care un meci este găsit avem un candidat cheie. Dar cât de multe chei am să încerc? Aşa cum am spus mai sus-cheie este de 64 de biţi lung, aceasta ar însemna că trebuie să încercaţi 2 ^ 64 chei. Cu toate acestea acest lucru nu este adevărat. De fapt doar 56 biţi sunt eficiente în DES chei, pentru că un bit (cel mai puţin important) din fiecare octet lungul istoriei, a fost rezervate ca un control pentru altele; în practică, cele 8 biţi (câte unul pentru fiecare din cele 8 octets) sunt ignorate.
Prin urmare, DES cheie spaţiu constă din 2 ^ 56 chei. Dacă am încerca toate aceste chei vom găsi una şi doar un singur meci, în funcţie de bancă secret cheie? Desigur, nu. Vom obţine mai multe chei de potrivire. Acest lucru se datorează faptului că PVV este decât o mică parte (un sfert) din DES ieşire. În plus, PVV este degenerat deoarece unele dintre cifre (cele între 0 şi 5 după ultima, văzut de la stânga la dreapta, cifră între 6 şi 9), poate să provină dintr-o cifră zecimal sau de la un decimalized hexazecimal cifră de DES iesire. Astfel, multe chei va produce un DES ieşire care randamentele la acelaşi potrivire PVV.
Apoi, ce putem face pentru a gasi adevarata cheie printre cei alte fals pozitive cheile? Pur şi simplu ne-am pentru a cripta un al doilea diferite TSP, de asemenea, cunoscut cu PVV, dar numai folosind tastele de candidat care a dat un rezultat pozitiv de potrivire cu prima TSP-PVV pereche. Cu toate acestea nu există nici o garanţie, nu vom lua din nou multe pozitive false, împreună cu adevărat cheie. Dacă da, vom avea nevoie de o treime TSP-PVV pereche, repetaţi procesul şi aşa mai departe.
Înainte de a începe noastre atac, trebuie să ştii cât de multe TSP-PVV perechi vom avea nevoie. Pentru că avem de a calcula probabilitatea pentru aleator DES ieşire la un randament de potrivire PVV doar de sansa. Există mai multe modalităţi de a calcula acest număr şi aici voi folosi un simplu abordare de uşor de înţeles, dar care necesită unele fundal in matematica de probabilitate.
O probabilitate poate fi întotdeauna văzut ca raport favorabil de cazuri de posibile cazuri. În problema noastră numărul de cazuri posibile este dat de permutare de 16 elemente (de la 0 la F hexazecimal cifre) într-un grup de 16 dintre ele (cele 16 cifre ale hexazecimal DES ieşire). Aceasta este data de 16 ^ 16 ~ 1,8 * 10 ^ 19, care, desigur, coincide cu 2 ^ 64 (numere diferite din cele 64 de biţi). Acest set de numere pot fi împărţiţi în cinci categorii:
Cei cu cel puţin patru cifre zecimale (0 la 9), printre cele 16 hexazecimal cifre (0 la F) a DES ieşire.
Cei cu exact doar trei cifre zecimale.
Cei cu exact doar două cifre zecimale.
Cei cu exact doar o cifră zecimală.
Cei cu nici cifre zecimale (toate între A şi F).
Să se calculeze câte numere se încadrează în fiecare categorie. Dacă vom eticheta hexazecimală de 16 cifre ale DES ieşire ca X1 la x16 atunci putem eticheta în primele patru cifre zecimale de orice număr dat de prima categorie, astfel cum Xi, Xj, Xk şi XL. Numărul de combinaţii diferite cu acest profil este dat de produs 6 i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 6 lk-1 * 10 * 1616-l în cazul în care 6 ' venit de la serie de posibilităţi pentru o cifră de la A la F, de 10 a venit de la posibilităţile de a 0 la 9 cifre, şi de 16 vine de la posibilităţile de la 0 la F cifre. Acum, numărul total din prima categorie este pur şi simplu dată de însumarea acest produs peste I, J, K, L de la 1 la 16, dar cu i <j <k <l. Daca faci unele math lucru se va vedea acest lucru este egal cu produsul de 104 / 6 cu însumarea i peste 4 la 16 de (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1,8 * 1019.
Analogously numărul de cazuri, în cea de-a doua categorie este data de peste însumarea i, j, k 1 la 16, cu i <j <k a produsului 6i-1 * 10 * 6j-i-1 * 10 * 6k-j -1 * 10 * 616-k pe care o puteţi muncă a fi 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7,3 * 1015. În mod similar, pentru a treia categorie, avem peste însumarea i, j de la 1 la 16, cu i <j din 6 i-1 * 10 * 6j-i-1 * 10 * 616-j care echivalează cu până la 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9,4 * 1014. Din nou, pentru cea de-a patra categorie avem însumarea peste i de la 1 la 16 din 6i-1 * 10 * 616-i = 160 * 615 ~ 7,5 * 1013. Şi, în final, suma de cazuri, în cea de-a cincea categorie este dat de permutare de şase elemente (de la A la F cifre) într-un grup de 16, care este, 616 ~ 2,8 * 1012.
Sper că aţi urmat calculele de până la acest punct de vedere, este greu de facut. Acum, ca o dovadă a faptului că totul este în regulă, puteţi sumă a numărului de cazuri în 5 categorii şi-l văd este egal cu numărul total de cazuri posibile am calculat înainte. Fă operaţiunile care utilizează numere de 64 biţi sau de rotunjire (pentru plutitoarelor) sau overflow (pentru întregi) erori nu va lasa sa te exact rezultat.
Pana acum ne-am calculat numărul de cazuri posibile în fiecare din cele cinci categorii, dar suntem interesaţi în a obţine numărul de cazuri favorabile, în loc. Este foarte uşor să obţină cel din urmă din fosta ca aceasta este doar de stabilire a combinaţie de patru cifre zecimale (sau necesare hexazecimal cifre dacă nu există patru cifre zecimale) din PVV în loc de ai lăsat să liberă. În practică, acest lucru înseamnă de 10 de cotitură în formula de mai sus în 1 şi volumul necesar de 6 în 1 a lui dacă nu există patru cifre zecimale. Asta este, am să împartă primul rezultat de 104, cea de-a doua de 103 * 6, al treilea de 102 * 62, una de către cel de-al patrulea 10 * 63 şi cea de-a cincea o cu 64. Apoi, numărul de cazuri favorabile, în cinci categorii sunt de aproximativ 1,8 * 1015, 1,2 * 1012, 2,6 * 1011, 3,5 * 1010, respectiv 2,2 * 109.
Acum avem posibilitatea de a obţine ceea ce este de probabilitate pentru un DES ieşire pentru a se potrivi cu o PVV de sansa. Trebuie să adăugaţi cele cinci numere de cazuri favorabile şi împărţi la numărul total de cazuri posibile. Făcând acest lucru vom obţine că probabilitatea este foarte aproximativ 0.0001 sau de una din zece mii. Este ciudat acest bine rotunjite rezultat? Nu la toate, trebuie doar să aruncăm o privire la numere am calculat de mai sus. Prima categorie domină de mai multe ordine de mărime a numărului de cazuri favorabile, şi posibil. Acest lucru este destul de intuitiv ca este evident faptul că este foarte puţin probabil nu are patru cifre zecimale (10 sanse de 16 pe cifre) între 16 hexazecimal cifre. Am văzut anterior că relaţia dintre numărul de cazuri favorabile, posibil şi în prima categorie a fost de o divizie de 10 ^ 4, care a rezultat în cazul în care ne p = 0.0001 vine de la.
Scopul nostru pentru toate aceste calcule, a fost de a afla cât de multe TSP-PVV perechi de care avem nevoie pentru a transporta o reuşită brute force atac. Acum avem posibilitatea de a calcula numărul de aşteptat fals pozitive intr-o prima cautare: acesta va fi numărul de studii ori de probabilitate pentru un singur aleatoare fals pozitive, adică t * p unde t = 2 ^ 56, de dimensiunea cheie spaţiu. Aceasta se ridică la aproximativ 7,2 * 10 ^ 12, un număr destul de mare. De aşteptat număr de fals pozitive, în cea de-a doua de căutare (restricţionat la pozitivă a găsit cheile în primul căutare) va fi (t * p) * p, pentru o treime va fi de căutare ((t * p) * p) * p şi aşa mai departe. Astfel, pentru n căutări de aşteptat numărul de fals pozitive vor fi t * p ^ n.
Putem obţine numărul de căutări necesară pentru a aştepta doar un fals pozitive prin care îşi exprimă ecuaţia t * p ^ n = 1 şi rezolvarea de n. Deci, n este egal cu logaritmul în baza de 1 p / t, care, prin proprietăţile logaritmilor aceasta randamentelor n = log (1 / T) / log (p) ~ 4.2. Din moment ce nu ne putem face o căutare fracţional, este convenabil pentru a ridica acest număr. Prin urmare, ceea ce este de aşteptat numărul de fals pozitive dacă vom efectua căutări cinci? Este t * p ^ 5 ~ 0.0007 sau aproximativ 1 din 1400. Astfel, folosind cinci TSP-PVV perechi este sigură de a obţine cheia cu adevărat secret nu pozitive false.
Odată ce ştim noi avem nevoie de cinci TSP-PVV perechi, cum ne-i? Desigur, avem nevoie de cel puţin o carte cu cunoaşte PIN-ul, şi din cauza naturii de PVV algoritm, care este singurul lucru de care avem nevoie. Cu alte PIN sisteme, precum IBM, vom avea nevoie de cinci cărţi, însă acest lucru nu este necesar cu VISA PVV algoritm. Trebuie să citiţi cu benzi magnetice şi apoi a schimba codul PIN de patru ori, dar de lectură carte după fiecare schimbare.
Este necesar pentru a citi cu benzi magnetice de carte pentru a obţine PVV şi selectorul de cheie de criptare. Puteţi cumpăra o comerciale cu benzi magnetice cititor sau să facă un singur urmând instrucţiunile puteţi găsi în pagina anterioară şi se leagă de aceasta. Odată ce aveţi un cititor vedea această descriere standard de piese magnetice pentru a afla cum să obţineţi PVV de date citit. În acest document, PVV în domeniul liniilor 1 şi 2 se spune să fie cinci de caractere de lung, dar, de fapt, adevărata PVV constă în ultimele patru cifre. Prima dintre cele cinci cifre este cheia selector. Am văzut doar cărţi de credit cu o valoare de 1, în această cifră, care este în concordanţă cu standardele şi cu secret cheie fiind compromisă niciodată (şi, prin urmare, acestea nu au nevoie pentru a trece la o altă cheie a schimba selectorul).
Am făcut un simplu program C, getpvvkey.c, pentru a efectua atacul. Se compune dintr-o buclă de a incerca toate cheile de la cripta prima TSP, în cazul în care derivate PVV se potriveşte cu adevărat PVV un nou TSP este încercat, şi aşa mai departe, până când există o nepotrivire, caz în care cheia este aruncat şi o nouă este încercat, sau derivate din cele cinci PVVs meci corespunzătoare adevărat PVVs, caz în care ne putem asuma avem banca secret cheie, cu toate acestea, bucla merge pe până când se epuizează cheie spaţiu. Aceasta se face pentru a ne asigura găsi adevărata cheie, pentru că există o şansă (deşi foarte mici), primul-cheie găsit este un fals pozitiv.
Este de aşteptat de program ar dura foarte mult timp pentru a finaliza şi pentru a minimiza riscurile de o putere de tăiat, computer iesim in oras, etc n-are trecere în fişier getpvvkey.dat din timp în timp (ora exactă, depinde de viteza de calculator, este în jur de o oră pentru cea mai rapidă de calculatoare acum în utilizare). Pentru acelaşi motiv, în cazul în care o cheie este găsit pozitiv este scris pe fişierul getpvvkey.key. Programul afişează numai un mesaj de la început, la care începe de la poziţia adoptată de control fişier dacă este cazul, după care nimic nu mai este afişată.
The DES algoritm este un punct-cheie în program, prin urmare, este foarte important pentru a optimiza viteza. Am testat mai multe implementări: libdes, SSLeay, OpenSSL, cryptlib, NSS, libgcrypt, catacombă, libtomcrypt, cryptopp, UFC-crypt. The DES funcţii de primele patru sunt bazate pe acelaşi cod de Eric Young şi este cel care a funcţionat cel mai bine (include optimizat C şi de asamblare x86 code). Astfel, am ales libdes, care a fost iniţial de punere în aplicare şi condensat toate codul in fisiere encrypt.c (C versiune) şi x86encrypt.s (x86 asamblare versiune). Codul este uşor modificate pentru a realiza unele îmbunătăţiri într-un brute force atac: iniţial permutare este un post fix, în fiecare comună abrupte TSP de criptare şi, prin urmare, se poate face doar o singură dată de la început. O altă îmbunătăţire este că am scris-o complet noua funcţie setkey (am numit-o nextkey), care este optimă pentru un brute force bucla.
Pentru a beneficia de programul de lucru trebuie doar sa tip corespunzător în locul cinci TSPs şi lor PVVs şi apoi compilaţi-l. Am testat-o numai în platformele UNIX, folosind Makefile Makegetpvvkey pentru a compila (folosi comanda "make-f Makegetpvvkey"). Se poate compila pe alte sisteme, dar este posibil să aveţi nevoie pentru a stabili anumite lucruri. Asiguraţi-vă că definiţia de tip long64 corespunde unui număr întreg pe 64 biţi. În principiu, nu există nici o dependenţă pe endianness de procesor. Am compilat cu succes şi rulaţi-l pe Pentium-Linux, Alpha-Tru64, mips-Irix-şi Sparc Solaris. Dacă nu aveţi şi nu doriţi să instalaţi Linux (nu ştiţi ce vă lipsesc ;-) încă aveţi posibilitatea de a alege să ruleze Linux de pe CD-ul meu şi de a folosi programul, vezi pagina mea să ruleze Linux, fără ao instala.
Odată ce aţi găsit secretul bancar cheie, dacă doriţi, pentru a găsi codul PIN al unui arbitrar carte trebuie doar sa scrie un program similar (scuze nu am scris-o, sunt prea lenesa:), care ar încerca toate 10 ^ 4 PIN-urile prin generarea corespunzătoare TSP, criptând cu (nu mai) secret cheie, care decurg din PVV şi a comparat-o cu PVV în benzi magnetice de pe card. Veţi primi un meci de adevărat PIN. Doar un singur meci? Amintiţi-vă ce am văzut mai sus, avem o şansă de 0.0001 că aleator de criptare se potriveşte cu PVV. Incercam 10000 PINS (şi, prin urmare, TSPs), astfel, ne aşteptăm la 10000 * 0,0001 = 1 fals pozitive, în medie.
Acesta este un rezultat foarte interesant, asta înseamnă că, în medie, fiecare carte are două valabil PINS: client PIN şi de aşteptat fals pozitive. Eu îi spun "false", dar ţineţi cont de faptul că, atâta timp cât acesta generează adevărat PVV este un cod PIN ca valabil ca al clientului o. În plus, nu există nici o cale de a şti care este, care, chiar şi pentru ATM-uri; doar client stie. Chiar şi în cazul în care fals pozitive nu au fost valabile ca PIN-ul, încă aveţi trei studii clinice de la ATM-uri, oricum, destul de, în medie. Prin urmare, probabilitatea am calculat de la începutul acestui document despre ghicitul aleatoriu de PIN-ul trebuie să fie corectate. De fapt, este de două ori ca valoare, de exemplu, este de 0.0006 sau într-una din mai mult de 1600, în condiţii de siguranţă mai scăzut.
Rezultate
Este important pentru a optimiza compilare a programului şi pentru a executa o în cel mai rapid procesor posibil ca urmare a timpului de funcţionare mult de aşteptat. Am constatat că compilator de optimizare pavilion-O devine de o performanţă mai bună, gândit de anumite îmbunătăţiri este realizată adăugând-fomit-frame-pointer pavilion pe Pentium-Linux, de-spike pavilion pe Alpha-Tru64, de-IPA pavilion pe mips-Irix şi-fast-pavilion pe Sparc Solaris. Special steaguri (-DDES_PTR-DDES_RISC1-DDES_RISC2-DDES_UNROLL-DASM) pentru DES cod au în general, precum şi beneficii. Toţi aceşti indicatori au fost deja testate şi am ales cea mai bună combinaţie pentru fiecare procesor (a se vedea Makefile), dar puteţi încerca la fin tune alte steaguri.
În opinia mea teste cea mai bună performanţă este realizată cu AMD Athlon 1600 Mhz, de peste 3.4 milioane de chei pe secundă. Este interesant sa se rezultate mai bune decât Intel Pentium IV 1800 MHz şi de 2000 MHz (vezi figurile de mai jos, faceţi clic pe ele pentru a mari). Cred că aceasta se datorează într-o oarecare I / O saturaţie, cu siguranţă, cache-ul de memorie sau de acces, ca procesor AMD (care are jumătate din cache-ul de la Pentium) sau placa de bază în care se execută, reuşeşte să le evite. În primul figura de mai jos puteţi vedea că DES rupere viteza de toate procesoarele a mai mult sau mai puţin o relaţie liniară cu procesor de viteză, în afară de cele două Intel Pentium-am menţionat mai înainte. Acest lucru este logic, înseamnă că pentru un dublu procesor viteza veţi primi dublu de rupere de viteză, dar fereşte-te pentru saturaţie adverse, în acest caz este mai bine de AMD Athlon 1600 MHz, care va fi chiar mai ieftin decât Intel Pentium 1800 MHz sau 2000 MHz.
În cea de-a doua cifră putem vedea mai în detaliu ceea ce ne-ar suna intrinsec DES pauză de putere de la procesor. I a lua această valoare pur şi simplu împărţirea pauză viteza de procesor de viteza, care este, vom ajunge la numărul de DES cheile încercat pe secundă şi pe MHz. Aceasta este o măsură a performanţei de procesor tip, indiferent de viteza. Rezultatele arată că cel mai bun procesor pentru această sarcină este AMD Athlon, apoi vine Alpha şi foarte aproape după ce este Intel Pentium (cu excepţia celor pentru cea mai mare viteza de cele care funcţionează foarte săraci din cauza efectului de saturaţie). Înainte este procesor MIPS şi în ultimul loc este Sparc. Unele Alpha şi mips procesoare sunt situate la partea de jos a grilei, deoarece acestea sunt mai devreme versiuni nu inclusiv îmbunătăţiri de târziu versiuni. Reţineţi că, am inclus de performanţă de procesoare x86 pentru C şi de asamblare cod ca exista o mare diferenta. Se pare că gcc nu este un bun generator de cod optimizat maşină, dar, desigur, nu ştim dacă un manual de optimizare a codului de asamblare pentru alte procesoare (Alpha, MIPS, Sparc) ar impulsiona rezultatele lor faţă de compilatoare nativ C (nu am folosi gcc pentru aceste alte platforme), după cum se întâmplă cu procesoare x86.
Actualiza
Aici este un articol în cazul în care aceste tehnici ar fi putut fi folosite.




























