Plan wykładu Ideologia Kryptologii Tożsamość i prywatność Po co szyfrować/uwierzytelniać dane? ABC kryptografii Szyfrowanie symetryczne i asymetryczne Moc kluczy -- popularne algorytmy OpenPGP Standard i jego implementacje (PGP, GPG) Jak zostać tajniakiem? (krok po kroku) Inne możliwości Frontends, plugins
Ideologia kryptologii Kryptologia powinna być stosowana przy przesyłaniu poufnych, newralgicznych danych przez ogólnodostępne (a więc potencjalnie groźne) kanały komunikacyjne. Konieczna i obecna - Wszędzie, gdzie ważna jest prywatność oraz autoryzowany dostęp do danych (tożsamość): Telekomunikacja Bankowość Gospodarka Wojsko INTERNET (Telewizja, GSM) uwierzytelnienie, utajnienie spójność, niezaprzeczalność
Tożsamość i prywatność Po co się uwierzytelniać? Jednoznaczna identyfikacja rozmówcy (Rozmówcą może być także maszyna lub program) Aukcje internetowe, bankowość (phishing) Wykonywanie poleceń zwierzchnika (SE +MITM attacks) Dostęp do systemów informatycznych (SSH) Ochrona własnego, dobrego imienia (NNTP, SMTP) spójność, niezaprzeczalność B.O.F.H. Po co szyfrować dane? Ochrona informacji
ABC Kryptografii Kryptografia symetryczna Jeden jest klucz (do szyfrowania i deszyfrowania) Bezpieczeństwo Ilość kluczy i ich długość (zawężanie przestrzeni) Podatność na ataki inne niż brute-force Tajność. Sposób przekazania klucza do odbiorcy Ilość odbiorców! n(n-1)/2 Popularne szyfry 2^128 AES Blowfish IDEA DES (codename: Rijndael) (opatentowany) (3DES, DESX) NIEZŁAMANY(!) NIEZŁAMANY NIEZŁAMANY ZŁAMANY ---> 2^56 == 72 057 594 037 927 936 Wszechświat 15mld lat... (kilka dni dla PC)
ABC Kryptografii Kryptografia asymetryczna Martin Hellman, Whitfield Diffie, 1976r. Są dwa klucze (prywatny, publiczny lub więcej...) Pełen zestaw czynności kryptograficznych Szyfrowanie, deszyfrowanie Podpisy cyfrowe Operacje, które łatwo przeprowadza się w jedną stronę, a bardzo trudno w drugą Mnożenie i faktoryzacja Potęgowanie modulo i logarytm dyskretny (RSA) (ElGamal, DSA) -> Dla grupy n osób potrzeba tylko n par kluczy -> Porównywanie bezpieczeństwa szyfrów sym-asym na podstawie wielkości klucza jest pozbawione sensu!
ABC Kryptografii Kryptografia hybrydowa PGP/GPG Połączenie technik szyfrowania symetrycznego z PKI (Public Key Infrastructure) Szyfrowanie Symetryczne Asymetryczne silniejsze i bardziej efektywne wygodniejsze i bezpieczeniejsze Bezpieczeństwo Zasada najsłabszego ogniwa W przypadku złamania szyfru kompromitacja tylko jednej wiadomości
Potęga pary kluczy -- szyfrowanie Klucz publiczny Udostępnij go wszystkim Losuje klucz sesyjny szyfrujący wiadomość symetrycznie Asymetrycznie szyfruje klucz sesyjny Klucz prywatny Kryptogram Pilnuj jak oka w głowie m1 3%/>\@a Chroniony hasłem Deszyfruje wiadomość zaszyfrowaną kluczem publicznym z pary
(niewykorzystana) Potęga pary kluczy
Potęga pary kluczy -- podpisywanie Klucz prywatny (strzeżony) Liczony jest hash wiadomości (MD5, SHA-1) Hash jest szyfrowany i dołączany jako podpis elektroniczny do oryginalnej wiadomości Klucz publiczny (udostępniany) Każdy może zweryfikować podpis Odszyfrowanie hasha Porównanie z osobiście wyliczonym hashem
Potęga pary kluczy
PGP & S/MIME PGP Pretty Good Privacy (ang. całkiem niezła prywatność) Jedno z najpopularniejszych narzędzi do szyfrowania poczty elektronicznej, stworzone przez Phila Zimmermanna w 1991 roku. ----- szyfruje, deszyfruje (rozmowy, partycje) podpisuje cyfrowo, weryfikuje autentyczność nadawcy zarządza kluczami darmowe tylko do użytku niekomercyjnego S/MIME (Secure/Multipurpose Internet Mail Extensions) szyfruje podpisuje Niedostateczne bezpieczeństwo (umożliwia podszywanie się)
OpenPGP OpenPGP to standard (RFC 2440), oparty na PGP, definiujący kryptograficzne rozszerzenia e-maili Szyfrowanie Podpisy cyfrowe IETF 1997r. X.509 vs. Web of trust ~ XFN Phil Zimmermann
OpenPGP -- GPG GPG GNU Privacy Guard (ang. Strażnik Prywatności) Niezależna, dostępna z kodem źródłowym implementacja PGP udostępniona na licencji GPL, będąca wynikiem opublikowania standardu OpenPGP. ---------- szyfruje, deszyfruje podpisuje cyfrowo, weryfikuje autentyczność nadawcy zarządza kluczami nie używa opetentowanych algorytmów (IDEA) konsolowy (działa tylko z linii poleceń) bardzo dużo frontendów i pluginów powszechnie stosowany w *niksach, GNU/Linux wersje na wszystkie systemy operacyjne OpenSource
Jak zostać tajniakiem? 1. Instalujemy GnuPG (...inni też muszą :) $ wget ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.1.tar.bz2 $./configure; make; su; make install 2a. Tworzymy własną parę kluczy $ gpg -gen-key $ gpg -list-keys; gpg -list-secret-keys 2b. Tworzymy certyfikat unieważniający $ gpg -output revoke.asc -gen-revoke foo@bar.pl 3a. Umieszczamy (?) klucz publiczny na serwerze kluczy $ gpg -keyserver wwwkeys.pgp.net -send-key keyid 3b. Umieszczamy klucz publiczny na naszej stronie WWW $ gpg -output my_key.pgp -armor -export foo@bar.pl (Radix 64)
Jak zostać tajniakiem? Podpisywanie wiadomości $ gpg --output msg+sig.txt --clearsign msg.txt Szyfrowanie wiadomości 1. Pobieramy klucz publiczny osoby, do której chcemy przesłać zaszyfrowaną wiadomość a) z pliku $ gpg -import miller.pgp b) z serwera kluczy $ gpg -keyserver wwwkeys.pgp.net --recv-keys keyid c) gdy nie znamy ID klucza (searching) $ gpg -keyserver wwwkeys.pgp.net -serch-keys miller@gov.pl 2. Szyfrujemy wiadomość $ gpg -encrypt -sign -armor -recipient miller@gov.pl msg.txt
Jak zostać tajniakiem? Weryfikacja kluczy publicznych 1. Za każdym razem, kiedy pobieramy czyjś klucz publiczny, staramy się go zweryfikować i potwierdzić tożsamość właściciela klucza oraz autentyczność klucza $ gpg -fingerprint zaimportowany@klucz.pl 2. Kontaktujemy się (osobiście, telefonicznie) z właścicielem klucza i porównujemy fingerprint. Jeśli wszystko się zgadza, podpisujemy klucz $ gpg -sign-key zaimportowany@klucz.pl $ gpg -list-sigs zaimportowany@klucz.pl 3. Możemy teraz odesłać go pocztą elektroniczną właścicielowi lub umieścić na serwerze (niepolecane) $ gpg -keyserver wwwkeys.pgp.net -send-key keyid
Jak zostać tajniakiem? Weryfikacja podpisu wiadomości 1. Pobieramy klucz publiczny osoby, od której dostaliśmy wiadomość, jeśli jeszcze go nie mamy, a następnie $ gpg -verify msg.txt.asc Odszyfrowanie wiadomości 1. Oczywiście jesteśmy prawowitym adresatem wiadomości i posiadamy nasz klucz prywatny ;-) $ gpg -output rozszyfrowana -decrypt zaszyfrowana.asc
Szmery-bajery Frontends GUI The Gnu Privacy Assistant Seahorse (GNOME) kgpg (KDE) Windows Privacy Tray MUA Enigmail (Mozilla) Evolution KMail Mutt ez-pine-gpg The Bat! Functions PHP Python Libraries libgcrypt GNUTLS Jabber PSI Gabber Tkabber Miranda Multiplatformowość: *nix/mac/windows
Enigmail
Seahorse (GNOME)
Kgpg (KDE)
Bezpieczeństwo --> Men in the middle --> Keyserver s compromitation --> Zdublowane key ID Stosunek bezpieczeństwa do wygody: * * * * Włamanie do domu E-sandbox Dobre hasło Sieć zaufania
O czym wspomnieć nie zdążyliśmy Trust management --completes-needed --marginals-needed Key edition --edit-key Dodawanie/Usuwanie podkluczy Zmiana identyfikatora (dodawanie, rezygnacja) Zmiana terminu ważności Szyfrowanie symetryczne pików
Contact Info Piotr Konieczny E-mail: xerror@gmail.com JabberID: xerror@ gentoo.pl Prowadzącego ubrała firma: http://linuxstuff.pl http://lumd.linux.pl
Bibliografia ^G [http://google.com] ^W [http://wikipedia.org] http://pl.wikipedia.org/wiki/poziom_bezpiecze%c5%84stwa http://www.openpgp.org/ http://www.gnupg.org/ http://www.pgp.com/ http://www.pgpdump.net/ http://www.pgpi.org/doc/ http://www.pgpi.org/doc/faq/ http://keyserver.veridis.com:11371/index.jsp http://www.uk.pgp.net/pgpnet/wwwkeys.html http://www.sigillum.pl/ http://weblog.infoworld.com/udell/2004/03/23.html#a952 http://www.schneier.com/biblio/ http://reports-archive.adm.cs.cmu.edu/anon/1998/abstracts/98-155.html http://www.ipsec.pl/leksykon/