Allkirjastamismeetod

ML-DSA-87 matemaatiliselt selgitatud

Kuidas ML-DSA-87 (FIPS 204) McGesundi arvustuse allkirjastab — Module-LWE-st üle rejection samplingu kuni kontrollini brauseris.

Seisuga: 2026-09-07

1. Millest siin jutt käib

Kui keegi jätab McGesundis arvustuse, toimub taustal rohkem, kui tekst arvata laseb. Arvustus allkirjastatakse saatmisel digitaalselt. Seda allkirja saab iga külastaja hiljem oma brauseris järele arvutada — meid usaldamata ja meilt küsimata.

Klientidele alates paketist Pro tehakse seda muu hulgas ML-DSA-87-ga. See artikkel selgitab, mis seejuures matemaatiliselt toimub.

Kõigepealt oluline:

ML-DSA ei ole krüpteerimine. Arvustuse tekst jääb avalikult loetavaks — selles ju arvustuse mõte ongi. ML-DSA ei tõenda salastatust, vaid päritolu ja terviklikkust.

ML-DSA on välja arendatud CRYSTALS-Dilithiumist ja standarditud kui FIPS 204. Arv 87 tähistab parameetritaset. Neid on kolm:

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

ML-DSA-87 on kõrgeim ja kuulub NISTi turvakategooriasse 5.


2. Mida täpselt allkirjastatakse?

Allkirja ei rända mitte arvustuse tekst ise, vaid kompaktne andmeobjekt, mis naelutab teksti üheselt kinni. McGesundis näeb see sisuliselt välja nii:

{
  "v":   1,
  "typ": "rev-comment",
  "f":   "<ettevõtte ID>",
  "c":   "<arvustuse ID>",
  "h":   "<arvustuse teksti SHA-256>",
  "rh":  "<kogu esitatud andmekirje SHA-256>",
  "rv":  1,
  "qh":  "<QR-Envelope'i SHA-256, ainult QR-arvustuste puhul>",
  "iat": 1757203200
}

See objekt on meie sõnum mm. See seob kokku kuus väidet:

  1. Millisele ettevõttele arvustus kuulub (f)
  2. Millist arvustust mõeldakse (c)
  3. Milline tekst selle taga oli — räsiväärtusena (h)
  4. Milline andmekirje tervikuna esitati (rh): tekst, südamed, geostaatus ja ajendi andmed, kanooniliselt serialiseeritud ja räsitud — skeemiversioonis rv
  5. Millisest QR-koodist arvustus pärineb (qh); ilma QR-ita see väli puudub
  6. Millal allkirjastati (iat)

Kui keegi muudab hiljem arvustuse tekstis üht ainsat märki, ei sobi h enam — ja rh samuti mitte. Kes selle asemel keerab ainult südameid, jätab h puutumata, kuid murrab rh. Kui keegi muudab üht neist räsiväärtustest, ei sobi allkiri enam. Just see ahel ongi mõte.


3. Mida allkiri peab tagama

Külastaja, kes arvustust loeb, peab saama kolme asja ise kontrollida:

  1. Arvustus on tõepoolest McGesundi väljastatud.
  2. Teksti ei ole pärast saatmist muudetud.
  3. Keegi ei saa välja mõelda uut, kehtivana näivat arvustust.

Selleks on olemas võtmepaar:

  • privaatvõti — asub eranditult allkirjastamisteenuses
  • avalik võti — tohib olla igaühel, seda adresseeritakse Envelope'is oleva võtme-ID (kid) kaudu

Allkirjastatakse privaatvõtmega. Kontrollitakse avalikuga — ja nimelt lugeja brauseris, mitte meie serveris.


4. Miks üldse kvantijärgne meetod?

Paljud tänapäeval tavalised allkirjastamismeetodid põhinevad suurte arvude teguriteks lahutamisel või diskreetsetel logaritmidel. Piisavalt võimas kvantarvuti suudaks just neid ülesandeid teadaolevate algoritmidega tunduvalt kiiremini lahendada.

Arvustuse jaoks ei ole see akadeemiline küsimus. Arvustus peab olema kontrollitav ka kümne aasta pärast. Kes allkirjastab täna, allkirjastab kirje kogu eluea jaoks.

ML-DSA kasutab seetõttu teist alust:

Vo˜reu¨lesanded\boxed{\text{Võreülesanded}}

Täpsemalt: Module-LWE ja Module-SIS.


5. Mis on võre?

