Breaking VISA PIN
Jul 02, 2008 banku un EFTPoS
Zemāk ir rakstu Es atklāju nesen. Šis ir viens no visaptverošu apraksti PIN Verification Value (PVV) Datorurķēšana.
Es domāju, varētu atkārtot to šeit manā vietējā reference.
Kā komentārs ir gūti attiecībā uz gramatika izmantota sākotnējā teksta, man ir labotas dažas no acīmredzamas kļūdas, saglabājot kontekstā sākotnējā materiāla.
http://69.46.26.132/ ~ biggold1/fastget2you/tutorial. php
--- Original Text ----
Priekšvārds
Vai tu esi brīnums, kas notiktu, ja jūs zaudējat savu kredītkartes vai debetkartes un kāds konstatē, ka ir. Vai šis cilvēks varēs izņemt naudu no bankomāta guessing, somehow, jūsu PIN? Turklāt, ja jūs bijāt, kas atradīs kādu karti jūs mēģināt uzminēt PIN un veic iespēja iegūt vieglu naudu? Protams atbilde uz abiem jautājumiem ir "nē". Šis darbs neapskata ar otro jautājumu, ir jautājums par personīgo ētiku. Ar šo es cenšos atbildēt uz pirmo jautājumu.
Visu informāciju, ko izmanto šo darbu, ir valsts, un to var brīvi atrodama internetā. Pārējā ir jautājums par matemātika un programmēšana, tādējādi mēs varam mācīties, un ir dažas fun. I uzrādīt nekādas noslēpumus. Turklāt, mērķis (un galīgais secinājums) par šo darbu ir parādīt, ka PIN algoritmus joprojām ir pietiekami stipri, lai nodrošinātu pietiekamu drošību. Mēs visi zinām, tehnoloģija nav vājo punktu.
Šo darbu analīze viens no visbiežāk PIN algoritmus, VISA PVV, ko daudzi ATM kartes (kredīta un debeta kartes), un cenšas noskaidrot, cik izturīgi ir PIN guessing uzbrukumiem. Ar "guessing" I nenozīmē, izvēloties izlases PIN un mēģina to bankomātu. Ir labi zināms, ka parasti mums ir doti trīs pārbaudes, lai ievadītu pareizo PIN, ja mums neizdodas ATM saglabā kartes. Kā VISA PIN ir četrciparu ilgi ir viegli secināt, ka iespēja izlases PIN guessing ir 3 / 10000 = 0,0003, šķiet pietiekami zems, lai būtu droši, tas nozīmē, ka jūs vajadzību zaudēt savu karti vairāk nekā trīs tūkstoši reizes ( vai zaudējot vairāk nekā trīs tūkstoši kartes tajā pašā laikā:), kamēr pastāv pamatota iespēja zaudēt naudu.
Tas, ko es tiešām nozīmē "guessing" tika laužot PIN algoritms to, ka, ņemot vērā jebkuru karti varat uzreiz zināt saistītas PIN. Tādēļ šo dokumentu pētījumus šo iespēju, analizējot algoritmu un ierosinot metodi uzbrukumu. Visbeidzot mēs sniedz līdzekli, ar kuru īsteno uzbrukumu un prezentēt rezultātus par novērtētām chance ielauzties sistēmā. Ievērojiet, ka, kamēr citas banku drošību saistītām algoritmu (kas PIN formātos, piemēram, IBM PIN vai kartes validācijas parakstu, piemēram, CVV vai CVC) ir līdzīgi VISA PIN, to pašu analīzes var izdarīt, kas dod gandrīz pašus rezultātus un secinājumus.
Viens no visbiežāk PIN algoritmiem ir VISA PIN Verification Value (PVV). Klients ir dota PIN un magnētiskās joslas kartes. Kodētas magnētiskā josla ir četru ciparu numuru, ko sauc PVV. Šis numurs ir kriptografisks paraksts, PIN un citus datus, kas attiecas uz kartes. Kad lietotājs ievada savu PIN ar ATM reads magnētiskās joslas, šifrē un nosūta visu šo informāciju ar centrālo datoru. Pastāv izmēģinājuma PVV ir aprēķināta, izmantojot klienta ievada PIN un kartes informāciju ar kriptografisks algoritms. Izmēģinājuma PVV salīdzina ar PVV uzglabāt karti, ja tās atbilst centrālo datoru atgriežas uz ATM atļauju darījuma. Skatīt sīkāk.
Apraksts, PVV algoritms var atrast divus dokumentus, kas saistīti ar iepriekšējā lapā. Kopumā tas veido šifrēšana a 8 baits (64 bitu) string datu sauc transformētu Security Parametrs (TSP), ar DES algoritmu (DEA) elektroniskās Code Book režīmā (ECB), izmantojot slepeno 64 bitu atslēgu. The PVV iegūst produkciju šifrēšanas process, kas ir 8 baitu virkni. Četri cipari no PVV (no kreisās uz labo) atbilst pirmajām četrām decimālzīmēm cipari (no kreisās uz labo) no izejas no DES, ja uzskata par 16 heksadecimālās raksturs (16 x 4 bit = 64 bitu) virkni. Ja nav četras decimal cipari starp 16 heksadecimālās rakstzīmes tad PVV ir pabeigta pasākumi (no kreisās uz labo) nav decimal tēlus un decimalizing tos, izmantojot pārrēķināšanas A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Lūk, piemēram:
Output no DES: 0FAB9CDEFFE7DCBA
PVV: 0975
Stratēģija, kā izvairīties no decimalization by skipping rakstzīmes līdz četriem decimal cipari ir atrastas (kas notiek, ir gandrīz visu laiku, kā mēs skatīt zemāk) ir ļoti gudri, jo tā novērš svarīgs novirzēm izplatīšanu cipari, kas ir izrādījusies letālu citādas sistēmas, kaut arī ietekmi uz šo sistēmu, būtu daudz zemākas. Skatīt arī saistīta problēma neattiecas uz VISA PVV.
The TSP, kura būs kā 16 heksadecimālās raksturs (64 bitu) virkni, kas ir izveidots (no kreisās uz labo) ar 11 rightmost cipari no PAN (kartes numuru), izņemot pēdējo ciparu (Check ciparu), viens cipars no 1 līdz 6 kas izvēlas slepenā encrypting taustiņu un visbeidzot četriem cipariem un PIN. Lūk, piemēram:
PAN: 1234 5678 9012 3445
Galvenie selektoram: 1
PIN: 2468
TSP: 5678901234412468
Acīmredzot, šī problēma pārraut VISA PIN sastāv atrast slepeno encrypting atslēgas DES. Metode, kas ir veikt brutālu spēku search no galvenajiem telpu. Ievērojiet, ka tā nav vienīgā metode, varētu censties atrast trūkums DEA, daudzas mēģinājis, bet tas vecais standarts ir joprojām plaši izmanto (tagad aizstāta ar AES un RSA, gan). Tas rāda, tā ir pietiekami spēcīga, lai brutālu spēku ir vienīgā piemērotā metode (ir dažas labāk uzbrukumiem, bet ne praktisku šajā gadījumā, kas attiecas uz kopsavilkumu skatīt LASEC piezīmi, kā arī netīrās informāciju skatīt Biham & Shamir 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 un Heys 2001).
Galvenais selektoram ciparu bija ļoti iespējams, kas ieviesti, lai ņemtu vērā iespēju, galvenais kompromisu. Tādā gadījumā tie tikai izdot jaunas kartes, izmantojot citu taustiņu selektoru. Older kartes var aizstāt ar jaunām vai vienkārši ATM var pārredzami rakstīt jaunu PVV (atbilst jauno taustiņu un saglabājot tikpat PIN) Nākamreiz, kad klients izmanto viņa karti. Par kratīšanas drošību visiem lietotājiem jāprasa mainīt savu PINs, tomēr tas būtu mulsinošu attiecībā uz banku, lai izskaidrotu iemeslu, tādēļ ļoti iespējams, tie neveic šādu pieprasījumu.
Preparing uzbrukumu
A brutālu spēku uzbrukums sastāv encrypting a TSP ar zināmu PVV, izmantojot visus iespējamos encrypting taustiņus un salīdzināt katra iegūti PVV ar zināmu PVV. Kad atbilstība ir konstatēts, mums ir kandidātvalsts taustiņu. Bet cik atslēgām esam mēģināt? Kā mēs teicām virs atslēga ir 64 bitu gara, tas nozīmē, mēs esam mēģināt 2 ^ 64 atslēgas. Tomēr tā nav taisnība. Patiesībā tikai 56 bitus efektīvi DES atslēgas, jo viens bits (mazāk nozīmīga) no katra oktets bija vēsturiski reserved kā kontrolsumma par citiem; praksē šie 8 bits (katrai no 8 okteti) ir ignorēts.
Tāpēc DES atslēgu telpas sastāv no 2 ^ 56 atslēgas. Ja mēs cenšamies visus šos taustiņus mēs viens un tikai viens spēles, kas atbilst bankas slepenas atslēgas? Protams, ne. Mēs iegūt daudzas sakritības atslēgas. Tas ir tāpēc, ka PVV ir tikai neliela daļa (viena ceturtā) no DES produkciju. Turklāt PVV ir degenerated, jo daži no cipari (kas starp 0 un 5 pēc pēdējā, redzams no kreisās uz labo ciparu no 6 līdz 9), var būt no decimal ciparu vai no decimalized heksadecimālais cipars no DES produkciju. Tādējādi daudzi atslēgas izstrādās DES produkciju, kas dod uz to pašu atbilstības PVV.
Tad to, ko mēs varam darīt, lai atrastu reālus taustiņu vidū, kas citu nepatiesu pozitīvu atslēgas? Vienkārši mums ir encrypt otru dažādās TSP, kā arī ar zināmu PVV, bet izmanto tikai kandidāta taustiņiem, kas sniedza pozitīvu saskaņošanas ar pirmo TSP-PVV pāri. Tomēr nav garantijas, mēs nevarēsim iegūt atkal daudzi kļūdaini pozitīvus kopā ar true taustiņu. Ja jā, mums būs nepieciešama trešā TSP-PVV pair, atkārtojiet procesu un tā tālāk.
Pirms sākam mūsu uzbrukumu mums ir jāzina, cik daudz TSP-PVV pairs mēs nepieciešams. Jūnijā, ka mēs esam, lai aprēķinātu varbūtības par izlases DES izlaide dot atbilstīgu PVV tikai iespēja. Ir vairāki veidi, kā aprēķināt šo numuru un šeit es izmantot vienkāršu pieeju viegli izprast, bet kas vajadzīgi daži fona matemātikā varbūtības.
A iespējamība vienmēr var uzskatīt par attiecību izdevīgi gadījumos iespējamos gadījumus. Mūsu problēmu skaitu, iespējams, gadījumos, ko dod permutation 16 elementi (0 līdz F heksadecimāli cipari) ir grupa, 16 no tām (16 heksadecimālais cipars no DES produkciju). Tas ir devusi 16 ^ 16 ~ 1,8 * 10 ^ 19 kas, protams, sakrīt ar 2 ^ 64 (dažādi numuri 64 bitiem). Minētie numurus var sadalīt piecās kategorijās:
Tie, ar vismaz četriem decimal cipari (0 līdz 9) starp 16 heksadecimāli cipari (no 0 līdz F), kas DES produkciju.
Tie, kas tieši tā, tikai trīs decimal cipariem.
Tie, kas tieši tā, tikai divi decimal cipariem.
Tie, kas tieši tā, tikai vienu decimal pirkstu.
Tie, kas nav decimal cipari (all starp A un F).
Let's aprēķinātu, cik daudz numurus kritumu katrā kategorijā. Ja mēs label 16 heksadecimālais cipars no DES izvadi X1 uz X16 tad mēs varam label pirmo četru decimal cipari uz jebkuru numuru, pirmajā kategorijā, kā Xi, XJ, XK un XL. Skaits dažādas kombinācijas ar šo profilu, ko dod produkta 6 i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 6 lk-1 * 10 * 1616-l, ja 6 ' s nāk no vairākas iespējas par A līdz F ciparu, 10's nāk no iespējas 0 līdz 9 ciparu, un 16 ir no iespējām 0 līdz F ciparu. Tagad kopējo skaitu pirmajā kategorijā, ir vienkārši, ko Summēšanas šī produkta pār i, j, k, l no 1 līdz 16, bet ar i <j <k <l. Ja jūs daži math darba redzēsiet tas ir vienāds ar produktu, 104 / 6 ar Summēšanas over i no 4 līdz 16 (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1,8 * 1019.
Analogi to gadījumu skaitu, otrajā kategorijā ir dota Summēšanas pār i, j, k no 1 līdz 16 ar i <j <k no produkta 6i-1 * 10 * 6j-i-1 * 10 * 6k-J -1 * 10 * 616-k, kuru varat darbu, tā, lai ir 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7,3 * 1015. Līdzīgi trešās kategorijas esam Summēšanas over i, j no 1 līdz 16 ar i <j 6 i-1 * 10 * 6j-i-1 * 10 * 616-j, kas vienāda ar 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9,4 * 1014. Atkal, par ceturto kategoriju esam Summēšanas over i no 1 līdz 16 6i-1 * 10 * 616-i = 160 * 615 ~ 7,5 * 1013. Un visbeidzot summu gadījumos, piektajā kategorijā, ko dod permutation sešu elementi (A līdz F cipari), kas ietilpst grupā no 16, tas ir, 616 ~ 2,8 * 1012.
Es ceru, ka jūs aprēķinus līdz šim point, cietā daļa ir darīts. Tagad kā pierādījums, ka viss ir labi varat summu to gadījumu skaitu, 5 kategorijās un redzēt tās līdzinās kopskaita iespējams gadījumos mēs aprēķināta iepriekš. Vai, izmantojot 64 bitu numurus vai noapaļošanu (par pludiņiem) vai pārplūdes (par integers) kļūdas netiks ļauj iegūt precīzu rezultātu.
Līdz šim mums ir aprēķināta skaits iespējamos gadījumus, katrā no piecām kategorijām, bet mēs esam ieinteresēti iegūt skaits izdevīgi gadījumos vietā. Ir ļoti viegli iegūt pēdējā no iepriekšējās, kā tas ir tikai ar ko nosaka kombinācija no četriem decimal cipari (vai pieprasītās heksadecimālais cipars ja nav četras decimal cipari) no PVV nevis pieviļ tos bez maksas. Praksē tas nozīmē, pagriežot 10's formulu augstāk par 1 un vajadzīgo summu 6's vērā 1's ja nav četras decimal cipariem. Tas nozīmē, ka mēs esam sadalīt pirmo rezultātu ar 104, otrais ar 103 * 6, trešo vienu 102 * 62, ceturtajā vienu 10 * 63 un piektais vienu 64. Pēc tam, cik izdevīgi gadījumos, piecām kategorijām ir aptuveni 1,8 * 1015, 1,2 * 1012, 2,6 * 1011, 3,5 * 1010, 2,2 * 109 attiecīgi.
Tagad mums ir iespēja saņemt to, kas ir varbūtība uz DES produkciju atbildīs PVV nejauši. Mēs tikai pievienot pieci numuri izdevīgi gadījumos, un sadalīt to ar kopējo skaitu iespējamos gadījumus. Tādējādi mēs iegūstam ka iespējamība ir ļoti aptuveni 0,0001 vai viens no desmit tūkstoši. Vai tas ir dīvaini, šī arī noapaļo rezultāts? Not at all, tikai apskatīt skaitu mēs iepriekš aprēķināts. Pirmā kategorija dominē vairāki rīkojumi lieluma skaits izdevīgi un iespējamos gadījumus. Tas ir diezgan intuitīvākas, kā šķiet skaidrs, ka tā ir ļoti maz ticams, ka ne ar četriem decimal cipari (10 izredzes no 16 uz vienu ciparu) pie 16 heksadecimālās rakstzīmes. Mēs redzējām iepriekš, ka attiecības starp skaits ir iespējams un izdevīgi gadījumos, pirmajā kategorijā bija sadalījumam pēc 10 ^ 4, tas ir, ja mūsu rezultāts p = 0,0001 nāk no.
Mūsu mērķis ir visi šie aprēķini bija noskaidrot, cik TSP-PVV pairs mums ir nepieciešams veikt veiksmīgu brutālu spēku uzbrukums. Tagad mēs varam aprēķināt sagaidāmo skaitu viltus pozitīvo kas pirmajā meklēšana: tā būs skaitu izmēģinājumiem reizes iespējamība par vienu izlases viltus pozitīvi, ti, t * p, ja t = 2 ^ 56, izmērs no galvenajiem vietu. Tas ir apmēram 7,2 * 10 ^ 12, diezgan liels numuru. Paredzamo vairāki kļūdaini pozitīvus gada otrajā meklēt (tikai pozitīvās taustiņi atrastas pirmajā meklēšana) būs (t * p) * p, uz trešo meklēšana tiks ((t * p) * p) * p un utt. Tādējādi n meklē sagaidāmo skaitu viltus pozitīvo tiks t * p ^ n.
Varam iegūt skaits meklē nepieciešama sagaidīt tikai viena viltus pozitīvi paužot vienādojumu t * p ^ n = 1 un risināšanai, lai n. Tātad n ir vienāds ar logaritmu bāzes p 1 / t, kas pēc īpašībām, logaritmiem tā ražu n = log (1 / t) / log (p) ~ 4.2. Tā kā mēs nevaram darīt frakcionētu meklēšana ir ērti noapaļot uz augšu šo numuru. Tāpēc to, kas ir sagaidāmo skaitu viltus pozitīvi, ja mēs veiktu piecu meklēšanu? Ir t * p ^ 5 ~ 0,0007 vai apmēram 1 no 1400. Tādējādi, izmantojot piecus TSP-PVV pairs droši iegūtu patieso slepenas atslēgas bez viltus pozitīvu.
Kad mēs zinām, mums ir nepieciešams piecu TSP-PVV pairs, kā mēs viņiem? Protams, mums vajag vismaz vienu kartiņu ar zināms PIN, un sakarā ar to PVV algoritmu, tā ir vienīgā lieta, mums ir nepieciešama. Ar citām PIN sistēmas, piemēram, IBM, mums būtu nepieciešams pieciem kartes, tomēr tas nav nepieciešams, ar VISA PVV algoritmam. Mēs tikai lasīt magnētiskās joslas, un pēc tam mainītu PIN četras reizes, bet rīdinga kartes pēc katras izmaiņas.
Ir nepieciešams, lai izlasītu magnētisko svītru uz kartes, lai iegūtu PVV un encrypting taustiņu selektoru. Jūs varat iegādāties komerciāliem magnētisko svītru lasītāju vai vienu pats pēc instrukcijas atradīsiet iepriekšējo lapu un saitēm tajā. Tiklīdz jums ir lasītāja skatīt šo aprakstu standarta magnētisko dziesmas, lai uzzinātu, kā iegūt PVV no datu lasīt. Tādā dokumentā norāda PVV jomā dziesmas 1 un 2 ir teikt, ka tā ir pieci rakstura garš, bet faktiski patieso PVV sastāv no pēdējiem četriem cipariem. Pirmais no pieciem cipariem ir galvenais selektoru. Man ir tikai redzējuši kartes ar vērtību 1 Šajā ciparu, kas ir saskaņā ar standarta un ar slepenas atslēgas nekad nav apdraudēta (un tādēļ tās nav nepieciešams pārcelties uz citu taustiņu mainot selektors).
I did vienkāršu C program, getpvvkey.c, veikt uzbrukumu. Tas sastāv no loop izmēģināt visas iespējas atslēgas encrypt pirmo TSP, ja atvasinātās PVV sacensībām patieso PVV jaunu TSP ir mēģinājis, un tā līdz pastāv nesakritība, šajā gadījumā galvenais ir izmet un jaunu ir mēģinājuši, vai piecas atvasinātās PVVs atbilstu atbilst true PVVs, tādā gadījumā mēs varam pieņemt, mēs got bankas slepenas atslēgas, tomēr loop notiek, kamēr to izbeidz galveno vietu. Tas tiek darīts, lai nodrošinātu, ka mēs atrodam īsto atslēgu, jo pastāv iespēja (kaut arī ļoti zema) pirmais galvenais atrasti ir viltota pozitīvi.
Ir paredzēts, programma būtu ļoti ilgu laiku, lai pabeigtu un samazinātu risku, ar jaudu samazinājums, datoru žaut utt tas kontrolpunkti uz failu getpvvkey.dat ik pa laikam (precīzu laiks ir atkarīgs no ātruma darbā ar datoru, tā ir aptuveni viena stunda par ātrākiem datoriem tagad lietošanai). Tā paša iemesla dēļ, ja pozitīvs atslēga ir konstatējusi, ka ir uzrakstīts uz faila getpvvkey.key. Programma tikai parāda vienu ziņojumu sākumā, sākuma stāvokli ņem no kontrolpunkts failu, ja tāds ir, pēc tam, kad neko vairāk tiek parādīta.
The DES algoritms ir galvenais punktā, programmu, tāpēc ir ļoti svarīgi, lai optimizētu savu ātrumu. I pārbaudītas vairākas īstenošanu: libdes, SSLeay, openssl, cryptlib, VAD, libgcrypt, katakombas, libtomcrypt, cryptopp, UFC-kapenes. The DES funkcijas pirmo četru ir balstīti uz vienu un to pašu kodu ar Eric Young, un tas ir tāds, kas veic labāko (includes optimizēta C un x86 montētājam code). Tāpēc es izvēlējos libdes, kas bija sākotnējā īstenošana un kondensēto visu attiecīgo kodu failus encrypt.c (C variants) un x86encrypt.s (x86 montētājam versija). Kodu ir nedaudz pārveidotas, lai sasniegtu dažus uzlabojumus ar brutālu spēku uzbrukums: Sākotnējās permutation ir noteikta kopēja stāvas katrā TSP šifrēšanu un tādēļ var veikt tikai vienu reizi sākumā. Vēl viens uzlabojums ir tas, ka I wrote pilnīgi jaunu setkey funkciju (I sauc par to nextkey), kas ir optimāli par brutālu spēku cilpu.
Lai iegūtu šo programmu darba Jums tikai tipam atbilstošo piecus TSPs un to PVVs un tad salīdzināšanu. Man ir testēts tikai, UNIX platformām, izmantojot makefile Makegetpvvkey apkopot (izmantojiet komandu "make-f Makegetpvvkey"). Tā var sastādīt uz citām sistēmām, bet jums var būt nepieciešams noteikt dažas lietas. Pārliecinieties, ka noteikt, kura veids long64 atbilst 64 bitu skaitlim. Principā nav atkarība no endianness no pārstrādātāju. Man ir veiksmīgi apkopoti un raidīt to, izmantojot Pentium-Linux, Alfa-Tru64, VIC-Irix un Sparc-Solaris. Ja jums nav un nevēlaties instalēt Linux (jūs nezināt, kas jums trūkst ;-) jums joprojām ir iespēja palaist Linux CD un izmantot manu programmu, skatīt manu lapu gaitas Linux bez instalēšanas to.
Kad esat atradis slepeno bankas taustiņu, ja vēlaties, lai atrastu PIN patvaļīgu karti Jums tikai rakstīt līdzīgu programmu (sorry neesmu rakstisku to, es esmu pārāk slinks:), kas varētu mēģināt visiem 10 ^ 4 PINs radot atbilstošo TSP, encrypting to ar (vairs) slepens taustiņu, kas izriet no PVV un salīdzinot to ar PVV ar magnētisko svītru uz kartes. Jūs saņemsiet vienu spēles par patieso PIN. Tikai viens atbilstība? Atcerieties, ko mēs redzējām iepriekš, mums ir iespēja 0,0001 ka izlases šifrēšanas atbilst PVV. Mēs cenšamies 10000 PINs (un tādējādi TSPs) Tādējādi mēs sagaidām 10000 * 0,0001 = 1 nepatiesu pozitīvu par vidējo.
Tas ir ļoti interesanti rezultāti, tas nozīmē, ka vidēji katru karti ir divas derīgas PINs: klienta PIN un paredzamo viltus pozitīvi. Es saucu tā "viltus", bet atzīmē, ka, kamēr tā rada patieso PVV tas ir PIN kā derīgas kā klienta vienu. Turklāt, nav iespējams uzzināt, kas ir kas, pat par ATM tikai klientu knows. Pat tad, ja šķietami pozitīvus nebija derīgas kā PIN, jums joprojām ir trīs pētījumos pie ATM anyway pietiekami vidēji. Tādēļ varbūtības, mēs aprēķina sākumā šī dokumenta par izlases guessing no PIN ir jālabo. Faktiski tas ir divas reizes, ka vērtību, ti, ir 0,0006 vai viens no vairāk nekā 1600, tomēr droši zems.
Rezultāti
Ir svarīgi, lai optimizētu kompilējot programmu un palaist to visstraujāk iespējams apstrādātājs tāpēc, ka ilgi gaidīts rādīt laiku. Es atklāju, ka kompilatora optimizācijas karoga O izpaužas labāku sniegumu, domāju, daži uzlabojumi tiek sasniegts pievienojot-fomit-frame-bultiņas karogu Pentium-Linux, the-smaile karogu Alfa-Tru64, par IPA karogu VIC-Irix un ātrā karogu Sparc-Solaris. Special karogi (-DDES_PTR-DDES_RISC1-DDES_RISC2-DDES_UNROLL-DASM) par DES kodu parasti ir priekšrocības, kā labi. Visi šie karogi jau ir pārbaudīti un es izvēlējos labāko kombināciju katram procesoram (skatīt makefile), bet varat mēģināt fine melodija citu valstu karogiem.
Saskaņā ar manu testi vislabākie rezultāti tiek panākta ar AMD Athlon 1600 MHz procesors, kas pārsniedz 3,4 miljonus taustiņus sekundē. Interesanti tas izpaužas labākus rezultātus nekā Intel Pentium IV 1800 MHz un 2000 MHz (skat. turpmāk, klikšķiniet uz tām, lai palielinātu). Es uzskatu, ka tas ir tāpēc, ka dažas I / O piesātinājums, protams, kešatmiņu vai atmiņas piekļuves, ka AMD procesoru (kas ir puse no cache no Pentium) vai mātesplatē, kurā tā darbojas, izdodas izvairīties. Saskaņā ar pirmo attēlu tālāk jūs redzat, ka DES pārkāpj ātrumu visiem pārstrādātājiem ir vairāk vai mazāk lineāru attiecības ar procesora ātrumu, izņemot gadījumus, kad divi Intel Pentium I minēts iepriekš. Tas ir loģiski, tas nozīmē, ka uz divkāršu procesora ātrumu, jūs saņemsiet dubultu pārkāpj ātruma, bet skatīties, kas paredzēti piesātinājuma sekas, šajā gadījumā tas ir labāk AMD Athlon 1600 MHz, kas būs vēl lētāk nekā Intel Pentium 1800 MHz vai 2000 MHz.
Ar otro skaitli varam skatīt sīkāk ko mēs prasītu raksturīgajām DES break jauda pārstrādātājam. Man šī vērtība vienkārši dalot break ātrumu ar procesora ātrumu, tas ir, mēs skaits DES atslēgām mēģināja sekundē un katru MHz. Tas ir pasākums, lai pildītu no pārstrādātāju veidu neatkarīgi no tā ātruma. Rezultāti liecina, ka labākais procesors par šo uzdevumu ir AMD Athlon, tad seko Alpha un ļoti tuvu pēc tam, kad tas ir Intel Pentium (izņemot gadījumus, kad lielāku ātrumu tiem, kas veic ļoti slikti, jo piesātinājuma efektu). Tālāk ir VIC pārstrādātāju un pēdējā vieta ir Sparc. Daži Alpha un VIC pārstrādātāju atrodas apakšā mērogā, jo tie ir agri releases neieskaitot palielinājumi vēlu versijas. Ievērojiet, ka es iekļauti veikšanai x86, par C un montētājam kods, kas ir liela starpība. Šķiet, ka PLP nav laba ģenerators optimizēta mašīnu kodu, bet, protams, mēs nezinām, vai manual optimizācijai montētājam kodu citu pārstrādātāji (Alpha, VIC, Sparc), varētu veicināt to rezultātu, salīdzinot ar native C kompilatori (I neizmantoja GCC šīm citām platformām), kā tas notiek ar x86 procesoru.
Atjaunot
Šeit ir raksts, ja šīs metodes ir izmantotas.




























