CAI Technology
Menu ☰
cai-auth · · 9 min citire

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.

CAI Technology
Ingineri analizând seturi de parametri pentru semnături post-cuantice pe o tablă albă într-un birou luminos, comparând dimensiunile cheilor și semnăturilor ML-DSA.

NIST FIPS 204 (ML-DSA) pentru ingineri: seturi de parametri, dimensiuni și alegerea nivelului

TL;DR

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.

flowchart TD A["FIPS 204 — seturi de parametri ML-DSA"] --> B["ML-DSA-44"] A --> C["ML-DSA-65"] A --> D["ML-DSA-87"] B --> B1["NIST Categoria 2 (~clasa AES-128 până la SHA-256)"] C --> C1["NIST Categoria 3 (~AES-192)"] D --> D1["NIST Categoria 5 (~AES-256)"] B1 --> B2["Cheie publică 1312 B / Semnătură ~2420 B"] C1 --> C2["Cheie publică 1952 B / Semnătură ~3309 B"] D1 --> D2["Cheie publică 2592 B / Semnătură 4627 B"] B2 --> E["Utilizare: tokenuri generale, chei de scurtă durată"] C2 --> F["Utilizare: implicit echilibrat"] D2 --> G["Utilizare: rădăcină de încredere, cheie de semnare IdP de lungă durată"]

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 parametriCategorie NISTCheie publicăCheie privatăSemnătură
ML-DSA-44Categoria 21312 B2560 B~2420 B
ML-DSA-65Categoria 31952 B4032 B~3309 B
ML-DSA-87Categoria 52592 B4896 B4627 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:

  1. 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.
  2. Certificate și lanțuri. Fiecare semnătură și cheie publică dintr-un lanț crește, multiplicându-se prin intermediari.
  3. 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.

sequenceDiagram participant K as "Depozit de chei (HSM / element securizat)" participant IdP as "Furnizor de identitate" participant V as "Verificator parte care se bazează" K->>IdP: "Provizionare cheie privată ML-DSA-87" Note over IdP: "Utilizatorul se autentifică; revendicările sunt asamblate" IdP->>IdP: "Canonicalizare antet token + revendicări" IdP->>K: "Solicitare semnătură ML-DSA peste payload" K-->>IdP: "Returnare semnătură (4627 octeți)" IdP->>V: "Emitere token semnat + anunțare alg și cheie publică" V->>V: "Verificare semnătură ML-DSA față de cheia publică publicată" Note over V: "Acceptă revendicările doar dacă semnătura se verifică"

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:

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

Începem cu o conversație de 30 de minute.

Audit AI-readiness gratuit pentru companii peste 50 angajați. Răspundem în 24 de ore.