OpenSSL
OpenSSL – otwarto‑źródłowy zestaw narzędzi i bibliotek implementujących protokoły SSL i TLS oraz szeroki wachlarz algorytmów kryptograficznych. Projekt jest powszechnie wykorzystywany w serwerach internetowych, klientach, aplikacjach mobilnych i systemach operacyjnych, stanowiąc jedną z najważniejszych podstaw współczesnego szyfrowania komunikacji.
Historia
Projekt OpenSSL powstał jako kontynuacja biblioteki SSLeay, opracowanej w latach 1995–1998 przez Erica Younga i Randalla Daileya. Po zaprzestaniu prac nad SSLeay w 1998 roku, społeczność programistów przejęła kod i w 1998 roku powołała projekt OpenSSL, którego pierwsza wersja 0.9.0 została wydana w 1998. Od tego czasu projekt jest rozwijany w modelu open‑source i jest utrzymywany przez międzynarodową grupę wolontariuszy oraz firmy współpracujące.
Podstawowe elementy
- Biblioteka kryptograficzna (libcrypto) – oferuje implementacje algorytmów symetrycznych (AES, DES), asymetrycznych (RSA, DSA, ECDSA), funkcji hash (SHA‑2, MD5) oraz protokołów wymiany kluczy (Diffie‑Hellman).
- Biblioteka protokołów SSL/TLS (libssl) – realizuje warstwę transportową szyfrowaną, obsługując wszystkie wersje od SSL v2 po najnowsze TLS v1.3. Zapewnia funkcje tworzenia i weryfikacji certyfikatów cyfrowych, obsługę protokołu SNI oraz mechanizmów renegocjacji.
- Narzędzie wiersza poleceń (openssl) – uniwersalne CLI umożliwiające generowanie kluczy, żądań certyfikatów (CSR), konwersję formatów (PEM, DER, PKCS#12), testowanie połączeń TLS oraz wykonywanie operacji kryptograficznych na plikach.
Wykorzystanie
OpenSSL jest domyślną biblioteką kryptograficzną w wielu dystrybucjach systemu Linux, w serwerze Apache HTTP Server, w Nginx oraz w oprogramowaniu pocztowym (Postfix, Dovecot). Ponadto jest wykorzystywany w aplikacjach desktopowych, mobilnych oraz w systemach wbudowanych.
Licencja
Od wersji 1.1.0 OpenSSL jest rozpowszechniany na licencji Apache License 2.0 oraz na licencji OpenSSL License, co pozwala na komercyjne i niekomercyjne użycie kodu źródłowego bez konieczności ujawniania własnego kodu.
Problemy bezpieczeństwa
Projekt OpenSSL od początku swojej historii był przedmiotem licznych audytów bezpieczeństwa. Najbardziej znane incydenty to:
- Heartbleed (CVE‑2014‑0160) – krytyczna luka w wersji 1.0.1, wykryta w 2014 roku, pozwalająca na wyciek pamięci serwera.
- Vulnérabilité POODLE (CVE‑2014‑3566) – wpływająca na starsze wersje SSL v3.
- Różne błędy w implementacji RSA i ECC, naprawiane w kolejnych wydaniach (np. 1.1.1 w 2018 roku).
W odpowiedzi na te incydenty społeczność OpenSSL wprowadziła program OpenSSL Improvement Project, zwiększający transparentność rozwoju i testowanie kodu.
Alternatywy
Do najpopularniejszych alternatyw dla OpenSSL należą:
- GnuTLS – biblioteka pod licencją LGPL, używana m.in. w GNOME.
- LibreSSL – fork OpenSSL powstały po incydencie Heartbleed, skupiający się na czystości kodu.
- BoringSSL – wewnętrzna biblioteka Google, wykorzystywana w Chrome i Androidzie.