Więcej osób ma dziś dostęp do internetu niż kiedykolwiek wcześniej – i z wielu różnych miejsc.
Mamy stały dostęp do internetu z naszymi laptopami, telefonami i tabletami, a zapewne już wkrótce – urządzenia osobiste i akcesoria. Korzystamy z internetu z niezaufanych, a czasem nawet wrogich sieci. Ponieważ coraz więcej osób korzysta z internetu, musimy dbać o ochronę swoich danych i danych użytkowników.
Przede wszystkim jako deweloperzy musimy zrozumieć konieczność użycia protokołu SSL i jego praktyczny charakter.
Co to jest SSL? Skrót Secure Sockets Layer to protokół kryptograficzny zaprojektowany w celu zapewnienia bezpieczeństwa komunikacji przez internet. Gwarantuje prywatność dzięki szyfrowaniu i integralności, co zapobiega przechwyceniu lub ingerencji w Twoje połączenie internetowe. SSL ma swoje wady, ale to czołowy i jedyny sposób zapewniania bezpieczeństwa komunikacji w internecie.
Jak wynika z danych Pulse SSL, rok temu stosowaliśmy protokół SSL około 15%, a obecnie jest to ponad 50%.
Dwa akronimy:
TLS: dla większości intencji i celów tak samo jak w przypadku SSL. Nazwa protokołu SSL 3.1 została zmieniona na TLS, a TLS to nazwa standardu IETF. Ale mogą być wymienne!
HTTPS: to protokół HTTP przez SSL, stanowiący warstwy zabezpieczeń SSL i standardowego protokołu HTTP. Najpierw uzgadnianie połączenia klient-serwer przy użyciu kryptografii klucza publicznego/prywatnego do utworzenia udostępnionego klucza, który jest wykorzystywany przez drugą część protokołu SSL do szyfrowania komunikacji.
Połączenie się z internetem w internecie może być szybkie, bezpieczne i szybkie. Wydaje się, że rozmawiamy bezpośrednio ze stroną. W rzeczywistości nie jest to jednak bezpośrednia relacja. Komunikacja odbywa się przez router Wi-Fi, dostawcę usług internetowych i potencjalnie inne pośrednie serwery proxy między Twoim urządzeniem a witryną. Bez protokołu HTTPS cała komunikacja w firmie odbywa się za pomocą zwykłego tekstu.
Problem polega na tym, że użytkownicy rzadko wpisują pełny adres URL zawierający HTTPS lub klikają link, korzystając z protokołu HTTP. Co gorsza, można zastosować atak typu „man in the middle” i zastąpić protokół HTTPS protokołem HTTP. Właśnie do tego służy narzędzie SSLstrip wprowadzone w 2009 roku. Firesheep z 2010 roku słuchał tylko otwartych sieci Wi-Fi w poszukiwaniu w bezpośredni sposób wysyłanych plików cookie. Oznaczało to, że można było nasłuchiwać wiadomości na czacie lub zalogować się na czyjeś konto na Facebooku.
Wdrożenie protokołu SSL jest jednak (względnie) tanie, szybkie i łatwe (zobacz stronę ssllabs.com i książkę Ilyi Grigorik „High Performance Browser Networking”). W przypadku zastosowań niekomercyjnych możesz nawet uzyskać bezpłatne certyfikaty ze strony startssl.com! Przypinanie klucza publicznego umożliwia operatorom witryn określenie, które urzędy certyfikacji mogą wystawiać certyfikaty dla witryn.
„W styczniu tego roku (2010) w Gmailu we wszystkich usługach domyślnie stał się protokół HTTPS. W tym celu nie musieliśmy wdrażać żadnych dodatkowych maszyn ani żadnego specjalnego sprzętu. Na naszych produkcyjnych komputerach frontendu protokół SSL odpowiada za mniej niż 1% obciążenia procesora, 10 KB pamięci na połączenie i <2% obciążenia sieci...
Jeśli przestaniesz teraz czytać, zapamiętaj tylko jedną rzecz: protokół SSL nie jest już dodatkowo kosztowny”.
– Overclocking SSL, Adam Langley (Google)
Na koniec kilka błędów, które są najczęściej wykrywane:
- Treść mieszana: witryny, które korzystają zarówno z protokołu HTTP, jak i HTTPS. Użytkownik będzie się zirytować, bo będzie musiał kliknąć przycisk uprawnień, aby wczytać treści. (Chrome i Firefox blokują zawartość mieszaną w elementach iframe). Upewnij się, że wszystkie zasoby na stronie HTTPS są ładowane przez HTTPS – użyj adresów URL względnych lub zależnych od schematu, na przykład
<style src="//foo.com/style.css">
. - Niezabezpieczone pliki cookie: wysyłane przez połączenie HTTP. Aby tego uniknąć, ustaw bezpieczny atrybut w nagłówkach plików cookie. Możesz też używać nowego nagłówka „Strict Transport Security”, aby wymagać protokołu SSL (HSTS).
Odebranie krążka
- Jeśli dbasz o prywatność i integralność danych użytkowników, musisz korzystać z protokołu SSL. To szybsze, łatwiejsze i tańsze niż kiedykolwiek dotąd.
- Unikaj typowych problemów z implementacją, takich jak błędy związane z treścią mieszaną lub brak ustawień odpowiednich bitów nagłówka HTTP.
- Użyj względnych adresów URL schematów lub adresów URL względnych.
- Sprawdź nowe, przydatne funkcje, takie jak HSTS czy przypinanie certyfikatów
Prezentacje: Korzystasz z protokołu SSL?