Podpisni postopek
Ed25519 matematično pojasnjen
Podpis, ki spremlja vsako oceno na McGesund — od krivulje prek ključa do enačbe, ki jo preračuna brskalnik bralca.
Stanje: 2026-09-07
1. Za kaj gre
Ocena na McGesund ni besedilno polje v podatkovni bazi, ki mu je treba verjeti. Ob oddaji je digitalno podpisana in vsak obiskovalec lahko ta podpis pozneje preračuna v svojem brskalniku.
Za ta podpis uporabljamo Ed25519. Za razliko od FALCON in ML-DSA, ki ju je mogoče dodatno priložiti kot žig, Ed25519 ni izbirna možnost: vsaka podpisana ocena ga nosi, ne glede na paket in način oddaje.
Pomembno takoj na začetku:
Ed25519 ni šifriranje. Besedilo ocene naj bo vendar prebrano. Podpis ne dokazuje tajnosti, temveč izvor in nespremenjenost.
2. Kaj natančno se podpiše
Ne podpiše se tekoče besedilo, temveč kompakten podatkovni objekt, ki besedilo in vse ostalo enolično pribije:
{
"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>",
"kid": "<ID ključa>",
"iat": 1757203200
}
Ta objekt se kodira v CBOR. To zaporedje bajtov — ne njegov lični prikaz zgoraj — je naše sporočilo . Podpis in sporočilo skupaj potujeta v ovojnici:
Število je različica formata. Več v njej ni — zlasti ne postkvantnega podpisa: ta leži, če obstaja, ob zapisu in ne v ovojnici.
3. Kaj naj podpis doseže
Bralec, ki pride na profil podjetja, stoji pred dvema vprašanjema:
- Ali ta ocena res izvira iz sistema McGesund?
- Ali je bila naknadno spremenjena?
Za to obstaja par ključev:
- zasebni ključ — ostane v podpisni storitvi
- javni ključ — ima ga lahko vsak, naslovi se prek ID ključa (
kid) v payloadu
Podpisuje se z zasebnim ključem. Preverja se z javnim — in sicer v brskalniku bralca, ne na našem strežniku. To je bistvo: preverjanje, ki bi ga izvedli sami in katerega rezultat bi sporočili, ne bi bilo preverjanje, temveč trditev.
4. Zakaj eliptična krivulja?
Vsak podpis potrebuje računsko operacijo, ki je v eno smer lahka in v drugo praktično nemogoča. Pri Ed25519 je to skalarno množenje na eliptični krivulji:
Izračun javne točke iz skrivnega števila traja mikrosekunde. Sklepanje iz nazaj na je problem diskretnega logaritma — zanj ni znanega postopka, ki bi se pri tej velikosti končal v človeških časovnih okvirih.
Praktična prednost pred starejšimi postopki, kot je RSA, je velikost:
| javni ključ | podpis | |
|---|---|---|
| RSA-3072 | 384 B | 384 B |
| Ed25519 | 32 B | 64 B |
Pri primerljivi ravni varnosti. 64 bajtov na oceno tudi pri milijonih ocen ni velikost, o kateri bi bilo treba razmišljati.
5. Krivulja edwards25519
Računa se po modulu praštevila:
Od tod ime. Krivulja je zavita Edwardsova krivulja:
„Točka" je par števil iz , ki izpolnjuje to enačbo. Nobene krivulje ni videti — risba v naslednjem razdelku je nazorni pripomoček nad realnimi števili, ne slika dejanskega računskega prostora.
Dodati je treba še dve količini:
- trdno dogovorjeno bazno točko ,
- red podgrupe, ki jo generira :
je praštevilo. To pomeni: če vedno znova prištevamo samemu sebi, preidemo natanko različnih točk in nato spet pristanemo na začetku. Vsi izračuni s skalarji zato tečejo po modulu , vsi izračuni s koordinatami po modulu . Zamenjava teh dveh števil je klasična napaka začetnikov.
6. Seštevanje točk
Dve točki se po ustaljeni formuli združita v tretjo:
Nevtralni element je — točka, v kateri se računanje začne.
Ta formula ima lastnost, ki ji ni videti in ki je za varnost pomembnejša od vsake konstante: je popolna. Deluje za vse vhode, brez posebnih primerov za „obe točki sta enaki" ali „rezultat je nevtralni element". Pri starejših Weierstrassovih krivuljah ti posebni primeri obstajajo in vsak od njih je veja v programu — veja, katere čas izvajanja je merljiv. Kdor meri, koliko traja podpis, pri takih postopkih izve nekaj o skrivnem ključu.
Popolne formule pomenijo: vedno ista računska pot, vedno isti čas, nič za merjenje.
7. Skalarno množenje — enosmerna ulica
pomeni: natanko -krat prišteti samemu sebi. Pri z 253 biti bi bilo to nesmiselno veliko dela — zato se podvaja:
in iz teh vmesnih rezultatov se sestavi želeni . Približno 253 podvojitev zadošča za vsak . To je pot naprej.
Nazaj te bližnjice ni. Določiti število iz točke pomeni rešiti problem diskretnega logaritma.
V resničnem postopku se računa po modulu . Tam ni ne „levo" ne „desno" in ne bližine: iz in nastaneta dva para števil brez vsakršne prepoznavne sorodnosti.
8. Par ključev podpisne storitve
Na začetku je 32 naključnih bajtov, seme. Vse nadaljnje se izpelje iz njega:
Iz prve polovice nastane skrivni skalar , vendar ne nespremenjen. Trije biti se postavijo oziroma zbrišejo — tako imenovani clamping:
- spodnji trije biti se postavijo na nič: s tem postane večkratnik števila 8. Razlog je kofaktor 8 krivulje — polna skupina točk je osemkrat večja od podgrupe reda . Z 8 deljiv zanesljivo pristane v pravi podgrupi in o točkah majhnega reda ne izda ničesar.
- najvišji bit se zbriše, drugi najvišji se postavi: ima s tem vedno enako bitno dolžino. Krajši bi potreboval manj podvojitev — in spet bi bilo mogoče nekaj razbrati iz časa izvajanja.
Javni ključ je nato preprosto
shranjen kot 32 bajtov: koordinata in v najvišjem bitu predznak . Vrednost preveritelj sam izračuna nazaj iz enačbe krivulje — obe rešitvi se razlikujeta le v predznaku, in kateri je mišljena, pove ta en bit.
Druga polovica zgoščene vrednosti, predpona, za ključ ni potrebna. Uporabi se v naslednjem razdelku.
9. Zakaj naključje tu ni naključje
Vsak podpis te vrste potrebuje enkratno vrednost , pogosto imenovano nonce. Nikoli se ne sme ponoviti: kdor ima dva podpisa z istim , lahko skrivni ključ izračuna s šolsko algebro.
Prav na tem so resnični sistemi propadli. Najbolj znan primer je preverjanje podpisov na igralni konzoli, katere proizvajalec je leta 2010 vedno uporabljal isti nonce — zasebni ključ je bil s tem javno rekonstruktiven.
Ed25519 to reši tako, da sploh ne uporablja naključja:
Nonce je odvisen od skrivne predpone in od sporočila. Iz tega sledi dvoje:
- Dve različni oceni dasta s prevladujočo verjetnostjo različna — primer ponovitve ne nastopi.
- Ista ocena vedno da isti podpis. Postopek podpisovanja je s tem izsledljiv, slab generator naključnih števil na strežniku pa ne more ničesar pokvariti, ker ga ni treba uporabiti.
Za ocenjevalni portal z veliko podpisi na dan to ni akademska prednost. To je razlika med „napaka v viru naključja bi bila usodna" in „vira naključja, ki bi lahko odpovedal, sploh ni".
10. Podpisovanje
Tri vrstice, več ni:
Podpis je par
32 bajtov za točko , 32 bajtov za število — skupaj 64 bajtov.
Vredna pozornosti je druga vrstica: v vstopajo , javni ključ in sporočilo. Da se sozgošča, ni okrasek — preprečuje napade, pri katerih se podpis prevesi na drug ključ.
11. Preverjanje
Brskalnik bralca pozna: oceno , podpis in javni ključ . Na novo izračuna in preveri eno samo enačbo:
Če drži, je podpis veljaven. RFC 8032 dodatno dovoljuje s kofaktorjem pomnoženo različico , ki nekatere robne primere obravnava velikodušneje.
Nobenega strežnika ni treba vprašati, nobena storitev ne rabi biti dosegljiva. Javni ključ zadošča.
12. Zakaj enačba izide
Vstavljanje zadošča:
Ves trik tiči v srednji preoblikovi: skalarno množenje se ujema s seštevanjem. Kdor pozna , lahko izračuna , ki enačbo izpolnjuje. Kdor ne pozna, bi moral k sam izbranemu najti ustrezen — in to pomeni rešiti diskretni logaritem.
13. V celoti izračunan mini primer
Z resničnimi števili ni ničesar za preverjanje — 253-bitnih vrednosti ni mogoče preveriti na pamet. Zato isti postopek v drobceni skupini, v kateri je vsak korak izsledljiv z žepnim računalom.
Korak 1: Skupina
Računamo z ostanki po modulu in vzamemo . Velja
torej generira podgrupo reda . Potence so:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 4 | 8 | 16 | 9 | 18 | 13 | 3 | 6 | 12 | 1 |
prevzame vlogo bazne točke , množenje pa vlogo seštevanja točk. Skalarji se računajo po modulu , vrednosti po modulu .
Korak 2: Par ključev
Naj bo skrivni . Potem je
sme vedeti vsak.
Korak 3: Nonce in commitment
Iz predpone in ocene naj sledi . Iz tega:
Korak 4: Izziv
Naj zgoščena vrednost prek , in ocene da
Korak 5: Podpis
Podpis je par .
Korak 6: Brskalnik preverja
Izračuna obe strani. Levo:
Desno, z :
Obe strani dasta :
Korak 7: Nekdo spremeni besedilo ocene
Besedilo vstopa v zgoščeno vrednost, torej se spremeni izziv — recimo na . Podpis ostane nespremenjen pri , desna stran pa ne. Z :
Oceno lahko izbrišemo. Spremeniti je ne moremo, ne da bi to opazili.
Pošteno opozorilo k primeru
Računali smo v multiplikativni grupi po modulu , ne na krivulji: predstavlja , produkt pa seštevanje točk . Struktura je ista, in prav za to gre. Različni so velikostni razredi: nasproti , in tam ključa ni mogoče najti s preizkušanjem enajstih možnosti.
14. 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 zapis in s tem vsaj ena od zgoščenih vrednosti h in rh v payloadu. S tem se spremeni , s tem izziv , s tem desna stran preverjalne enačbe. Stari podpis se ne ujema več.
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 ga ne prestane, ne šteje več v povprečje podjetja.
15. Zakaj napadalec propade
Pozna javni ključ , bazno točko , krivuljo in vsak doslej izdani podpis. Manjka mu .
Najboljši znani klasični napad na problem diskretnega logaritma v skupini reda potrebuje približno korakov. Pri je to približno
operacij. Za primerjavo: tudi stroj, ki zmore milijardo milijard () korakov na sekundo, bi za to potreboval večkratnik starosti vesolja.
Ponarejanje brez ključa bi pomenilo k sam izbranemu najti ustrezen — ista naloga v drugačni preobleki.
16. Zakaj Ed25519 in ne ECDSA
Oba temeljita na istem problemu. Razlika je v vsem, kar se dogaja okoli:
| ECDSA (krivulje NIST) | Ed25519 | |
|---|---|---|
| Nonce | potrebno sveže naključje | determinističen iz predpone in sporočila |
| Formule | posebni primeri, od podatkov odvisne veje | popolne, ena računska pot |
| Parametri krivulje | izvor konstant nikoli v celoti pojasnjen | izbrani po izsledljivih merilih |
| Velikost podpisa | 64–72 B, spremenljivo kodiranje | fiksno 64 B |
| V brskalniku | na voljo že dolgo | od 2023/2024 izvorno, sicer kot knjižnica JS |
Za nas je bil nonce odločilni argument. Ocenjevalni portal podpisuje pogosto in avtomatizirano; postopek, pri katerem ena sama šibka naključna vrednost izda ključ, je za to napačna izbira.
17. Česa Ed25519 ne zmore
Ed25519 temelji na diskretnem logaritmu — in prav ta problem dovolj velik kvantni računalnik učinkovito reši s Shorovim algoritmom. Ali in kdaj bodo taki stroji obstajali, je odprto. Za oceno, ki naj bo preverljiva še čez deset let, je to kljub temu vprašanje, na katero je treba odgovoriti danes.
Zato lahko ob podpis Ed25519 stopi kvantno odporen žig:
- FALCON (FN-DSA) — kompaktni podpisi iz mrež NTRU
- ML-DSA-87 (FIPS 204) — dokončani standard NIST
Nobeden ne nadomešča Ed25519, oba se položita zraven. Če eden od postopkov pade, drugi nosi naprej.
18. Potek v sliki
19. Kaj McGesund konkretno počne s tem
Ovojnica. Vsaka podpisana ocena nosi ovojnico MCG1: z različico formata, payloadom in podpisom Ed25519. Vrednost kid v payloadu pove, kateri ključ je mišljen; pripadajoči javni ključ strežnik izda na zahtevo — je javen, na njem ni ničesar za zaščititi.
Preverjanje v brskalniku. Chrome in Firefox zmoreta Ed25519 od leta 2023/2024 izvorno prek vmesnika WebCrypto. Safari ne — tam klic namesto preverjanja vrže napako. Zato naša preverjalna koda pade nazaj na čisto implementacijo v JavaScriptu, ki se naloži samo tam, kjer je potrebna. Preverjanje podpisa s tem uspe v vsakem brskalniku, in sicer na napravi bralca.
Č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 ključ v določenem trenutku že obstajal — ne da bi moral kdo verjeti našemu časovnemu žigu.
Vezava na vsebino. Payload nosi rh, zgoščeno vrednost celotnega zapisa oddaje: besedila, src, geo statusa, navedb o povodu in izvora. Podpis Ed25519 s tem veže ne le besedilo, temveč vse, kar je prikazano ob oceni.
20. En stavek za s seboj
Kdor ima skrivni skalar, podpiše v mikrosekundah. Kdor ga nima, bi moral rešiti diskretni logaritem v skupini z okoli elementi.
Za bralca ocene to preprosto pomeni: ni nam treba verjeti. Lahko preračuna sam.