kilka przemyśleń na temat inżynierii kryptograficznej

kilka tygodni temu napisałem długi post o projekcie „BULLRUN” NSA mającym na celu obalenie nowoczesnych standardów szyfrowania. Miałem zamiar wrócić do tego w pewnym momencie, ponieważ nie miałem czasu na szczegółowe omówienie kwestii. Ale potem sprawy stanęły na drodze. Wiele rzeczy. O niektórych z nich mam nadzieję napisać w najbliższej przyszłości.

ale zanim tam dotrę i ryzykując zanudzanie was wszystkich do łez, chciałem jeszcze raz wrócić do tego tematu, choćby po to, by poruszyć nieco nurtujące mnie pytanie.

widzisz, NSA bullrun briefing sheet wspomina, że NSA złamał sporo technologii szyfrowania, z których niektóre są bardziej interesujące niż inne. Jedna z tych technologii jest dla mnie szczególnie zaskakująca, ponieważ nie mogę zrozumieć, jak NSA może to robić. W tym niezwykle długim poście spróbuję zagłębić się nieco głębiej w najważniejsze pytanie, przed którym stoi dzisiaj Internet.

konkretnie: jak do cholery NSA łamie SSL?

sekcja arkusza instruktażowego BULLRUN. Źródło: New York Times.

aby wszystko było dobrze, wprowadzę kilka podstawowych zasad.

po pierwsze zdaję sobie sprawę, że NSA może zainstalować złośliwe oprogramowanie na twoim komputerze i wybrać dowolną kryptografię. To mnie wcale nie interesuje, z tego prostego powodu, że nie skaluje się dobrze. NSA może Ci to zrobić, ale nie dla całej populacji. I właśnie to mnie martwi w związku z ostatnimi wyciekami: możliwość, że NSA łamie szyfrowanie dla celów masowej inwigilacji.

z tego samego powodu nie będziemy się martwić atakami typu man-in-the-middle (MITM). Wiemy, że NSA je prowadzi, ale są też bardzo celowym atakiem. Nie tylko są wykrywalne MITM, jeśli robisz je na dużą skalę, ale nie odpowiadają temu, co wiemy o tym, jak NSA dokonuje przechwytywania na dużą skalę-głównie za pomocą rozdzielaczy wiązki i kranów. Innymi słowy: naprawdę martwi nas bierna inwigilacja.

powyższe zasady nie są oczywiście bezwzględne. Rozważymy ograniczone ataki ukierunkowane na serwery, pod warunkiem, że później pozwolą na pasywne odszyfrowanie dużych ilości ruchu; np. odszyfrowanie ruchu do głównych stron internetowych. Rozważymy również dowolne modyfikacje oprogramowania i sprzętu-coś, co wiemy, że NSA już robi.

ostatnia uwaga: aby sprawy nie zeszły z równowagi, podzieliłem ten post na dwie części. Pierwszy obejmuje ataki, które wykorzystują tylko znane techniki. Wszystko w tej sekcji może być zaimplementowane przez pracownika TAO z wystarczającą wprawą i dostępem do oprogramowania. Druga część, którą zatytułowałem „spektrum kapeluszy z folii aluminiowej”, obejmuje zabawne i spekulacyjne rzeczy — od nowych ataków na kanał boczny aż po ogromny komputer kwantowy, który NSA trzyma obok BWI.

zaczniemy od „praktycznego”.

ataki wykorzystujące znane techniki

kradzież kluczy RSA. Najbardziej oczywisty sposób „pęknięcia” SSL tak naprawdę nie obejmuje łamania czegokolwiek. Po co tracić czas i pieniądze na kryptoanalizę, skoro można po prostu ukraść klucze? Ten problem jest szczególnie niepokojący w serwerach skonfigurowanych dla TLS RSA handshake, gdzie pojedynczy 128-bajtowy klucz serwera jest wszystkim, czego potrzebujesz, aby odszyfrować każde przeszłe i przyszłe połączenie wykonane z urządzenia.

