Zastosowania informatyki w gospodarce Wykład 8

Transkrypt

Zastosowania informatyki w gospodarce Wykład 8
Instytut Informatyki, Automatyki i Robotyki
Zastosowania informatyki w gospodarce
Wykład 8
Protokół SSL
dr inż. Dariusz Caban
dr inż. Jacek Jarnicki
dr inż. Tomasz Walkowiak
Protokoły SSL oraz TLS
• Określenia
– SSL – Secure Socket Layer
– TLS – Transport Layer Security
• Opracowany przez Netscape Communications Corp.
• Wiodąca implementacja przez RSA Securities
– posiadali patenty na większość stosowanych algorytmów
kryptograficznych
• Bardzo dobre implementacje publiczne autorstwa E.
Young (SSLeay) oraz OpenSSL
• Protokół stosowany w:
– https (http po łączach szyfrowanych protokołem SSL)
– Pops, imaps (protokoły pocztowe po SSL)
– …
2
Składowe protokołu SSL
• Połączenie szyfrowane szyfrem symetrycznym
– Dopuszczalne są różne algorytmy szyfrujące
– Przy nawiązywaniu połączenia ustalany jest najbezpieczniejszy
znany dla serwera i klienta
– Można uzgodnić połączenie nie szyfrowane, jedynie chronione
pod względem integralności znacznikami MAC
• Klucz szyfrujący/deszyfrujący ustalany jest losowo dla
każdej sesji (połączenia)
– Protokół bez wspólnej tajemnicy (without shared secret)
– Implementowane są różne algorytmy bezpiecznej wymiany
klucza (Diffie-Hoffman, RSA)
• Przy nawiązaniu połączenia uwierzytelnienie serwera w
oparciu o jego certyfikat
– Ustalanie klucza i uwierzytelnienie serwera w jednym kroku
3
SSL Record Protocol
• Protokół przesyłania danych między bezpiecznymi
gniazdami
– Etapy przetwarzania
•
•
•
•
•
Podział na rekordy
Kompresja
Dołączenie MAC i/lub szyfrowanie
Przesyłanie pakietami TCP
Bieżący stan protokołu ustala parametry przetwarzania
– Protokoły wykorzystujące SSL RP
•
•
•
•
SSL Handshake Protocol
SSL Change Cipher Spec
SSL Alert Protocol
Protokół aplikacyjny
4
Nawiązanie połączenia SSL
• ClientHello/ServerHello
– Ustalenie wersji protokołu SSL
– Uzgodnienie zestawu szyfrów Cipher Suite
• Metoda wymiany klucza sesyjnego (RSA, Diffie-Hellman)
• Szyfr symetryczny
–
–
–
–
–
Null encoding
RC4 40/128
RC2 40
AES 128/256
3DES, IDEA, Fortezza
• Algorytm wyznaczania skrótów (do wyznaczania MAC)
– Null, MD5, SHA1
– Uzgodnienie metody kompresji
– Uzgodnienie klucza sesyjnego
– Uwierzytelnienie serwera i (opcjonalnie) klienta
5
Uzgodnienie klucza sesyjnego
• Algorytm RSA
– Serwer przesyła nonce jawnie i zaszyfrowany kluczem prywatnym
– Klient odczytuje nonce i rozszyfrowuje go kluczem publicznym z
certyfikatu
• Podstawowy algorytm Diffie – Hellman
– Nie wymaga wcześniejszych uzgodnień
– Zasada:
Jawnie znane: liczba pierwsza p oraz inna liczba g < p
Serwer wybiera/losuje TAJNĄ liczbę S
Serwer wyznacza T = g^S mod p
Serwer przesyła do klienta (p, g, T) – jawnym tekstem !
Klient wybiera losowo liczbę W
Klient wyznacza TAJNY klucz sesyjny K = T^W mod p
Klient przesyła do serwera V = g^W mod p – jawnym tekstem !
Serwer wyznacza klucz sesyjny K = V^S mod p
– Uzasadnienie:
V^S = g^WS = T^W = K (mod p)
6
Oprogramowanie
• Pakiet OpenSSL
– Publiczna implementacja bibliotek SSL i TLS (openssl.so)
– Publiczna implementacja biblioteki algorytmów
kryptograficznych (libcrypto.so)
– Implementacja podstawowych narzędzi dla centrum autoryzacji –
system openssl
• Serwer Apache z obsługą protokołu SSL (Apache/ModSSL)
• Pakiet Stunnel
• Prosta aplikacja komunikująca się ze zdalnym komputerem po łączu
szyfrowanym protokołem SSL
• Tunelowanie u klienta: aplikacja bez SSL -> stunnel => serwer z SSL
• Tunelowanie na serwerze: klient SSL => stunnel -> serwer bez SSL
7
HTTPS
• Pakiety wymieniane w protokole HTTP
• Do wymiany wykorzystywany SSL / TLS
• Aby klient wiedział, że dokument należy obsługiwać po
łączu szyfrowanym, URL ma postać:
https://normalny_adres_URL
• Domyślny port, pod którym serwery nasłuchują zapytań
HTTPS
– Nie jest portem 80 (domyślny dla HTTP)
– Jest to port 443
– Dzięki temu na tym samym komputerze mogą być
równolegle uruchomione odrębne serwery http i https
• Strony łączące obiekty przesyłane w HTTP i HTTPS
8
Apache z mod_SSL
• Dwie niezależne implementacje serwera Apache z
szyfrowaniem SSL
– Apache / mod_SSL
– Apache-SSL
• Apache / mod_SSL wymaga
– zainstalowania bibliotek OpenSSL
– rekompilacji serwera Apache z poprawkami (patch)
implementującymi EAPI
– zainstalowania modułu mod_SSL
• wersja modułu musi być zgodna z wersją serwera Apache
<mod_ssl-version>-<apache-version>
– skonfigurowania serwera w pliku httpd.conf
– uruchomienia SSLEngine on
9
Konfiguracja mod_SSL - certyfikaty
• SSLCertificateFile i SSLCertificateKeyFile
– Wskazują ścieżki do plików z certyfikatem serwera oraz z
kluczem prywatnym (jeżeli to inny plik)
– Konieczne, ponieważ serwer HTTPS musi przedstawiać się
swoim certyfikatem
– Nazwa CN musi pokrywać się z adresem DNS
– Pliki w kodzie PEM
– Mogą wystąpić osobne dyrektywy wskazujące certyfikaty z
szyfrem RSA i DSA
• SSLPassPhraseDialog
– Jak httpd ma uzyskać hasło do zaszyfrowanego klucza
• SSLCertificateChainFile
– Plik powinien zawierać certyfikaty wszystkich CA
podpisujących certyfikat serwera (całą ścieżkę certyfikacji)
w pliku PEM
10
Autoryzacja przez certyfikaty
klientów
• SSLVerifyClient
– Może być: none, optional, optional_no_ca, require
• SSLVerifyDepth
– Maksymalna liczba pośrednio weryfikowanych CA w ścieżce
– Powinna być mała, 1 => certyfikat podpisany przez CA znane
serwerowi
• SSLCACertificatePath
– Katalog zawierający wszystkie certyfikaty CA, uznawane za znane
przez serwer
– Do każdego pliku z certyfikatem należy utworzyć dowiązanie
symboliczne o nazwie wartość-hash.N
– Nazwę dowiązania otrzymuje się ze skrótu nazwy DN
• SSLCARevocationPath
– Katalog zawierający listy unieważnionych certyfikatów dla
zainstalowanych CA z linkami wartość-hash.rN
• SSLCACertificateFile, SSLCARevocationFile
11
Elektroniczna obsługa kont bankowych
• Realizowana poprzez bezpieczny serwis HTTPS
– Certyfikat serwera powinien zapobiegać podszywaniu się
– Podpisany przez „zaufanego” dostawcę certyfikatów (np.
VeriSign, Entrust)
– Serwer wymusza bezpieczny poziom szyfrowania
• Dostęp do serwisu wymaga uwierzytelnienia
– Proste hasło (niebezpieczeństwo przechwycenia przez
oprogramowanie lokalne)
– Hasła jednorazowe
– Tokeny identyfikacyjne
• Niektóre operacje wymagają dodatkowego
potwierdzenia
– PIN przesłany SMS’em na telefon użytkownika
– Autoryzacja telefoniczna
12
Przelew bankowy
• Przekazanie środków pieniężnych z jednego konta na drugie
– Płatnik inicjuje przelew ze swojego konta, podając konto odbiorcy
(IBAN)
– Bank płatnika przekazuje do banku odbiorcy polecenie udostępnienia
środków na koncie odbiorcy (poprzez bezpieczne połączenie np. SWIFT)
– Komunikat zawiera również informacje do rozliczenia międzybankowego
– Jeżeli pomiędzy bankami nie ma porozumienia dot. rozliczeń, to
przelew poprzez bank korespondencyjny
– W Polsce pośrednikiem jest Elektroniczna Izba Rozrachunkowa ELIXIR
• Opłata za przelew
– Pokrywana przez płatnika lub odbiorcę lub obie strony
– Może być bardzo wysoka w przypadku przelewów międzynarodowych
– Dyrektywa unijna ogranicza wysokość opłat w obrębie 32 krajów SEPA
(do poziomu opłat lokalnych)
• Ryzyko transakcji
– Stosunkowo bezpieczne, uwierzytelnienie nadawcy i odbiorcy
– Ryzyko związane z anonimowym odbiorcą
– Podatne na oszustwo – transakcja jest nieodwracalna
13