Podpisni postopek

ML-DSA-87 matematično pojasnjen

Kako ML-DSA-87 (FIPS 204) podpiše oceno na McGesund — od Module-LWE prek zavračalnega vzorčenja do preverjanja v brskalniku.

Stanje: 2026-09-07

1. Za kaj gre

Ko nekdo na McGesund odda oceno, se v ozadju zgodi več, kot bi besedilo dalo slutiti. Ocena je ob oddaji digitalno podpisana. Ta podpis lahko vsak obiskovalec pozneje preračuna v svojem brskalniku — ne da bi nam zaupal in ne da bi nas vprašal.

Za stranke od paketa Pro naprej se to med drugim zgodi z ML-DSA-87. Ta prispevek pojasnjuje, kaj se pri tem dogaja matematično.

Pomembno takoj na začetku:

ML-DSA ni šifriranje. Besedilo ocene ostane javno berljivo — to je vendar smisel ocene. ML-DSA ne dokazuje tajnosti, temveč izvor in nespremenjenost.

ML-DSA je bil razvit iz CRYSTALS-Dilithium in je standardiziran kot FIPS 204. Število 87 označuje parametrsko stopnjo. Obstajajo tri:

  • ML-DSA-44
  • ML-DSA-65
  • ML-DSA-87

ML-DSA-87 je najvišja in leži v varnostni kategoriji NIST 5.


2. Kaj natančno se podpiše?

V podpis ne potuje besedilo ocene samo, temveč kompakten podatkovni objekt, ki besedilo enolično pribije. Pri McGesund je v jedru videti tako:

{
  "v":   1,
  "typ": "rev-comment",
  "f":   "<ID podjetja>",
  "c":   "<ID ocene>",
  "h":   "<SHA-256 besedila ocene>",
  "rh":  "<SHA-256 celotnega zapisa oddaje>",
  "rv":  1,
  "qh":  "<SHA-256 ovojnice QR, le pri ocenah prek QR>",
  "iat": 1757203200
}

Ta objekt je naše sporočilo mm. Skupaj veže šest izjav:

  1. H kateremu podjetju ocena spada (f)
  2. Katera ocena je mišljena (c)
  3. Katero besedilo je bilo za tem — kot zgoščena vrednost (h)
  4. Kateri zapis v celoti je bil oddan (rh): besedilo, srca, geo status in navedbe o povodu, kanonično serializirani in zgoščeni — v shemski različici rv
  5. Iz katere kode QR ocena izvira (qh); brez QR to polje odpade
  6. Kdaj je bil podpis izdan (iat)

Če nekdo pozneje spremeni en sam znak v besedilu ocene, se h ne ujema več — in rh prav tako ne. Kdor namesto tega premakne le srca, pusti h nedotaknjen, a zlomi rh. Če nekdo spremeni eno od teh zgoščenih vrednosti, se podpis ne ujema več. Prav ta veriga je bistvo.


3. Kaj naj podpis doseže

Obiskovalec, ki bere oceno, naj lahko sam preveri tri stvari:

  1. Oceno je dejansko izdal McGesund.
  2. Besedilo od oddaje ni bilo spremenjeno.
  3. Nihče ne more izmisliti nove, veljavno videti ocene.

Za to obstaja par ključev:

  • zasebni ključ — leži izključno v podpisni storitvi
  • javni ključ — ima ga lahko vsak, naslovi se prek ID ključa (kid) v ovojnici

Podpisuje se z zasebnim ključem. Preverja se z javnim — in sicer v brskalniku bralca, ne na našem strežniku.


4. Zakaj sploh postkvantni postopek?

Mnogi danes običajni podpisni postopki temeljijo na faktorizaciji velikih števil ali na diskretnih logaritmih. Dovolj zmogljiv kvantni računalnik bi lahko prav te probleme z znanimi algoritmi reševal občutno hitreje.

Za oceno to ni akademsko vprašanje. Ocena naj bo preverljiva še čez deset let. Kdor podpiše danes, podpiše za celotno življenjsko dobo vnosa.

ML-DSA zato uporablja drugačno osnovo:

mrezˇni problemi\boxed{\text{mrežni problemi}}

Natančneje: Module-LWE in Module-SIS.


5. Kaj je mreža?

Najprej le točke v prostoru. Vzemimo dva vektorja:

b1=(2,0),b2=(1,2).b_1=(2,0), \qquad b_2=(1,2).