Kõigepealt lihtsalt punktid ruumis. Võtame kaks vektorit:

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

Kõik täisarvulised kombinatsioonid

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

moodustavad võre. Näiteks:

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
Kaks vektorit, kõik täisarvulised kombinatsioonid neist: võre. Märgitud punkt tekib kahekordsest b₁-st ja ühekordsest b₂-st.

Otsustav on:

Väikestes mõõtmetes on võreülesanded lihtsad. Väga suurtes mõõtmetes muutuvad teatud ülesanded ülimalt raskeks.


6. Polünoomid üksikute arvude asemel

ML-DSA ei arvuta 2D-vektoritega, vaid polünoomide ja polünoomivektoritega.

Polünoomi nagu

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

saab kirjutada kordajate loendina:

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

Arvutatakse ringis:

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

See tähendab kaht asja:

  • Zq\mathbb{Z}_q: arvutamine mooduli qq järgi
  • xn=1x^n=-1: lisareegel, mis fikseerib polünoomi pikkuse

Kõigi kolme ML-DSA taseme kohta kehtib:

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

Polünoomil on seega 256 kordajat, vaadelduna mooduli 8 380 417 järgi. See, mis tasemete vahel muutub, ei ole nn ega qq, vaid maatriksite suurus — sellest hiljem lähemalt.

Muuseas: polünoomide korrutamine selles ringis käib praktikas NTT kaudu, mis on kiire Fourier' teisenduse arvuteoreetiline variant. ML-DSA ei saa seega sugugi ilma FFT-ideedeta hakkama; need peituvad lihtsalt aritmeetikas, mitte allkirjastamise põhimõttes.


7. Keskne trikk: Module-LWE

Põhiidee on Module Learning With Errors:

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

Seejuures on:

  • A\mathbf{A} — avalik, näiliselt juhuslik polünoomide maatriks
  • s1,s2\mathbf{s}_1,\mathbf{s}_2 — väikesed salajased vektorid
  • t\mathbf{t} — avalik väärtus

Ründaja teab A\mathbf{A}-d ja t\mathbf{t}-d, kuid mitte vektoreid s1,s2\mathbf{s}_1,\mathbf{s}_2. Võrrand näeb tema jaoks välja nagu juhuslik võrrand müraga. Väikesi saladusi ei tohi ta sellest tõhusalt tagasi arvutada saada.


8. Pisike arvunäide

Võtame meelega naeruväärselt väikese variandi — tavalised arvud polünoomide asemel, mõõde 2 mõõtme 256 asemel, ja

q=17.q=17.

Olgu

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}.

Siis:

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}.

Selles miniformaadis saaks kõik võimalused läbi proovida. ML-DSA-87 puhul on A\mathbf{A} 8×78\times 7 maatriks polünoomidest, millest igaühel on 256 kordajat — see teeb üle 14 000 tundmatu võrestruktuuris.


9. Allkirjastamisteenuse võtmepaar

Privaatvõti sisaldab muu hulgas väikesi vektoreid s1,s2\mathbf{s}_1,\mathbf{s}_2. ML-DSA-87 puhul pärinevad nende kordajad vahemikust

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

seega hulgast {2,1,0,1,2}\{-2,-1,0,1,2\}. See väiksus ei ole detail, vaid tuum: ainult tänu sellele, et saladused on väikesed, tekib üldse raske võreülesanne.

Avalik võti on lihtsustatult

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

ρ\rho on seeme, millest saab A\mathbf{A} deterministlikult taastada — maatriksit ei pea seega üle kandma. t1\mathbf{t}_1 on t\mathbf{t} ülemised bitid; alumised d=13d=13 bitti jäetakse ära, mis vähendab võtit tunduvalt. See ärajätmine on hiljem nn vihjete põhjus.

Sellega tekib soovitud asümmeetria:

avalikult kontrollida    salaja allkirjastada\boxed{\text{avalikult kontrollida}\;\neq\;\text{salaja allkirjastada}}

10. Arvustusest saab arv

Allkirjastamisteenus räsib kõigepealt 2. jaos kirjeldatud andmeobjekti:

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

Meie mängunäites võtame kunstliku miniräsi. Tegelikus süsteemis on μ\mu 512 bitti pikk ja seob lisaks avaliku võtme kaasa — seetõttu ei saa allkirja teisele võtmele ümber tõlgendada.


11. Commitment

Allkirjastamisteenus tõmbab juhusliku väikese vektori y\mathbf{y}. Meie näites:

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

