OpenSSL 4.1.0 iznāca 23. oktobrī ar DTLS 1.3 protokola atbalstu pēc RFC 9147 specifikācijas. Laidiens paātrina post-kvantu algoritmus ML-DSA un ML-KEM ar AVX-512 instrukcijām, ievieš GREASE mehānismu (RFC 8701) un pievieno IKEv2 atslēgu atvasināšanas funkciju. Projekts aizkavēja galīgo tagu par vairākām dienām, jo beta būvējumos atklāja divas drošības problēmas jaunajā DTLS kodā (kļūdas #33172 un #33173). Labojumi iekļauti stabilajā laidienā, taču četras citas zināmas DTLS kļūdas paliek atvērtas.
OpenSSL ir visizplatītākā TLS bibliotēka. To lieto Nginx, Apache httpd, Node.js, Python, PHP un simtiem citu projektu. Jauns protokola atbalsts vai veiktspējas uzlabojums šajā bibliotēkā tieši ietekmē miljonus serveru.
DTLS 1.3 samazina latentumu UDP savienojumos
DTLS nodrošina TLS aizsardzību UDP datagrammām. To lieto WebRTC videozvanos, VPN tuneļos, IoT sensoru tīklos un spēļu serveros. Iepriekšējais DTLS 1.2 balstījās uz TLS 1.2, kas publicēts 2008. gadā. Jaunā versija pārņem TLS 1.3 uzlabojumus: saīsinātu rokasspiedienu ar vienu turp-atpakaļ ceļu, nulles turp-atpakaļ atsākšanu (0-RTT) un stingrāku šifrēšanas komplektu atlasi, kas izslēdz vecos CBC režīmus.
Praktiski tas nozīmē mazāku latentumu. TLS 1.2 rokasspiediena laikā klients un serveris apmainās ar divām ziņojumu kārtām pirms var sūtīt datus. TLS 1.3 to samazina līdz vienai kārtai. 0-RTT režīmā klients sūta šifrētus datus jau pirmajā paketē. UDP lietojumiem kā reāllaika audio vai spēļu serveriem šī starpība ir jūtama.
OpenSSL komanda pārbūvēja SSL klausītāja API, lai DTLS 1.3 integrētos esošajā infrastruktūrā. Izstrādātāji var regulēt gaidošo savienojumu skaitu un datagrammu izmērus caur jauniem konfigurācijas parametriem. Sīkāk par integrāciju rakstīts laidiena piezīmēs, kas ietver arī jaunu ossl-guide-dtlsv13(7) manuāļa lapu.
Protokolam pagaidām trūkst savienojumu identifikatoru (Connection ID) atbalsta. Četras zināmas kļūdas paliek atvērtas. Kļūda #32878 izraisa atkārtotas pārsūtīšanas bufera zudumu pēc KeyUpdate operācijas. Kļūda #33242 liek serverim pārtraukt rokasspiedienu ar unexpected_message brīdinājumu pēc pakešu zuduma. Mobilajos tīklos šīs kļūdas var radīt savienojumu pārtraukumus.
Post-kvantu algoritmi kļūst ātrāki uz trim platformām
NIST 2024. gadā standartizēja ML-DSA (ciparparakstus, agrāk Dilithium) un ML-KEM (atslēgu iekapsulēšanu, agrāk Kyber). Abi algoritmi balstās uz režģu matemātiku un ir izturīgi pret kvantu datoru uzbrukumiem. Tie prasa vairāk skaitļošanas resursu nekā klasiskie RSA vai ECDSA.
Pāreja uz post-kvantu kriptogrāfiju jau notiek. Google Chrome kopš 2024. gada lieto ML-KEM hibrīdu atslēgu apmaiņu visos TLS savienojumos. Serveru pusē ātrāki post-kvantu algoritmi samazina papildu CPU slodzi, kas rodas no lielākām atslēgām un sarežģītākiem skaitļojumiem.
OpenSSL 4.1 optimizē skaitļu teorētiskās transformācijas (NTT) abiem algoritmiem uz trim serveru platformām. x86-64 procesoros ML-DSA parakstu ģenerēšana paātrināta ar AVX-512 optimizētu SHAKE x4 implementāciju. PPC64LE (IBM POWER) saņem optimizētas NTT operācijas gan ML-DSA, gan ML-KEM algoritmiem. s390x (IBM Z) arhitektūra iegūst ML-DSA paātrinājumus. Trīs lielākās serveru platformas tagad izpilda post-kvantu operācijas ar procesora specifiskām instrukcijām.
AES-CBC atšifrēšana x86-64 procesoros tagad izmanto AVX-512 un VAES (vektorizētas AES) instrukcijas. AES-CBC joprojām parādās vecākos TLS konfigurāciju profilos. Serveriem ar lielu TLS sesiju skaitu arī neliels vienības paātrinājums summējas ievērojamā CPU laika ietaupījumā.
GREASE pret protokolu sakaļķošanos
GREASE (Generate Random Extensions And Sustain Extensibility) ir mehānisms pēc RFC 8701. Tas TLS rokasspiediena laikā sūta neeksistējošas paplašinājumu vērtības. Ja pretējā puse atmet savienojumu šādu vērtību dēļ, tā nepareizi implementē protokolu.
Starpniekserveri un ugunsmūri mēdz noraidīt jaunus TLS paplašinājumus, jo to programmatūra gaida tikai iepriekš zināmas vērtības. GREASE šādas iekārtas atklāj pirms problēma kļūst plaša.
Google Chrome šo mehānismu lieto kopš 2016. gada. Firefox to pievienoja 2019. gadā. OpenSSL 4.1 GREASE padara pieejamu serveru programmatūrai, kas balstās uz šo bibliotēku. Nginx, Apache httpd un HAProxy varēs aktivizēt GREASE pēc atjaunināšanas uz OpenSSL 4.1.
IKEv2 KDF un platformu tīrīšana
Laidienā pievienota IKEv2 atslēgu atvasināšanas funkcija (KDF). IKEv2 ir IPsec rokasspiediena protokols, ko plaši lieto VPN risinājumos. Līdz šim izstrādātājiem bija jāimplementē šī KDF ārpus OpenSSL, kas radīja koda dublēšanos projektos kā strongSwan vai LibreSwan.
No platformu atbalsta saraksta svītroti divi būvēšanas mērķi: VC-WIN64I (Windows uz Itanium) un VC-CE (Windows CE). Intel pārtrauca Itanium procesoru ražošanu 2021. gadā. Windows CE pēdējo reizi atjaunināja 2013. gadā. Abu platformu noņemšana samazina uzturēšanas slogu komandai, kam jāatbalsta arvien lielāks kriptogrāfijas algoritmu skaits.
Dzēstas arī atsevišķās no-ecdsa un no-ecdh konfigurācijas opcijas. Izstrādātājiem, kas vēlas atspējot eliptisko līkņu atbalstu, tagad jālieto vienotā no-ec opcija. Vēl viens papildinājums: sākotnējs atbalsts Elbrus2000 (e2k) arhitektūrai un tsget utilītas pāreja uz Net::Curl::Easy moduli.
Kā pāriet uz 4.1
Pāreja ir vienkārša projektiem, kas jau lieto OpenSSL 4.0 zaru. ABI saglabā atpakaļsaderību, pārkompilēšana nav nepieciešama. Izņēmums: projekti ar no-ecdsa vai no-ecdh opcijām pēc atjaunināšanas neizies cauri konfigurācijas solim. Tiem pirms kompilēšanas jānomaina opcija uz no-ec.
DTLS 1.3 integrācijai jārēķinās ar četrām atvērtām kļūdām. Producēšanas vidēs ar UDP transportu vērts gaidīt 4.1.1 labojumu laidienu vai testēt savienojuma stabilitāti ar mākslīgi izraisītu pakešu zudumu pirms izvēršanas.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.