Vse celoštevilske kombinacije

ab1+bb2,a,bZa\,b_1+b\,b_2, \qquad a,b\in\mathbb{Z}

tvorijo mrežo. Na primer:

2b1+b2=(4,0)+(1,2)=(5,2).2b_1+b_2 = (4,0)+(1,2) = (5,2).
b₁ = (2,0)b₂ = (1,2)(5,2)0
Dva vektorja, vse celoštevilske kombinacije iz njiju: mreža. Označena točka nastane iz dvakratnega b₁ in enkratnega b₂.

Odločilno:

V majhnih dimenzijah so mrežni problemi lahki. V zelo visokih dimenzijah postanejo določene naloge izjemno težke.


6. Polinomi namesto posameznih števil

ML-DSA ne računa z 2D-vektorji, temveč s polinomi in vektorji polinomov.

Polinom kot

a(x)=1+2x+x3a(x)=1+2x+x^3

se da zapisati kot seznam koeficientov:

a=(1,2,0,1).a=(1,2,0,1).

Računa se v kolobarju:

Rq=Zq[x]/(xn+1).R_q=\mathbb{Z}_q[x]/(x^n+1).

To pomeni dvoje:

  • Zq\mathbb{Z}_q: računanje po modulu qq
  • xn=1x^n=-1: dodatno pravilo, ki fiksira dolžino polinoma

Za vse tri stopnje ML-DSA velja:

n=256,q=8380417.n=256, \qquad q=8380417.

Polinom ima torej 256 koeficientov, obravnavanih po modulu 8.380.417. Med stopnjami se ne spreminja nn ali qq, temveč velikost matrik — o tem pozneje več.

Mimogrede: množenje polinomov v tem kolobarju v praksi teče prek NTT, teoretično-številske različice hitre Fourierjeve transformacije. ML-DSA torej nikakor ne shaja brez idej FFT; te tičijo le v aritmetiki namesto v podpisnem načelu.


7. Osrednji trik: Module-LWE

Jedrna ideja je Module Learning With Errors:

t=As1+s2(modq).\mathbf{t}=\mathbf{A}\mathbf{s}_1+\mathbf{s}_2 \pmod q.

Pri tem so:

  • A\mathbf{A} — javna, na videz naključna matrika iz polinomov
  • s1,s2\mathbf{s}_1,\mathbf{s}_2 — majhna skrivna vektorja
  • t\mathbf{t} — javna vrednost

Napadalec pozna A\mathbf{A} in t\mathbf{t}, ne pa s1,s2\mathbf{s}_1,\mathbf{s}_2. Enačba je zanj videti kot naključna enačba s šumom. Majhnih skrivnosti iz nje ne bi smel biti sposoben učinkovito izračunati nazaj.


8. Drobcen številski primer

Namenoma vzamemo smešno majhno različico — navadna števila namesto polinomov, dimenzijo 2 namesto 256, in

q=17.q=17.

Naj bo

A=(3572),s1=(11),s2=(10).A=\begin{pmatrix}3&5\\7&2\end{pmatrix}, \qquad \mathbf{s}_1=\begin{pmatrix}1\\-1\end{pmatrix}, \qquad \mathbf{s}_2=\begin{pmatrix}1\\0\end{pmatrix}.

Potem:

As1=(3572)=(25),A\mathbf{s}_1=\begin{pmatrix}3-5\\7-2\end{pmatrix}=\begin{pmatrix}-2\\5\end{pmatrix},
t=As1+s2=(25)+(10)=(15)    (165)(mod17).\mathbf{t}=A\mathbf{s}_1+\mathbf{s}_2=\begin{pmatrix}-2\\5\end{pmatrix}+\begin{pmatrix}1\\0\end{pmatrix}=\begin{pmatrix}-1\\5\end{pmatrix} \;\equiv\; \boxed{\begin{pmatrix}16\\5\end{pmatrix}} \pmod{17}.

V tem mini formatu bi bilo mogoče preizkusiti vse možnosti. Pri ML-DSA-87 je A\mathbf{A} matrika 8×78\times 7 iz polinomov z 256 koeficienti vsak — to je več kot 14.000 neznank v mrežni strukturi.


9. Par ključev podpisne storitve

Zasebni ključ med drugim vsebuje majhna vektorja s1,s2\mathbf{s}_1,\mathbf{s}_2. Pri ML-DSA-87 njuni koeficienti izvirajo iz intervala