w rzeczywistości ta technika jest tak oczywista, że trudno sobie wyobrazić, aby NSA wydało wiele zasobów na wyrafinowane ataki kryptoanalityczne. Wiemy, że GCHQ i NSA są całkowicie wygodne, suborning nawet amerykańskich dostawców za granicą. A wewnątrz naszych granic, wykazali gotowość do uzyskania kluczy TLS / SSL przy użyciu uprawnień do wezwania i nakazów gag. Jeśli korzystasz z połączenia RSA z główną witryną, rozsądne może być założenie, że klucz jest już znany.

oczywiście nawet tam, gdzie NSA nie ucieka się do środków bezpośrednich, zawsze istnieje możliwość uzyskania kluczy za pomocą zdalnego exploita oprogramowania. Piękno polega na tym, że te ataki nie wymagają nawet zdalnego wykonania kodu. Biorąc pod uwagę właściwą lukę, może po prostu wymagać kilku zniekształconych żądań SSL, aby zmapować pełną zawartość sterty OpenSSL/SChannel.

źródło: New York Times

Suborning sprzętowych układów szyfrujących. Znaczna część ruchu SSL w Internecie jest wytwarzana przez urządzenia sprzętowe, takie jak terminatory SSL i routery z obsługą VPN. Na szczęście nie musimy spekulować na temat bezpieczeństwa tych urządzeń — wiemy już, że NSA / GCHQ współpracuje z producentami sprzętu, aby „włączyć” odszyfrowanie na kilku głównych chipach szyfrujących VPN.

dokumenty NSA nie są jasne, jak działa ta funkcja, ani czy w ogóle dotyczy SSL. Jeśli tak, oczywistym przypuszczeniem jest, że każdy chip szyfruje i exflitrates bity klucza sesji za pomocą „losowych” pól, takich jak IVs i handshake nonces. W rzeczywistości jest to stosunkowo łatwe do wdrożenia na nieprzezroczystym urządzeniu sprzętowym. Ciekawe pytanie brzmi, jak zapewnić, że te backdoory mogą być wykorzystywane tylko przez NSA — a nie przez konkurencyjne agencje wywiadowcze. (Kilka przemyśleń na ten temat tutaj.)

ataki na kanał boczny. Tradycyjnie analizując algorytmy kryptograficzne zajmujemy się oczekiwanymi wejściami i wyjściami systemu. Ale prawdziwe systemy wyciekają wszelkiego rodzaju dodatkowe informacje. Te „kanały boczne” — które obejmują czas pracy, zużycie zasobów, czas pamięci podręcznej i emisję RF-często można wykorzystać do wyodrębnienia tajnego materiału klucza.

dobrą wiadomością jest to, że większość z tych kanałów można wykorzystać tylko wtedy, gdy atakujący znajduje się w fizycznej odległości od serwera TLS. Zła wiadomość jest taka, że istnieją warunki, w których atakujący może się zbliżyć. Najbardziej oczywistym przykładem jest zwirtualizowane serwery TLS w chmurze, gdzie sprytny atakujący może współdzielić zasoby fizyczne z urządzeniem docelowym.

druga klasa ataku wykorzystuje zdalne informacje o taktowaniu, aby powoli odzyskać klucz RSA. Ataki te można wyłączyć za pomocą środków zaradczych, takich jak oślepianie RSA, choć zabawne, niektóre „bezpieczne” procesory sprzętowe mogą domyślnie wyłączyć te środki zaradcze! Co najmniej sprawia to, że sprzęt jest podatny na ataki ze strony użytkownika lokalnego, a nawet może ułatwić zdalne odzyskiwanie kluczy RSA.

słabe generatory liczb losowych. Nawet jeśli używasz silnych Szyfrów Perfect Forward Secrecy, bezpieczeństwo TLS zależy zasadniczo od dostępności nieprzewidywalnych liczb losowych. Nie przypadkowo, manipulowanie standardami generatora liczb losowych wydaje się być szczególnym celem wysiłków NSA.

