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