[η,η]zη=2,[-\eta,\eta] \quad\text{z}\quad \eta=2,

torej iz {2,1,0,1,2}\{-2,-1,0,1,2\}. Ta majhnost ni podrobnost, temveč jedro: le zato, ker so skrivnosti majhne, sploh nastane težak mrežni problem.

Javni ključ je poenostavljeno

(ρ,t1).(\rho,\mathbf{t}_1).

ρ\rho je seme, iz katerega je mogoče A\mathbf{A} deterministično rekonstruirati — matrike torej ni treba prenašati. t1\mathbf{t}_1 so zgornji biti vrednosti t\mathbf{t}; spodnjih d=13d=13 bitov odpade, kar ključ občutno zmanjša. Ta izpustitev je pozneje razlog za tako imenovane namige.

S tem nastane želena asimetrija:

javno preverjati    skrivno podpisovati\boxed{\text{javno preverjati}\;\neq\;\text{skrivno podpisovati}}

10. Ocena postane število

Podpisna storitev najprej zgosti objekt payload iz razdelka 2:

μ=H(m).\mu=H(m).

V našem igračnem primeru vzamemo umetno mini zgoščevanje. V resničnem sistemu je μ\mu dolg 512 bitov in dodatno veže tudi javni ključ — s tem podpisa ni mogoče prevesti na drug ključ.


11. Commitment

Podpisna storitev izvleče naključen majhen vektor y\mathbf{y}. V našem primeru:

y=(21).\mathbf{y}=\begin{pmatrix}2\\-1\end{pmatrix}.

Iz tega nastane vmesna vrednost, commitment:

w=Ay=(32+5(1)72+2(1))=(112).\mathbf{w}=A\mathbf{y} =\begin{pmatrix}3\cdot2+5\cdot(-1)\\7\cdot2+2\cdot(-1)\end{pmatrix} =\begin{pmatrix}1\\12\end{pmatrix}.

To še ni podpis.


12. Iz ocene nastane izziv

Sporočilo in commitment se zgostita skupaj:

c=H(μ,w).c=H(\mu,\mathbf{w}).

Pri ML-DSA-87 je cc polinom z natanko τ=60\tau=60 koeficienti iz {1,+1}\{-1,+1\}, vseh preostalih 196 je ničelnih. Ta struktura je namerna: ohranja cs1c\cdot\mathbf{s}_1 majhen.

V našem igračnem primeru preprosto postavimo

c=2.c=2.

13. Pravi podpis

z=y+cs1.\mathbf{z}=\mathbf{y}+c\,\mathbf{s}_1.

Z našimi vrednostmi:

cs1=2(11)=(22),c\,\mathbf{s}_1=2\begin{pmatrix}1\\-1\end{pmatrix}=\begin{pmatrix}2\\-2\end{pmatrix},
z=(21)+(22)=(43)\mathbf{z}=\begin{pmatrix}2\\-1\end{pmatrix}+\begin{pmatrix}2\\-2\end{pmatrix} =\boxed{\begin{pmatrix}4\\-3\end{pmatrix}}

14. Korak, ki ga je lahko spregledati: zavračalno vzorčenje

Tu je točka, na kateri se ML-DSA razlikuje od naivne konstrukcije — in ni izbirna.

z=y+cs1\mathbf{z}=\mathbf{y}+c\,\mathbf{s}_1 vsebuje skrivnost s1\mathbf{s}_1. Če bi z\mathbf{z} preprosto vedno izdali, bi bilo mogoče s1\mathbf{s}_1 iz dovolj velikega števila podpisov statistično izračunati. Pri ocenjevalnem portalu z zelo veliko podpisi na dan to ni teoretično tveganje.

Zato podpisna storitev pred izdajo preveri, ali z\mathbf{z} izda preveč, in podpis sicer zavrže — nato se začne znova z novim naključnim y\mathbf{y}. Temu se reče Fiat-Shamir with Aborts.

Pogoj se v bistvu glasi:

z<γ1β.\|\mathbf{z}\|_\infty < \gamma_1-\beta.
commitment w = Ayizziv c = H(μ, w)odgovor z = y + c · s₁‖z‖∞ < γ₁ − β ?dapodpis se izdane — nov y
Trije koraki in zanka. Če z izpade prevelik, se ne popravlja — cel prehod se zavrže in začne znova s svežim naključnim y. Zato je podpisovanje tu postopek z zanko.