liczby losowe są kluczowe dla wielu elementów w TLS, ale są szczególnie ważne w trzech miejscach:

  1. po stronie klienta, podczas RSA handshake. RNG jest używany do generowania RSA Pre-master tajne i szyfrowania padding. Jeśli atakujący może przewidzieć wyjście tego generatora, może następnie odszyfrować całą sesję. Jak na ironię, awaria serwera RNG jest znacznie mniej niszczycielski dla RSA handshake.*
  2. po stronie klienta lub serwera, podczas uścisku dłoni Diffie-Hellman. Ponieważ Diffie-Hellman wymaga wkładu z każdej strony połączenia, przewidywalny RNG po obu stronach sprawia, że sesja jest całkowicie przezroczysta.
  3. podczas długotrwałego generowania kluczy, w szczególności kluczy RSA. Jeśli tak się stanie, masz przerąbane.
nie musisz być aż tak wyrafinowany, żeby osłabić generator liczb losowych. Te generatory są już zaskakująco kruche i strasznie trudno jest wykryć, kiedy jeden jest zepsuty. Opiekunowie Debiana pięknie przedstawili ten punkt w 2008 roku, kiedy błędne czyszczenie kodu zmniejszyło efektywną entropię OpenSSL do zaledwie 16 bitów. W rzeczywistości RNG są tak wrażliwe, że wyzwaniem tutaj nie jest osłabienie RNG-każdy idiota z klawiaturą może to zrobić-robi to bez uczynienia implementacji trywialnie wrażliwą dla wszystkich innych.

