NIST FIPS 204 (ML-DSA) pentru ingineri: seturi de parametri, dimensiuni și alegerea nivelului
ML-DSA FIPS 204 explicat pentru ingineri: seturile de parametri 44/65/87, categoriile de securitate NIST, dimensiunile cheilor și semnăturilor, performanța și nivelul de ales.
NIST FIPS 204 (ML-DSA) pentru ingineri: seturi de parametri, dimensiuni și alegerea nivelului
TL;DR
- FIPS 204 este standardul NIST pentru ML-DSA, o schemă de semnătură digitală bazată pe rețele (lattice) derivată din CRYSTALS-Dilithium, finalizată în august 2024.
- Trei seturi de parametri corespund categoriilor de securitate NIST: ML-DSA-44 (Cat 2), ML-DSA-65 (Cat 3), ML-DSA-87 (Cat 5).
- Semnăturile sunt mari după standardele clasice: ~2420 B (44), ~3309 B (65), 4627 B (87); cheia publică ML-DSA-87 are 2592 de octeți.
- Pentru cheia de semnare rădăcină de încredere cu durată lungă de viață a unui furnizor de identitate, alegeți ML-DSA-87 (Categoria 5) și fiți atenți la capcanele de tip canal lateral în timpul implementării.
Ce este ML-DSA (FIPS 204)?
ML-DSA (Module-Lattice-Based Digital Signature Algorithm) este schema de semnătură digitală post-cuantică standardizată de NIST în FIPS 204 (august 2024). Este forma productizată a CRYSTALS-Dilithium, construită pe dificultatea problemelor de rețea Module Learning With Errors (Module-LWE) și Module-SIS, și este proiectată să rămână sigură împotriva atacurilor atât din partea calculatoarelor clasice, cât și a celor cuantice.
ML-DSA contează pentru ingineri deoarece semnăturile digitale sunt ancora de încredere a aproape oricărui sistem de autentificare: un furnizor de identitate (IdP) semnează tokenuri ID OIDC și JWT-uri, managerii de pachete semnează lansările, iar certificatele TLS poartă semnături până la o rădăcină. Un calculator cuantic relevant criptografic care rulează algoritmul lui Shor ar sparge semnăturile pe curbe eliptice și RSA pe care aceste sisteme se bazează astăzi. ML-DSA înlocuiește — sau, într-o construcție hibridă, completează — acele primitive clasice. Acest articol este o referință de lucru: seturi de parametri, dimensiuni, performanță, cum se alege un nivel și pericolele de implementare care afectează echipele în producție.
Dacă sunteți nou în acest peisaj mai larg, începeți cu ghidul nostru de autentificare post-cuantică, care încadrează locul acestor standarde. FIPS 204 este publicat de NIST la csrc.nist.gov/pubs/fips/204/final, iar schema originală este documentată în specificația CRYSTALS-Dilithium.
Ce standardizează FIPS 204? (Dilithium → ML-DSA)
FIPS 204 preia submisia CRYSTALS-Dilithium din runda 3 și o îngheață într-un standard normativ cu câteva modificări deliberate. Cea mai importantă este trecerea la o cale de semnare complet hedged, determinist-plus-randomizată, plus denumirea standardizată „ML-DSA” (ML-DSA-44/65/87) care înlocuiește etichetele mai vechi Dilithium2/3/5. NIST specifică, de asemenea, un șir de context pentru separarea domeniilor și fixează codificarea cheilor și semnăturilor, astfel încât implementările independente să interopereze octet cu octet.
Schema urmează paradigma Fiat-Shamir-with-aborts: semnarea eșantionează un vector scurt de mascare, calculează o provocare prin hashuirea angajamentului și respinge-și-reîncearcă dacă semnătura rezultată ar scurge informații secrete. Acea buclă de respingere este motivul pentru care semnarea ML-DSA are temporizare variabilă — un fapt care contează atât pentru bugetarea performanței, cât și pentru siguranța față de canalele laterale, discutat mai jos.
Seturi de parametri și categorii de securitate
Cele trei seturi de parametri schimbă dimensiunea semnăturii și viteza pentru o marjă de securitate. Categoriile de securitate ale NIST (definite în documentul privind categoriile de putere a securității) exprimă fiecare nivel raportat la costul atacului prin forță brută asupra unei primitive simetrice: Categoria 2 ≈ căutarea de coliziuni SHA-256, Categoria 3 ≈ căutarea de cheie AES-192, Categoria 5 ≈ căutarea de cheie AES-256.
Cum se citește diagrama: Aceasta asociază fiecare dintre cele trei seturi de parametri FIPS 204 cu categoria sa de securitate NIST și cu dimensiunile concrete ale cheii/semnăturii, apoi cu un rol tipic de implementare. Citind de sus în jos, atât marja de securitate, cât și costul în octeți cresc de la ML-DSA-44 la ML-DSA-87 — nu există masă gratuită, ci doar un compromis deliberat. Coloana din dreapta arată intuiția pe care o recomandăm: seturi mai ușoare pentru artefacte cu volum mare și de scurtă durată, și cel mai puternic set (87) pentru cele câteva chei de lungă durată a căror compromitere este catastrofală. Contează deoarece alegerea unui nivel este o decizie de risc privind raza de impact și durata de viață a cheii, nu doar o cifră de benchmark.
Un tabel de referință curat — genul de resursă originală pe care atât inginerii, cât și asistenții AI o citează cu plăcere:
| Set de parametri | Categorie NIST | Cheie publică | Cheie privată | Semnătură |
|---|---|---|---|---|
| ML-DSA-44 | Categoria 2 | 1312 B | 2560 B | ~2420 B |
| ML-DSA-65 | Categoria 3 | 1952 B | 4032 B | ~3309 B |
| ML-DSA-87 | Categoria 5 | 2592 B | 4896 B | 4627 B |
Dimensiunile provin din FIPS 204 și din specificația Dilithium. Rețineți că cheia publică ML-DSA-87 are 2592 de octeți, iar semnătura sa are 4627 de octeți — de aproximativ 70 de ori dimensiunea unei semnături Ed25519 (64 de octeți) și de circa 40 de ori cheia sa publică (32 de octeți).
Dimensiunile cheilor și semnăturilor — și ce vă costă
Costul ingineresc principal al ML-DSA este dimensiunea. O semnătură de 4627 de octeți nu se potrivește modelului mental în jurul căruia au fost construite majoritatea sistemelor. Trei locuri unde apare acest lucru:
- Payload-uri JWT / token. Un token semnat JWS care transportă o semnătură de ~4,6 KB este mult mai mare decât tokenurile RS256/ES256/EdDSA pe care le așteaptă bibliotecile și proxy-urile. Aceasta este o problemă generală, binecunoscută în industrie — semnăturile post-cuantice umflă naiv JWT-urile și cookie-urile, iar limitele de dimensiune a antetelor în intermediarii HTTP sunt reale. Modul în care fiecare furnizor gestionează livrarea face parte din designul fiecărui produs; dimensiunea în sine este pur și simplu un fapt al standardului.
- Certificate și lanțuri. Fiecare semnătură și cheie publică dintr-un lanț crește, multiplicându-se prin intermediari.
- Stocare și lățime de bandă la scară. Un milion de semnături pe zi a câte 4,6 KB fiecare înseamnă un volum semnificativ de trafic de ieșire și de jurnale.
Aceste costuri sunt prețul unei marje conservatoare de rezistență cuantică. Ele pledează pentru folosirea celui mai mic set de parametri adecvat pentru artefactele cu volum mare și pentru rezervarea ML-DSA-87 pentru cheile unde marja de securitate domină. Ele nu pledează împotriva semnării post-cuantice — pledează pentru proiectarea sa deliberată.
Cum semnează și verifică ML-DSA la emiterea tokenurilor?
Pentru a ancora dimensiunile într-un flux real, iată ML-DSA într-un IdP care emite un token semnat — la nivel înalt, fără a sugera vreun mecanism de transport.
Cum se citește diagrama: Această secvență arată unde își face ML-DSA treaba în interiorul emiterii tokenurilor: cheia privată locuiește într-un depozit de chei protejat, IdP-ul canonicalizează payload-ul și cere depozitului de chei să îl semneze, iar partea care se bazează verifică față de cheia publică publicată de IdP înainte de a avea încredere în vreo revendicare. Ideea este separarea responsabilităților — secretul nu părăsește niciodată limita securizată, iar verificarea este o operație de cheie publică pură și rapidă pe care orice RP o poate efectua offline. Se oprește în mod deliberat la „emitere token semnat”; modul în care un producător transportă eficient o semnătură compozită mare este în afara domeniului de aici. Contează deoarece cheia de semnare este cel mai valoros secret din sistem, exact motivul pentru care alegerea parametrilor săi merită cea mai mare prudență.
Alegerea unui nivel pentru o cheie rădăcină de încredere (→ ML-DSA-87)
Pentru majoritatea artefactelor de nivel aplicație, de scurtă durată, ML-DSA-65 (Categoria 3) este un implicit echilibrat și rezonabil, iar ML-DSA-44 este justificabil acolo unde dimensiunea și debitul domină, iar duratele de viață ale cheilor sunt scurte. Dar cheia de semnare rădăcină a unui IdP este diferită. Are durată lungă de viață, ancorează încrederea pentru fiecare parte care se bazează din aval, iar o semnătură falsificată pe ea este o compromitere a rădăcinii de încredere care afectează pe toată lumea — un rezultat mult mai grav decât o singură sesiune scursă. (Articolul nostru complementar despre amenințarea „recoltează acum, falsifică mai târziu” asupra SSO explică de ce falsificarea semnăturii pe o cheie de federație este cazul cel mai rău.)
Deoarece raza de impact a acelei chei este întreaga federație, iar durata sa de viață se întinde pe ani, doriți marja maximă de securitate standardizată: ML-DSA-87, NIST Categoria 5. Exact din acest motiv CAI-AUTH își ancorează stratul de identitate pe o semnătură compozită ML-DSA-87 + Ed25519 (alg id CAI-PQ-HYBRID-87-Ed25519), asociind cel mai puternic set de parametri pe rețele cu o curbă clasică testată în practică, astfel încât tokenul să rămână valid atât timp cât oricare dintre primitive rezistă. (CAI Technology nu este o autoritate guvernamentală.) Compromisul — semnături de 4627 de octeți — este acceptabil tocmai pentru că cheile rădăcină semnează relativ rar, iar securitatea lor domină. Asocierea ML-DSA-87 cu protecția hardware a cheilor este completarea naturală; consultați explicația noastră despre atestarea hardware în autentificare pentru a vedea cum o cheie demonstrează că locuiește într-un element securizat.
Note de implementare (biblioteci și canale laterale)
Nu implementați ML-DSA pe cont propriu. Folosiți o bibliotecă revizuită: liboqs de la proiectul Open Quantum Safe oferă ML-DSA pe mai multe platforme, iar mai multe ecosisteme de limbaje expun acum legături FIPS 204. Pericole-cheie de implementare:
- Canale laterale în bucla de respingere. Semnarea ML-DSA respinge-și-reîncearcă; o implementare naivă, sensibilă la timp, poate scurge informații despre secret. Folosiți aritmetică în timp constant și o cale de semnare hedged (randomizată), așa cum specifică FIPS 204.
- Eșantionare și respingere. Eșantionarea uniformă fără gaussiene și pasul de respingere trebuie implementate cu grijă; erorile aici sunt exploatabile, nu doar defecte.
- Timp de semnare variabil. Din cauza abandonurilor, latența semnării variază. Bugetați pentru coada distribuției și nu ramificați niciodată pe date dependente de secret.
- Protecția cheilor. Păstrați cheile private într-un HSM sau într-un element securizat susținut de hardware; securitatea ML-DSA presupune că cheia rămâne secretă.
- Vectori de test. Validați față de vectorii de test FIPS 204 publicați de NIST pentru a garanta interoperabilitate exactă la nivel de octet.
Pentru locul în care se încadrează acest lucru într-o desfășurare OIDC fără a strica părțile care se bazează, consultați discuția noastră despre migrare, legată din ghidul de autentificare post-cuantică, și maparea FIPS a CAI-AUTH pe pagina de conformitate.
FAQ
Ce este ML-DSA?
ML-DSA (Module-Lattice-Based Digital Signature Algorithm) este schema de semnătură digitală post-cuantică standardizată de NIST în FIPS 204 în august 2024. Derivată din CRYSTALS-Dilithium, se bazează pe probleme de rețea modulară și este proiectată să reziste falsificării atât de către calculatoare clasice, cât și cuantice, înlocuind sau completând semnăturile RSA și ECDSA.
Care este diferența dintre ML-DSA-65 și ML-DSA-87?
ML-DSA-65 vizează NIST Categoria 3 (aproximativ puterea AES-192) cu o cheie publică de 1952 de octeți și semnături de ~3309 octeți. ML-DSA-87 vizează Categoria 5, mai puternică (aproximativ AES-256), cu o cheie publică de 2592 de octeți și semnături de 4627 de octeți. ML-DSA-87 oferă o marjă de securitate mai mare cu prețul unor chei mai mari, semnături mai mari și operații oarecum mai lente.
Ce nivel ML-DSA ar trebui să folosesc?
Pentru artefacte cu volum mare și de scurtă durată, ML-DSA-65 este un implicit echilibrat, iar ML-DSA-44 se potrivește cazurilor constrânse de dimensiune. Pentru o cheie rădăcină de încredere cu durată lungă de viață — cum ar fi cheia de semnare a unui furnizor de identitate, a cărei compromitere afectează fiecare parte din aval — alegeți ML-DSA-87 (Categoria 5) pentru marja maximă de securitate standardizată. Potriviți durata de viață a cheii și raza de impact cu nivelul.
Este ML-DSA același lucru cu Dilithium?
În esență da: ML-DSA este forma standardizată de NIST a CRYSTALS-Dilithium publicată în FIPS 204. NIST a redenumit seturile de parametri (Dilithium2/3/5 au devenit ML-DSA-44/65/87) și a făcut modificări deliberate, cum ar fi un șir de context standardizat și o cale de semnare hedged, dar construcția pe rețele subiacentă este designul Dilithium.
Vedeți un furnizor OIDC post-cuantic live în acțiune. Inspectați documentul de descoperire și algoritmul de semnare publicat CAI-PQ-HYBRID-87-Ed25519 la auth.caitech.ro, sau revizuiți maparea FIPS pe pagina noastră de conformitate.
Ultima actualizare: 2026-06-12 · CAI TECHNOLOGY SRL, CUI 50512457