Za ML-DSA-87 velja γ1=219\gamma_1=2^{19} in β=τη=602=120\beta=\tau\cdot\eta=60\cdot2=120. Poleg tega pride druga meja na spodnjih bitih. V praksi je več prehodov normalnih — podpisovanje je torej postopek z zanko, ne enkraten korak.

Za verifikacijo je pomembno: prav to mejo brskalnik pozneje preveri z njo vred. Podpis s prevelikimi koeficienti se zavrne, tudi če enačba izide.


15. Zakaj brskalnik to lahko preveri

Brskalnik bralca pozna:

  • oceno in s tem mm
  • javni ključ (ρ,t1)(\rho,\mathbf{t}_1)
  • podpis (c~,z,h)(\tilde c,\mathbf{z},\mathbf{h})

Vrednosti s1\mathbf{s}_1 ne pozna. Zveza, ki ga kljub temu pripelje naprej:

z=y+cs1Az=Ay+cAs1.\mathbf{z}=\mathbf{y}+c\,\mathbf{s}_1 \quad\Longrightarrow\quad A\mathbf{z}=A\mathbf{y}+c\,A\mathbf{s}_1.

In ker velja

t=As1+s2\mathbf{t}=A\mathbf{s}_1+\mathbf{s}_2

je mogoče neznani As1A\mathbf{s}_1 nadomestiti z javno vrednostjo:

Azct=Aycs2.A\mathbf{z}-c\,\mathbf{t}=A\mathbf{y}-c\,\mathbf{s}_2.

To je osrednja enačba — in pove nekaj pomembnega: brskalnik AyA\mathbf{y} rekonstruira ne natančno, temveč le do majhnega člena cs2c\,\mathbf{s}_2.


16. Mini primer do konca

Imeli smo:

A=(3572),t=(15),c=2,z=(43).A=\begin{pmatrix}3&5\\7&2\end{pmatrix},\quad \mathbf{t}=\begin{pmatrix}-1\\5\end{pmatrix},\quad c=2,\quad \mathbf{z}=\begin{pmatrix}4\\-3\end{pmatrix}.

Preračunajmo:

Az=(1215286)=(322),ct=2(15)=(210),A\mathbf{z}=\begin{pmatrix}12-15\\28-6\end{pmatrix}=\begin{pmatrix}-3\\22\end{pmatrix}, \qquad c\,\mathbf{t}=2\begin{pmatrix}-1\\5\end{pmatrix}=\begin{pmatrix}-2\\10\end{pmatrix},
Azct=(112).A\mathbf{z}-c\,\mathbf{t}=\begin{pmatrix}-1\\12\end{pmatrix}.

Prvotni commitment je bil

w=(112).\mathbf{w}=\begin{pmatrix}1\\12\end{pmatrix}.

Razlika znaša

(112)(112)=(20)=cs2.\begin{pmatrix}-1\\12\end{pmatrix}-\begin{pmatrix}1\\12\end{pmatrix} =\begin{pmatrix}-2\\0\end{pmatrix} =-c\,\mathbf{s}_2.

Torej natanko napovedani majhen člen napake. Preveritelj ne dobi w\mathbf{w}, temveč nekaj, kar leži blizu w\mathbf{w}.

Prav zato ML-DSA ne primerja vrednosti samih, temveč njihove zgornje bite. In prav zato podpis dodatno vsebuje vektor namigov h\mathbf{h}: kompaktno sporoča, na katerih mestih se je zaokrožitev zaradi majhnega člena napake prevesila čez mejo. Pri ML-DSA-87 je dovoljenih največ ω=75\omega=75 takih namigov. Skrivnosti ne izdajo — le popravijo zaokrožitev.

Na koncu brskalnik na novo izračuna izziv. Če se ujema,

cnov=c,c_{\text{nov}}=c,

in če vse norme ležijo v mejah, je podpis veljaven.


17. Kaj se zgodi, če nekdo spremeni oceno?

Recimo, da nekdo z dostopom do podatkovne baze — tudi nekdo pri nas — spremeni besedilo ocene ali eno od src. Tedaj se spremeni vsaj ena od obeh zgoščenih vrednosti v payloadu (h pri besedilu, rh pri vsakem polju zapisa):

