stats

Elektromagnetyczny zdrajca

Ekstrakcja kluczy ECDH z oprogramowania GnuPG

Grafika przedstawiająca pajęczynę na gałęzi drzewa

Grupie naukowców z Uniwersytetu Telawiwskiego udało się przechwycić tajny klucz szyfrujący algorytmu ECDH przez analizę zakłóceń pochodzących ze zjawiska ulotu elektromagnetycznego. Źródłem sygnału był komputer, na którym działało oprogramowanie szyfrujące GnuPG.

Zjawisko ulotu elektromagnetycznego bazuje na emisji fal elektromagnetycznych przez urządzenia elektryczne. Powszechnym przykładem wykorzystania go w praktyce jest proces odtwarzania obrazu wyświetlanego na monitorze, którego kabel przesyłający sygnały z karty graficznej komputera działa jak nadajnik. W przypadku elektroniki użytkowej, a w szczególności komputerów przenośnych i stacjonarnych, mówi się o tzw. atakach bocznokanałowych (ang. side‑channel attacks). Polegają one na pozyskiwaniu informacji nieprzeznaczonych dla napastnika, a wykorzystuje się w nich – poza badaniem poboru mocy, drgań akustycznych czy zmian temperatury – właśnie zjawisko ulotu.

Daniel Genkin, Lev Pachmanov, Itamar PipmanEran Tromer udowodnili, że można w praktyce przeprowadzić atak bocznokanałowy wymierzony w komputer, na którym działa oprogramowanie szyfrujące i uzyskać wykorzystywany przez nie klucz tajny.

Środowisko badawcze składało się z różnych modeli stacjonarnych komputerów PC i laptopów marki Lenovo (model 3000 N200). Na urządzeniach zainstalowano oprogramowanie GnuPG w wersji 2, korzystające z opracowywanej w ramach projektu biblioteki Libgcrypt w wydaniu 1.6.3.

GnuPG jest popularnym zestawem narzędzi pozwalających szyfrować i cyfrowo podpisywać pliki, dokumenty oraz korespondencję elektroniczną zgodnie ze standardem OpenPGP. Wykorzystuje go wiele innych aplikacji, np. klienty poczty elektronicznej, wtyczki do przeglądarek czy edytory tekstu.

ECDH

Mechanizm uzgadniania kluczy metodą Diffiego‑Hellmana bazujący na krzywych eliptycznych (ang. elliptic curve Diffie‑Helman key exchange, skr. ECDH) to określony w dokumencie RFC 6637 i wchodzący w skład standardu OpenPGP sposób uzgadniania kluczy szyfrujących między stronami. Algorytm Diffiego‑Hellmana (skr. D‑H) pozwala dwóm uczestnikom komunikacji wspólnie utworzyć (wyliczyć) klucz, który nie będzie dostępny dla postronnych, nawet jeżeli medium używane do wymiany danych podczas tego procesu nie jest w żaden sposób zabezpieczone przed podsłuchiwaniem.

Wymiana klucza D‑H jest powszechnie wykorzystywana w kryptografii, np. podczas uzgadniania symetrycznych kluczy sesyjnych, które posłużą do zabezpieczania komunikacji. Bazą dla obliczeń prowadzonych przez strony jest uzgodniony wcześniej sekret, na przykład prywatny oraz publiczny klucz lub ich wartości pochodne. Oznacza to, że potencjalny napastnik, mając zapis komunikacji i zalążek wymiany D‑H (np. prywatny klucz RSA) jest w stanie odtworzyć proces i poznać współdzielony sekret, a następnie odszyfrować dalsze informacje zabezpieczane w ramach danej sesji komunikacyjnej.

Wariant mechanizmu D‑H wykorzystujący krzywe eliptyczne wyróżnia się tym, że zalążkiem używanym w obliczeniach nie jest para zwykłych kluczy (znanych z algorytmu RSA), lecz zestaw wartości bazujących na krzywych eliptycznych. Warto zauważyć, że taki mechanizm wymiany również podatny jest na ataki, w których poznany zostaje klucz tajny i dlatego stosuje się ulepszony wariant zwany uzgadnianiem kluczy Diffiego‑Hellmana bazującym na efemerydzie krzywych eliptycznych (ang. elliptic curve Diffie‑Hellman ephemeral, skr. ECDHE). Różnica polega na tym, że zamiast klucza publicznego wykorzystywany jest klucz efemeryczny, czyli tymczasowy – często poświadczony cyfrowym podpisem złożonym z użyciem klucza prywatnego, aby można było sprawdzić jego autentyczność. Istnieje też efemeryczny odpowiednik D‑H dla standardowego RSA, zwany uzgadnianiem kluczy Diffiego‑Hellmana bazującym na efemerydzie (ang. Diffie‑Hellman ephemeral, skr. DHE). Jak nietrudno zgadnąć, mamy w nim do czynienia z D‑H bazującym na parze kluczy RSA, lecz zalążkiem, podobnie jak w ECDHE, jest niezależny klucz, który dodatkowo został cyfrowo poświadczony.

Atak

