Dzień złych wiadomości w świecie bezpieczeństwa się jeszcze nie skończył – ujawniono dzisiaj, że na skutek błędu w popularnej bibliotece kryptograficznej można odzyskać niektóre klucze prywatne RSA tylko na podstawie kluczy publicznych.
Czescy i słowaccy naukowcy poddali analizie duże liczby kluczy RSA i odnaleźli w wynikach ciekawe nieprawidłowości. Okazało się, że procesory bardzo popularnego producenta, firmy Infineon, korzystały z niedoskonałego algorytmu generowania liczb pierwszych w trakcie tworzenia kluczy RSA. Procesory Infineona znajdują się w sprzęcie producentów takich jak Microsoft, Google, HP, Lenovo, Fujitsu czy Yubico a liczba podatnych kluczy używanych dzisiaj w internecie może iść w miliony. Wszyscy, którzy generowali klucze na dedykowanych urządzeniach (czyli teoretycznie w bezpiecznym środowisku, zamiast na komputerze, który mógł być zainfekowany), powinni sprawdzić, czy ich klucze są na atak podatne.
512, 1024 i 2048 bitów
Algorytm RSA opiera się na operacjach matematycznych wykonywanych na liczbach pierwszych. Kluczem do bezpieczeństwa jest pewność, że liczby pierwsze użyte w obliczeniach są naprawdę losowe. Analiza naukowców wykazała, że od roku 2012 procesory Infineona tworzyły liczby pierwsze o specyficznej, określonej strukturze, pozwalając na ich odtworzenie – co skutkuje możliwością obliczenia klucza prywatnego na podstawie znajomości klucza publicznego. Obliczenia są pracochłonne, lecz wykonalne. Czas i koszty dla procesora Intel E5-2650 v3@3GHz Q2/2014 wyglądają następująco:
-
klucz RSA 512 bitów – 2 godziny pracy CPU (koszt 21 groszy),
-
klucz RSA 1024 bitów – 97 dni pracy CPU (koszt 150 – 300 PLN),
-
klucz RSA 2048 bitów – 141 lat pracy CPU (koszt 70 000 – 140 000 PLN).
Dla lepszego zrozumienia skali problemu – bez odkrycia naukowców proces łamania klucza o długości 2048 bitów trwałby miliony razy dłużej niż dotychczasowe życie wszechświata. Możliwe jest także przeprowadzenie obliczeń dla kluczy o długości 4096 bitów, lecz czas trwania operacji powoduje jej nieopłacalność.
Co jest podatne
Sama podatność w kluczach RSA pewnie wielu osobom niezbyt dużo mówi. Autorzy badania wskazują, gdzie znaleźli klucze podatne na złamanie. Były to elektroniczne dokumenty (w tym estoński dowód osobisty), tokeny uwierzytelniające, urządzenia „trusted boot”, klucze podpisujące oprogramowanie, klucze TLS/HTTPS oraz klucze PGP. Potwierdzili do tej pory istnienie co najmniej 760 tysięcy podatnych kluczy, jednak szacują, że ich realna liczba może być od 100 do 1000 razy większa. Odtworzenie klucza prywatnego może pozwolić na wiele innych ataków – odszyfrowanie korespondencji lub ruchu internetowego, podszycie się pod użytkownika czy też sfałszowanie podpisów cyfrowych. Dodatkowo podatne na atak okazały się moduły TPM u 10 różnych producentów laptopów. Szczególnie poważnym problemem jest TPM w wersji 1.2 – jego klucze pozwalają na odszyfrowanie dysku zabezpieczonego BitLockerem. Odpowiednie zalecenia wydały Microsoft oraz Google.
Co robić, jak szyfrować
Badacze udostępnili narzędzia umożliwiające weryfikację używanych kluczy. Proponujemy – szczególnie firmom – weryfikację WSZYSTKICH kluczy RSA używanych w całej organizacji. Tak, to dużo roboty, ale analiza powłamaniowa jest bardziej pracochłonna. Dostępne narzędzia:
- programy w C#, Pythonie, Javie do testów offline,
- dwie strony do weryfikacji online,
- można też podpisać kluczem wiadomość poczty elektronicznej i wysłać ją na adres [email protected] – automat odpisze, czy klucz jest podatny czy nie,
- można także sprawdzić klucze Yubikey (podatne są tylko Yubikey 4, na których wygenerowano klucze PGP).
Badacze piszą, że testy są bardzo rzetelne i nie są obarczone błędami – test nie uzna za podatny dobrego klucza ani za niepodatny klucza złego. Złe klucze trzeba szybko odwołać i wymienić na lepsze – np. generowane przez OpenSSL (jest bezpieczny) lub inny algorytm (np. ECC zamiast RSA).
Chcielibyśmy, by to był koniec złych wiadomości na dzisiaj, a tu czeka kolejna kampania Thomasa do opisania…
Komentarze
Mam takie wrażenie, że ta podatność to nie przypadek…
Tomek chyba uwielbia was rozpieszczać ;)
Ciekawe kiedy wystartuje kampania pt. „Sprawdź swój klucz u nas on-line! Wystarczy wkleić oba i masz szybki wynik w 0,1 sekundy!” :)
xD
Tuż po publikacji akt Snowdena Bruce Schneier zmienił swój PGP klucz do 4096 bits.
Wtedy się dziwiłem o co chodzi, skąd taki pośpiech. Klucz miał chyba 16 lat i nagle jego zmiana.
Teraz już się nie dziwię.
Uf, klucze generowane przez moj program do PGP dla BlackBerry sa bezpieczne ;) https://pawelgorny.com/PGpgp/
Ruskie juz się legalizują w Estonii :D
W przypadku Yubikeyów problem dotyczy nie tylko komponentu OpenPGP, ale także PIV.
Ciekawe czy to dzieki temu tak latwo i szybko jest lamane zabezpieczenie gier Denuvo ktore wykorzystuje do szyfrowania wlasnie klucz RSA i czy teraz Denuvo znowu bedzie trudniejsze do zlamania. Ostatnio gry byly lamane w tym samym dniu premiery. Czas pokaze.
Dla zainteresowanych mogę dodać że yubico rozdaje kupony na wymianę podatnych kluczy. Ja już zamówiłem nowy za 0$.
Aby sprawdzić czy kupon się należy trzeba odwiedzić stronkę https://www.yubico.com/keycheck/verify_otp
To tylko kwestia czasu , producenici chipów bez normy iso 9001,
zaraz się znajdzie nowa podatność
#TWITTER HACKED allow to bypass autentication 2ndFactor
I znowu matematyka dała radę a zawiodła implementacja.
artykuł o tym jak stworzyć bazę danych z faktoryzacją n. i wszystko w jednej bazie. https://marsik.work/liczby_przypierwsze_RSA.html