13.05.2008 Gerard Frankowski, Błażej Miga Zespół Bezpieczeństwa PCSS Konferencja SECURE 2008 Warszawa, 2-3.10.2008 1
Agenda Kim jesteśmy i co robimy? Wprowadzenie Szyfrowanie danych PKI, algorytm RSA, rola losowości Błąd z dn. 13.05.2008 Badania Metodyka Narzędzia Wyniki Podsumowanie, pytania, dyskusja 2
Kim jesteśmy i co robimy? 3
PCSS Poznańskie Centrum Superkomputerowo- Sieciowe Operator sieci PIONIER oraz POZMAN Uczestnik projektów naukowo-badawczych Główne obszary zainteresowań: Gridy,, sieci nowej generacji, portale Bezpieczeństwo sieci i systemów http://www www.pcss.plpl 4
Zespół Bezpieczeństwa PCSS Dedykowany zespół istnieje od 1996r. Podstawowy zakres prac Zespołu Zabezpieczanie infrastruktury PCSS Zadania bezpieczeństwa w projektach naukowo badawczych Szkolenia i transfer wiedzy Badania własne Audyty i doradztwo w zakresie bezpieczeństwa IT Wybrane badania z ostatnich lat Raport o bezpieczeństwie bankowości elektronicznej (2006) Bezpieczeństwo serwerów WWW Apache i MS IIS (2007) Bezpieczeństwo sklepów internetowych (2008) http://security security.psnc.plpl 5
Centrum Innowacji Microsoft Centrum bezpieczeństwa i usług outsourcingowych http://mic.psnc.pl Bezpieczeństwo w MIC 2006-2008: 2008: Szkolenia bezpieczeństwa Bezpieczeństwo IIS 7.0 Wewnętrzne i zewnętrzne audyty bezpieczeństwa Badania infrastruktury klucza publicznego 6
Wprowadzenie 7
Szyfrowanie danych Środek bezpieczeństwa liczący 2000 lat Algorytm a klucz Szyfrowanie niesymetryczne 2 komplementarne klucze: prywatny (tajny) oraz publiczny Dłuższe klucze, skomplikowane obliczenia Szyfrowanie symetryczne Ten sam (tajny) klucz do kodowania i dekodowania Szybsze (100-1000x) w działaniu, krótsze klucze 8
PKI i szyfrowanie PKI = Infrastruktura klucza publicznego Dwie fazy bezpiecznej transmisji I faza: szyfrowanie niesymetryczne Możliwość wykorzystania klucza jawnego do uwierzytelnienia Niewiele operacji = mała strata na wydajności Uzgodnienie parametrów dalszej transmisji II faza: szyfrowanie symetryczne Stosuje się klucze bezpiecznie wymienione w I fazie Szybsza komunikacja 9
Struktura PKI Centrum certyfikacyjne (CA) Centra nadrzędne i podrzędne Centrum rejestrujące (RA) Proces uzyskania certyfikatu Żądanie certyfikatu Uwierzytelnienie subskrybenta Wydanie certyfikatu zgodnie z polityką certyfikacji Unieważnianie certyfikatu Utrata, upłynięcie okresu ważności, inny błąd Listy CRL / OCSP 10
Klasy certyfikatów Klasa I poziom testowy Klasa II poczta, WWW, SSL/TLS Brak gwarancji jednoznacznego określenia tożsamości Weryfikacja adresu e-mail/nazwy podmiotu Klasa III poczta, część transakcji, usługi, podpisywanie kodu i obiektów, WTLS Nazwa subskrybenta jest prawie(nie całkowicie) pewna Klasa IV osoby i instytucje Certyfikaty kwalifikowane Wymagane osobiste stawiennictwo dla uwierzytelnienia Całkowita pewność poświadczenia tożsamości 11
PKI od wewnątrz Przykłady zastosowań Zabezpieczanie transmisji SSL/TLS Uwierzytelnianie użytkowników (certyfikaty, klucze SSH) Cyfrowe podpisywanie dokumentów lub kodu Znakowanie czasem Wykorzystywane algorytmy (przykłady) Symetryczne: 3DES, DESX, IDEA Niesymetryczne: RSA, El Gamal Funkcje haszujące / funkcje skrótu: MD5, SHA 12
Działanie PKI idea Root CA ROOT CA CA CA https://www.xyz.pl CA Org. CA Org. User Wydanie certyfikatu Pytanie o certyfikat CA 13
Uwierzytelnienie Działanie PKI (1) CA Bob A03F831... Bob Alice CA CA Bob + = A03F831B... CA A03F831B...+ = Bob Wydanie certyfikatu Pytanie o certyfikat 14
Działanie PKI (2) Zabezpieczenie danych A A Alice A03F831B... Bob B B B WIADOMOŚĆ + = A03F831B... B A03F831B... + = WIADOMOŚĆ 15
Podpis cyfrowy Działanie PKI (3) A A Alice WIADOMOŚĆ, A03F831B... Bob B B A HASH (WIADOMOŚĆ) + = A03F831B... HASH (WIADOMOŚĆ) = X A A03F831B...+ = X 16
RSA -teoria RSA R.Rivest, A.Shamir, L.Adleman(1978) Szyfr blokowy opierający się na mechanizmie faktoryzacji kilkusetcyfrowych liczb pierwszych Rozmiar klucza = długość iloczynu liczb Względnie zrozumiały i łatwy w implementacji Jak dotąd oparł się znanym próbom kryptoanalizy Uzyskanie odkodowanej wiadomości z szyfrogramu przy znajomości tylko jednego z kluczy jest równoważne faktoryzacji iloczynu wybranych liczb pierwszych 17
Szyfrowanie RSA p, q liczby pierwsze n moduł d eksponent tajny e eksponent jawny (65537) M i i-ty blok wiadomości C i i-ty blok szyfrogramu Losowo dobieramy: p oraz q n= p q e: NWD[e, (p-1) (q-1)] = 1 e d 1 mod[(p-1) (q-1)] p q p q Klucz jawny: { n, e} Klucz tajny: { n, d} C i = M ie (mod n) M i =C id (mod n) 18
Szyfrowanie RSA przykład (1) 1. Losujemy p, q 2. Wyznaczamy n 3. Poszukujemy e Praktyka: liczba Fermata Dla celów przykładu: 4. Wyznaczamy d Rozsz. algorytm Euklidesa 5. Budujemy klucze { 437, 31} { 437, 115} 19, 23 19 23 = 437 (19-1) (23-1) = 18 22 = 396 31 31 d 1 mod[(19-1) (23-1)] 31 d = 396 k + 1 (k całkowite) 115 9 C i = M i 31 (mod 437) M i =C i 115 (mod 437) 19
Szyfrowanie RSA przykład (2) Szyfrowanie Długość bloków < n (max. 2) Wiadomość: 13 05 08 C 1 = 13 31 (mod437) = 72 C 2 = 5 31 (mod437) = 264 C 3 = 8 31 (mod437) = 331 Deszyfrowanie: Szyfrogram: 72 264 331 M 1 = 72 115 (mod 437) = 13 M 2 = 264 115 (mod 437) = (0)5 M 3 = 331 115 (mod 437) = (0)8 NADAWCA: { 437, 31} Klucz publiczny odbiorcy ODBIORCA: {437, 115} Klucz prywatny odbiorcy 20
Możliwość ataka taku u na klucze RSA Przewidywalny generator liczb pseudolosowych umożliwia utworzenie listy wszystkich możliwych wartości poraz q (ejest znane) e d 1 mod[(p-1) (q-1)] Napastnik nie zna tylko wartości d, która: Przy założeniu znajomości pozostałych wielkości może być obliczona przy pomocy algorytmu Euklidesa Wraz ze znanym njest kluczem poszukiwanym kluczem prywatnym ofiary! 21
Na czym polegał błąd? OpenSSL >= 0.9.8c1 dla Linuksa Debian Powstanie błędu: 17.09.2006, publikacja: 13.05.2008 Analizator kodu wykrył błąd w funkcji ssleay_rand_bytes DeveloperzyDebianazakomentowali część funkcji, ale dodatkowo wyłączyli analogiczny fragment funkcji ssleay_rand_add ssleay_rand_addodświeża pulę losowych danych dla generacji liczb pseudolosowych Wartośćpoczątkowa uzależniona już tylko od identyfikatoru procesu (32767 wartości) Kolejne liczby pseudolosowe w danym kontekście uzależnione są od poprzednio wylosowanych 22
Wyniki badań Kradzież tożsamości 23
Wykorzystanie błędu (1) Scenariusz 1 serwer wykorzystuje błędną wersję biblioteki. (Wykorzystanie faktu znajomości generacji liczb pseudolosowych przez serwer) Niemożliwa deszyfracja ruchu SSL do serwera korzystającego z błędnej biblioteki openssl Klient i serwer wspólnie generują mastersecret wykorzystywany w szyfrowaniu symetrycznym Brak przeglądarek korzystających z biblioteki openssl 24
Wykorzystanie błędu (2) Scenariusz 2 program generujący klucze wykorzystuje błędną wersję biblioteki. Możliwość wygenerowania kolizyjnych par kluczy prywatny-publiczny (x509,ssh) Możliwość odgadnięcia klucza prywatnego na podstawie wartości klucza publicznego wygenerowanego przez program korzystający z błędnej biblioteki kradzież tożsamości 25
Wykorzystanie błędu (3) Scenariusz 3 Serwer (oprogramowanie klienckie) korzysta z kluczy wygenerowanych przez program korzystający z błędnej biblioteki Możliwość odgadnięcia klucza prywatnego na podstawie wartości klucza publicznego znajdującego się w certyfikacie kradzież tożsamości Istnieje prawdopodobieństwo deszyfracji ruchu klient-serwer 26
Cel badania Ocena zagrożenia wynikającego z błędem Defensywne uzyskanie tożsamości serwera bądź klienta Pozyskiwanie kluczy prywatnych z danych zawartych w certyfikatach Wyszukiwanie słabych certyfikatów 27
Narzędzia (1) openssl-vulnkey Testowanie oparte na blacklistach (baza 80 mniej znaczących bitów sum SHA1 modułów) Testowanie wybranych typów kluczy (określony eksponent, rozmiar kluczy) Działa nadmiarowo wyniki false-positive!!! debian_ssh_scan Zdalny test serwerów ssh Testowanie wybranych typów kluczy (określony eksponent, rozmiar kluczy) baza pełnych sum SHA1 modułów >200000 kluczy 28
Narzędzia (2) pcss-key-weryfikator Faktoryzacja modułu Baza liczb pierwszych (>320000 liczb pierwszych wygenerowanych z użyciem błędnej biblioteki + baza liczb pierwszych <1000000) Możliwość wyznaczania klucza prywatnego na podstawie słabego klucza publicznego msieve Faktoryzator dużych liczb złożonych Inne narzędzia Przeglądarka internetowa, curl, openssl, bc 29
Kradzież tożsamości Baza certyfikatów 64889 Certyfikaty niekwalifikowane Zaufane Centrum Certyfikacyjne Polskie Powszechne Centrum Certyfikacji Certyfikaty pobrane poprzezwebowymechanizm wyszukiwania wystawionych certyfikatów 30
8192 40000 35000 30000 25000 20000 15000 10000 5000 0 Długość klucza 31 Kompromitacja 3 miesiące NSA -2010 r. 512 1023 1024 1280 1312 1536 2048 3072 4096
Typy certyfikatów 603 563 1 3344 737 60307 Serwery https Połączenia SSL Bezpieczna poczta Znakowanie czasem Podpisywanie kodów Tunele IPSec 32
O=Internet Widgits PtyLtd 103 certyfikaty Kilka certyfikatów klasy 3 CN=127.0.0.1 3 certyfikaty Kto to weryfikuje? Ciekawe pola Subject C=Russia, CN=../emailAddress=.@email.co.yu Subject: C=PL, O=Microsoft, CN=Bolek i Lolek/emailAddress=.@wp.pl 33
Testy openssl-vulnkey Skompromitowane certyfikaty 199 Nieobsługiwany eksponent 45 Brak możliwości oceny 44 Brak danych o kluczach 8192 2 34
Skradzione tożsamości Kompromitacja kluczy 512 bitowych Faktoryzacja modułu <3 miesiące Kompromitacja słabych kluczy 27 skradzionych tożsamości Wszystkie certyfikaty ważne Certyfikaty serwerów https, poczty internetowej Skuteczność openssl-vulnkey 13%! 35
Główne grzechy Użytkownicy / Administratorzy Brak aktualizacji oprogramowania na kluczowych stacjach Niedostateczna wiedza o tematyce związanej z PKI Developerzy Debian a Modyfikacja źródeł kluczowych bibliotek Błędne oprogramowanie testujące do wykrywania słabych kluczy Centra Certyfikacji Niejasna procedura weryfikacji żądań 36
Więcej informacji PKI RSA http://www.pki-page.org http://www.schneier.com/paper-pki.html http://www.di-mgt.com.au/rsa_alg.html http://pajhome.org.uk/crypt/rsa Błąd opublikowany 13.05.2008 http://www.heise-online.pl/security/znaczenie-liczb-losowych-wkontekscie-klopotow-z-pakietem-openssl--/features/4748 http://www.gergely.risko.hu/debian-dsa1571.en.html 37
Dane kontaktowe Autorzy prezentacji Błażej Miga blazej.miga@man.poznan.pl Gerard Frankowski gerard.frankowski@man.poznan.pl Zespół Bezpieczeństwa PCSS e-mail: security@man.poznan.pl WWW: http://security.psnc.pl Poznańskie Centrum Superkomputerowo-Sieciowe e-mail: office@man.poznan.pl WWW: http://www.pcss.pl 38
Grafika za: http://www.gergely.risko.hu/debian-dsa1571.en.html 39
Pytania i dyskusja Dziękujemy za uwagę! 40