Kryptografia oraz infrastruktura PKI w pasywnych zabezpieczeniach Rafał Łukawiecki Strategic Consultant, Project Botticelli Ltd rafal@projectbotticelli.co.uk www.projectbotticelli.co.uk Copyright 2005 © Microsoft Corp & Project Botticelli Ltd. E&OE. Ta prezentacja ma wyłącznie charakter informacyjny. Nie udziela się jakichkolwiek gwarancji i przed posłużeniem się tymi informacjami należy je zweryfikować. Można ponownie użyć tej prezentacji pod warunkiem przeczytania, zaakceptowania i stosowania się do wytycznych opisanych w polu „Komentarze” okna Plik/Właściwości.
Cele Omówienie podstaw pasywnych mechanizmów zabezpieczeń, których podstawowym zadaniem jest ochrona warstwy danych: kryptografia Przedyskutowanie aktualnie używanych algorytmów z punktu widzenia specjalisty IT Podanie kilku prostych zaleceń Przestrzeżenie przed kilkoma typowymi nieporozumieniami i słabymi algorytmami
Program sesji Podstawowe pojęcia Typowe algorytmy Infrastruktura PKI i podpisy Zalecenia
Podstawowe pojęcia
Dogłębna obrona Dane Aplikacja Host Zabezpieczenia fizyczne Zasady, procedury i świadomość Zabezpieczenia fizyczne Dane Aplikacja Host Sieć wewnętrzna Granica
Co naprawdę jest zabezpieczone? Poszukajmy systemów Dobrze znanych firm Z opublikowanymi (nie tajnymi!) algorytmami Przyciągających sporą uwagę Których nie udało się przejąć hakerom przez parę lat Które zostały przeanalizowane matematycznie Pod żadnym pozorem nie „poprawiać” samodzielnie algorytmów Chyba że jest się specjalistą w tej dziedzinie
Nie traktować kryptografii jako danej Typowe niepowodzenia: Szyfrowanie zawartości DVD GSM WiFi Dobry przykład złego użycia kryptografii w protokole WEP Po którym nastąpiła cała masa poprawek, takich jak Mirosoft 802.1x A po nich rozsądniejsze rozwiązanie, WPA
Kryptografia z kluczem symetrycznym Wejście: czysty tekst Tekst zaszyfrowany Wyjście: czysty tekst „The quick brown fox jumps over the lazy dog” „The quick brown fox jumps over the lazy dog” „AxCv;5bmEseTfid3)fGsmWe#4^,sdgfMwir3:dkJeTsY8R\s@!q3%” Szyfrowanie Deszyfrowanie Ten sam klucz (wspólny sekret)
Za i przeciw symetrii Siła: Słabość: Prostota i naprawdę ogromna szybkość (od 1000 do 10 000 razy większa niż mechanizmów asymetrycznych) Superszybka (i trochę bezpieczniejsza), jeśli realizowana sprzętowo (DES, Rijndael) Słabość: Zawczasu trzeba uzgodnić klucz Konieczność bezpiecznego przekazania klucza drugiej stronie
Kryptografia z kluczem publicznym Znajomość klucza szyfrującego nie jest równoznaczna ze znajomością klucza deszyfrującego Odbiorca informacji generuje parę kluczy Ogłasza klucz publiczny w katalogu Następnie każdy może wysyłać do niego wiadomości, które tylko on może odczytać
Kryptografia z kluczem publicznym Wejście: czysty tekst Tekst zaszyfrowany Wyjście: czysty tekst „The quick brown fox jumps over the lazy dog” „The quick brown fox jumps over the lazy dog” „Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkvegMs” Szyfrowanie Deszyfrowanie publiczny prywatny Różne klucze Klucz publiczny odbiorcy Klucz prywatny odbiorcy
Za i przeciw klucza publicznego Słabość: Niezwykle mała prędkość Podatność na atak typu „znany tekst zaszyfrowany” Problem z zaufanym kluczem publicznym (zobacz dalej przy opisie PKI) Siła: Rozwiązany problem przekazywania klucza Możliwość utworzenia kontekstu zaufania między stronami
Szyfrowanie hybrydowe Klucz odpalenia pocisku jądrowego „RedHeat” to... Szyfrowanie symetryczne (np. DES) *#$fjda^j u539!3t t389E *&\@ 5e%32\^kd Klucz symetryczny zaszyfrowany asymetrycznie (np., RSA) Koperta cyfrowa Klucz publiczny użytkownika (w certyfikacie) Jak wyżej, powtórzone dla innych odbiorców lub agentów odtwarzania Koperta cyfrowa Klucz publiczny innego odbiorcy lub agenta (w certyfikacie) w zasadzie odtwarzania Generowany losowo symetryczny klucz „sesyjny” RNG
Deszyfrowanie hybrydowe *#$fjda^j u539!3t t389E *&\@ 5e%32\^kd Klucz odpalenia pocisku jądrowego „RedHeat” to... Deszyfrowanie symetryczne (np. DES) Koperta cyfrowa Asymetryczne deszyfrowanie klucza „sesyjnego” (np., RSA) Symetryczny klucz „sesyjny” Klucz sesyjny musi być zdeszyfrowany za pomocą klucza prywatnego odbiorcy Koperta cyfrowa zawiera klucz „sesyjny” zaszyfrowany za pomocą klucza publicznego odbiorcy Klucz prywatny odbiorcy
Typowe algorytmy
DES, IDEA, RC2, RC5, Twofish S/MIME, SSL, Kerberos .NET Fx PGP .NET Fx Symetryczne DES (Data Encryption Standard) jest wciąż najpopularniejszy Bardzo krótkie klucze: 56 bitów W roku 1993 atak siłowy wymagał 3,5 godziny na komputerze wartym 1 milion USD. Dziś odbywa się to w czasie rzeczywistym Triple DES (3DES) jest bezpieczniejszy, ale mogą być lepsze opcje Po prostu odmawiać, chyba że wartość danych jest minimalna IDEA (International Data Encryption Standard) Pozornie podobny do algorytmu DES i „nie” pochodzi z NSA Klucze 128-bitowe RC2 & RC5 (autorstwa R. Rivesta) RC2 jest starszy a RC5 nowszy (1994) - podobne do DES i IDEA Blowfish, Twofish Zamiennik B. Schneiera dla algorytmu DES, a po nim Twofish, jeden z finalistów NIST tych zawodów .NET Fx PGP .NET Fx S/MIME, SSL Java
Rijndael (AES) .NET Fx Standardowy zamiennik algorytmu DES dla rządu USA i prawdopodobnie, w efekcie, dla wszystkich… Zwycięzca zawodów AES (Advanced Encryption Standard) prowadzonych przez instytut NIST (National Institute of Standards and Technology w USA) w latach 1997-2000 Pochodzi z Europy (Belgia), autorzy Joan Daemen oraz Vincent Rijmen. Historie typu „Z archiwum X” raczej nie wchodzą w rachubę (w odróżnieniu od DES). Symetryczny szyfr blokowy (128, 192 lub 256-bitowy) ze zmiennym kluczem (także 128, 192 lub 256-bitowym) Szybki, o wielu dobrych cechach, takich jak dobra odporność na analizę czasową i poboru mocy Budowa ponownie pozornie podobna do DES (S-Box, operacje XOR itp.) ale tak naprawdę inna
CAST i GOST CAST GOST Kanadyjczycy Carlisle Adams i Stafford Tavares Klucze i dane 64-bitowe Wybierz swoje skrzynki S Wydaje się odporny na kryptoanalizę różnicową i liniową, i jedynym sposobem złamania go jest atak siłowy (ale klucz jest trochę krótki!) GOST Radziecka „wersja” algorytmu DES, ale jaśniej zaprojektowany i ze znacznie większą liczbą powtórzeń procesu Klucz 256-bitowy, ale w rzeczywistości 610 bitów tajemnicy, więc „solidny jak czołg” Tylne drzwi? Kto wie…
Używać kryptosystemów W istocie: nigdy nie używać samego algorytmu, ale całego kryptosystemu Na przykład: Użycie algorytmu DES czy analogicznego, w prostej „pętli” do zaszyfrowania strumienia danych, to dosłownie oznacza to całkowitą utratę bezpieczeństwa Należy: użyć techniki zaprojektowanej w celu zaadaptowania algorytmu do przetworzenia strumienia danych, takiej jak CBC (Cipher Block Chaining) To z kolei oznacza, że należy wybrać i przesłać wektor inicjujący (IV) – jak? Użyć w tym celu dobrze znanego kryptosystemu Firma Microsoft nigdy nie implementuje samego algorytmu – zawsze kompletny kryptosystem, np. RSA-OAEP itp.
Niebezpieczne implementacje Aplikacje kryptograficzne ze słabo znanych źródeł „Po prostu pobrane biblioteki” używane przez własnych programistów Domagać się używania systemów wbudowanych, tam gdzie jest to możliwe: Systemy firmy Microsoft: CAPI, CAPICOM, MS CSP itp. Karty inteligentne: wbudowane dobrze znane systemy CSP Gdzie indziej: implementacje zgodne ze standardem FIPS
RC4 Symetryczny PPTP R. Rivest w 1994 roku Szybkie szyfrowanie strumieniowe R. Rivest w 1994 roku Początkowo tajny, ale „ogłoszony” na sci.crypt Spokrewniony z szyfrowaniem „one-time pad”, teoretycznie bezpieczniejszy Ale! Zależy od naprawdę dobrego generatora liczb losowych A to jest problem Obecnie skłaniamy się do używania szyfrowania blokowego w trybie działania pracującym na strumieniach PPTP
RSA, DSA, ElGamal, ECC SSL, PGP .NET Fx .NET Fx Asymetryczne Bardzo wolne i kosztowne obliczenia – niezbędny komputer Bardzo bezpieczne Rivest, Shamir, Adleman – 1978 Popularne i dobrze zbadane Siła wynika z obecnej niemożności rozkładu na czynniki będące liczbami pierwszymi Istnieją obawy o proces generowania klucza w pewnych implementacjach DSA (Digital Signature Algorithm) – produkt NSA/NIST Tylko do podpisywania cyfrowego, a nie do szyfrowania Wariant algorytmu podpisywania Schnorra i ElGamala ElGamal Bazuje na złożoności dyskretnych logarytmów ECC (Elliptic Curve Cryptography) Naprawdę „wysoka” matematyka i topologia Poprawia algorytm RSA (i inne) SSL, PGP .NET Fx .NET Fx
Kryptografia kwantowa Metoda generowania i poufnego przekazywania klucza lub losowego strumienia Nie służy do przekazywania faktycznych danych, ale to nie jest istotne Polaryzacja światła (fotony) może być wykryta jedynie w sposób niszczący „kierunek” (bazę) Jeśli więc ktoś inny podejrzy ją, nie otrzymamy niczego przydatnego i będzie wiadomo, że miał miejsce podsłuch Znakomicie wykonywalne za pośrednictwem dedykowanego łącza światłowodowego o długości do 120 km Wydaje się idealnym rozwiązaniem, ale jest kłopotliwe i wolne W praktycznych implementacjach do rzeczywistego szyfrowania wciąż się stosuje algorytmy AES/DES itp. Magiq QPN: http://www.magiqtech.com/press/qpn.pdf Nie mylić z komputeryzacją kwantową, której nie będzie przez co najmniej najbliższych 50 lat, a może dłużej…
MD5, SHA Wszędzie Funkcje haszujące – część podpisu cyfrowego Cele: Nieodwracalne: nie można uzyskać wiadomości z jej hasza Hasz jest znacznie krótszy niż oryginalna wiadomość Dwie wiadomości nie będą miały identycznego hasza MD5 (R. Rivest) 512 bitów haszowanych na 128 Model matematyczny wciąż nieznany Ostatnio (lipiec 2004) złamany, nie używać samego SHA (Secure Hash Algorithm) Standard USA oparty na MD5 SHA-0 złamany (lipiec 2004), SHA-1 prawdopodobnie za słaby (częściowo złamany), używać co najmniej SHA-256 Wszędzie
Diffie-Hellman, „SSL”, certyfikaty PGP Metody generacji i wymiany kluczy Algorytm DH jest inteligentny, gdyż zawsze generuje nową „parę kluczy” dla każdej sesji asymetrycznej Metody STS i MTI oraz certyfikaty gwarantują jeszcze większe bezpieczeństwo Certyfikaty to powszechny sposób wymiany kluczy publicznych Podstawa infrastruktury Public Key Infrastructure (PKI) SSL używa protokołu do bezpiecznej wymiany kluczy Patrz dalej Każdy
Kryptoanaliza Atak siłowy Analiza częstości Kryptoanaliza liniowa Dobre do zgadywania haseł oraz niektórych 40-bitowych symetrycznych kluczy (w pewnych wypadkach potrzeba 27 prób) Analiza częstości Tylko do bardzo prostych metod (telefony komórkowe w USA) Kryptoanaliza liniowa Do silniejszych algorytmów typu DES, potrzeba 243 par tekst czysty-szyfr Kryptoanaliza różnicowa Słabsze algorytmy typu DES, potrzeba 214 par Analiza poboru mocy i czasowa Fluktuacje czasu reakcji lub zużycia energii przez procesor Użyteczna do łamania skradzionych kart inteligentnych
Łamanie za 10 milionów USD Klucz symetrycz-ny Klucz ECC Klucz RSA Czas na złamanie Liczba maszyn Pamięć 56 112 420 < 5 minut 10 000 Banalna 80 160 760 600 miesięcy 4300 4 GB 96 192 1020 3 miliony lat 114 170 GB 128 256 1620 10E16 lat 0,16 120 TB Z raportu opracowanego przez Roberta Silvermana, RSA Laboratories, 2000
Infrastruktura PKI i podpisy
Problem dystrybucji klucza publicznego Właśnie rozwiązaliśmy problem dystrybucji klucza symetrycznego, korzystając z kluczy publicznych/prywatnych Ale... Scott tworzy parę kluczy (prywatny/publiczny) i szybko informuje świat, że ogłoszony przez niego klucz publiczny należy do Billa Ludzie wysyłają poufne informacje do Billa Bill nie ma klucza prywatnego, aby je odczytać… Scott odczytuje wiadomości Billa
Eureka! Potrzebna nam infrastruktura PKI, aby rozwiązać ten problem I parę innych rzeczy…
Jak zweryfikować klucz publiczny? Dwa podejścia: Przed użyciem klucza publicznego Billa zadzwonić do niego lub spotkać się z nim, aby sprawdzić, czy mamy właściwy klucz Skrót danych lub hasz klucza można potwierdzić przez telefon Poprosić kogoś, komu ufamy, o potwierdzenie, że klucz faktycznie należy do Billa Sprawdzając zaufany podpis cyfrowy na kluczu Ale musi taki istnieć… I przede wszystkim trzeba mieć przyjaciół, którym można zaufać…
Modele zaufania Sieć zaufania (ang. Web-of-trust) (PGP) Model równorzędny (ang. Peer-to-Peer) Ludzie nawzajem podpisują cyfrowo swoje klucze Z założenia będzie się ufać kluczom podpisanym przez niektórych przyjaciół Zaufany urząd + ścieżka zaufania (urzędy certyfikacji) Wszyscy ufają głównym urzędom certyfikacji (Verisign, Thawte, BT itp.) Urząd certyfikacji podpisuje klucze każdej osoby, której poświadczenia zostały sprawdzone tradycyjnymi metodami Urząd certyfikacji może nawet mianować inne strony jako urzędy certyfikacji – i automatycznie także one będą zaufane
Tworzenie podpisu cyfrowego Wiadomość lub plik 256-bitowy hash wiadomości Podpis cyfrowy To jest bardzo długa wiadomość na temat Billa… Jrf843kjfgf*£$&Hdif*7oUsd*&@:<CHDFHSD(** Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkvegMs…” Funkcja haszująca (SHA, MD5) Szyfrowanie asymetryczne prywatny Obliczenie hashu (skrótu) wiadomości na podstawie długiej wiadomości za pomocą jednokierunkowej funkcji tworzącej skrót (hasz) Klucz prywatny sygnatariusza
Weryfikowanie podpisu cyfrowego Jrf843kjf gf*£$&Hd if*7oUsd *&@:<CHD FHSD(** Py75c%bn&*) 9|fDe^bDFaq #xzjFr@g5= &nmdFg$5kn vMd’rkvegMs” Deszyfrowanie asymetryczne (np. RSA) Wszyscy mają dostęp do zaufanego klucza publicznego sygnatariusza Klucz publiczny sygnatariusza Podpis cyfrowy ? == ? Takie same? To jest bardzo długa Wiadomość na temat Billa… Taka sama funkcja haszująca (np. MD5, SHA...) Oryginalna wiadomość Py75c%bn&*) 9|fDe^bDFaq #xzjFr@g5= &nmdFg$5kn vMd’rkvegMs”
Kody uwierzytelniające wiadomość Kody „MAC” – Na ogół połączenie funkcji haszującej z szyfrowaniem symetryczynym Integralność, autentyczność, ale brak niezaprzeczalności Konieczność udostępniania klucza! HMAC Hash + szyfrowanie ze wspólnym sekretem dla wyników o długości do 160 bitów MACTripleDES Szyfrowanie, w którym korzysta się z 8, 16 lub 24-bajtowych kluczy TripleDES nałożonych na hasz Wynik 64-bitowy (na ogół niewystarczający) Często używane w transakcjach i bazach danych
Certyfikaty Najprostszy certyfikat zawiera po prostu: Informacje na temat certyfikowanego podmiotu, który ma być właścicielem klucza publicznego Ten klucz publiczny A to wszystko jest Podpisane cyfrowo przez kogoś zaufanego (na przykład urząd certyfikacji)
Certyfikat X.509 OU=Project Botticelli… Klucz lub informacje o nim
Uwierzytelnianie za pomocą certyfikatów Melinda otrzymuje certyfikat Billa Weryfikuje jego podpis cyfrowy Może zaufać, że klucz publiczny naprawdę należy do Billa Ale czy to Bill stoi przed nią, czy jest to Scott? Melinda wzywa Billa do zaszyfrowania frazy, którą właśnie wymyśliła („Naprawdę potrzebuję więcej butów”) Bill dysponuje oczywiście kluczem prywatnym pasującym do certyfikatu, więc odpowiada („*&$^%L$&Lfhsdf*&EHFDhd62^&L”) Melinda rozszyfrowuje to za pomocą klucza publicznego, który ma w certyfikacie (któremu ufa) i jeśli fraza jest zgodna z frazą, o zaszyfrowanie której poprosiła Billa, to z drugiej strony faktycznie musi być Bill! Tak przy okazji, to jest podstawowa idea działania protokołu SSL
Gdzie przechowywać? W większości certyfikaty są „bezpieczne” Nie ma potrzeby za bardzo ich chronić, gdyż są podpisane cyfrowo i zawierają jedynie publicznie dostępne informacje Można je przechowywać gdziekolwiek, w pliku lub na „tępej” karcie inteligentnej zawierającej wyłącznie pamięć Klucze prywatne (i zawierające je certyfikaty) odpowiadający kluczowi publicznemu są niezwykle wrażliwe To są kluczowe zasoby. Należy dobrze ich strzec Przechowywać w „chronionym miejscu” systemu operacyjnego lub na „inteligentnej” karcie inteligentnej z wbudowanymi funkcjami kryptograficznymi Na przykład karty inteligentne firmy Axalto zgodne z platformą .NET
Słowo o kartach inteligentnych (smartcards) Niektóre karty inteligentne są „tępe” tzn. zawierają jedynie kości pamięci Nie są zalecane do przechowywania kluczy prywatnych używanych do weryfikowania tożsamości Mimo to i tak są lepszym miejscem niż dyskietki czy dyski twarde Karty inteligentne z wbudowanymi funkcjami kryptograficznymi są droższe, ale zapewniają lepsze zabezpieczenia Klucz prywatny jest bezpieczny i używany zgodnie z potrzebami Możliwa jest dodatkowa ochrona (hasło, biometria) W sprzęcie są zaimplementowane pewne algorytmy Możliwe jest samozniszczenie
Hierarchia certyfikacji Większość organizacji nie używa tylko jednego klucza głównego do podpisywania certyfikatów Narażenie tego klucza wiąże się z niebezpieczeństwem Nie jest to odpowiednie dla wielkich organizacji Problemy z zarządzaniem odpowiedzialnością Hierarchie certyfikatów Na ogół 3-warstwowa: 2 offline i 1 online Weryfikacja certyfikatu może się wiązać z weryfikacją ścieżki zaufania Certyfikacja krzyżowa („mesh”, „web”), jeśli jest to możliwe
Zalecenia
Silne systemy Zawsze jest to mieszanka! Zmienia się cały czas… Symetryczne: AES, min. 128-bitowe dla RC2 i RC5, 3DES, IDEA, uważnie przeanalizowane RC4, lepsze 256-bitowe Asymetryczne: RSA, ElGamal, Diffie-Hellman (dla kluczy) minimum 1024-bitowe (decydować się na maksymalne wartości, typowo 4096, jeśli stać nas na to) Hasz: SHA co najmniej 256 bitów
Słabe systemy Wszystkie 40-bitowe (w tym wersje 128 i 56-bitowe z „ustaloną” resztą) Większość uważa DES za słaby algorytm CLIPPER A5 (telefony komórkowe GSM poza USA) Vigenère (telefony komórkowe w USA) Pochodzi z 1585 roku! Hasze (i podpisy) oparte na MD5 lub SHA-0 (być może także na SHA-1) lub 64-bitowych haszach Niezweryfikowane certyfikaty bez zaufania Słabe certyfikaty (tak jak wiele osobistych certyfikatów „klasy 1”)
Wnioski
Streszczenie Kryptografia to bogata i dojrzała dziedzina Każdego dnia uzależniamy od niej nasze życie Należy znać podstawy i dokonywać słusznych wyborów, unikając pułapek Wcześnie planować swoją infrastrukturę PKI Unikać bardzo nowych, nieznanych rozwiązań
Odsyłacze Odwiedź witrynę www.microsoft.com/poland/security Zagraj w www.gatekeepertest.com Czytaj grupę sci.crypt (w tym archiwa) Dodatkowe informacje: Cryptography: An Introduction, N. Smart, McGraw-Hill, ISBN 0-07-709987-7 Practical Cryptography, N. Ferguson & B. Schneier, Wiley, ISBN 0-471-22357-3 Contemporary Cryptography, R. Oppliger, Artech House, ISBN 1-58053-642-5 (data planowanej publikacji Maj 2005, zobacz http://www.esecurity.ch/Books/cryptography.html) Applied Cryptography, B. Schneier, John Wiley & Sons, ISBN 0-471-11709-9 Handbook of Applied Cryptography, A.J. Menezes, CRC Press, ISBN 0-8493-8523-7, www.cacr.math.uwaterloo.ca/hac (bezpłatny plik PDF) PKI, A. Nash et al., RSA Press, ISBN 0-07-213123-3 Foundations of Cryptography, O. Goldereich, www.eccc.uni-trier.de/eccc-local/ECCC-Books/oded_book_readme.html Cryptography in C and C++, M. Welschenbach, Apress, ISBN 1-893115-95-X (zawiera przykłady kodu na dysku CD)