Sellest tekib vahetulemus, 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}.

See ei ole veel allkiri.


12. Arvustusest saab väljakutse

Sõnum ja commitment räsitakse kokku:

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

ML-DSA-87 puhul on cc polünoom, millel on täpselt τ=60\tau=60 kordajat hulgast {1,+1}\{-1,+1\}, kõik ülejäänud 196 on nullid. See struktuur on taotluslik: see hoiab cs1c\cdot\mathbf{s}_1 väikesena.

Meie mängunäites võtame lihtsalt

c=2.c=2.

13. Tegelik allkiri

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

Meie väärtustega:

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. Samm, mis jääb kergesti kahe silma vahele: rejection sampling

Siin on koht, kus ML-DSA erineb naiivsest konstruktsioonist — ja see ei ole valikuline.

z=y+cs1\mathbf{z}=\mathbf{y}+c\,\mathbf{s}_1 sisaldab saladust s1\mathbf{s}_1. Kui z\mathbf{z} lihtsalt alati välja anda, saaks s1\mathbf{s}_1 piisavalt paljudest allkirjadest statistiliselt välja arvutada. Arvustusportaali puhul, kus tehakse päevas väga palju allkirju, ei ole see teoreetiline risk.

Seepärast kontrollib allkirjastamisteenus enne väljastamist, kas z\mathbf{z} reedab liiga palju, ja hülgab allkirja vastasel juhul — siis alustatakse uue juhusliku y\mathbf{y}-ga otsast peale. Seda nimetatakse Fiat-Shamir with Aborts.

Tingimus on sisuliselt järgmine:

z<γ1β.\|\mathbf{z}\|_\infty < \gamma_1-\beta.
commitment w = Ayväljakutse c = H(μ, w)vastus z = y + c · s₁‖z‖∞ < γ₁ − β ?jahallkiri väljastatakseei — uus y
Kolm sammu ja üks silmus. Kui z tuleb liiga suur, ei paranda seda keegi järele — kogu läbimine hüljatakse ja alustatakse värske juhusliku y-ga uuesti. Seepärast on allkirjastamine siin silmusega menetlus.

ML-DSA-87 puhul kehtivad γ1=219\gamma_1=2^{19} ja β=τη=602=120\beta=\tau\cdot\eta=60\cdot2=120. Lisaks tuleb teine piir alumistele bittidele. Praktikas on mitu läbimist tavaline — allkirjastamine on seega silmusega menetlus, mitte ühekordne samm.

Kontrollimise jaoks on tähtis: just seda piiri kontrollib brauser hiljem kaasa. Liiga suurte kordajatega allkiri lükatakse tagasi ka siis, kui võrrand kehtib.


15. Miks brauser saab seda kontrollida

Lugeja brauser teab:

  • arvustust ja sellega mm-i
  • avalikku võtit (ρ,t1)(\rho,\mathbf{t}_1)
  • allkirja (c~,z,h)(\tilde c,\mathbf{z},\mathbf{h})

Ta ei tea vektorit s1\mathbf{s}_1. Seos, mis viib ta sellest hoolimata edasi:

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.

Ja kuna

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

kehtib, saab tundmatu As1A\mathbf{s}_1 asendada avaliku väärtusega:

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

See on keskne võrrand — ja see ütleb midagi olulist: brauser ei taasta AyA\mathbf{y}-d täpselt, vaid ainult väikese liikme cs2c\,\mathbf{s}_2 täpsusega.


16. Minimaalne näide lõpuni

Meil oli:

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}.

Arvutame järele:

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}.

Esialgne commitment oli

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

Vahe on

