Postupak potpisivanja

ML-DSA-87 matematički objašnjen

Kako ML-DSA-87 (FIPS 204) potpisuje McGesund recenziju — od Module-LWE preko rejection samplinga do provjere u pregledniku.

Stanje: 2026-09-07

1. O čemu je riječ

Kada netko na McGesundu preda recenziju, u pozadini se događa više nego što tekst daje naslutiti. Recenzija se pri slanju digitalno potpisuje. Taj potpis svaki posjetitelj kasnije može preračunati u vlastitom pregledniku — bez povjerenja u nas i bez pitanja upućenog nama.

Za korisnike od tarife Pro naviše to se, među ostalim, radi s ML-DSA-87. Ovaj članak objašnjava što se pritom matematički događa.

Važno unaprijed:

ML-DSA nije šifriranje. Tekst recenzije ostaje javno čitljiv — to je ionako smisao recenzije. ML-DSA ne dokazuje tajnost, nego podrijetlo i cjelovitost.

ML-DSA je razvijen iz CRYSTALS-Dilithiuma i standardiziran je kao FIPS 204. Broj 87 označava razinu parametara. Postoje tri:

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

ML-DSA-87 je najviša i nalazi se u NIST sigurnosnoj kategoriji 5.


2. Što se točno potpisuje?

U potpis ne ulazi sam tekst recenzije, nego kompaktan podatkovni objekt koji tekst jednoznačno prikiva. Na McGesundu on u jezgri izgleda ovako:

{
  "v":   1,
  "typ": "rev-comment",
  "f":   "<ID tvrtke>",
  "c":   "<ID recenzije>",
  "h":   "<SHA-256 teksta recenzije>",
  "rh":  "<SHA-256 cijelog zapisa o predaji>",
  "rv":  1,
  "qh":  "<SHA-256 QR omotnice, samo kod QR recenzija>",
  "iat": 1757203200
}

Taj je objekt naša poruka mm. On zajedno veže šest tvrdnji:

  1. Kojem poduzeću recenzija pripada (f)
  2. Na koju se recenziju misli (c)
  3. Koji je tekst iza toga stajao — kao hash-vrijednost (h)
  4. Koji je zapis ukupno predan (rh): tekst, srca, geo-status i podaci o povodu, kanonski serijalizirani i uhashirani — u verziji sheme rv
  5. Iz kojeg QR koda recenzija potječe (qh); bez QR-a to polje otpada
  6. Kada je potpisano (iat)

Promijeni li netko kasnije jedan jedini znak u tekstu recenzije, h više ne odgovara — a ni rh. Tko umjesto toga dira samo srca, ostavlja h netaknutim, ali lomi rh. Promijeni li netko jednu od tih hash-vrijednosti, potpis više ne odgovara. Upravo je taj lanac bit.


3. Što potpis treba postići

Posjetitelj koji recenziju čita treba moći sam provjeriti tri stvari:

  1. Recenziju je doista izdao McGesund.
  2. Tekst od slanja nije izmijenjen.
  3. Nitko ne može izmisliti novu recenziju koja izgleda valjano.

Za to postoji par ključeva:

  • privatni ključ — nalazi se isključivo u servisu za potpisivanje
  • javni ključ — smije ga imati svatko, adresira se preko ID-a ključa (kid) u omotnici

Potpisuje se privatnim ključem. Provjerava se javnim — i to u pregledniku čitatelja, a ne na našem poslužitelju.


4. Zašto uopće post-kvantni postupak?

Mnogi danas uobičajeni postupci potpisivanja počivaju na faktorizaciji velikih brojeva ili na diskretnim logaritmima. Dovoljno moćno kvantno računalo moglo bi upravo te probleme poznatim algoritmima riješiti znatno brže.

Za recenziju to nije akademsko pitanje. Recenzija bi i za deset godina trebala biti provjerljiva. Tko danas potpisuje, potpisuje za cijeli životni vijek unosa.

ML-DSA zato koristi drugu podlogu:

Problemi resˇetki\boxed{\text{Problemi rešetki}}

