Procedimenti di firma
Ed25519 spiegato matematicamente
La firma che accompagna ogni recensione di McGesund — dalla curva alla chiave, fino all'equazione che il browser del lettore ricalcola.
Aggiornato: 2026-09-07
1. Di che cosa si tratta
Una recensione su McGesund non è un campo di testo in una banca dati a cui bisogna semplicemente credere. Al momento dell'invio viene firmata digitalmente, e ogni visitatore può ricalcolare questa firma in seguito nel proprio browser.
Per questa firma utilizziamo Ed25519. A differenza di FALCON e ML-DSA, che possono essere aggiunti a fianco come timbri ulteriori, Ed25519 non è un'opzione: ogni recensione firmata la porta con sé, indipendentemente dal piano tariffario e dalla via di invio.
Una precisazione preliminare:
Ed25519 non è una cifratura. Il testo della recensione è fatto proprio per essere letto. La firma non dimostra la riservatezza, bensì origine e integrità.
2. Che cosa viene firmato esattamente
Non viene firmato il testo discorsivo, bensì un oggetto dati compatto che fissa in modo univoco il testo e tutto il resto:
{
"v": 1,
"typ": "rev-comment",
"f": "<ID azienda>",
"c": "<ID recensione>",
"h": "<SHA-256 del testo della recensione>",
"rh": "<SHA-256 dell'intero record inviato>",
"rv": 1,
"qh": "<SHA-256 dell'envelope QR, solo per recensioni via QR>",
"kid": "<ID chiave>",
"iat": 1757203200
}
Questo oggetto viene codificato in CBOR. Questa sequenza di byte — non la sua gradevole rappresentazione qui sopra — è il nostro messaggio . Firma e messaggio finiscono insieme in una busta:
Il è la versione del formato. Non vi è contenuto altro — in particolare nessuna firma post-quantistica: quella, se esiste, si trova accanto al record e non nella busta.
3. Che cosa deve garantire la firma
Un lettore che arriva sul profilo di un'azienda si trova davanti a due domande:
- Questa recensione proviene davvero dal sistema McGesund?
- È stata modificata in un secondo momento?
A tal fine esiste una coppia di chiavi:
- una chiave privata — resta nel servizio di firma
- una chiave pubblica — può averla chiunque, viene indirizzata tramite l'ID chiave (
kid) nel payload
Si firma con la chiave privata. Si verifica con quella pubblica — e precisamente nel browser del lettore, non sul nostro server. È questo il punto: una verifica che eseguissimo noi stessi e il cui esito comunicassimo noi non sarebbe una verifica, ma un'affermazione.
4. Perché una curva ellittica?
Ogni firma ha bisogno di un calcolo facile in una direzione e praticamente impossibile nell'altra. In Ed25519 è la moltiplicazione scalare su una curva ellittica:
Calcolare il punto pubblico a partire dal numero segreto costa microsecondi. Risalire da ad è il problema del logaritmo discreto — e per esso non si conosce alcun procedimento che, a queste dimensioni, arrivi in fondo in tempi umani.
Il vantaggio pratico rispetto a procedimenti più datati come RSA sta nelle dimensioni:
| chiave pubblica | firma | |
|---|---|---|
| RSA-3072 | 384 B | 384 B |
| Ed25519 | 32 B | 64 B |
A parità di livello di sicurezza. 64 byte per recensione non sono una grandezza su cui riflettere, nemmeno con milioni di recensioni.
5. La curva edwards25519
Si calcola modulo un numero primo:
Da qui il nome. La curva è una curva di Edwards ritorta:
Un «punto» è una coppia di numeri presi da che soddisfa questa equazione. Non c'è alcuna curva da vedere — il disegno nella sezione successiva è un ausilio visivo sui numeri reali, non un'immagine dello spazio di calcolo effettivo.
Si aggiungono altre due grandezze:
- un punto base fissato per convenzione,
- l'ordine del sottogruppo generato da :
è primo. Ciò significa: sommando ripetutamente a se stesso si percorrono esattamente punti diversi e poi si torna al punto di partenza. Tutti i calcoli con gli scalari avvengono perciò modulo , tutti quelli con le coordinate modulo . Confondere questi due numeri è il classico errore da principianti.
6. Sommare punti
Due punti vengono combinati in un terzo secondo una formula fissa:
L'elemento neutro è — il punto in cui il calcolo prende avvio.
Questa formula ha una proprietà che a prima vista non si nota e che per la sicurezza conta più di qualsiasi costante: è completa. Funziona per tutti gli ingressi, senza casi particolari per «i due punti coincidono» o «il risultato è l'elemento neutro». Nelle più datate curve di Weierstrass questi casi particolari esistono, e ciascuno di essi è una diramazione nel programma — una diramazione il cui tempo di esecuzione è misurabile. Chi misura quanto dura una firma, con procedimenti simili apprende qualcosa sulla chiave segreta.
Formule complete significano: sempre lo stesso percorso di calcolo, sempre lo stesso tempo, nulla da misurare.
7. Moltiplicazione scalare — la strada a senso unico
significa: sommare esattamente volte a se stesso. Con un da 253 bit sarebbe una mole di lavoro insensata — perciò si raddoppia:
e da questi risultati intermedi si compone l' desiderato. Circa 253 raddoppi bastano per qualsiasi . Questa è la strada in avanti.
All'indietro questa scorciatoia non esiste. Determinare il numero a partire dal punto significa risolvere il problema del logaritmo discreto.
Nel procedimento reale si calcola modulo . Lì non esiste alcuna «sinistra», alcuna «destra» e alcuna vicinanza: da e nascono due coppie di numeri senza alcuna parentela riconoscibile.
8. La coppia di chiavi del servizio di firma
All'inizio ci sono 32 byte casuali, il seed. Tutto il resto ne viene derivato:
Dalla prima metà nasce lo scalare segreto , però non inalterato. Tre bit vengono impostati o azzerati — il cosiddetto clamping:
- i tre bit più bassi vengono posti a zero: diventa così un multiplo di 8. Il motivo è il cofattore 8 della curva — il gruppo completo dei punti è otto volte più grande del sottogruppo di ordine . Un divisibile per 8 finisce con certezza nel sottogruppo giusto e non rivela nulla sui punti di ordine piccolo.
- il bit più alto viene azzerato, il penultimo impostato: ha così sempre la stessa lunghezza in bit. Un più corto richiederebbe meno raddoppi — e di nuovo dal tempo di esecuzione si potrebbe leggere qualcosa.
La chiave pubblica è poi semplicemente
memorizzata su 32 byte: la coordinata e, nel bit più alto, il segno di . La il verificatore se la ricava da sé dall'equazione della curva — le due soluzioni differiscono solo per il segno, e quale sia quella giusta lo dice questo singolo bit.
La seconda metà del valore hash, il prefisso, non serve per la chiave. Entra in gioco nella sezione successiva.
9. Perché qui il caso non è casuale
Ogni firma di questo tipo ha bisogno di un valore irripetibile , spesso chiamato nonce. Non deve mai ripetersi: chi possiede due firme con lo stesso può ricavare la chiave segreta con l'algebra delle superiori.
È esattamente su questo che sono naufragati sistemi reali. Il caso più noto è la verifica delle firme di una console per videogiochi, il cui produttore nel 2010 usava sempre lo stesso nonce — la chiave privata era così ricostruibile pubblicamente.
Ed25519 risolve il problema non usando affatto il caso:
Il nonce dipende dal prefisso segreto e dal messaggio. Da ciò discendono due conseguenze:
- Due recensioni diverse danno, con probabilità schiacciante, diversi — il caso della ripetizione non si verifica.
- La stessa recensione dà sempre la stessa firma. Un'operazione di firma è così ripercorribile, e un cattivo generatore di numeri casuali sul server non può rovinare nulla, perché non ne serve alcuno.
Per un portale di recensioni con molte firme al giorno questo non è un vantaggio accademico. È la differenza tra «un errore nella sorgente di casualità sarebbe fatale» e «non esiste alcuna sorgente di casualità che possa venire meno».
10. Firmare
Tre righe, nulla di più:
La firma è la coppia
32 byte per il punto , 32 byte per il numero — in tutto 64 byte.
Degna di nota è la seconda riga: in entrano , la chiave pubblica e il messaggio. Che venga incluso nell'hash non è un accessorio — impedisce attacchi in cui una firma viene reinterpretata come relativa a un'altra chiave.
11. Verificare
Il browser del lettore conosce: la recensione , la firma e la chiave pubblica . Ricalcola e verifica una sola equazione:
Se torna, la firma è valida. RFC 8032 consente inoltre la versione moltiplicata per il cofattore , che tratta con più larghezza alcuni casi limite.
Non viene interrogato alcun server, nessun servizio deve essere disponibile. Basta la chiave pubblica.
12. Perché l'equazione torna
Basta sostituire:
Tutto il trucco sta nel passaggio centrale: la moltiplicazione scalare è compatibile con l'addizione. Chi conosce può calcolare un che soddisfa l'equazione. Chi non conosce dovrebbe trovare, per un scelto da sé, un adeguato — e ciò significa risolvere il logaritmo discreto.
13. Un mini-esempio calcolato per intero
Con i numeri veri non c'è nulla da ricalcolare — valori da 253 bit non si verificano a mente. Perciò lo stesso procedimento in un gruppo minuscolo, in cui ogni passo è verificabile con la calcolatrice.
Passo 1: il gruppo
Calcoliamo con i resti modulo e prendiamo . Vale
genera quindi un sottogruppo di ordine . Le potenze sono:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 4 | 8 | 16 | 9 | 18 | 13 | 3 | 6 | 12 | 1 |
assume il ruolo del punto base , la moltiplicazione quello dell'addizione di punti. Gli scalari si calcolano modulo , i valori modulo .
Passo 2: la coppia di chiavi
Sia il segreto. Allora
può saperlo chiunque.
Passo 3: nonce e commitment
Dal prefisso e dalla recensione risulti . Da cui:
Passo 4: la challenge
L'hash su , e la recensione fornisca
Passo 5: la firma
La firma è la coppia .
Passo 6: il browser verifica
Calcola entrambi i membri. A sinistra:
A destra, con :
Entrambi i membri danno :
Passo 7: qualcuno modifica il testo della recensione
Il testo entra nell'hash, quindi cambia la challenge — poniamo che diventi . La firma resta invariata a , il membro destro invece no. Con :
Possiamo cancellare una recensione. Modificarla senza che si noti, no.
Nota di trasparenza sull'esempio
Qui si è calcolato nel gruppo moltiplicativo modulo , non su una curva: sta per , il prodotto per l'addizione di punti . La struttura è la stessa, ed è esattamente questo che conta. Diversi sono gli ordini di grandezza: contro , e lì la chiave non si trova provando le undici possibilità.
14. Che cosa succede se qualcuno modifica la recensione
Supponiamo che qualcuno con accesso alla banca dati — anche qualcuno da noi — modifichi il testo della recensione o uno dei cuori. Allora cambia il record e con esso almeno uno dei due valori hash h e rh nel payload. Con ciò cambia , quindi la challenge , quindi il membro destro dell'equazione di verifica. La vecchia firma non torna più.
La frase decisiva al riguardo: possiamo cancellare una recensione, ma non possiamo modificarla inosservati. In McGesund la stessa verifica gira inoltre ogni notte lato server sull'intero patrimonio — una recensione che non la supera non confluisce più nella media dell'azienda.
15. Perché un aggressore fallisce
Conosce la chiave pubblica , il punto base , la curva e ogni firma finora emessa. Ciò che gli manca è .
Il miglior attacco classico noto al problema del logaritmo discreto in un gruppo di ordine richiede circa passi. Con sono circa
operazioni. Per confronto: persino una macchina capace di un miliardo di miliardi () di passi al secondo impiegherebbe un multiplo dell'età dell'universo.
Falsificare senza la chiave significherebbe trovare, per un scelto da sé, un adeguato — lo stesso compito in altre vesti.
16. Perché Ed25519 e non ECDSA
Entrambi si fondano sullo stesso problema. La differenza sta in tutto ciò che accade attorno:
| ECDSA (curve NIST) | Ed25519 | |
|---|---|---|
| Nonce | serve casualità fresca | deterministico da prefisso e messaggio |
| Formule | casi particolari, diramazioni dipendenti dai dati | complete, un solo percorso di calcolo |
| Parametri della curva | origine delle costanti mai spiegata del tutto | scelti secondo criteri verificabili |
| Dimensione della firma | 64–72 B, codifica variabile | fissa a 64 B |
| Nel browser | disponibile da tempo | nativo dal 2023/2024, altrimenti come libreria JS |
Per noi il nonce è stato l'argomento decisivo. Un portale di recensioni firma spesso e in modo automatizzato; un procedimento in cui un singolo valore casuale debole rivela la chiave è la scelta sbagliata.
17. Che cosa Ed25519 non garantisce
Ed25519 si fonda sul logaritmo discreto — ed è proprio questo problema che un computer quantistico sufficientemente grande risolve in modo efficiente con l'algoritmo di Shor. Se e quando esisteranno macchine simili è una questione aperta. Per una recensione che deve restare verificabile anche tra dieci anni è comunque una domanda a cui bisogna rispondere oggi.
Perciò accanto alla firma Ed25519 può porsi un timbro resistente ai quanti:
- FALCON (FN-DSA) — firme compatte da reticoli NTRU
- ML-DSA-87 (FIPS 204) — lo standard NIST concluso
Nessuno dei due sostituisce Ed25519: si pongono accanto ad esso. Se uno dei procedimenti cede, l'altro regge.
18. Il procedimento in figura
19. Che cosa ne fa concretamente McGesund
L'envelope. Ogni recensione firmata porta una busta MCG1: con versione del formato, payload e firma Ed25519. Il kid nel payload dice quale chiave si intende; la relativa chiave pubblica il server la fornisce su richiesta — è pubblica, non c'è nulla da proteggere.
La verifica nel browser. Chrome e Firefox supportano Ed25519 nativamente dal 2023/2024 tramite l'interfaccia WebCrypto. Safari no — lì la chiamata solleva un errore invece di verificare. Perciò il nostro codice di verifica ripiega su un'implementazione in puro JavaScript, che viene caricata solo dove serve. La verifica della firma va così a buon fine in ogni browser, e per l'esattezza sul dispositivo del lettore.
L'ancoraggio temporale. L'impronta digitale della chiave di firma viene ancorata tramite OpenTimestamps in un blocco Bitcoin. Così si può dimostrare non solo che la firma è autentica, ma anche che la chiave esisteva già in un determinato momento — senza che qualcuno debba credere alla nostra marca temporale.
Il vincolo sul contenuto. Il payload porta rh, l'hash sull'intero record inviato: testo, cuori, stato geografico, indicazioni sull'occasione e provenienza. La firma Ed25519 vincola così non solo il testo, ma tutto ciò che viene mostrato accanto alla recensione.
20. Una frase da portare a casa
Chi possiede lo scalare segreto firma in microsecondi. Chi non lo possiede dovrebbe risolvere un logaritmo discreto in un gruppo con circa elementi.
Per il lettore di una recensione ciò significa semplicemente: non deve crederci. Può ricalcolare.