dobrą wiadomością jest to, że stosunkowo łatwo manipulować implementacją SSL, aby zaszyfrować i usunąć bieżący zalążek RNG. Nadal wymaga to od kogoś fizycznej zmiany biblioteki lub zainstalowania trwałego exploita, ale można to zrobić sprytnie, nawet bez dodawania dużo nowego kodu do istniejącego kodu OpenSSL. (Miłość OpenSSL do wskaźników funkcji sprawia, że szczególnie łatwo manipulować tymi rzeczami.

skoro manipulowanie nie jest w Twoim stylu, to czemu nie umieścić tylnego wyjścia na widoku? Takie podejście przyjęło NSA z DUAL_EC RNG, znormalizowanym przez NIST w specjalnej publikacji 800-90. Istnieją przekonujące dowody, że NSA celowo zaprojektowała ten generator z tylnym wejściem — takim, który pozwala im złamać każde połączenie TLS/SSL wykonane za jego pomocą. Ponieważ generator jest (był) domyślną biblioteką BSAFE RSA, należy oczekiwać, że każde połączenie TLS wykonane za pomocą tego oprogramowania będzie potencjalnie zagrożone.

i nawet nie wspomniałem o planach Intela zastąpienia jądra Linuksa RNG własnym sprzętowym RNG.

Ezoteryczne słabości systemów PFS. Wiele serwerów internetowych, w tym Google i Facebook, używa teraz Szyfrów Perfect Forward Secrecy, takich jak efemeryczny Diffie-Hellman (DHE i ECDHE). Teoretycznie te szyfry zapewniają najlepszy ze wszystkich możliwych światów: klucze utrzymują się przez jedną sesję, a następnie znikają po zakończeniu połączenia. Chociaż nie uchroni cię to przed problemami z RNG, znacznie utrudnia kradzież klucza.

szyfry PFS to dobra rzecz, ale różne subtelne kwestie mogą ograniczać ich styl. Po pierwsze, mechanizm wznowienia sesji może być wybredny: klucze sesji muszą być przechowywane lokalnie lub szyfrowane i udostępniane użytkownikom w formie paragonów sesji. Niestety korzystanie z paragonów sesji nieco zmniejsza „doskonałość” systemów PFS, ponieważ klucze używane do szyfrowania paragonów stanowią obecnie poważną słabość systemu. Co więcej, nie możesz nawet trzymać ich wewnątrz jednego serwera, ponieważ muszą być udostępniane między wszystkimi serwerami front-end witryny! Krótko mówiąc, wyglądają jak koszmar.

ostatnim obszarem zainteresowania jest Walidacja parametrów Diffiego-Hellmana. Obecny projekt SSL zakłada, że grupy DH są zawsze uczciwie generowane przez serwer. Ale złośliwa implementacja może naruszać to założenie i używać złych parametrów, które umożliwiają podsłuchiwanie osób trzecich. Wydaje się, że to mało prawdopodobne, aby umożliwić inwigilację, ale pokazuje, jak delikatne są te systemy.

The Tinfoil Hat Spectrum

mam zamiar odnieść się do następnej partii ataków jako 'tinfoil hat’ luki. Tam, gdzie wszystkie poprzednie wydania wykorzystują dobrze znane techniki, każda z poniższych propozycji wymaga zupełnie nowych technik kryptoanalitycznych. Wszystko to jest sposobem na powiedzenie, że poniższa sekcja jest czystą spekulacją. Oczywiście fajnie jest spekulować. Ale wymaga to od nas przyjęcia faktów, a nie dowodów. Co więcej, musimy uważać na to, gdzie się zatrzymujemy.

więc od teraz zasadniczo prowadzimy eksperyment myślowy. Wyobraźmy sobie, że NSA ma pasywną zdolność łamania SSL; a ponadto, że nie opiera się na sztuczkach z poprzedniej sekcji. Co zostało?

poniższa lista zaczyna się od najbardziej „prawdopodobnych” teorii i działa w kierunku naprawdę szalonych.

łamanie kluczy RSA. Plotka głosi, że NSA łamie 1024-bitowe klucze RSA. Wątpliwe, że ta plotka pochodzi z prawdziwej wiedzy o operacjach NSA. Bardziej prawdopodobne, że wynika to z faktu, że łamanie kluczy 1024-bitowych jest wysoce wykonalne dla organizacji z zasobami NSA.

jak to możliwe? Kilku wiarygodnych badaczy próbowało odpowiedzieć na to pytanie i okazuje się, że koszt jest niższy niż myślisz. W 2003 roku Shamir i Tromer oszacowali 10 milionów dolarów na specjalnie skonstruowaną maszynę, która może liczyć jeden 1024-bitowy klucz rocznie. W 2013 roku Tromer zmniejszył te liczby do około miliona dolarów, biorąc pod uwagę zaliczki sprzętowe. I może być znacznie niższa. To drobne dla NSA.

podobnie Bernstein, Heninger i Lange zbadali możliwość złamania RSA przy użyciu rozproszonych sieci standardowych komputerów. Ich wyniki są dość niepokojące: w zasadzie, klaster o wielkości rzeczywistego botnetu Conficker może poważnie naruszyć 1024-bitowe klucze.

biorąc pod uwagę to wszystko, możesz zapytać, dlaczego ta możliwość jest nawet w kategorii „kapelusz z folii aluminiowej”. Prosta odpowiedź brzmi: ponieważ nikt tego nie zrobił. Oznacza to, że jest co najmniej możliwe, że powyższe szacunki są dramatycznie zbyt wysokie — a nawet zbyt niskie. Co więcej, klucze RSA-1024 są szybko wycofywane. Złamanie 2048-bitowych kluczy wymagałoby znacznych postępów matematycznych, wprowadzając nas znacznie głębiej w kapelusz z folii aluminiowej.**

Na papierze TLS obsługuje wiele silnych algorytmów szyfrowania. W praktyce około połowa całego ruchu TLS jest zabezpieczona skrzypiącym starym szyfrem RC4. I to powinno cię martwić-ponieważ RC4 zaczyna pokazywać swój wiek. W rzeczywistości, używany w TLS, jest już podatny na (graniczne) praktyczne ataki. Więc wydaje się być dobrym kandydatem na prawdziwą kryptoanalityczną zaliczkę ze strony NSA.

niestety problem z tą teorią polega na tym, że po prostu nie znamy żadnego ataku, który pozwoliłby NSA skutecznie złamać RC4! Znane techniki wymagają od atakującego zbierania tysięcy lub milionów szyfrogramów, które są albo (A) zaszyfrowane powiązanymi kluczami (jak w WEP) albo (b) zawierają ten sam tekst zwykły. Najbardziej znany atak przeciwko TLS ma tę ostatnią formę-wymaga od ofiary ustanowienia miliardów sesji, a nawet wtedy odzyskuje tylko stałe elementy tekstowe, takie jak pliki cookie lub hasła.

kontrargumentem jest to, że Publiczna społeczność badawcza nie myślała zbyt mocno o RC4 przez ostatnią dekadę-po części dlatego, że myśleliśmy, że jest tak zepsuty, że ludzie przestali go używać (UPS!) Gdybyśmy skupiali na tym całą naszą uwagę (albo lepiej uwagę NSA), kto wie, co byśmy dziś mieli.

gdybyś mi powiedział, że NSA ma jedną naprawdę nową zdolność kryptograficzną, zgodziłbym się z Jake ’ iem i wskazał palcem RC4. Głównie dlatego, że alternatywy są znacznie straszniejsze.

nowe ataki na kanał boczny. W większości przypadków zdalne ataki czasowe wydają się być wyeliminowane przez implementację środków zaradczych, takich jak oślepianie RSA, które zakłócają czas poprzez pomnożenie przypadkowego współczynnika Oślepiania w każdym zaszyfrowanym tekście przed odszyfrowaniem. Teoretycznie powinno to sprawić, że informacja o czasie będzie zasadniczo bezwartościowa. W praktyce wiele implementacji TLS implementuje kompromisy w oślepiającym kodzie, które mogą wskrzesić te ataki, takie jak wyrównywanie oślepiającego czynnika między operacjami deszyfrowania, zamiast generowania za każdym razem nowej. Jest mało prawdopodobne, że są tu ataki, ale kto wie.

Goofy stuff. Może NSA ma w zanadrzu coś niesamowitego. Problem z otwarciem Puszki Pandory polega na tym, że naprawdę trudno jest ją ponownie zamknąć. Czy Jerry Solinas naprawdę przygotował NIST P-curves, aby wesprzeć jakiś niesamowity nowy atak (o którym NSA wiedziała już pod koniec lat 90., ale jeszcze tego nie odkryliśmy)? Czy NSA ma gigantyczny superkomputer o nazwie TRANSLITR, który może brutalnie wymusić każdy kryptosystem? Czy w aneksie przyjaźni BWI jest gigantyczny komputer kwantowy? Aby uzyskać odpowiedzi na te pytania, możesz równie dobrze potrząsnąć magiczną 8-piłką, bo nie mam pojęcia.

podsumowanie

nie znamy i nie znamy odpowiedzi na te rzeczy, a szczerze mówiąc, zwariujesz, jeśli zaczniesz o tym myśleć. Wszystko, co naprawdę możemy zrobić, to wierzyć NSA/GCHQ na ich słowo, kiedy mówią nam, że te możliwości są „niezwykle kruche”. To powinno dać nam przynajmniej nadzieję.

pytanie teraz brzmi, Czy możemy odgadnąć na tyle dobrze, aby zamienić tę kruchość z ostrzeżenia w obietnicę.
uwagi:

* awaria serwera RNG może spowodować pewne przewidywalne wartości, takie jak ServerRandom i identyfikatory sesji. Atakujący, który może przewidzieć te wartości, może być w stanie przeprowadzić aktywne ataki przeciwko protokołowi, ale — przynajmniej w SZYFRZE RSA — nie przyznaje się do pasywnego kompromisu.

* * mimo że 1024-bitowe klucze RSA są eliminowane, wiele serwerów nadal używa 1024-bitowych dla Diffie-Hellmana (głównie ze względu na wydajność). Ataki na te klucze są podobne do tych stosowanych przeciwko RSA-jednak główna różnica polega na tym, że dla każdego nowego połączenia generowane są świeże klucze „efemeryczne” Diffiego-Hellmana. Łamanie dużych ilości ruchu wydaje się dość kosztowne.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.