Točnije: Module-LWE i Module-SIS.


5. Što je rešetka?

Zasad samo točke u prostoru. Uzmimo dva vektora:

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

Sve cjelobrojne kombinacije

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

tvore rešetku. Na primjer:

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 vektora, sve cjelobrojne kombinacije iz njih: rešetka. Označena točka nastaje iz dvaput b₁ i jedanput b₂.

Ono odlučujuće:

U malim su dimenzijama problemi rešetki laki. U vrlo visokim dimenzijama određeni zadaci postaju iznimno teški.


6. Polinomi umjesto pojedinačnih brojeva

ML-DSA ne računa s 2D vektorima, nego s polinomima i vektorima polinoma.

Polinom poput

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

može se zapisati kao lista koeficijenata:

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

Računa se u prstenu:

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

To znači dvoje:

  • Zq\mathbb{Z}_q: računanje modulo qq
  • xn=1x^n=-1: dodatno pravilo koje fiksira duljinu polinoma

Za sve tri ML-DSA razine vrijedi:

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

Polinom dakle ima 256 koeficijenata, promatranih modulo 8.380.417. Ono što se između razina mijenja nije nn ni qq, nego veličina matrica — o tome kasnije više.

Uzgred: množenje polinoma u tom prstenu u praksi teče preko NTT, brojevno-teorijske inačice brze Fourierove transformacije. ML-DSA dakle nipošto ne prolazi bez FFT ideja; one su samo u aritmetici umjesto u načelu potpisivanja.


7. Ključni trik: Module-LWE

Osnovna je zamisao Module Learning With Errors:

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

Pritom su:

  • A\mathbf{A} — javna, naizgled slučajna matrica polinoma
  • s1,s2\mathbf{s}_1,\mathbf{s}_2 — mali tajni vektori
  • t\mathbf{t} — javna vrijednost

Napadač zna A\mathbf{A} i t\mathbf{t}, ali ne i s1,s2\mathbf{s}_1,\mathbf{s}_2. Jednadžba za njega izgleda kao slučajna jednadžba sa šumom. Male tajne iz nje ne bi smio moći učinkovito izračunati unatrag.


8. Sićušan brojčani primjer

Namjerno uzimamo smiješno malu inačicu — obične brojeve umjesto polinoma, dimenziju 2 umjesto 256, i

q=17.q=17.

Neka je

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

Tada:

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

U tom bi se mini-formatu mogle isprobati sve mogućnosti. Kod ML-DSA-87 je A\mathbf{A} matrica 8×78\times 7 od polinoma s po 256 koeficijenata — to je preko 14.000 nepoznanica u strukturi rešetke.


9. Par ključeva servisa za potpisivanje

Privatni ključ sadrži među ostalim male vektore s1,s2\mathbf{s}_1,\mathbf{s}_2. Kod ML-DSA-87 njihovi koeficijenti potječu iz intervala

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

dakle iz {2,1,0,1,2}\{-2,-1,0,1,2\}. Ta malenost nije detalj, nego jezgra: samo zato što su tajne male, uopće nastaje težak problem rešetke.

Javni ključ je pojednostavljeno

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

ρ\rho je seed iz kojega se A\mathbf{A} da deterministički rekonstruirati — matrica se dakle ne mora prenositi. t1\mathbf{t}_1 su gornji bitovi od t\mathbf{t}; donjih d=13d=13 bitova otpada, što ključ znatno smanjuje. To izostavljanje kasnije je razlog za takozvane hintove.

Time nastaje željena asimetrija:

javno provjeriti    tajno potpisati\boxed{\text{javno provjeriti}\;\neq\;\text{tajno potpisati}}

10. Recenzija postaje broj

Servis za potpisivanje najprije uhashira objekt payloada iz odjeljka 2:

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

U našem primjeru za igru uzimamo umjetni mini-hash. U stvarnom je sustavu μ\mu dug 512 bitova i dodatno uvezuje javni ključ — time se potpis ne može pripisati drugom ključu.


11. Commitment

Servis za potpisivanje izvlači slučajan mali vektor y\mathbf{y}. U našem primjeru:

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

