Rustls 0.23.44 pirmdienas rītā ieslēdza ML-DSA sertifikātus pēc noklusējuma. Rust valodā rakstītā TLS bibliotēka tagad bez papildu iestatījumiem pieņem sertifikātus, kuru paraksti balstās uz režģu matemātiku. Iepriekš tos vajadzēja atļaut ar atsevišķu karodziņu.
Izmaiņa attiecas uz aws-lc-rs kriptogrāfijas nodrošinātāju, kas Rustls ir noklusējums. Kods ienāca ar apvienošanas pieprasījumu #3249: 26 faili, 607 pievienotas rindas un 184 dzēstas. Laidiens publicēts 7. septembrī plkst. 9.27 pēc UTC, piecpadsmit minūtes pēc koda apvienošanas.
Paraksts aug no 64 līdz 2420 baitiem
ML-DSA jeb Module-Lattice-Based Digital Signature Algorithm ir NIST standarts FIPS 204, apstiprināts 2024. gada augustā. Tas izaudzis no CRYSTALS-Dilithium un aizstāj RSA un ECDSA parakstus tur, kur uzbrukums ar kvantu datoru ir jāņem vērā.
Cena ir izmērs. Vieglākajam parametru kopumam ML-DSA-44 publiskā atslēga ir 1312 baiti un paraksts 2420 baiti. ECDSA uz P-256 līknes paraksts neapstrādātā formā ir 64 baiti, publiskā atslēga saspiestā formā 33 baiti. Sertifikātu ķēde ar trim ML-DSA parakstiem TLS rokasspiedienā ievieto vairākus kilobaitus tur, kur iepriekš bija daži simti baitu.
Standarts nosaka trīs parametru kopumus. ML-DSA-44 atbilst AES-128 līmenim, ML-DSA-87 ir paredzēts augstākajām prasībām, tostarp nacionālās drošības sistēmām. Atslēgu ģenerēšana, parakstīšana un pārbaude ML-DSA ir ātra, tāpēc procesora laiks parasti nav tā vieta, kur pāreja sāp.
Izmaiņa neskar visu Rustls vienādi. Noklusējums mainās aws-lc-rs nodrošinātājam, kas Rustls ir galvenais kriptogrāfijas dzinis. Otrs nodrošinātājs, kas balstās uz ring bibliotēku, ML-DSA nesaņem. Projekti, kas apzināti izvēlējušies ring, pēc atjaunināšanas darbojas tāpat kā iepriekš.
Publiskajā tīmeklī tas vēl neder
Rustls izlaiduma piezīmes to pasaka tieši:
ML-DSA sertifikāti publiskajā tīmekļa PKI nav atbalstīti, taču tos var lietot privātās sertifikātu hierarhijās.
Praksē tā ir iekšējā mTLS starp servisiem, ierīču identitāte un uzņēmuma iekšējais CA, kur abas puses pārvalda viens īpašnieks. Publiskās sertifikācijas iestādes ML-DSA sertifikātus vēl neizsniedz, tāpēc parastai HTTPS vietnei šī izmaiņa neko nemaina.
Privātā hierarhija ir arī vieta, kur izmērīt pāreju bez riska. Iekšējā CA gadījumā sertifikātu ķēdes garumu un atjaunošanas ritmu nosaka pats uzņēmums, tāpēc pieaugušos parakstu izmērus var pārbaudīt uz sava trafika, pirms tie parādās publiskajā tīmeklī. Ierīcēm ar lēnu savienojumu vai mazu atmiņu tas ir izdevīgākais brīdis to pamanīt.
Atslēgu žurnālu četrus gadus varēja nolasīt jebkurš
Otrā izmaiņa laidienā ir mazāka pēc rindu skaita un konkrētāka pēc sekām. Rustls iebūvētais KeyLogFile raksta TLS sesiju noslēpumus failā, uz kuru norāda vides mainīgais SSLKEYLOGFILE. Tas ir atkļūdošanas rīks: ar šo failu Wireshark var atšifrēt savākto trafiku.
Failu Rustls veidoja ar noklusējuma režīmu 0666, ko pēc tam samazina umask. Pie izplatītā umask 0022 rezultāts ir 0644, tas ir, saturu var nolasīt jebkurš sistēmas lietotājs. Failā glabājas sesiju atslēgas.
Kļūdas ziņojums #910 par to iesniegts 2022. gada 7. janvārī. Aizvērts tas ir 2026. gada 13. augustā, četrus gadus un septiņus mēnešus vēlāk. Labojums ir divi faili un 45 pievienotas rindas: uz Unix failu tagad atver ar OpenOptionsExt::mode(0o600). Vienības tests pārbauda, ka jaunizveidota faila režīms ir 0600. Bez labojuma tests krīt ar 0644.
Viena robeža paliek. Režīms tiek uzlikts tikai faila izveides brīdī, tāpēc jau esošs SSLKEYLOGFILE patur savas vecās tiesības. Vecos atkļūdošanas failus nāksies pārbaudīt pašam.
Atslēgu apmaiņa pēckvantu režīmā strādā jau no 2025. gada
ML-DSA aizver pārejas otro pusi. Pirmā puse ir atslēgu apmaiņa. Tā Rustls noklusējumos nonāca pakāpeniski.
- 0.23.22 (2025. gada 30. janvāris) pievienoja X25519MLKEM768 noklusējuma sarakstā, taču ar zemu prioritāti sarunās.
- 0.23.27 (2025. gada 5. maijs) ielika
prefer-post-quantumstarp noklusējuma iespējām. Pēckvantu apmaiņa kļuva par pirmo izvēli. - 0.23.37 šā gada 24. februārī pievienoja ML-KEM-1024.
- Atsevišķā
rustls-post-quantumpakotne ML-DSA parakstu pārbaudi kā nestabilu iespēju piedāvāja jau no 2025. gada jūlija.
Izstrādātāji arī izmērīja, ko hibrīdā apmaiņa izmaksā. Kopīga X25519 sagatavošana viņu stenda mērījumos deva 4,3 % ieguvumu sesiju atjaunošanai, 2,8 % pilnam RSA rokasspiedienam un 2,6 % ECDSA rokasspiedienam. Mērījumi neietver tīklu. To autori raksta, ka reālais rezultāts būs sliktāks par stenda skaitļiem.
Trešais labojums skar ECH
Ja serveris noraida ECH jeb šifrētu klienta sveicienu, klientam servera sertifikāts jāpārbauda pret citu vārdu. Rustls to darīja nepareizi. Labojums #3236 maina piecus failus un pa ceļam pārraksta ECH testus: 425 pievienotas rindas pret 313 dzēstām. Problēma tika pieteikta un aizvērta vienā dienā, 31. augustā.
Iepriekšējais laidiens 0.23.43 iznāca 29. jūlijā, tātad starp abiem ir 40 dienas. Tas bija tīri kļūdu laidiens: Rfc5077Ticketer atkļūdošanas režīmā avarēja, dekodējot noteikta garuma biļeti. Tas notika pirms autentifikācijas. Versija 0.23.42 pirms tā ieviesa RFC 9149 biļešu pieprasījumus ar diviem jauniem iestatījumiem, kuru noklusējumi saglabā veco uzvedību.
Crates.io skaitītājs Rustls rāda 891 miljonu lejupielāžu kopā un 192,9 miljonus pēdējās 90 dienās. Nākamā lielā versija repozitorijā jau nes numuru 0.24.0-dev.1.
Avoti
- Rustls 0.23.44 izlaiduma piezīmes (GitHub)
- Rustls 0.23.44 Released With ML-DSA Certificates Enabled By Default (Phoronix)
- util: create SSLKEYLOGFILE with owner-only permissions (PR #3210)
- SSLKEYLOGFILE should be created with restrictive file permissions (Issue #910)
- FIPS 204: Module-Lattice-Based Digital Signature Standard (NIST)
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.