encyklopedia.space

GnuTLS

GnuTLS (ang. GNU Transport Layer Security Library) jest wolnym oprogramowaniem implementującym protokoły TLS i SSL. Biblioteka umożliwia szyfrowane połączenia w aplikacjach internetowych, pocztowych oraz w systemach komunikacji sieciowej. Projekt jest częścią projektu GNU i jest rozpowszechniany na licencji LGPL (Lesser General Public License).

Historia

Rozwój GnuTLS rozpoczął się w 2000 roku jako odpowiedź na rosnące zapotrzebowanie na otwartą i wolną alternatywę dla OpenSSL, które w tamtym okresie było objęte licencją OpenSSL License o niejasnych warunkach kompatybilności z GPL. Pierwsza stabilna wersja 1.0.0 została wydana w 2000 roku. Od tego czasu biblioteka jest systematycznie rozwijana, a istotne kamienie milowe obejmują wprowadzenie wsparcia dla protokołu DTLS (2004), obsługi krzywych eliptycznych (2009) oraz pełnego wsparcia dla TLS 1.3 (2018).

Podstawowe funkcje

  • Implementacja protokołów TLS 1.0, TLS 1.1, TLS 1.2 i TLS 1.3.
  • Wsparcie dla protokołu DTLS (TLS ponad UDP).
  • Obsługa szyfrów symetrycznych (AES, Camellia, ChaCha20) oraz asymetrycznych (RSA, DSA, ECDSA).
  • Wbudowane mechanizmy weryfikacji certyfikatów X.509 oraz CRL.
  • Możliwość pracy w trybie client i server w aplikacjach napisanych w C oraz językach posiadających bindingi (Python, Perl, Java).
  • Obsługa PKCS#11 i TPM do zarządzania kluczami w sprzętowych modułach bezpieczeństwa.

Architektura

GnuTLS składa się z kilku warstw:

  1. Warstwa niskopoziomowa – bezpośrednie wywołania kryptograficzne oparte na bibliotece GnuPG oraz libtasn1 do obsługi ASN.1.
  2. Warstwa protokołowa – implementacja logiki TLS/DTLS, zarządzanie sesjami, renegocjacjami i rozszerzeniami.
  3. Warstwa API – interfejs programistyczny udostępniany aplikacjom w postaci funkcji gnutls_*(), które ukrywają szczegóły protokołu.

Zastosowania

GnuTLS jest wykorzystywany w szerokim spektrum projektów:

  • Serwery pocztowe: Postfix, Dovecot.
  • Klienci FTP/HTTP: cURL, Wget.
  • Systemy komunikacji: OpenVPN (w trybie legacy), Mumble.
  • Środowiska desktopowe: GDM (GNOME Display Manager) do zabezpieczonych połączeń z X‑serwerem.
  • Systemy wbudowane: dystrybucje Linux dla urządzeń IoT.

Porównanie z innymi bibliotekami

Najczęściej porównuje się GnuTLS z OpenSSL oraz mbedTLS. Główne różnice obejmują:

Cechy GnuTLS OpenSSL mbedTLS
Licencja LGPL Apache 2.0 / OpenSSL License Apache 2.0
Wsparcie protokołów TLS 1.0‑1.3, DTLS 1.0‑1.2 TLS 1.0‑1.3, DTLS 1.0‑1.2 TLS 1.0‑1.3, DTLS 1.2
Rozmiar kodu Średni (~1 MB) Duży (kilka MB) Mały (kilkaset kB)
Obsługa języków C, bindingi do Pythona, Perla, Javy, itd. C, bindingi do wielu języków C, bindingi ograniczone

Rozwój i wsparcie

Projekt jest prowadzony przez społeczność wolnego oprogramowania oraz kilka firm specjalizujących się w bezpieczeństwie. Główne repozytorium znajduje się w Git i jest dostępne pod adresem git://git.gnutls.org/gnutls.git. Wydania stabilne pojawiają się co 6‑12 miesięcy, a pomiędzy nimi dostępne są wersje beta i rc.

Licencja

GnuTLS jest dystrybuowany na warunkach LGPL‑2.1+, co umożliwia jego użycie zarówno w projektach otwarto‑źródłowych, jak i komercyjnych, pod warunkiem zachowania odpowiednich informacji o licencji.

Zobacz też