W opisywanym przypadku celem ataku był system kryptograficzny, w którym wykorzystuje się szyfrowanie ECDH (ang. ECDH encryption). Polega ono na użyciu mechanizmu ECDH do uzgodnienia klucza, wykorzystywanego potem, aby szyfrować dane z użyciem symetrycznego algorytmu (np. mechanizmu Advanced Encryption Standard, skr. AES).

Mamy tam do czynienia z generatorem grup krzywych eliptycznych (tzw. nietrywialnych grup abelowych), którego praca zależy od losowo wybranej wartości skalarnej. Ta ostatnia staje się kluczem tajnym, a odpowiadający mu publiczny komponent jest rezultatem przeprowadzenia na nim i na wartościach krzywej odpowiednich operacji (dodawania, podwajania i odwracania).

Przeprowadzona przez badaczy kryptoanaliza bazowała na ataku z wybranym tekstem jawnym (ang. chosen‑plaintext attack), tzn. posłużono się zestawem szyfrogramów i odpowiadających im znanych komunikatów w formie niezaszyfrowanej.

Zdjęcie aparatury badawczej do nasłuchu elektromagnetycznego

Aparatura badawcza wykorzystywana do przechwytywania klucza tajnego ECDH

Między skalarem (kluczem tajnym) a punktami krzywych wykorzystywanymi w obliczeniach zachodzi relacja. Przez podstawianie odpowiedniego tekstu jawnego udało się doprowadzić do tego, aby jedną z wartości operacji dodawania był konkretny punkt krzywej. Dlaczego było to pomocne? Okazuje się, że podczas późniejszej operacji mnożenia (w trakcie deszyfrowania danych) oprogramowanie GnuPG zachowuje się w sposób, który sprawia, że sprzęt generuje charakterystyczne zakłócenia i dochodzi do mierzalnych zmian towarzyszących zjawisku ulotu elektromagnetycznego w zakresie częstotliwości 1,5–2 Mhz.

Odpowiednio wzmacniając, filtrując i przetwarzając sygnał, grupa naukowców sprawiła, że uzyskano informację na temat operandów działań przeprowadzanych na krzywych. W procesie analizy danych przepływających w czasie można było na tej podstawie poznać, że oprogramowanie operuje na konkretnych punktach krzywych. Przypomnijmy, że gdy znane są wartości z określonych miejsc krzywych oraz szyfrogramy, to odwracając działania możemy uzyskać kolejne bajty tajnego klucza, stanowiące kolejne operandy działań. W praktyce operacja taka zajmuje kilka sekund.

Ochrona

Ogólnym sposobem ochrony przed atakami bocznokanałowymi jest stosowanie odpowiednich zabezpieczeń fizycznych, na przykład bazujących na ekranach sprzętu, izolacji pomieszczeń czy nawet generatorach szumu. W przypadku konkretnych programów komputerowych można też powziąć odpowiednie kroki, aby podsłuch był utrudniony lub niemożliwy.

Losowe dane i zaciemnianie

Wprowadzanie losowych danych do przetwarzanego materiału, a następnie ich usuwanie po zakończeniu procesu przeliczania, może być dobrym sposobem zapobiegania podsłuchowi. Warunkiem jest jednak to, aby algorytm pozwalał na takie działania, np. umożliwiając wykrycie, które dane wyjściowe po wykonaniu krytycznej operacji są tylko losowym wypełnieniem, a które faktycznymi informacjami koniecznymi dla poprawnej pracy systemu kryptograficznego. Wariantem tego podejścia jest też komutatywna zmiana danych wejściowych, czyli takie działanie, które daje się odwrócić po zakończeniu obliczeń.

W przypadku ECDH implementacją tej strategii ochrony może być randomizacja skalara (ang. scalar randomization), czyli de facto klucza tajnego, przez wprowadzanie losowych danych, na których dokonywane są operacje podwajania i dodawania. Podobnym środkiem jest zaciemnianie punktowych wartości krzywych, na bazie których wykonane będą obliczenia, przez wprowadzanie dodatkowych, losowych miejsc odczytu1.

Dzielenie

Innym sposobem wprowadzania zakłóceń może być podział sekretu na części i przeprowadzanie na nich osobnych operacji, aby na koniec dokonać złączenia ich w całość. Metody tej nie powinno stosować się jako jedynej, chociaż w przypadku opisywanego ataku skorzystanie z niej zapewnia przed nim ochronę.

Rozwiązanie

Zespół badawczy przed opublikowaniem szczegółów dotyczących ataku skontaktował się z programistami projektu GnuPG i poinformował ich o słabych punktach biblioteki Libgcrypt. Odpowiednie środki ochronne zostały wprowadzone w wydaniu 1.6.5 oprogramowania.

Zobacz także


  1. Jean-Sebastien Coron, „Resistance against Dieren­tial Power Analysis for Elliptic Curve Cryptosystems” [online], Paryż 1999, Ecole Normale Superieure, aktualizacja 03.01.2016 [dostęp 15.02.2016],
    https://www.crypto-uni.lu/jscoron/publications/dpaecc.pdf

    [return]
Źródło: Eran Tromer
Jesteś w sekcji .
Tematyka:

Taksonomie: