Breaking wizy PIN
Poniżej znajduje się artykuł znalazłem niedawno. Ten jeden z najbardziej wyczerpujące opisy kod weryfikacyjny Wartość (PVV) hackingu.
Myślałem, że będzie ona tutaj replikację dla mojej lokalnej odniesienia.
Jako komentarz zostały dokonane w odniesieniu do gramatyki użyte w tekście oryginalnym, mam poprawione niektóre z oczywistych błędów przy jednoczesnym zachowaniu kontekście pierwotnego materiału.
http://69.46.26.132/ ~ biggold1/fastget2you/tutorial.php
--- Tekst oryginalny ----
Przedmowa
Czy kiedykolwiek się zastanawiać, co by się stało, jeśli stracisz kartę kredytową lub debetową, i ktoś go znajdzie. Czy osoba ta miałaby być w stanie wycofać gotówkę z bankomatów na zgadywaniu, w jakiś sposób, kod PIN? Ponadto, jeśli znajdzie kogoś, kto był na kartę można by spróbować odgadnąć PIN i podejmuje niektóre szansę zdobyć łatwe pieniądze? Oczywiście odpowiedź na obydwa pytania powinna być "nie". Praca ta nie odnosi się do drugiego pytania, to jest kwestia etyki osobistej. Niniejszym próbuję odpowiedzieć na pierwsze pytanie.
Wszelkie informacje wykorzystywane do tych prac jest publiczna i można swobodnie znaleźć w Internecie. Reszta jest sprawą z zakresu matematyki i programowania, w ten sposób możemy dowiedzieć się czegoś i mieć fun. I nie ujawniają sekretów. Ponadto, w celu (i ostatecznego zawarcia) niniejszej pracy jest wykazanie, że kod PIN algorytmy są jeszcze wystarczająco silne, aby zapewnić wystarczające bezpieczeństwo. Wszyscy wiemy, technologia nie jest słabym punktem.
Ta praca analiz jednym z najczęstszych PIN algorytmów, VISA PVV, używany przez wiele kart bankomatowych (kredytowe i debetowe) i próbuje dowiedzieć się, jak odporny jest PIN guessing ataków. Przez "zgadywaniu" nie oznacza wybór losowy PIN i próbuje go w ATM. Jest to znany powszechnie, że mamy trzy kolejne próby, aby wprowadzić prawo PIN, jeśli nie prowadzi do bankomatu karty. Jak VISA PIN to czterocyfrowy długo można łatwo wywnioskować, że szansa na losowej PIN jest odgadnięcie 3 / 10000 = 0,0003, wydaje się na tyle niska, by być bezpieczne, to znaczy, musisz stracić swojej karty ponad trzy tysiące razy ( lub utraty więcej niż trzy tysiące kart w tym samym czasie:), dopóki istnieje rozsądna szansa utraty pieniędzy.
Co naprawdę rozumie przez "zgadywaniu" było zerwanie PIN algorytm tak, że biorąc pod uwagę każdą kartę można od razu poznać związane PIN. Dlatego ten dokument, że możliwość badania, analizując algorytm i proponuje metodę ataku. Wreszcie dajemy narzędzie, które implementuje ataku i przedstawić wyniki o szacunkowej szansę uszkodzenia systemu. Należy pamiętać, że tak długo, jak inne bankowe związane z bezpieczeństwem algorytmów (inne PIN formatów, takich jak IBM PIN lub karty walidacji podpisów takich jak CVV lub CVC) są podobne do VISA PIN, to samo można zrobić analizę przynosi prawie takie same wyniki i wnioski.
Jednym z najczęstszych PIN algorytmów jest VISA kod weryfikacyjny Wartość (PVV). Klient otrzymuje kod PIN i paskiem magnetycznym karty. Zakodowany w paskiem magnetycznym to czterocyfrowy numer, zwany PVV. Ta liczba jest kryptograficzny podpis, PIN i inne dane związane z kartą. Gdy użytkownik wprowadzi swój kod PIN w bankomacie czyta paskiem magnetycznym, szyfruje i wysyła te informacje do centralnego komputera. Nie próbna PVV jest obliczany przy użyciu klient wpisuje kod PIN i karty kryptograficzne informacje o algorytmie. Rozprawie PVV jest w porównaniu z PVV przechowywane w karty, jeżeli pasują do centralnego komputera wraca do bankomatu zezwolenia na transakcję. Zobacz w sposób bardziej szczegółowy.
Opis z PVV algorytmu można znaleźć w dwóch dokumentów związanych w poprzedniej strony. W podsumowaniu ona polega na szyfrowanie 8 bajtów (64 bitów) ciąg danych, zwany Transformed Bezpieczeństwa Parametr (TSP), z DES Algorytm (DEA) w Electronic Code Book trybie (EBC) przy użyciu tajnego klucza 64-bitowych. W PVV pochodzi z produkcji szyfrowania proces, który jest 8 bajtowy ciąg znaków. Czterech cyfr z PVV (od lewej do prawej) odnoszą się do pierwszych czterech cyfr (od lewej do prawej) na wyjście z DES, gdy uznane za 16 znaków szesnastkowych (16 bit x 4 = 64-bitowa) string. Jeśli nie ma wśród czterech cyfr, 16 znaków szesnastkowych następnie PVV podjęta zostanie zakończona (od lewej do prawej) nie dziesiętny decimalizing znaków i ich wykorzystaniem przez A-konwersja> 0, B-> 1, C-> 2, D -> 3, E-> 4, K-5. Oto przykład:
Wyjście z DES: 0FAB9CDEFFE7DCBA
PVV: 0975
Strategia unikania decimalization przez pomijanie znaków aż czterech cyfr znajdują się (co zdarza się niemal wszystkie razy, ile będziemy patrz poniżej) jest bardzo sprytny, gdyż unika ważnym stronniczości w dystrybucji cyfr, który okazał się być śmiertelne dla innych systemów, chociaż wpływ na ten system byłby znacznie niższy. Patrz również problem związany z nie stosowania się do VISA PVV.
Z TSP, postrzegane jako 16 znaków szesnastkowych (64 bit) string, tworzy się (od lewej do prawej) z 11 cyfr z prawej PAN (numer karty kredytowej) z wyłączeniem ostatniej cyfry (cyfra sprawdzić), jednej cyfry od 1 do 6 które wybiera tajny klucz szyfrowania i wreszcie czterech cyfr numeru PIN. Oto przykład:
PAN: 1234 5678 9012 3445
Klucz selektora: 1
PIN: 2468
TSP: 5678901234412468
Oczywiście problem łamania VISA PIN polega na znalezieniu tajnego klucza do szyfrowania DES. Metoda to zrobić brutalnej siły szukać klucza miejsca. Należy pamiętać, że nie jest to jedyna metoda, można było spróbować znaleźć słabości w DEA, wielu próbowało, ale to stary standard jest jeszcze w powszechnym użyciu (obecnie został zastąpiony przez AES i RSA, aczkolwiek). Pokazuje to jest wystarczająco solidne, aby brutalnej siły jest tylko opłacalne metody (istnieją lepsze ataki, ale nie praktyczne w naszym przypadku, na podsumowanie patrz LASEC pamięć i za brudne szczegóły patrz Biham & Shamir 1990, Biham & Shamir 1991 r., Matsui 1993, Biham & Biryukov 1994 i Heys 2001).
Selektor cyfrowy klucz był bardzo prawdopodobne, wprowadziła na pokrycie możliwość kluczowym kompromisu. W takim przypadku po prostu oni mają do wydania nowej karty za pomocą innego klucza selektora. Starsze karty mogą być zastąpione nowymi lub po prostu ATM przejrzysty może napisać nową PVV (odpowiednio do nowego klucza i utrzymywanie tego samego kodu PIN) następnym razem, gdy klient korzysta z jego karty. Do wstrząsnąć bezpieczeństwa wszystkich użytkowników powinny być poproszone o ich zmianę PIN, jednak byłoby krępujące dla banku, aby wyjaśnić przyczyny, więc bardzo prawdopodobne, to oni nie czynią takiego wniosku.
Przygotowanie ataku
A brutalna siła ataku polega na szyfrowaniu jeden ze znanych TSP PVV przy użyciu wszystkich możliwych kluczy szyfrowania i porównać uzyskane każdego PVV ze znanym PVV. Gdy mecz jest znaleźć mamy kandydata klucz. Ale jak wielu kluczy musimy spróbować? Jak już wspomniano powyżej klucz jest 64-bitowa długo, oznaczałoby to, że musimy spróbować 2 ^ 64 kluczy. Jednak nie jest to prawdą. Właściwie tylko 56 bitów są skuteczne w DES kluczy, ponieważ jeden bit (najmniej znaczący) obecnie każdy oktet była historycznie suma kontrolna jako zastrzeżone dla innych, w praktyce te 8 bitów (po jednym dla każdego z 8 bajtów) są ignorowane.
Dlatego DES klawisz spacji składa się z 2 ^ 56 kluczy. Jeśli spróbujemy wszystkich tych klawiszy będzie nam znaleźć jeden i tylko jeden mecz, co odpowiada bank tajnego klucza? Z pewnością nie. Będziemy uzyskania dopasowania wielu kluczy. Dzieje się tak, ponieważ PVV jest tylko niewielka część (jedna czwarta) z DES wyjście. Ponadto PVV jest degenerated, ponieważ niektóre z cyfr (tych od 0 do 5 po ostatniej, patrząc od lewej do prawej, cyfra pomiędzy 6 i 9) mogą pochodzić z postaci cyfr lub z cyfr szesnastkowych decimalized z DES wyjście. Tak więc wiele kluczy powstanie DES wyjście, które daje do tego samego dopasowywania PVV.
Wtedy to, co możemy zrobić, aby znaleźć klucz rzeczywistym między innymi fałszywie pozytywnych klucze? Po prostu mamy do szyfrowania drugi różnych TSP, znany również z PVV, ale tylko przy użyciu klawiszy kandydata, który wydał pozytywną dopasowania z pierwszym TSP-PVV pary. Jednak nie ma gwarancji, że nie będzie ponownie wielu fałszywych alarmów wraz z prawdziwego klucza. Jeśli tak, to będziemy potrzebować trzeciego TSP-PVV pary, powtórz ten proces i tak dalej.
Zanim zaczniemy naszą ataku musimy wiedzieć, ilu TSP-PVV par będziemy potrzebować. Do tego musimy obliczyć prawdopodobieństwo na losowej DES wyjściowej pasującej do plonu PVV tylko przez przypadek. Istnieje kilka sposobów obliczania tej liczby i będę tu użyć prostego podejścia łatwe do zrozumienia, ale która wymaga pewnych tła w matematyce prawdopodobieństwa.
A prawdopodobieństwo zawsze można postrzegać jako korzystny stosunek przypadków możliwych przypadków. W naszym problemem liczby przypadków możliwe jest podany przez przestawienie z 16 elementów (z 0 do F szesnastkowych) w grupie 16 z nich (16 cyfr szesnastkowych z DES wyjście). Jest to podana przez 16 ^ 16 ~ 1,8 * 10 ^ 19 co oczywiście zbiega się z 2 ^ 64 (różne numery 64 bity). Ten zestaw liczb można podzielić na pięć kategorii:
Osób z co najmniej czterech cyfr (0 do 9) wśród 16 cyfr szesnastkowych (od 0 do F) z DES wyjście.
Dokładnie z tych zaledwie trzech cyfr.
Dokładnie tylko z tych dwóch cyfr.
Dokładnie z tych tylko jednego palca.
Żaden z tych cyfr (wszystkie pomiędzy A i K).
Let's obliczyć, ile liczb wchodzą w każdej kategorii. Jeżeli etykieta 16 cyfr szesnastkowych z DES wyjście jako X1 do X16 następnie możemy etykiety pierwsze cztery cyfry dziesiętnej dowolnej liczby pierwszej kategorii Xi, XJ, Xk i XL. Liczbę różnych kombinacji z tego profilu jest podana przez producenta 6 I-1 * 10 * 6j-i-1 * 10 * 6k-J-1 * 10 * 6 str. 1 * 10 * 1616-l, gdzie 6 ' s pochodzą z wielu możliwości A do F cyfrowy, 10's pochodzą z możliwości dla cyfry od 0 do 9, i 16 pochodzą z możliwości 0 do F cyfrowy. Teraz całkowitej liczbie w pierwszej kategorii jest po prostu podane przez sumowanie tego produktu nad i, j, k, l od 1 do 16, ale ze i <j <k <l. Jeśli kilka prac matematycznych zobaczysz tego produktu jest równa 104 / 6 z ciągu i zsumowanie od 4 do 16 (i-1) * (i-2) * (I-3) * 4 *-6i 16 16-I ~ 1,8 * 1019.
Analogicznie liczba przypadków, w drugiej kategorii jest podawany przez sumowanie nad i, j, k od 1 do 16 z I <j <k danego produktu 6i-1 * 10 * 6j-i-1 * 10 * 6k-j -1 * 10 * 616-k, które można pracować to być 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7,3 * 1015. Podobnie w przypadku kategorii trzeciej mamy sumowanie nad i, j od 1 do 16 z I <J 6 I-1 * 10 * 6j-i-1 * 10 * 616-J, który wynosi do 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9,4 * 1014. Ponownie, do czwartej kategorii mamy ponad podsumowanie i od 1 do 16 6i-1 * 10 * 616-I = 160 * 615 ~ 7,5 * 1013. I wreszcie wysokość przypadkach, w piątej kategorii podany jest przez przestawienie się z sześciu elementów (od A do F cyfr) w grupie 16, że jest, 616 ~ 2,8 * 1012.
Mam nadzieję, że po obliczeniach do tego punktu, twardego część jest wykonywana. Teraz, jako dowód, że wszystko jest prawo możesz suma liczby przypadków w 5 kategoriach i zobaczyć go równa całkowitej liczby możliwych przypadkach obliczona przed. Czy operacje przy użyciu 64-bitowych liczb lub zaokrągleniem (dla pływaków) lub przepełnienia (dla całkowitych) błędy nie pozwalają na uzyskanie dokładnych wyników.
Do chwili obecnej mamy obliczona liczba możliwych przypadków w każdej z pięciu kategorii, ale są zainteresowane w uzyskaniu wielu przypadkach zamiast korzystna. Jest to bardzo łatwe do uzyskania drugiego z byłych jak jest to tylko ustalające kombinacji czterech cyfr (lub wymaganego szesnastkowych jeżeli nie ma czterech cyfr) z PVV zamiast najmu nich wolne. W praktyce oznacza to zwrotny 10's we wzorze na 1 powyżej oraz wymaganej kwoty na 6 do nr 1, jeżeli nie ma czterech cyfr. Oznacza to, że musimy podzielić wynik przez pierwsze 104, drugi 103 * 6, trzeci 102 * 62, czwarty jeden przez 10 * 63 i 64 piąta. Następnie liczba przypadków korzystny w pięciu kategoriach są około 1,8 * 1015, 1,2 * 1012, 2,6 * 1011, 3,5 * 1010, 2,2 * 109 odpowiednio.
Teraz jesteśmy w stanie uzyskać to, co jest prawdopodobieństwo dla DES wyjście będzie odpowiadała PVV przez przypadek. My wystarczy dodać do pięciu numerów przypadkach korzystne i podzielić ją przez liczbę możliwych przypadków. Ten sposób otrzymujemy, że prawdopodobieństwo jest bardzo ok. 0,0001 lub jeden z dziesięciu tysięcy. Czy to dziwne tym również zaokrąglony wynik? Nie na wszystkich, wystarczy spojrzeć na numery my z powyższymi obliczeniami. Pierwsza kategoria dominuje przez kilka rzędów wielkości liczbę korzystne i możliwe przypadki. To jest raczej jak go intuicyjnym wydaje się jasne, że jest to bardzo mało prawdopodobne, nie czterech cyfr (10 obecnie szanse na 16-cyfrowy) wśród 16 cyfr szesnastkowych. Widzieliśmy wcześniej, że związek między liczbą możliwe i korzystne w przypadku pierwszej kategorii został podział przez 10 ^ 4, że jeżeli w wyniku naszej p = 0,0001 pochodzi.
Naszym celem dla wszystkich tych obliczeń było dowiedzieć się, ilu TSP-PVV par musimy przeprowadzić udaną brutalna siła ataku. Teraz jesteśmy w stanie obliczyć oczekiwane liczby fałszywych alarmów w pierwszej wyszukiwania: będzie to liczba prób razy prawdopodobieństwa dla pojedynczego losowy fałszywie dodatnie, tj. t * p gdzie t = 2 ^ 56, rozmiar klucza miejsca. Kwota ta stanowi około 7,2 * 10 ^ 12, dość duża liczba. Oczekiwane liczby fałszywych alarmów w drugim wyszukiwania (ograniczone do pozytywnych kluczy znalezionych w pierwszej wyszukiwania) zostanie (T * p) * p, dla trzeciego będzie wyszukiwania ((t * p) * p) * p i tak dalej. Zatem dla n wyszukiwań oczekiwane liczby fałszywych alarmów będzie t * p ^ n.
Możemy uzyskać wymaganej liczby wyszukiwań oczekiwać tylko jeden fałszywie dodatnich przez równania wyrażające t * p ^ n = 1 i rozwiązania dla n. Więc n równa do logarytmu w podstawy p 1 / t, które przez właściwości logarytmów ona daje n = log (1 / t) / log (p) ~ 4.2. Ponieważ nie możemy zrobić ułamkową wyszukiwania jest wygodny zaokrąglić w górę do tego numeru. W związku z tym, co jest oczekiwane liczby fałszywych alarmów, jeśli będziemy wykonywać pięć wyszukiwania? Jest t * p ^ 5 ~ 0,0007 czyli około 1 na 1400. W ten sposób za pomocą pięciu TSP-PVV pary jest bezpieczna do uzyskania prawdziwego tajnego klucza, bez fałszywych alarmów.
Gdy wiemy, musimy pięć TSP-PVV parach, w jaki sposób je uzyskać? Oczywiście musimy co najmniej jedną kartę ze znanymi PIN, a ze względu na charakter tego PVV algorytm, to jedyną rzeczą, której potrzebowaliśmy. Z drugiej PIN systemów, takich jak IBM, ale musiałyby pięć kart, jednak nie jest to konieczne z VISA PVV algorytmu. Po prostu trzeba przeczytać paskiem magnetycznym, a następnie zmienić kod PIN cztery razy, ale czytanie karty po każdej zmianie.
Konieczne jest zapoznanie się z paskiem magnetycznym na karty, aby uzyskać PVV i klucz szyfrowania selektora. Możesz kupić handlowe paskiem magnetycznym czytnika lub jednego sobie następujące instrukcje można znaleźć w poprzedniej strony i linki w nim. Gdy masz już czytnik zobaczą ten opis standardowych ścieżek magnetycznych, aby dowiedzieć się jak otrzymać PVV z danych odczytać. W tym dokumencie PVV w dziedzinie ścieżek 1 i 2 to rzekł do pięciu znaków długo, ale rzeczywiście prawdziwe PVV składa się z czterech ostatnich cyfr. Pierwszy z pięciu cyfr jest kluczem selektora. I have seen tylko karty o wartości 1 w tym cyfrowy, który jest zgodny ze standardem iz sekret klucz nigdy nie jest zagrożony (a więc nie trzeba przenieść do innego klucza zmiany selektor).
Zrobiłem prosty program w języku C, getpvvkey.c, do przeprowadzenia ataku. Składa się on z pętli, aby spróbować wszystkich możliwych kluczy do szyfrowania pierwszego TSP, jeżeli uzyskane PVV mecze prawdziwe PVV nowy TSP jest sądzony, i tak dalej, dopóki istnieje niedopasowanie, w którym to przypadku jest klucz wyrzucić i nowe skanowane, lub pięciu PVVs pochodzące z odpowiednią PVVs prawdziwe, w przypadku których można zakładać, mamy bank tajnego klucza, jednak wychodzi na pętli, dopóki nie wyczerpuje kluczowe miejsca. Robimy to, aby zapewnić nam znaleźć prawdziwego klucza, ponieważ istnieje szansa (choć bardzo niski) pierwszy klucz Znaleziono jest fałszywie dodatni.
Oczekuje się, program będzie trwać bardzo długo, aby zakończyć i aby zminimalizować ryzyko energii, komputer zawiesza się obecnie, itp. to kontrolnych do pliku getpvvkey.dat od czasu do czasu (dokładny czas zależy od prędkości z komputera, to około jednej godziny dla najszybszych komputerów już w użyciu). Z tego samego powodu, jeżeli pozytywny klucz znajduje to jest napisane w pliku getpvvkey.key. Program wyświetla tylko jedną wiadomość na początku, w pozycji wyjściowej, wzięte z pliku punktu kontrolnego, jeżeli takie istnieją, po to, że nic więcej wyświetlany.
W DES Algorytm jest kluczowym punktem w programie, dlatego jest bardzo ważne, aby zoptymalizować jego prędkość. I testowany kilka implementacji: libdes, SSLeay, openssl, cryptlib, NSS, libgcrypt, katakumby, libtomcrypt, cryptopp, ufc-crypt. W DES funkcje pierwsze cztery są oparte na tym samym kodem przez Erica Younga i jest jedynym, który najlepiej wykonane (w tym C i zoptymalizowany kod asemblera x86). Wybrałem więc libdes który był oryginalny i realizacji wszystkich istotnych skróconego kodu w plikach encrypt.c (wersja C) i x86encrypt.s (x86, wersja asemblera). Kod jest nieco zmodyfikowany w celu osiągnięcia pewnych ulepszeń w brutalnej siły ataku: początkowy permutacja jest ustalana w każdym wspólnym strome TSP szyfrowania, a zatem można dokonać tylko jeden raz na początku. Innym jest poprawa, że napisałem zupełnie nową funkcję setkey (I nazwał go nextkey), który jest optymalny dla brutalnej siły pętlę.
Aby pobrać program pracy wystarczy, aby wpisać w odpowiednie miejsce pięć TSPs i ich PVVs a następnie skompilować go. Ja testowałem to tylko na platformach UNIX, korzystając z Makefile do kompilacji Makegetpvvkey (użyj polecenia "make-f Makegetpvvkey"). Może ona innych systemów na skompilowac, ale być może trzeba będzie ustalić pewne rzeczy. Upewnij się, że definicja typu long64 odpowiada 64-bitowych. W zasadzie nie istnieje zależność od Endianness przetwórcy. Mam pomyślnie skompilowany i uruchomić go na Pentium-Linux-Alpha Tru64, Irix mips-i-Sparc Solaris. Jeśli nie masz i nie chcesz zainstalować Linuksa (nie wiesz, co ci brakuje ;-) nadal masz wyboru, aby uruchomić Linuksa na płycie CD i korzystać z mojego programu, zobacz moją stronę Linuksa bez potrzeby instalowania go.
Po znalezieniu tajnych bankowych kluczowych, jeśli chcesz znaleźć PIN w sposób arbitralny karty wystarczy napisać podobny program (niestety nie mam napisane to, jestem zbyt leniwy:), które mogłyby spróbować wszystkich 10 ^ 4 PIN poprzez tworzenie odpowiednich TSP, szyfrowanie go z (nie) tajnego klucza, wynikających z PVV i porównując go z PVV z paskiem magnetycznym na karty. Pojawi się jeden mecz za prawdziwe PIN. Tylko jeden mecz? Pamiętaj, co widzieliśmy powyżej, mamy szansę na 0,0001, że wyrywkowe szyfrowanie odpowiada PVV. Jesteśmy próbuje 10000 PIN (a zatem TSPs) więc oczekujemy 10000 * 0,0001 = 1 fałszywie dodatnie średnio.
Jest to bardzo ciekawy wynik, to znaczy, że średnio każda karta ma dwa ważne PIN: klient PIN i oczekiwane fałszywie pozytywnych. Ja nazywam to "false", ale pamiętać, że tak długo, jak długo ona generuje prawdziwe PVV jest to kod PIN tak samo ważne, jak to jeden klient. Ponadto, nie ma sposobu, aby wiedzieć, który jest który, nawet do bankomatu, tylko klient wie. Nawet jeśli nie zostały fałszywie pozytywnych, jak ważny PIN, nadal mają trzy próby na bankomatu mimo, wystarczy na średniej. W związku z tym prawdopodobieństwo, że obliczony na początku tego dokumentu temat z domyślać losowy PIN musi zostać poprawiony. Właściwie to dwa razy, że wartości, tj. 0.0006 lub jest on jednym z ponad 1600, w dalszym ciągu bezpiecznie niska.
Wyniki
Ważne jest, aby zoptymalizować kompilacji programu i uruchomić go w możliwie najszybszym procesorem z powodu długiego spodziewać uruchamiania. I stwierdziła, że kompilator optymalizacji flaga-O pobiera lepsze wyniki, myśli o pewnej poprawie, to osiągnąć dodając-fomit-frame-pointer flagi na Pentium-Linux,-Spike bandery Alpha-Tru64, na IPA flagi na mips-Irix i-szybkie flagi na sparc-solaris. Specjalnego banderami (-DDES_PTR-DDES_RISC1-DDES_RISC2-DDES_UNROLL-DASM) do DES kod ogólnie, jak również korzyści. Wszystkie te flagi zostały już przetestowane i wybrali najlepszą kombinacją dla każdego procesora (patrz Makefile), ale możesz spróbować w celu dokładnego dostrojenia innych flag.
Według moich testów najlepsze wyniki osiąga się z AMD Athlon 1600 MHz procesor, przekraczającej 3,4 miliona kluczy na sekundę. Co ciekawe jeszcze lepsze wyniki niż Intel Pentium IV 1800 MHz i 2000 MHz (patrz rys. poniżej, kliknij je, aby powiększyć). Sądzę, że wynika to pewne I / O nasycenia, na pewno cache lub dostępu do pamięci, że procesor AMD (która ma połowę cache w Pentium) lub płyty głównej, w którym jest uruchomiony, zarządza, aby uniknąć. W pierwszym rysunku poniżej widać, że DES łamiącym prędkości wszystkich procesorów ma mniej lub bardziej liniowa zależność z szybkości procesora, z wyjątkiem dwóch Intel Pentium już wspomniałem wcześniej. To jest logiczne, oznacza to, że za podwójną prędkość procesora otrzymasz podwójne złamanie prędkości, ale należy zwrócić uwagę na skutki nasycenia, w tym przypadku lepiej jest AMD Athlon 1600 MHz, które będą nawet tańsze niż Intel Pentium 1800 MHz lub 2000 MHz.
W drugim rysunku widzimy bardziej szczegółowo, co chcielibyśmy połączyć swoistych DES złamać moc procesora. I get wartość ta po prostu podzielenie break prędkości przez prędkość procesora, to otrzymujemy liczbę DES kluczy na sekundę i próbował na MHz. To jest miarą wydajności procesora typu niezależnie od jego prędkości. Wyniki pokazują, że najlepszym procesorem do tego zadania jest AMD Athlon, a potem przychodzi Alfa i po bardzo blisko jest procesor Intel Pentium (za wyjątkiem wyższych prędkości te, które wykonują bardzo biednych z powodu nasycenia efektu). Dalej jest procesor MIPS i ostatnie miejsce jest Sparc. Niektóre procesory MIPS i Alpha znajdują się w dolnej części skali, ponieważ są one wczesnych wydaniach nie wliczając akcesoriów późnych wersji. Należy pamiętać, że włączone wydajność dla procesorów x86 C i kod asemblera, gdyż istnieje duża różnica. Wydaje się, że gcc nie jest dobry generator kodu maszynowego zoptymalizowany, ale oczywiście nie wiemy, czy podręcznik optymalizacji kodu asemblera dla innych procesorów (Alpha, Mips, Sparc) zwiększy swoje wyniki w porównaniu do rodzimych kompilatory C (Nie używać gcc dla innych platform), jak dzieje się z procesorem x86.
Uaktualnić
Tutaj znajduje się artykuł, gdzie tych technik mogły być użyte.
http://redtape.msnbc.com/2008/08/could-a-hacker.html





























Leave a Reply