Allekirjoitusmenetelmä
Ed25519 matemaattisesti selitettynä
Allekirjoitus, joka liittyy jokaiseen McGesund-arvioon — käyrästä avaimeen ja siihen yhtälöön, jonka lukijan selain laskee uudelleen.
Päivitetty: 2026-09-07
1. Mistä tässä on kyse
Arvio McGesundissa ei ole tietokannan tekstikenttä, johon on vain uskottava. Se allekirjoitetaan digitaalisesti lähetyshetkellä, ja jokainen kävijä voi myöhemmin laskea allekirjoituksen uudelleen omassa selaimessaan.
Tähän allekirjoitukseen käytämme Ed25519-menetelmää. Toisin kuin FALCON ja ML-DSA, jotka voidaan asettaa sen rinnalle lisäleimoiksi, Ed25519 ei ole valinnainen: jokainen allekirjoitettu arvio kantaa sitä pakettitasosta ja lähetystavasta riippumatta.
Tärkeä huomautus aluksi:
Ed25519 ei ole salausmenetelmä. Arviotekstihän on tarkoitettu luettavaksi. Allekirjoitus ei todista salassapitoa vaan alkuperän ja eheyden.
2. Mitä tarkalleen allekirjoitetaan
Allekirjoitettavana ei ole leipäteksti vaan tiivis tietokohde, joka naulaa tekstin ja kaiken muun yksikäsitteisesti kiinni:
{
"v": 1,
"typ": "rev-comment",
"f": "<yritystunnus>",
"c": "<arviotunnus>",
"h": "<arviotekstin SHA-256>",
"rh": "<koko lähetystietueen SHA-256>",
"rv": 1,
"qh": "<QR-Envelopen SHA-256, vain QR-arvioissa>",
"kid": "<avaintunnus>",
"iat": 1757203200
}
Tämä kohde koodataan CBOR-muotoon. Juuri tämä tavujono — eikä sen yllä oleva siisti esitys — on viestimme . Allekirjoitus ja viesti kulkevat yhdessä kuoreen:
Luku on muotoversio. Enempää siinä ei ole — ei etenkään post-kvanttiallekirjoitusta: se on, mikäli sellainen on olemassa, tietueen yhteydessä eikä kuoressa.
3. Mitä allekirjoituksen on määrä saada aikaan
Yritysprofiilille saapuva lukija kohtaa kaksi kysymystä:
- Onko tämä arvio todella peräisin McGesund-järjestelmästä?
- Onko sitä muutettu jälkikäteen?
Sitä varten on avainpari:
- yksityinen avain — pysyy allekirjoituspalvelussa
- julkinen avain — saa olla kenellä tahansa, ja se osoitetaan payloadissa olevalla avaintunnuksella (
kid)
Allekirjoittaminen tapahtuu yksityisellä avaimella. Todentaminen tapahtuu julkisella — ja nimenomaan lukijan selaimessa, ei meidän palvelimellamme. Juuri tässä on ydin: tarkistus, jonka suoritamme itse ja jonka tuloksen ilmoitamme, ei olisi tarkistus vaan väite.
4. Miksi elliptinen käyrä?
Jokainen allekirjoitus tarvitsee laskutoimituksen, joka on yhteen suuntaan helppo ja toiseen käytännössä mahdoton. Ed25519:ssä se on skalaarikertolasku elliptisellä käyrällä:
Julkisen pisteen laskeminen salaisesta luvusta vie mikrosekunteja. Päättely pisteestä takaisin lukuun on diskreetin logaritmin ongelma — siihen ei tunneta menetelmää, joka tämän kokoluokan tapauksessa valmistuisi inhimillisessä ajassa.
Käytännön hyöty vanhempiin menetelmiin kuten RSA:han verrattuna on koko:
| julkinen avain | allekirjoitus | |
|---|---|---|
| RSA-3072 | 384 B | 384 B |
| Ed25519 | 32 B | 64 B |
Ja tämä vertailukelpoisella turvallisuustasolla. 64 tavua arviota kohti ei ole miljoonienkaan arvioiden kohdalla kokoluokka, jota tarvitsisi pohtia.
5. Käyrä edwards25519
Laskutoimitukset tehdään modulo alkuluvun:
Siitä nimi. Käyrä on kierretty Edwardsin käyrä:
”Piste” on lukupari joukosta , joka toteuttaa tämän yhtälön. Käyrää ei ole näkyvissä — seuraavan luvun piirros on havainnollistus reaalilukujen yli, ei kuva todellisesta laskuavaruudesta.
Mukaan tulee vielä kaksi suuretta:
- kiinteästi sovittu kantapiste ,
- pisteen virittämän aliryhmän kertaluku :
on alkuluku. Se tarkoittaa: kun pistettä lasketaan yhä uudelleen itseensä, käydään läpi täsmälleen eri pistettä ja päädytään sitten takaisin alkuun. Kaikki skalaarien laskutoimitukset tehdään siksi modulo ja kaikki koordinaattien laskutoimitukset modulo . Näiden kahden luvun sekoittaminen on klassinen aloittelijan virhe.
6. Pisteiden yhteenlasku
Kaksi pistettä yhdistetään kiinteällä kaavalla kolmanneksi:
Neutraalialkio on — piste, josta laskeminen alkaa.
Tällä kaavalla on ominaisuus, jota siitä ei näe ja joka on turvallisuuden kannalta tärkeämpi kuin mikään vakio: se on täydellinen. Se toimii kaikilla syötteillä ilman erikoistapauksia tilanteille ”molemmat pisteet samat” tai ”tulos on neutraalialkio”. Vanhemmilla Weierstrassin käyrillä nämä erikoistapaukset ovat olemassa, ja jokainen niistä on ohjelmassa oma haaransa — haara, jonka suoritusaika on mitattavissa. Se, joka mittaa allekirjoituksen keston, saa tällaisissa menetelmissä tietoa salaisesta avaimesta.
Täydelliset kaavat tarkoittavat: aina sama laskureitti, aina sama aika, ei mitään mitattavaa.
7. Skalaarikertolasku — yksisuuntainen katu
tarkoittaa: pisteen lisääminen itseensä täsmälleen kertaa. Kun on 253-bittinen, se olisi järjettömän paljon työtä — siksi kahdennetaan:
ja näistä välituloksista kootaan haluttu . Noin 253 kahdennusta riittää mille tahansa :lle. Se on tie eteenpäin.
Taaksepäin tätä oikotietä ei ole. Luvun määrittäminen pisteestä tarkoittaa diskreetin logaritmin ongelman ratkaisemista.
Todellisessa menetelmässä lasketaan modulo . Siellä ei ole ”vasenta” eikä ”oikeaa” eikä läheisyyttä: pisteistä ja tulee kaksi lukuparia, joilla ei ole mitään havaittavaa sukulaisuutta.
8. Allekirjoituspalvelun avainpari
Alussa on 32 satunnaista tavua, siemen (seed). Kaikki muu johdetaan siitä:
Ensimmäisestä puoliskosta syntyy salainen skalaari , ei kuitenkaan muuttumattomana. Kolme bittiä asetetaan tai nollataan — niin sanottu clamping:
- alimmat kolme bittiä nollataan: :sta tulee siten kahdeksan monikerta. Syynä on käyrän kofaktori 8 — koko pisteryhmä on kahdeksan kertaa niin suuri kuin kertalukua oleva aliryhmä. Kahdeksalla jaollinen päätyy taatusti oikeaan aliryhmään eikä paljasta mitään pienen kertaluvun pisteistä.
- ylin bitti nollataan ja toiseksi ylin asetetaan: :lla on siten aina sama bittipituus. Lyhyempi vaatisi vähemmän kahdennuksia — ja jälleen suoritusajasta olisi luettavissa jotakin.
Julkinen avain on tämän jälkeen yksinkertaisesti
tallennettuna 32 tavuna: -koordinaatti ja ylimmässä bitissä :n etumerkki. Todentaja laskee :n itse takaisin käyrän yhtälöstä — molemmat ratkaisut eroavat vain etumerkiltään, ja kumpaa tarkoitetaan, kertoo tuo yksi bitti.
Tiivistearvon toista puoliskoa, etuliitettä, ei tarvita avaimeen. Se otetaan käyttöön seuraavassa luvussa.
9. Miksi satunnaisuus ei tässä ole satunnaista
Jokainen tämän rakenteen allekirjoitus tarvitsee kertakäyttöisen arvon , jota kutsutaan usein nonceksi. Se ei saa koskaan toistua: se, jolla on kaksi allekirjoitusta samalla :llä, voi laskea salaisen avaimen ulos koulualgebralla.
Juuri tähän todelliset järjestelmät ovat kaatuneet. Tunnetuin tapaus on erään pelikonsolin allekirjoitusten todennus, jonka valmistaja käytti vuonna 2010 aina samaa noncea — yksityinen avain oli siten julkisesti rekonstruoitavissa.
Ed25519 ratkaisee asian siten, että se ei käytä satunnaisuutta lainkaan:
Nonce riippuu salaisesta etuliitteestä ja viestistä. Siitä seuraa kaksi asiaa:
- Kaksi eri arviota tuottavat ylivoimaisella todennäköisyydellä eri :t — toistotapausta ei synny.
- Sama arvio tuottaa aina saman allekirjoituksen. Allekirjoitustapahtuma on siten jäljitettävissä, eikä huono satunnaislukugeneraattori palvelimella voi rikkoa mitään, koska sellaista ei tarvita.
Arviointiportaalille, joka tekee paljon allekirjoituksia päivässä, tämä ei ole akateeminen etu. Se on ero toteamusten ”virhe satunnaisuuden lähteessä olisi kohtalokas” ja ”ei ole satunnaisuuden lähdettä, joka voisi pettää” välillä.
10. Allekirjoittaminen
Kolme riviä, ei enempää:
Allekirjoitus on pari
32 tavua pisteelle ja 32 tavua luvulle — yhteensä 64 tavua.
Huomionarvoinen on toinen rivi: lukuun menevät , julkinen avain ja viesti. Se, että tiivistetään mukaan, ei ole koriste — se estää hyökkäykset, joissa allekirjoitus tulkitaan uudelleen toiselle avaimelle.
11. Todentaminen
Lukijan selain tuntee arvion , allekirjoituksen ja julkisen avaimen . Se laskee :n uudelleen ja tarkistaa yhden ainoan yhtälön:
Jos se pitää paikkansa, allekirjoitus on kelvollinen. RFC 8032 sallii lisäksi kofaktorilla kerrotun muodon , joka käsittelee joitakin reunatapauksia sallivammin.
Yhdeltäkään palvelimelta ei kysytä mitään, minkään palvelun ei tarvitse olla käytettävissä. Julkinen avain riittää.
12. Miksi yhtälö menee tasan
Sijoittaminen riittää:
Koko temppu on keskimmäisessä muunnoksessa: skalaarikertolasku sopii yhteen yhteenlaskun kanssa. Se, joka tuntee :n, voi laskea :n, joka toteuttaa yhtälön. Sen, joka ei tunne :ta, pitäisi löytää itse valitsemalleen :lle sopiva — ja se tarkoittaa diskreetin logaritmin ratkaisemista.
13. Täysin läpi laskettu miniesimerkki
Todellisilla luvuilla ei ole mitään laskettavaa — 253-bittisiä arvoja ei voi tarkistaa päässä. Siksi sama menetelmä pienenpienessä ryhmässä, jossa jokainen askel on seurattavissa taskulaskimella.
Askel 1: Ryhmä
Laskemme jakojäännöksillä modulo ja otamme . Pätee
joten virittää kertalukua olevan aliryhmän. Potenssit ovat:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 4 | 8 | 16 | 9 | 18 | 13 | 3 | 6 | 12 | 1 |
ottaa kantapisteen roolin ja kertolasku pisteiden yhteenlaskun roolin. Skalaarit lasketaan modulo , arvot modulo .
Askel 2: Avainpari
Olkoon salainen . Silloin
saa olla kaikkien tiedossa.
Askel 3: Nonce ja commitment
Olkoon etuliitteestä ja arviosta tuloksena . Siitä:
Askel 4: Haaste
Olkoon tiiviste :stä, :sta ja arviosta
Askel 5: Allekirjoitus
Allekirjoitus on pari .
Askel 6: Selain tarkistaa
Se laskee molemmat puolet. Vasen:
Oikea, kun :
Molemmat puolet antavat :
Askel 7: Joku muuttaa arviotekstiä
Teksti menee tiivisteeseen, joten haaste muuttuu — sanotaan arvoon . Allekirjoitus pysyy muuttumattomana arvossa , mutta oikea puoli ei. Kun :
Voimme poistaa arvion. Muuttaa emme voi sitä ilman, että se huomataan.
Rehellisyyshuomautus esimerkistä
Tässä laskettiin multiplikatiivisessa ryhmässä modulo , ei käyrällä: vastaa lauseketta ja tulo pisteiden yhteenlaskua . Rakenne on sama, ja juuri siitä on kyse. Erilaisia ovat suuruusluokat: verrattuna arvoon , eikä siellä avainta löydä kokeilemalla yhtätoista vaihtoehtoa.
14. Mitä tapahtuu, jos joku muuttaa arviota
Oletetaan, että joku, jolla on pääsy tietokantaan — myös joku meiltä — muuttaa arviotekstiä tai yhtä sydämistä. Silloin tietue muuttuu ja sen myötä vähintään toinen payloadin tiivistearvoista h ja rh. Siten muuttuu , siten haaste ja siten todennusyhtälön oikea puoli. Vanha allekirjoitus ei enää sovi.
Ratkaiseva lause tähän: voimme poistaa arvion, mutta emme voi muuttaa sitä huomaamatta. McGesundissa sama tarkistus ajetaan lisäksi öisin palvelinpuolella koko aineistolle — arvio, joka ei sitä läpäise, ei enää vaikuta yrityksen keskiarvoon.
15. Miksi hyökkääjä epäonnistuu
Hän tuntee julkisen avaimen , kantapisteen , käyrän ja jokaisen tähän mennessä annetun allekirjoituksen. Häneltä puuttuu .
Paras tunnettu klassinen hyökkäys diskreetin logaritmin ongelmaan kertalukua olevassa ryhmässä vaatii noin askelta. Arvolla se on noin
operaatiota. Vertailun vuoksi: jopa kone, joka suoriutuu miljardista miljardista () askeleesta sekunnissa, tarvitsisi siihen moninkertaisen ajan universumin ikään verrattuna.
Väärentäminen ilman avainta tarkoittaisi sopivan :n löytämistä itse valitulle :lle — sama tehtävä toisessa valeasussa.
16. Miksi Ed25519 eikä ECDSA
Molemmat perustuvat samaan ongelmaan. Ero on kaikessa siinä, mitä ympärillä tapahtuu:
| ECDSA (NIST-käyrät) | Ed25519 | |
|---|---|---|
| Nonce | vaatii tuoretta satunnaisuutta | deterministinen etuliitteestä ja viestistä |
| Kaavat | erikoistapauksia, datasta riippuvia haaroja | täydelliset, yksi laskureitti |
| Käyrän parametrit | vakioiden alkuperää ei ole koskaan täysin selitetty | valittu jäljitettävin perustein |
| Allekirjoituksen koko | 64–72 B, vaihteleva koodaus | kiinteä 64 B |
| Selaimessa | saatavilla jo pitkään | natiivisti vuodesta 2023/2024, muutoin JS-kirjastona |
Meille nonce oli ratkaiseva peruste. Arviointiportaali allekirjoittaa usein ja automatisoidusti; menetelmä, jossa yksi ainoa heikko satunnaisarvo paljastaa avaimen, on siihen väärä valinta.
17. Mitä Ed25519 ei tee
Ed25519 perustuu diskreettiin logaritmiin — ja juuri tämän ongelman riittävän suuri kvanttitietokone ratkaisee tehokkaasti Shorin algoritmilla. Onko sellaisia koneita ja milloin, on avoin kysymys. Arviolle, jonka on määrä olla vielä kymmenen vuoden kuluttua todennettavissa, se on siitä huolimatta kysymys, johon on vastattava tänään.
Siksi Ed25519-allekirjoituksen rinnalle voi tulla kvanttiresistentti leima:
- FALCON (FN-DSA) — tiiviit allekirjoitukset NTRU-hiloista
- ML-DSA-87 (FIPS 204) — valmis NIST-standardi
Kumpikaan ei korvaa Ed25519:ää, vaan asettuu sen rinnalle. Jos toinen menetelmistä murtuu, toinen kantaa edelleen.
18. Kulku kuvana
19. Mitä McGesund tekee tällä käytännössä
Envelope. Jokainen allekirjoitettu arvio kantaa MCG1:-kuorta, jossa ovat muotoversio, payload ja Ed25519-allekirjoitus. Payloadin kid kertoo, mistä avaimesta on kyse; vastaavan julkisen avaimen palvelin luovuttaa pyynnöstä — se on julkinen, siinä ei ole mitään suojattavaa.
Todennus selaimessa. Chrome ja Firefox osaavat Ed25519:n natiivisti WebCrypto-rajapinnan kautta vuodesta 2023/2024. Safari ei — siellä kutsu heittää poikkeuksen sen sijaan, että se todentaisi. Siksi todennuskoodimme turvautuu puhtaaseen JavaScript-toteutukseen, joka ladataan vain sinne, missä sitä tarvitaan. Allekirjoituksen todennus menee siten läpi jokaisessa selaimessa, ja nimenomaan lukijan laitteella.
Aikaankkuri. Allekirjoitusavaimen sormenjälki ankkuroidaan OpenTimestampsin kautta Bitcoin-lohkoon. Siten voidaan osoittaa paitsi se, että allekirjoitus on aito, myös se, että avain oli olemassa jo tiettynä ajankohtana — ilman että kenenkään täytyisi uskoa meidän aikaleimaamme.
Sisällön sitominen. Payload kantaa kenttää rh, tiivistettä koko lähetystietueesta: teksti, sydämet, sijaintitila, käynnin syytä koskevat tiedot ja alkuperä. Ed25519-allekirjoitus sitoo siten paitsi tekstin, myös kaiken sen, mitä arvion vieressä näytetään.
20. Yksi lause mukaan otettavaksi
Se, jolla on salainen skalaari, allekirjoittaa mikrosekunneissa. Sen, jolla sitä ei ole, olisi ratkaistava diskreetti logaritmi ryhmässä, jossa on noin alkiota.
Arvion lukijalle se tarkoittaa yksinkertaisesti: hänen ei tarvitse uskoa meitä. Hän voi laskea itse.