Iz njega nastaje međuvrijednost, 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 još nije potpis.


12. Iz recenzije nastaje izazov

Poruka i commitment uhashiraju se zajedno:

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

Kod ML-DSA-87 je cc polinom s točno τ=60\tau=60 koeficijenata iz {1,+1}\{-1,+1\}, a svih preostalih 196 su nule. Ta je struktura namjerna: ona drži cs1c\cdot\mathbf{s}_1 malim.

U našem primjeru za igru naprosto postavljamo

c=2.c=2.

13. Sam potpis

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

S našim vrijednostima:

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 koji se lako previdi: rejection sampling

Tu je točka u kojoj se ML-DSA razlikuje od naivne konstrukcije — i ona nije opcionalna.

z=y+cs1\mathbf{z}=\mathbf{y}+c\,\mathbf{s}_1 sadrži tajnu s1\mathbf{s}_1. Kad bi se z\mathbf{z} naprosto uvijek izdavao, s1\mathbf{s}_1 bi se iz dovoljno potpisa dao statistički izračunati. Kod portala s recenzijama i vrlo mnogo potpisa dnevno to nije teorijski rizik.

Zato servis za potpisivanje prije izdavanja provjerava odaje li z\mathbf{z} previše, a u protivnom potpis odbacuje — tada se kreće iznova s novim slučajnim y\mathbf{y}. To se zove Fiat-Shamir with Aborts.

Uvjet u biti glasi:

z<γ1β.\|\mathbf{z}\|_\infty < \gamma_1-\beta.
commitment w = Ayizazov c = H(μ, w)odgovor z = y + c · s₁‖z‖∞ < γ₁ − β ?dapotpis se izdajene — novi y
Tri koraka i petlja. Ispadne li z prevelik, ne popravlja se — cijeli se prolaz odbacuje i kreće iznova sa svježim slučajnim y. Zato je potpisivanje ovdje postupak s petljom.

Za ML-DSA-87 vrijedi γ1=219\gamma_1=2^{19} i β=τη=602=120\beta=\tau\cdot\eta=60\cdot2=120. Dolazi još i druga granica na donjim bitovima. U praksi je više prolaza normalno — potpisivanje je dakle postupak s petljom, a ne jednokratni korak.

Za verifikaciju je važno: upravo tu granicu preglednik kasnije provjerava. Potpis s prevelikim koeficijentima odbija se, čak i ako jednadžba vrijedi.


15. Zašto preglednik to može provjeriti

Preglednik čitatelja zna:

  • recenziju i time mm
  • javni ključ (ρ,t1)(\rho,\mathbf{t}_1)
  • potpis (c~,z,h)(\tilde c,\mathbf{z},\mathbf{h})

Ne zna s1\mathbf{s}_1. Veza koja ga ipak vodi dalje:

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.

A budući da vrijedi

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

nepoznati se As1A\mathbf{s}_1 može zamijeniti javnom vrijednošću:

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

To je središnja jednadžba — i ona kaže nešto važno: preglednik AyA\mathbf{y} rekonstruira ne točno, nego samo do na mali član cs2c\,\mathbf{s}_2.


16. Mini-primjer do kraja

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

Izvorni commitment bio je

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

Razlika iznosi

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

Dakle točno predviđeni mali član pogreške. Verifikator ne dobiva w\mathbf{w}, nego nešto što leži blizu w\mathbf{w}.

Upravo zato ML-DSA ne uspoređuje same vrijednosti, nego njihove gornje bitove. I upravo zato potpis dodatno sadrži vektor hintova h\mathbf{h}: on kompaktno javlja na kojim je mjestima zaokruživanje zbog malog člana pogreške prevalilo preko granice. Kod ML-DSA-87 dopušteno je najviše ω=75\omega=75 takvih naputaka. Oni ne odaju tajnu — samo popravljaju zaokruživanje.

Na kraju preglednik iznova izračuna izazov. Podudara li se,

cnovi=c,c_{\text{novi}}=c,

i leže li sve norme unutar granica, potpis je valjan.


