[ Następny rozdział ] [ Poprzedni rozdział ] [ Spis treści ]

12. Bezpieczeństwo WWW

Trzy podstawowe rady:

12.1 SSL


Subject:  Sposoby bezpiecznego przesyłu danych
From:     Paweł Krawczyk <kravietz@tau.ceti.com.pl>
Date:     Sun Jun 15 16:01:19 MET DST 1997
Date:     Date: Mon, 23 Jun 1997 15:46:33 +0200 (MET DST)

Co to jest SSL?

SSL (Secure Socket Layer)---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 rodzaje 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.

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.

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 http://stronghold.ukweb.com/safepassage/ , który działa jako serwer proxy i pozwala korzystać z 128-bitowego SSL nawet eksportowym wersjom przeglądarek.

Lynx-SSL (oparty o wersję 2.7) 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://pipeta.chemia.pk.edu.pl/pub/replay/browsers/.

Jak postawić bezpieczny serwer WWW?

Trzeba uruchomić serwer WWW z wbudowaną obsługą SSL, wygenerować dla niego certyfikat, a następnie zapłacić za podpisanie tego certyfikatu jednemu z Certifying Authorities.

Najpopularniejsze serwery obsługujące SSL to:

Autor tego opracowania z powodzeniem wykorzystuje na firmowym WWW serwer Apache-SSL. W tym wypadku oprócz samego serwera potrzebne jest także zaplecze w postaci SSLeay.

Decydując się na komercyjny serwer należy się dokładnie dowiedzieć czy nie jest on objęty ograniczeniami eksportowymi, żeby nie kupić kota w worku (czyli serwera obsługującego klucze max 40-to bitowe).

Co to jest SSLeay?

SSLeay jest zestawem programów i bibliotek stanowiących implementację procedur SSL 2.0 (wersje do 0.6.x) i SSL 3.0 (wersje nowsze niż 0.8.x). SSLeay służy do generowania oraz zarządzania kluczami i certyfikatami, pozwala także na podpisywanie certyfikatów (ma funkcje CA). Z SSLeay korzysta m.in. Apache-SSL.

Najbardziej godne polecenia opisy SSLeay:

Czy wszystkie przeglądarki akceptują wszystkie certyfikaty?

Nie. Taka jest konsekwencja centralnego zarządzania certyfikatami w SSL. Certyfikat autoryzowany na podstawie przedstawionych przez jego posiadacza dokumentów i innych dowodów tożsamości jest naturalnie bardziej godny zaufania niż wygenerowany samodzielnie przez administratora serwera.

Różne przeglądarki zachowują się różnie po wejściu na serwer legitymujący się certyfikatem podpisanym przez nieznanego CA:

Dwa pierwsze programy nie sprawiają natomiast problemów gdy uprzednio otrzymają certyfikat CA, który podpisał certyfikat danego serwera. Certyfikat CA powinien być plikiem w formacie DER typu application/x-x509-ca-cert. Sposób jego generowania i udostępniania przeglądarkom jest opisany w opisie TAMU.

Kto zajmuje się podpisywaniem certyfikatów?

Instytucje podpisujące certyfikaty serwerów oraz wydające certyfikaty osobiste różnią się przede wszystkim regulaminem (rodzaj serwera, wymagane dokumenty) i ceną.

Najpopularniejszym---i jednym z najdroższych CA---jest VeriSign http://www.verisign.com/ . Jego certyfikaty akceptują wszystkie wersje Netscape i MSIE.

Innym popularnym CA jest firma Thawte Consulting http://www.thawte.com/ , która bierze za to 100 USD i jej certyfikaty są rozpoznawane przez wszystkie przeglądarki. Thawte certyfikuje także Apache-SSL.

Poza tym:

Gdzie znaleźć więcej informacji o SSL?

Inne protokoły bezpiecznego WWW

Istniejące propozycje można podzielić na dwa rodzaje: protokoły warstwy transportowej (SSL, PCT) i warstwy aplikacyjnej (Shen, S-HTTP). Pierwsze z nich działają tuż nad warstwą TCP/IP i mogą służyć do przenoszenia różnych protokołów wyższych warstw---FTP, POP3, SMTP oraz HTTP. Nic nie stoi także na przeszkodzie, by np. protokół S-HTTP działał na połączeniu zabezpieczonym przez SSL. Kwestie bezpiecznych protokołów WWW wyjaśnia dobrze artykuł The Race to Secure Cyberspace http://www.webdeveloper.com/categories/security/security_race_cyberspace.html Dano Garsona

12.2 Java

Teoretycznie w Javę http://www.javasoft.com/ (podobnie jak w ActiveX http://www.ActiveX.com/ wbudowane są mechanizmy ograniczające możliwości destabilizacji pracy systemu. Jednak nie ma oprogramowania bez błędów. Więc najlepiej (na codzień) wyłączyć we własnej przeglądarce możliwość interpretowania obiektów JAVY i ActiveX

Patrz też:

12.3 CGI

Patrz też:

12.4 Serwery

Patrz też:


[ Następny rozdział ] [ Poprzedni rozdział ] [ Spis treści ]