H(m)H(m).H(m)\neq H(m').

S tem se spremeni izziv:

cc.c\neq c'.

Obstoječi podpis pa je bil ustvarjen za stari izziv. Brskalnik preračuna in ugotovi:

cnovcpodpisPodpis neveljavenc_{\text{nov}}\neq c_{\text{podpis}} \quad\Longrightarrow\quad \boxed{\text{Podpis neveljaven}}

Odločilni stavek k temu: oceno lahko izbrišemo, ne moremo pa je neopazno spremeniti. Pri McGesund isto preverjanje dodatno teče vsako noč na strežniku prek celotnega fonda — ocena, ki tega preverjanja ne prestane, ne šteje več v povprečje podjetja.


18. Zakaj nihče ne more izmisliti podpisa?

Napadalec pozna A\mathbf{A} in t\mathbf{t}, ne pa s1,s2\mathbf{s}_1,\mathbf{s}_2. Da bi zgradil veljaven podpis, bi moral najti trojico (c~,z,h)(\tilde c,\mathbf{z},\mathbf{h}), ki

  • izpolnjuje verifikacijsko enačbo in
  • spoštuje meje norm in
  • se ujema z izzivom, ki sledi prav iz teh vrednosti samih.

To se v jedru izteče v težak mrežni problem — konkretno v Module-SIS: najti kratke rešitve homogene enačbe po modulu qq. Pogoj majhnosti pri tem ni okrasek, temveč prava stopnja težavnosti. Brez njega bi bila rešitev trivialna.

javni podatki    tezˇak mrezˇni problem\boxed{\text{javni podatki}\;\rightarrow\;\text{težak mrežni problem}}

19. Zakaj „Module"?

Beseda opisuje strukturo med preprostimi vektorji in splošnimi mrežami. Namesto računanja s posameznimi števili ML-DSA dela z vektorji polinomov:

a=(a1(x),a2(x),,ak(x)),\mathbf{a}=(a_1(x),a_2(x),\ldots,a_k(x)),

in z matrikami iz njih:

A=(a1,1(x)a1,2(x)a2,1(x)a2,2(x)).\mathbf{A}= \begin{pmatrix} a_{1,1}(x)&a_{1,2}(x)&\cdots\\ a_{2,1}(x)&a_{2,2}(x)&\cdots\\ \vdots&\vdots&\ddots \end{pmatrix}.

Prednost: dobi se visoka dimenzija mreže, ohrani pa kompakten, učinkovito izračunljiv zapis. Varnost je mogoče fino uravnavati prek velikosti matrike, brez menjave kolobarja.


20. Zakaj ravno 87?

Tri stopnje se ne razlikujejo v kolobarju, temveč v dimenzijah:

ParameterML-DSA-44ML-DSA-65ML-DSA-87
Velikost matrike (k,)(k,\ell)4×44\times46×56\times58×78\times7
Območje skrivnosti η\eta242
Teža izziva τ\tau394960
Javni ključ1.312 B1.952 B2.592 B
Podpis2.420 B3.309 B4.627 B
Kategorija NIST235

Vredno pozornosti: ML-DSA-87 ni preprosto „ML-DSA-65, samo večji". Območje skrivnosti η\eta pade s 4 spet na 2; varnost tu prihaja iz večje matrike, ne iz večjih koeficientov. Gre za samostojno, standardizirano izbiro parametrov.

vecˇja matematicˇna strukturavisˇja varnostna rezerva\boxed{\text{večja matematična struktura}\rightarrow\text{višja varnostna rezerva}}

Cena: 4.627 bajtov na podpis — na žig, ki se shrani in se ob preverjanju dostavi brskalniku. Zato je pri McGesund ob ML-DSA-87 na izbiro tudi FALCON, ki shaja z 1.280 bajti.


21. Fiat-Shamir: zakaj deluje brez sogovornika

Interaktivni dokaz bi tekel takole:

  1. Podpisna storitev pošlje commitment.
  2. Preveritelj pošlje naključen izziv.
  3. Podpisna storitev odgovori.
  4. Preveritelj preračuna.

Pri oceni tega dialoga ni — bralec pride mesece pozneje. Rešitev je transformacija Fiat-Shamir: izziv se ne zavrti s kocko, temveč zgosti iz podatkov samih:

c=H(javni kljucˇ,  sporocˇilo,  commitment).c=H(\text{javni ključ},\;\text{sporočilo},\;\text{commitment}).

S tem iz dialoga nastane dokument. Podpisna storitev si izziva ne more izbrati, saj bi morala za to nadzorovati zgoščeno vrednost.


22. Celoten potek

PODPISNA STORITEV (MCGESUND)BRSKALNIK OBISKOVALCAzasebni ključ s₁, s₂payload m = {podjetje, ocena, h, rh, iat}zgoščena vrednost μnaključni vektor ycommitment w = Ayizziv c = H(μ, w)z = y + c · s₁podpis (c, z, namigi) + kidocena + podpis + javni ključAz − c·t → zgornji biti + namigiponovni izračun izzivana novo izračunani izziv = priloženi?veljavenneveljavenzavrzi, če je z prevelik(zavračalno vzorčenje)
Celotna pot ocene. Črtkani skok nazaj je zavračalno vzorčenje — jemlje se toliko časa, dokler ni z dovolj majhen, da o skrivnem ključu ne izda ničesar.

23. Kaj McGesund konkretno počne s tem

Tri ravni se prepletajo:

Ovojnica. Vsaka podpisana ocena nosi podpis Ed25519. To je obvezna različica — klasična, drobcena, izvorno preverljiva v vsakem brskalniku.

Postkvantni žigi. Dodatno je mogoče zraven položiti enega ali dva kvantno odporna podpisa. Katera, je odvisno od paketa:

Paketrazpoložljive stopnje podpisa
BasisEd25519, FN-DSA-512
KlassikEd25519, FN-DSA-512, FN-DSA-1024
ProEd25519, FN-DSA-1024, ML-DSA-87
PremiumEd25519, FN-DSA-1024, ML-DSA-87, oba vzporedno

Vzporedna različica je namenoma redundantna. Če bi se ena od obeh matematičnih družin — mreže NTRU pri FALCON, modulne mreže pri ML-DSA — izkazala za šibkejšo, kot se domneva danes, nosi druga naprej.

Časovno sidro. Prstni odtis podpisnega ključa se prek OpenTimestamps zasidra v blok Bitcoin. S tem je mogoče dokazati ne le, da je podpis pristen, temveč tudi, da je v določenem trenutku že obstajal — ne da bi moral kdo verjeti našemu časovnemu žigu.

Vse to se preverja v brskalniku bralca, prek modula WASM. Mi dostavimo podatke; preračuna se na napravi obiskovalca. Če bi jutri odšli z omrežja, bi enkrat prenesena ocena ostala preverljiva.


24. ML-DSA in FALCON drug ob drugem

LastnostFALCON (FN-DSA)ML-DSA
Tipdigitalni podpisdigitalni podpis
Družina mrežNTRUModule-LWE / Module-SIS
KolobarZq[x]/(xn+1)\mathbb{Z}_q[x]/(x^n+1), q=12289q=12289Zq[x]/(x256+1)\mathbb{Z}_q[x]/(x^{256}+1), q=8380417q=8380417
Jedrni mehanizemkratek vektor prek Gaussovega vzorčenjaizziv-odgovor s prekinitvami
FFT / NTTFFT s plavajočo vejico, varnostno kritičenNTT, le aritmetika
Velikost podpisa (najvišja stopnja)1.280 B4.627 B
Implementacijazahtevna (plavajoča vejica)razmeroma premočrtna
Standardizacijapredviden kot FIPS 206 (FN-DSA), še ni dokončanFIPS 204, dokončan

Na kratko: ML-DSA je laže pravilno implementirati in preveriti, FALCON daje občutno kompaktnejše podpise. V kodi QR ne tiči nobeden od obeh — tam stoji sama ovojnica Ed25519. Velikost podpisa zato šteje pri shranjevanju in dostavi, robustnost pa pri implementaciji. Zato ponujamo oboje.


25. En stavek za s seboj

ML-DSA iz kratkega skrivnega vektorja ustvari odgovor na izziv,ki je bil zgosˇcˇen iz ocene same — preverljivza vsakogar z javnim kljucˇem.\boxed{ \begin{array}{c} \text{ML-DSA iz kratkega skrivnega vektorja ustvari odgovor na izziv,}\\ \text{ki je bil zgoščen iz ocene same — preverljiv}\\ \text{za vsakogar z javnim ključem.} \end{array}}

Kdor ima skrivni vektor, podpiše v milisekundah. Kdor ga nima, bi moral rešiti mrežni problem v več kot 14.000 dimenzijah — tudi s kvantnim računalnikom.

Za bralca ocene to preprosto pomeni: ni nam treba verjeti. Lahko preračuna sam.