17. Što se događa ako netko promijeni recenziju?

Pretpostavimo da netko s pristupom bazi podataka — pa i netko kod nas — promijeni tekst recenzije ili jedno od srca. Tada se mijenja barem jedna od dviju hash-vrijednosti u payloadu (h kod teksta, rh kod svakog polja zapisa):

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

Time se mijenja izazov:

cc.c\neq c'.

Postojeći je potpis, međutim, stvoren za stari izazov. Preglednik preračuna i utvrdi:

cnovicpotpisPotpis nije valjanc_{\text{novi}}\neq c_{\text{potpis}} \quad\Longrightarrow\quad \boxed{\text{Potpis nije valjan}}

Odlučujuća rečenica uz to: recenziju možemo obrisati, ali je ne možemo neopaženo izmijeniti. Na McGesundu ista provjera dodatno noću teče na poslužitelju preko cijelog fonda — recenzija koja tu provjeru ne prođe više ne ulazi u prosjek poduzeća.


18. Zašto nitko ne može izmisliti potpis?

Napadač zna A\mathbf{A} i t\mathbf{t}, ali ne i s1,s2\mathbf{s}_1,\mathbf{s}_2. Da bi sagradio valjan potpis, morao bi pronaći trojku (c~,z,h)(\tilde c,\mathbf{z},\mathbf{h}) koja

  • zadovoljava jednadžbu verifikacije i
  • poštuje granice normi i
  • odgovara izazovu koji proizlazi upravo iz tih vrijednosti.

To se u jezgri svodi na težak problem rešetke — konkretno na Module-SIS: pronaći kratka rješenja homogene jednadžbe modulo qq. Uvjet malenosti pritom nije ukras, nego sama težina zadatka. Bez njega bi rješenje bilo trivijalno.

javni podaci    tezˇak problem resˇetke\boxed{\text{javni podaci}\;\rightarrow\;\text{težak problem rešetke}}

19. Zašto „Module"?

Ta riječ opisuje strukturu između jednostavnih vektora i općih rešetki. Umjesto s pojedinačnim brojevima, ML-DSA radi s vektorima polinoma:

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

i s matricama od 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: dobiva se visoka dimenzija rešetke, ali se zadržava kompaktan, učinkovito izračunljiv prikaz. Sigurnost se da fino podesiti preko veličine matrice, bez mijenjanja prstena.


20. Zašto baš 87?

Tri se razine ne razlikuju u prstenu, nego u dimenzijama:

ParametarML-DSA-44ML-DSA-65ML-DSA-87
Veličina matrice (k,)(k,\ell)4×44\times46×56\times58×78\times7
Područje tajni η\eta242
Težina izazova τ\tau394960
Javni ključ1.312 B1.952 B2.592 B
Potpis2.420 B3.309 B4.627 B
NIST kategorija235

Vrijedi zamijetiti: ML-DSA-87 nije naprosto „ML-DSA-65, samo veći". Područje tajni η\eta vraća se sa 4 natrag na 2; sigurnost ovdje dolazi iz veće matrice, a ne iz većih koeficijenata. Riječ je o samostalnom, standardiziranom izboru parametara.

vecˊa matematicˇka strukturavecˊa sigurnosna rezerva\boxed{\text{veća matematička struktura}\rightarrow\text{veća sigurnosna rezerva}}

Cijena: 4.627 bajtova po potpisu — po pečatu koji se pohranjuje i pri provjeri isporučuje pregledniku. Zato na McGesundu uz ML-DSA-87 na izbor stoji i FALCON, kojemu je dovoljno 1.280 bajtova.


21. Fiat-Shamir: zašto radi bez sugovornika

Interaktivni bi dokaz tekao ovako:

  1. Servis za potpisivanje šalje commitment.
  2. Provjeritelj šalje slučajan izazov.
  3. Servis za potpisivanje odgovara.
  4. Provjeritelj preračuna.

Kod recenzije toga dijaloga nema — čitatelj dolazi mjesecima kasnije. Rješenje je Fiat-Shamirova transformacija: izazov se ne baca kockom, nego se uhashira iz samih podataka:

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

