Kryptografia i PKI (Infrastruktura Kluczy Publicznych) Rafal Lukawiecki, Project Botticelli rafal@projectbotticelli.co.uk www.projectbotticelli.co.uk
Cele sesji Zrozumieć podstawy kryptografii i PKI (niezależnie od dostępnych produktów) Objaśnić popularną terminologię Dać kilka rad Uwaga: to jest szybka i gwałtowna sesja
Zasoby (assets) Co zabezpieczamy? Generalnie informatycy zabezpieczają: Dane Serwisy (czyli aplikacje, procesy biznesowe lub ich komponenty) Niektóre zasoby są kluczowe – Key Assets (KA), od nich zależy bezpieczeństwo innych zasobów Ta sesja nie jest o zabezpieczaniu: Ludzi (przepraszam), kabli, dywanów, maszyn do pisania lub komputerów (?!)
Bezpieczeństwo cyfrowe przedłużeniem fizycznego bezpieczeństwa kluczowych zasobów Mocne fizyczne bezp. KA Mocne bezp. cyfrowe Bezpiecznie Słabe fizyczne bezp. KA Mocne bezp. cyfrowe Niebez-piecznie Mocne fizyczne bezp. KA Słabe bezp. cyfrowe Niebez-piecznie
Użycia kryptografii Tajność Spójność (integrity) Autentyczność ◄ Niepowołani nie rozumieją informacji Spójność (integrity) ◄ Od razu jest bardzo widoczne jeśli ktoś zmieni informację Autentyczność ◄ Możemy zweryfikować związek między autorami i zasobem Identifikacja ◄ Wiemy kto konkretnie jest związany z zasobem (np. jako autor) Niezaprzeczalność (non-repudiation) ◄ Nie da się powiedzieć „ja tego nie podpisałem”
Kryptografia Używamy trudnej matematyki by osiągnąć cele właśnie przedyskutowane “Statyczna” Nie pozwala wykryć problemów wynikających ze schematu specyfiki prób włamania i dostępu w pewnym okresie czasu Zależy od bezpieczeństwa zasobów kluczowych (np. główne klucze prywatne) Moc maleje z upływem czasu i rozwoju technik kryptoanalitycznych
Podstawy Kryptografii
Co jest bezpieczne? Używaj systemów: Od znanych producentów Z opublikowanymi (nie tajnymi!) algorytmami Którymi się interesuje wiele ludzi Które przeżyły próby wielu włamań przez lata Które były przeanalizowane matematycznie W żadnym wypadku nie „ulepszaj” algorytmów Zatrudnij kogoś by spróbował się włamać
Uproszczona terminologia Tekst jawny (plaintext) To co chcemy zabezpieczyć, np. czytelny list który zaszyfrujemy Tekst zaszyfrowany (ciphertext) Nieczytelne informacje, które trzeba rozszyfrować Klucz Potrzebny by szyfrować lub rozszyfrowywać (lub oba) Kryptoanaliza Łamanie systemów korzystając z matematyki Teoria złożoności (complexity theory) Mierzy jak trudno się włamać do systemów
Kryptografia symetryczna Plain-text input Cipher-text Plain-text output “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%” Encryption Decryption Taki sam klucz (współdzielony)
Symetryczność: zalety i wady Trzeba się zgodzić na klucz przed użyciem Jak bezpiecznie przekazać klucz odbiorcy? Zalety: Łatwe i bardzo szybkie algorytmy (rzędu 1000 do 10000 szybsze niż asymetryczne) Superszybkie jeżeli implementacja sprzętowa (DES, Rijndael) Sprzętowe implementacje są bezpieczniejsze niż czysto software-owe
Kryptografia publiczna (asymetryczna) Wiedza o kluczu szyfrującym nie pozwala* odgadnąć klucza odszyfrowującego Odbiorca informacji generuje parę kluczy I publikuje swój klucz publiczny w jakimś katalogu Zatem każdy może jej posyłać zaszyfrowane dane
Szyfrowanie publiczne (asym) Clear-text Input Cipher-text Clear-text Output “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” Encryption Decryption public private Różne klucze Publiczny klucz odbiorcy Prywatny klucz odbiorcy
Proces złożony z obu File encryption (np. DES) RNG Launch key for nuclear missile “RedHeat” is... RNG Losowo wygenerowany klucz sesyjny (FEK) File encryption (np. DES) *#$fjda^j u539!3t t389E *&\@ 5e%32\^kd Data Decryption Field generation (e.g., RSA) DDF Publiczny klucz użytkownika (z certyfikatu) Data Recovery Field generation (e.g., RSA) DRF Publiczny klucz agenta odtwarzania danych na wypdek katastrofy
Podwójne odszyfrowanie *#$fjda^j u539!3t t389E *&\@ 5e%32\^kd Launch key for nuclear missile “RedHeat” is... File decryption (e.g., DES) DDF DDF extraction (e.g., RSA) File encryption key (FEK) DDF rozszyfrowujemy używając prywatnego klucza by uzyskać FEK DDF zawiera klucz FEK zaszyfrowany publicznym kluczem odbiorcy Privatny klucz odbiorcy
Podstawy PKI
Problem klucza publicznego Rozwiązaliśmy problem przekazania klucza Ale… Scott tworzy parę kluczy i daje wszystkim swój klucz publiczny mówiąc, że należy do Billa Ludzie szyfrują tajne dane dla Billa Bill nie ma klucza prywatnego by to odszyfrować… Scott czyta wiadomości posłane do Billa
Eureka! Potrzebujemy PKI by rozwiązać ten problem I kilka innych problemów…
Jak zweryfikować klucz publiczny? Dwa podejścia: Zadzwoń do Billa zanim użyjesz jego klucza i sprawdź Fingerprint lub jakaś suma kontrolna Poproś kogoś komu już ufasz by zcertyfikował prawdziwość klucza Billa Niech się oni cyfrowo podpiszą pod kluczem Billa Ale musisz komuś ufać…
Modele zaufania Web-of-Trust (PGP) Model „koleżeński” Ludzie podpisują sobie klucze nawzajem Trusted Authority + Path of Trust (CAs) Każdy ufa w Certificate Authority (Verisign, Thawte, BT etc.) CA cyfrowo podpisuje klucze CA może nawet nominować inne CAs
Problemy i przyszłość modeli zaufania Web-of-trust jest bardziej wiarygodny Ale trudniejszy i zajmuje dużo czasu oraz zarządzania CAs są prostsze ale bardziej jak „wielki brat” Tańsze i łatwiej nimi zarządzać Strategia połączona? Niech CA werifikuje ludzi techniką web-of-trust
Asymmetric Encryption Podpisujemy cyfrowo Message or File 128 Bytes Message Digest Digital Signature This is a really long message about Bill’s… Jrf843kjfgf*£$&Hdif*7oUsd*&@:<CHDFHSD(** Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkvegMs” Hash Function (SHA, MD5) Asymmetric Encryption private Funkcja hash użyta by skalkulować krótki, unikatowy „odcisk palca” wiadomości Kluczy prywatny podpisu-jącego
Verifying a Digital Signature Jrf843kjf gf*£$&Hd if*7oUsd *&@:<CHD FHSD(** Py75c%bn&*) 9|fDe^bDFaq #xzjFr@g5= &nmdFg$5kn vMd’rkvegMs” Asymmetric decryption (e.g. RSA) Każdy wierzy w publiczny klucz bo go może zweryfikować Publiczny klucz podpisującego Digital Signature ? == ? Are They Same? This is a really long message about Bill’s… Same hash function (e.g. MD5, SHA…) Oryg. wiadomość Py75c%bn&*) 9|fDe^bDFaq #xzjFr@g5= &nmdFg$5kn vMd’rkvegMs”
Certyfikaty Najprostszy to: Informacja o właścicielu i Jego klucz publiczny To wszystko jest podpisane przez CA któremu ufamy
X.509 Certificate OU=Project Botticelli… The Key or Info About It
Weryfikacja autentyczności Melinda dostaje certyfikat Billa Sprawdza podpis na certyfikacie Więc wierzy w certyfikat Ale czy przed nią stoi Bill czy Scott Melinda prosi by Bill zaszyfrował losowo wybraną frazę (“I really need more shoes”) Bill ma swój prywatny klucz więc odpowiada (“*&$^%£$&£fhsdf*&EHFDhd62^&£”) Melinda odszyfrowuje i porównuje odpowiedź – jako że się zgadza, wie że przed nią jest jedyny właściciel klucza prywatnego czyli Bill Tak działa SSL...
Krótki opis algorytmów
DES, IDEA, RC2, RC5, Rijndael S/MIME, SSL, Kerberos PGP S/MIME, SSL Symmetric DES (Data Encryption Standard) is the most popular NSA may know “back door” - not very likely considering 20 years research Keys very short: 56 bits Triple DES (3 DES) not much more secure but may thwart NSA IDEA (International Data Encryption Standard) Similar to DES, but “not” from NSA 128 bit keys RC2 & RC5 (by R. Rivest) RC2 is older and RC5 newer (1994) - similar to DES and IDEA PGP S/MIME, SSL
Rijndael Standard replacement for DES for US government, and, probably for all of us as a result… Winner of the AES (Advanced Encryption Standard) competition run by NIST (National Institute of Standards and Technology in US) in 1997-2000 Comes from Europe (Belgium) by Joan Daemen and Vincent Rijmen. “X-files” stories less likely (unlike DES). Symmetric block-cipher (128, 192 or 256 bits) with variable keys (128, 192 or 256 bits, too) Fast and a lot of good properties, such as good immunity from timing and power (electric) analysis Construction deceptively similar to DES (S-boxes, XORs etc.) but really different
RC4 Symmetric R. Rivest in 1994 Fast, streaming encryption R. Rivest in 1994 Originally secret, but “published” on sci.crypt Related to “one-time pad”, theoretically most secure But! It relies on a really good random number generator And that is the problem PPTP
RSA, ElGamal, ECC Asymmetric Rivest, Shamir, Adleman – 1978 SSL, PGP Very slow and computationally expensive – need a computer Very secure Rivest, Shamir, Adleman – 1978 Popular and well researched Strength in today’s inefficiency to factorise into prime numbers Some worries about key generation process in some implementations ElGamal Relies on complexity of discrete logarithms ECC (Elliptic Curve Cryptography) If you understand how it works you are probably a mathematician Better than RSA, in general SSL, PGP
MD5, SHA Hash functions – not encryption at all! Goals: Not reversible: can’t obtain the message from its hash Hash much shorter than original Two messages won’t have the same hash MD5 (R. Rivest) 512 bits hashed into 128 Mathematical model still unknown But it resisted major attacks SHA (Secure Hash Algorithm) US standard based on MD5 S/MIME, SSL, PGP, Digital Sigs
Diffie-Hellman, “SSL”, Certs Methods for key exchange DH is very clever since you always generate a new “key-pair” for each asymmetric session STS, MTI, and certs make it even safer SSL uses a protocol to exchange keys safely Certs (certificates) are the most common way to exchange public keys Foundation of Public Key Infrastructure (PKI) PGP Everyone
Breaking It on $10 Million Symme-tric Key ECC Key RSA Key Time to Break Machines Memory 56 112 420 < 5 mins 10000 Trivial 80 160 760 600 months 4300 4GB 96 192 1020 3 million years 114 170GB 128 256 1620 10E16 years 0.16 120TB From a report by Robert Silverman, RSA Laboratories, 2000
Rekomendacje
Typowe rekomendacje mocy (May 2003) Minimum Lepiej Symmetric Key 96 bits (avoid DES as it can do only 56, instead use AES-Rijndael or RC5) 256 bits (Rijndael, RC5 128bits, not DES) Asymmetric Key 1024 (RSA) 4096 (RSA) ECC Key 192 bits 256 bits Hash: SHA/MD5 128 bits (absolutely not 64 bits) 256 bits or more Common Cert Classes – Personal and Employee Common Use Class 2 (in Verisign classification) Class 3 at least ((in Verisign classification)
Słabe systemy Cokolwiek z 40-bitów (nawet 128 i 56 bitowe gdzie „przyblokowano” część) CLIPPER A5 (GSM) Vigenère (komórki w USA) Pochodzi z 1585! Certyfikaty niezweryfikowane Słabe certyfikaty (klasa 1 itd)
Pamiętaj: Nie używaj nietestowanych systemów Stwórz swoje PKI i bardzo dbaj o klucze prywatne Wybierz i zaimplementuj strategię odwoływania kluczy Używaj smartcards Silne hasła są ważne...
Podsumowując Zdecyduj co zabezpieczyć Miej szefa bezpieczeństwa - CSO (Chief Security Officer) Używaj mocnych algorytmów Balansuj bezpieczństwo z używalnością
Kroki następne www.microsoft.com/security Studiuj PKI Czytaj: Applied Cryptography, B. Schneier, John Wiley & Sons, ISBN 0-471-12845-7 Foundations of Cryptography, O. Goldereich, www.eccc.uni-trier.de/eccc-local/ECCC-Books/oded_book_readme.html Handbook of Applied Cryptography, A.J. Menezes, CRC Press, ISBN 0-8493-8523-7 PKI, A. Nash et al., RSA Press, ISBN 0-07-213123-3 Cryptography in C and C++, M. Welschenbach, Apress, ISBN 1-893115-95-X (includes code samples CD)