2.49. SSL

Co to jest SSL?

SSL --- --- protokół bezpiecznej komunikacji między klientem a serwerem, stworzony przez Netscape. SSL w założeniu jest podkładką pod istniejące protokoły, takie jak HTTP, FTP, SMTP, NNTP i telnet. Powszechnie jest używane głównie HTTPS (HTTP na SSL). SSL zapewnia trzy rzeczy:



Ze względu na sposób dokonywania autoryzacji SSL jest protokołem scentralizowanym, inaczej niż np. PGP. Jest on oparty o grupę instytucji certyfikujących --- Certyfing Authorities, w skrócie CA, które opatrują swoim podpisem certyfikaty poszczególnych serwerów. CA z założenia są godni zaufania, a uzyskanie podpisu wymaga przedstawienia szeregu dowodów tożsamości. W ten sposób wchodząc na serwer legitymujący się certyfikatem jednego ze znanych CA mamy pewność że serwer rzeczywiście jest tym za który się podaje.

SSL przewiduje użycie trzech rodzajów certyfikatów:



W tej chwili istnieją dwie specyfikacje SSL:



Wersja 3.0 ma poprawione wiele słabości SSL 2.0 oraz umożliwia kompresję danych. SSL 3.0 jest wstecznie kompatybilne z 2.0.

Jak nawiązuje się połączenie SSL?

Podając w URLu protokół https. Na przykład: https://www.verisign.com/ Oczywiście, nie z każdym serwerem WWW można się połączyć przez SSL. Jednak praktycznie wszystkie serwery mające coś wspólnego z zakupami przez Internet na to pozwalają. W Netscape i MSIE bezpieczne połączenie jest oznaczane przez złączenie złamanego kluczyka w lewym dolnym rogu ekranu.

Adresy portów zarezerwowane dla protokołów działających w oparciu o TLS i SSL można znaleźć pod adresem: http://www.isi.edu/in-notes/iana/assignments/port-numbers

Które przeglądarki obsługują SSL?

Z najpopularniejszych: Netscape, MSIE i Lynx.

Niestety amerykańskie prawo nakłada ograniczenia (ITAR) na eksport programów zawierających zaawansowane algorytmy kryptograficzne, wobec czego Netscape i MSIE są rozpowszechniane w dwóch wersjach: eksportowej (klucz 40-to bitowy) i amerykańskiej (128-mio bitowy). Ostatnimi czasy klucze 40-bitowe kilkukrotnie łamano dla wykazania niesłuszności ITAR i nie można ich uznać za bezpieczne.

Amerykańskie prawo przewiduje jeden wyjątek dla wielkości klucza używanego podczas połączenia SSL: połączenie z serwerem posiadającym specjalny certyfikat do wystawiania którego jest obecnie uprawniona jedynie firma VeriSign i jest on wydawany głównie bankom. Konsekwencją tego kroku jest fakt, że przeglądarki fizycznie zawierają kod umożliwiający używanie kluczy o pełnej długości, jest on jedynie zablokowany. W przypadku Netscape istnieje darmowy program Fortify umożliwiający odblokowanie wspomnianych procedur. Po uruchomieniu Fortify przeglądarka może używać kluczy o pełnej długości bez żadnych ograniczeń.

Oficjalnie wersji 128-mio bitowych nie wolno eksportować ze Stanów, ale oczywiście już dawno zostało to zrobione i można je sobie ściągnąć z Europy. Inne rozwiązanie to użycie programu SafePassage, który działa jako serwer proxy i pozwala korzystać z 128-bitowego SSL nawet eksportowym wersjom przeglądarek.

Lynx-SSL (oparty o wersje 2.7 i 2.8) używa kluczy 128-mio bitowych. Obsługa SSL w Lynxie jest w tej chwili bardzo ograniczona (brak zarządzania certyfikatami lub jakiejkolwiek konfiguracji SSL), ale działa poprawnie.

Jest jeszcze jeden program z kluczem 128-mio bitowym --- WorkHorse (pod MS Windows), przeznaczony z założenia do home-bankingu. Z tego powodu ma słabo rozbudowane wodotryski i obsługę HTMLa, za to bardzo bogate funkcje zabezpieczania transakcji (PGP, PEM, ECheque, SSL) i inne, równie interesujące.

Wszystkie wymienione programy można ściągnąć z ftp://ftp.replay.com/pub/replay/pub/browsers/ (Holandia) lub z polskiego mirrora ftp://ftp.icm.edu.pl/pub/security/replay/browsers/

UWAGA!!! Dokument ten powstawał w latach 1990-tych. W chwili obecnej jego wartość jest prawdopodonie nikła. Nie jest on i nie będzie przerabiany i rozszerzany -- wymagałoby to napisania go od nowa, a nie widzę wielkiego sensu takiej pracy. Jeśli jednak będzie on użyteczny -- zapraszam.