Time od dijaloga nastaje dokument. Servis za potpisivanje ne može si izazov birati jer bi za to morao kontrolirati hash.


22. Cijeli tijek

SERVIS ZA POTPISIVANJE (MCGESUND)PREGLEDNIK POSJETITELJAprivatni ključ s₁, s₂Payload m = {tvrtka, recenzija, h, rh, iat}hash μslučajan vektor ycommitment w = Ayizazov c = H(μ, w)z = y + c · s₁potpis (c, z, hintovi) + kidrecenzija + potpis + javni ključAz − c·t → gornji bitovi + hintoviponovno izračunati izazovponovno izračunati izazov = isporučeni?valjannevaljanodbaciti ako je z prevelik(rejection sampling)
Cijeli put jedne recenzije. Isprekidani povratni skok jest rejection sampling — uzima se toliko puta dok z ne bude dovoljno malen da o tajnom ključu ništa ne odaje.

23. Što McGesund konkretno radi s time

Tri se razine isprepliću:

Envelope. Svaka potpisana recenzija nosi Ed25519 potpis. To je obavezna varijanta — klasična, sićušna, nativno provjerljiva u svakom pregledniku.

Post-kvantni pečati. Uz nju se mogu priložiti jedan ili dva kvantno otporna potpisa. Koji, ovisi o tarifi:

Tarifadostupne razine potpisa
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 usporedno

Usporedna je varijanta namjerno redundantna. Pokaže li se jedna od dviju matematičkih obitelji — NTRU rešetke kod FALCON-a, Module rešetke kod ML-DSA — slabijom nego što se danas pretpostavlja, druga nosi dalje.

Vremensko sidro. Otisak ključa za potpisivanje sidri se preko OpenTimestampsa u jednom Bitcoin bloku. Time se ne dokazuje samo da je potpis pravi, nego i da je u određenom trenutku već postojao — a da pritom nitko ne mora vjerovati našem vremenskom žigu.

Sve se to provjerava u pregledniku čitatelja, preko WASM modula. Mi isporučujemo podatke; preračunava se na uređaju posjetitelja. Kad bismo sutra nestali s mreže, jednom preuzeta recenzija ostala bi provjerljiva.


24. ML-DSA i FALCON jedan uz drugoga

SvojstvoFALCON (FN-DSA)ML-DSA
Tipdigitalni potpisdigitalni potpis
Obitelj rešetkiNTRUModule-LWE / Module-SIS
PrstenZq[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
Osnovni mehanizamkratak vektor Gaussovim uzorkovanjemizazov-odgovor s prekidima
FFT / NTTFFT s pomičnim zarezom, sigurnosno kritičanNTT, samo aritmetika
Veličina potpisa (najviša razina)1.280 B4.627 B
Implementacijazahtjevna (pomični zarez)razmjerno izravna
Standardizacijapredviđena kao FIPS 206 (FN-DSA), još nije dovršenaFIPS 204, dovršena

Ukratko: ML-DSA je lakše ispravno implementirati i provjeriti, FALCON daje znatno kompaktnije potpise. U QR kodu nije nijedan od njih — ondje stoji jedino Ed25519 omotnica. Veličina potpisa zato se broji kod pohrane i isporuke, a robusnost kod implementacije. Zato nudimo oboje.


25. Jedna rečenica za kraj

ML-DSA iz kratkog tajnog vektora stvara odgovor na izazovuhashiran iz same recenzije — provjerljiv zasvakoga tko ima javni kljucˇ.\boxed{ \begin{array}{c} \text{ML-DSA iz kratkog tajnog vektora stvara odgovor na izazov}\\ \text{uhashiran iz same recenzije — provjerljiv za}\\ \text{svakoga tko ima javni ključ.} \end{array}}

Tko posjeduje tajni vektor, potpisuje u milisekundama. Tko ga ne posjeduje, morao bi riješiti problem rešetke u preko 14.000 dimenzija — pa i s kvantnim računalom.

Za čitatelja recenzije to naprosto znači: ne mora nam vjerovati. Može preračunati.