Atak na koprocesor kryptograficzny IBM 4758
Transkrypt
Atak na koprocesor kryptograficzny IBM 4758
Atak na koprocesor kryptograficzny IBM 4758 Piotr Pisarczyk [email protected] Na podstawie artykułu: Extracting a 3DES key from an IBM 4758 autorstwa: Michael Bond i Richard Clayton http://www.cl.cam.ac.uk/~rnc1/descrack/ Czym jest IBM 4758 ? IBM 4758 koprocesor kryptograficzny, tworzący i przechowujący tajne klucze do algorytmu szyfrującego DES lub potrójny DES (3DES) wykorzystywany przez banki do zabezpieczania swoich systemów komputerowych oraz transakcji zarówno tradycyjnych(np. kody PIN kart), jak i internetowych(np. e-commerce) uzyskał najwyższy atest wiarygodności (FIPS 140-1 level 4 ) władz federalnych USA w 1998 roku Bezpieczeństwo urządzenia Jest ono odporne na wszelkie ataki mechaniczne (otwarcie, rozwiercenie, zamrożenie, prześwietlenie promieniami Roentgena), czy też próby typu ”Tempest" czy "power analysis”, tak więc jedyną szansą dla przestępców komputerowych jest przełamanie blokad software’owych i wydobycie tajnych kluczy z maszyny. Co będzie potrzebne do ataku? Około 20 minut dostępu do urządzenia Układ FPGA (Excalibur' kit firmy Altera za 995$) Około dwóch dni na złamanie zaszyfrowanych danych w/w układem Czym jest Excalibur' kit firmy Altera? to rodzaj programowalnego układu logicznego, który można w łatwy sposób zaprogramować tak aby wydajnie i szybko wykonywał zadane obliczenia np. złamanie szyfru DES Przebieg ataku Pierwsza część ataku polega na wygenerowaniu w urządzeniu klucza DES-a i poznaniu jego wartości (IBM 4758 i użytkownik tworzą po jednym kluczu DES-a. Te dwa klucze są poddawane operacji XOR, a rezultat zapisywany jest w urządzeniu jako DES data key) Krok 1 Wygenerowanie klucza DES nieznanej wartości Krok 2 Stworzenie klucza DES o wartości 0 Krok 3 XOR’owanie kluczy z kroku 1 i 2 w celu otrzymania DES data key (nieznane nam w tym momencie ale zależne od naszego klucza) Krok 4 Zaszyfrowanie „0” przy pomocy DES data key Krok 5 Powtórzone kroków 2-4 dla wartości 1-16383 Po ok. 10 minutach będziemy mieli 16384 różne wersje zakodowanego „0” Po zakończonej sesji wystarczy użyć układu FPGA aby ze średnim szczęściem w ciągu 25 godzin odgadnąć klucz DES’a wygenerowany w kroku 1. Krok 6 Połączenie nieznanego klucza z kroku 1 z dowolna znaną wartością w celu stworzenia DES data key nie jest to jednak koniec ponieważ zwykły DES data key nie ma uprawnień aby wyeksportować tajne klucze które chcemy ukraść Druga część ataku Krok 7 Wygenerowanie klucza 3DES „replicate key part” o nieznanej wartości replicate key part ma obie połówki takie same aby zapewnić kompatybilność z maszynami które potrafią obsłużyć jedynie „pojedynczego” DES’a, ponieważ klucz 3DES z dwoma połówkami identycznymi szyfruje tak samo jak „pojedynczy” DES Krok 8 Stworzenie klucza 3DES replicate key part z obiema połówkami równymi 0 Krok 9 XOR’owanie kluczy z kroku 7 i 8 w celu wygenerowania klucza 3DES exporter key Krok 10 Zaszyfrowanie data key otrzymanego w kroku 6 kluczem exporter key i wyświetlenie zaszyfrowanej wartości Ponieważ klucz który jest eksportowany jest kluczem „pojedynczego” DES’a jesteśmy w stanie wyeksportować go kluczem replicate key, który jako klucz 3DES z obiema połówkami identycznymi jest tej samej mocy. Niemniej jednak, tajne klucze które chcemy wykraść są kluczami 3DES z obiema połówkami różnymi i urządzenie nie pozwoli nam ich wyeksportować dużo słabszym replicate key. Krok 11 Powtórzone kroków 8-10 dla wartości 1-16383 umieszczonych w obu połówkach replicate key part Kroki od 7 do 11 zajmują kolejne 10 minut po których będziemy mieli 16384 różne wersje zakodowanego DES data key stworzonego w 6 kroku Krok 11 c.d. Ponieważ klucze stworzone w kroku 9 były kluczami eksportowymi, nie mogliśmy nimi zaszyfrować dowolnej, znanej nam wartości, tak jak działo się to w pierwszej części ataku, gdy szyfrowaliśmy „0”. To tłumaczy do czego potrzebowaliśmy pierwszej części, ataku. Krok 12 Stworzenie klucza 3DES z obiema częściami różnymi lecz o znanej wartości Krok 13 Połączenie klucza z poprzedniego kroku z nieznanym replicate key part z kroku 7, w celu wygenerowania 3DES exporter key z obiema częściami różnymi To jest miejsce w którym oprogramowanie IBM’a zawodzi. Pozwala nam na przejście (”bootstrap”) z replicate key part na 3DES exporter key z obiema częściami różnymi Krok 14 Wyeksportowanie wszystkich tajnych kluczy z IBM’a przy użyciu 3DES exporter key z kroku 13 Jak tylko skończy się ten krok możemy zatrzeć ślady naszej obecności i zakończyć sesję. Krok 15 Po około dwóch dniach pracy układu FPGA będziemy znali zarówno klucz DES data key oraz replicate key part, a dzięki nim obliczymy 3DES exporter key z kroku 13 którym to zaszyfrowaliśmy i wyeksportowaliśmy wszystkie ściśle tajne klucze Kim są autorzy tego ataku ? Michael Bond i Richard Clayton są doktorantami Uniwersystetu w Cambrigde na wydziale informatyki. Jak zareagował na to IBM ? Jedna z pierwszych odpowiedzi: "Ten akademicki przypadek opiera się o specyficzne warunki laboratoryjne. W świecie rzeczywistym jest zbyt dużo zabezpieczeń fizycznych i autoryzacji użytkownika, aby taki atak mógł być skuteczny" Jak zareagował na to IBM c.d.? Lecz po paru miesiącach IBM wypuszcza znaczącą modyfikacje mającą na celu uniemożliwienie przeprowadzenia tu opisanego ataku Skoro atak jest w praktyce niemożliwy po co wypuszczać taką modyfikację ? ☺ Jak zareagował na to IBM c.d.? W Maju 2005 zaprezentowano następcę IBM 4758: model 4764