(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.

Seega täpselt ettekuulutatud väike veaterm. Kontrollija ei saa mitte w\mathbf{w}-d, vaid midagi, mis asub w\mathbf{w} lähedal.

Just seepärast ei võrdle ML-DSA väärtusi endid, vaid nende ülemisi bitte. Ja just seepärast sisaldab allkiri lisaks vihjevektorit h\mathbf{h}: see teatab kompaktselt, millistes kohtades on ümardamine väikese veatermi tõttu üle piiri kaldunud. ML-DSA-87 puhul on lubatud kõige rohkem ω=75\omega=75 sellist vihjet. Nad ei reeda saladust — nad ainult parandavad ümardamist.

Lõpuks arvutab brauser väljakutse uuesti. Kui see langeb kokku,

cuus=c,c_{\text{uus}}=c,

ja kõik normid jäävad piiridesse, on allkiri kehtiv.


17. Mis juhtub, kui keegi arvustust muudab?

Oletame, et keegi, kellel on ligipääs andmebaasile — ka keegi meie juurest — muudab arvustuse teksti või üht südametest. Siis muutub vähemalt üks kahest räsiväärtusest andmeosas (h teksti puhul, rh iga andmekirje välja puhul):

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

Sellega muutub väljakutse:

cc.c\neq c'.

Olemasolev allkiri loodi aga vana väljakutse jaoks. Brauser arvutab järele ja tuvastab:

cuuscallkiriAllkiri ei kehtic_{\text{uus}}\neq c_{\text{allkiri}} \quad\Longrightarrow\quad \boxed{\text{Allkiri ei kehti}}

Otsustav lause selle kohta: me võime arvustuse kustutada, aga me ei saa seda märkamatult muuta. McGesundis käib sama kontroll lisaks igal ööl serveripoolselt üle kogu andmestiku — arvustus, mis seda kontrolli ei läbi, ei lähe enam ettevõtte keskmisesse arvesse.


18. Miks keegi ei saa allkirja välja mõelda?

Ründaja teab A\mathbf{A}-d ja t\mathbf{t}-d, kuid mitte vektoreid s1,s2\mathbf{s}_1,\mathbf{s}_2. Kehtiva allkirja ehitamiseks peaks ta leidma kolmiku (c~,z,h)(\tilde c,\mathbf{z},\mathbf{h}), mis

  • rahuldab kontrollvõrrandit ja
  • peab kinni normipiiridest ja
  • sobib väljakutsega, mis tuleneb just neist väärtustest endist.

See taandub sisuliselt raskele võreülesandele — konkreetselt ülesandele Module-SIS: leida homogeense võrrandi lühikesed lahendid mooduli qq järgi. Väiksuse tingimus ei ole seejuures kaunistus, vaid tegelik raskusaste. Ilma selleta oleks lahend triviaalne.

avalikud andmed    raske vo˜reu¨lesanne\boxed{\text{avalikud andmed}\;\rightarrow\;\text{raske võreülesanne}}

19. Miks „Module"?

See sõna kirjeldab struktuuri, mis jääb lihtsate vektorite ja üldiste võrede vahele. Üksikute arvudega arvutamise asemel töötab ML-DSA polünoomivektoritega:

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

ja neist koostatud maatriksitega:

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}.

Eelis: saadakse võre suur mõõde, kuid säilib kompaktne, tõhusalt arvutatav esitus. Turvalisust saab maatriksi suuruse kaudu peenhäälestada, ilma ringi vahetamata.


20. Miks just 87?

Kolm taset ei erine ringi, vaid mõõtmete poolest:

ParameeterML-DSA-44ML-DSA-65ML-DSA-87
Maatriksi suurus (k,)(k,\ell)4×44\times46×56\times58×78\times7
Saladuse vahemik η\eta242
Väljakutse kaal τ\tau394960
Avalik võti1 312 B1 952 B2 592 B
Allkiri2 420 B3 309 B4 627 B
NISTi kategooria235

Tähelepanuväärne: ML-DSA-87 ei ole lihtsalt „ML-DSA-65, ainult suurem". Saladuse vahemik η\eta läheb 4-lt taas 2-le tagasi; turvalisus tuleb siin suuremast maatriksist, mitte suurematest kordajatest. Tegemist on iseseisva, standarditud parameetrivalikuga.

suurem matemaatiline struktuursuurem turvavaru\boxed{\text{suurem matemaatiline struktuur}\rightarrow\text{suurem turvavaru}}

Hind: 4 627 baiti allkirja kohta — iga templi kohta, mis salvestatakse ja kontrollimisel brauserile edastatakse. Seepärast on McGesundis ML-DSA-87 kõrval valikus ka FALCON, mis saab hakkama 1 280 baidiga.


21. Fiat-Shamir: miks see töötab ilma vastaspooleta

Interaktiivne tõestus käiks nii:

  1. Allkirjastamisteenus saadab commitmenti.
  2. Kontrollija saadab juhusliku väljakutse.
  3. Allkirjastamisteenus vastab.
  4. Kontrollija arvutab järele.

Arvustuse puhul seda dialoogi ei ole — lugeja tuleb kuid hiljem. Lahendus on Fiat-Shamiri teisendus: väljakutset ei veeretata täringuga, vaid räsitakse andmetest endist:

c=H(avalik vo˜ti,  so˜num,  commitment).c=H(\text{avalik võti},\;\text{sõnum},\;\text{commitment}).

Nii saab dialoogist dokument. Allkirjastamisteenus ei saa väljakutset ise valida, sest selleks peaks ta räsi kontrolli all hoidma.


22. Kogu kulg

ALLKIRJASTAMISTEENUS (MCGESUND)KÜLASTAJA BRAUSERprivaatvõti s₁, s₂andmeosa m = {ettevõte, arvustus, h, rh, iat}räsi μjuhuslik vektor ycommitment w = Ayväljakutse c = H(μ, w)z = y + c · s₁allkiri (c, z, vihjed) + kidarvustus + allkiri + avalik võtiAz − c·t → ülemised bitid + vihjedväljakutse arvutatakse uuestiuuesti arvutatud väljakutse = kaasa antud?kehtibei kehtihülga, kui z on liiga suur(rejection sampling)
Arvustuse kogu tee. Kriipsjoonega tagasihüpe on rejection sampling — seda tehakse nii mitu korda, kuni z on piisavalt väike, et salajase võtme kohta midagi mitte reeta.

23. Mida McGesund sellega konkreetselt teeb

Kolm tasandit haakuvad omavahel:

Envelope. Iga allkirjastatud arvustus kannab Ed25519 allkirja. See on kohustuslik variant — klassikaline, tilluke, igas brauseris natiivselt kontrollitav.

Kvantijärgsed templid. Lisaks võib kõrvale panna ühe või kaks kvantiresistentset allkirja. Millised, sõltub paketist:

Pakettsaadaolevad allkirjatasemed
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, mõlemad paralleelselt

Paralleelne variant on teadlikult üleliigne. Kui üks kahest matemaatilisest perekonnast — NTRU-võred FALCONi puhul, moodulvõred ML-DSA puhul — peaks osutuma nõrgemaks, kui täna eeldatakse, kannab teine edasi.

Ajaankur. Allkirjastamisvõtme sõrmejälg ankurdatakse OpenTimestampsi kaudu Bitcoini plokki. Sellega ei saa tõendada mitte üksnes seda, et allkiri on ehtne, vaid ka seda, et ta oli teataval ajahetkel juba olemas — ilma et keegi peaks uskuma meie ajatemplit.

Kõike seda kontrollitakse lugeja brauseris WASM-mooduli abil. Meie tarnime andmed; järele arvutatakse külastaja seadmes. Kui me homme võrgust kaoksime, jääks juba korra alla laaditud arvustus kontrollitavaks.


24. ML-DSA ja FALCON kõrvuti

OmadusFALCON (FN-DSA)ML-DSA
Tüüpdigitaalallkiridigitaalallkiri
VõreperekondNTRUModule-LWE / Module-SIS
RingZq[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
Põhimehhanismlühike vektor Gaussi sämplimise abilväljakutse ja vastus katkestustega
FFT / NTTujukoma-FFT, turvakriitilineNTT, ainult aritmeetika
Allkirja suurus (kõrgeim tase)1 280 B4 627 B
Teostusnõudlik (ujukoma)võrdlemisi sirgjooneline
Standardimineette nähtud FIPS 206-na (FN-DSA), veel lõpetamataFIPS 204, lõpetatud

Lühidalt: ML-DSA-d on lihtsam korrektselt teostada ja kontrollida, FALCON annab tunduvalt kompaktsemad allkirjad. QR-koodis ei ole kumbagi — seal on üksnes Ed25519 Envelope. Allkirja suurus loeb seetõttu salvestamisel ja edastamisel, robustsus teostamisel. Seepärast pakume mõlemat.


25. Üks lause kaasavõtmiseks

ML-DSA loob lu¨hikesest salajasest vektorist vastuseva¨ljakutsele, mis on ra¨situd arvustusest endast — kontrollitavigau¨hele, kellel on avalik vo˜ti.\boxed{ \begin{array}{c} \text{ML-DSA loob lühikesest salajasest vektorist vastuse}\\ \text{väljakutsele, mis on räsitud arvustusest endast — kontrollitav}\\ \text{igaühele, kellel on avalik võti.} \end{array}}

Kellel on salajane vektor, allkirjastab millisekunditega. Kellel seda ei ole, peaks lahendama võreülesande enam kui 14 000 mõõtmes — ka kvantarvutiga.

Arvustuse lugeja jaoks tähendab see lihtsalt: ta ei pea meid uskuma. Ta saab järele arvutada.