Μέθοδος υπογραφής

Το Ed25519 εξηγημένο μαθηματικά

Η υπογραφή που συνοδεύει κάθε αξιολόγηση στο McGesund — από την καμπύλη και το κλειδί μέχρι την εξίσωση που επαναϋπολογίζει το πρόγραμμα περιήγησης του αναγνώστη.

Τελευταία ενημέρωση: 2026-09-07

1. Περί τίνος πρόκειται

Μια αξιολόγηση στο McGesund δεν είναι ένα πεδίο κειμένου σε μια βάση δεδομένων, στο οποίο πρέπει κανείς απλώς να πιστέψει. Κατά την υποβολή της υπογράφεται ψηφιακά, και κάθε επισκέπτης μπορεί αργότερα να επαληθεύσει αυτή την υπογραφή στο δικό του πρόγραμμα περιήγησης.

Για αυτή την υπογραφή χρησιμοποιούμε το Ed25519. Σε αντίθεση με το FALCON και το ML-DSA, που μπορούν να προστεθούν επιπλέον ως σφραγίδα, το Ed25519 δεν είναι επιλογή: κάθε υπογεγραμμένη αξιολόγηση το φέρει, ανεξάρτητα από το πακέτο και τον τρόπο υποβολής.

Μια σημαντική διευκρίνιση εξαρχής:

Το Ed25519 δεν είναι κρυπτογράφηση. Το κείμενο της αξιολόγησης προορίζεται άλλωστε για ανάγνωση. Η υπογραφή δεν αποδεικνύει μυστικότητα, αλλά προέλευση και ακεραιότητα.


2. Τι ακριβώς υπογράφεται

Δεν υπογράφεται το ελεύθερο κείμενο, αλλά ένα συμπαγές αντικείμενο δεδομένων που καθηλώνει μονοσήμαντα το κείμενο και όλα τα υπόλοιπα:

{
  "v":   1,
  "typ": "rev-comment",
  "f":   "<αναγνωριστικό επιχείρησης>",
  "c":   "<αναγνωριστικό αξιολόγησης>",
  "h":   "<SHA-256 του κειμένου της αξιολόγησης>",
  "rh":  "<SHA-256 ολόκληρης της εγγραφής υποβολής>",
  "rv":  1,
  "qh":  "<SHA-256 του φακέλου QR, μόνο σε αξιολογήσεις μέσω QR>",
  "kid": "<αναγνωριστικό κλειδιού>",
  "iat": 1757203200
}

Αυτό το αντικείμενο κωδικοποιείται σε CBOR. Αυτή η ακολουθία byte — και όχι η ευπαρουσίαστη απεικόνισή της παραπάνω — είναι το μήνυμά μας mm. Υπογραφή και μήνυμα ταξιδεύουν μαζί μέσα σε έναν φάκελο:

Φαˊκελος=MCG1:    base64url(CBOR[3,  m,  σ])\text{Φάκελος} = \texttt{MCG1:} \;\|\; \mathrm{base64url}\bigl(\mathrm{CBOR}[\,3,\; m,\; \sigma\,]\bigr)

Το 33 είναι η έκδοση της μορφής. Τίποτε άλλο δεν περιέχεται εκεί — ιδίως καμία μετακβαντική υπογραφή: αυτή βρίσκεται, όπου υπάρχει, δίπλα στην εγγραφή δεδομένων και όχι μέσα στον φάκελο.


3. Τι πρέπει να επιτυγχάνει η υπογραφή

Ένας αναγνώστης που φτάνει σε ένα προφίλ επιχείρησης έχει δύο ερωτήματα:

  1. Προέρχεται πράγματι αυτή η αξιολόγηση από το σύστημα του McGesund;
  2. Τροποποιήθηκε εκ των υστέρων;

Για αυτό υπάρχει ένα ζεύγος κλειδιών:

  • ένα ιδιωτικό κλειδί — παραμένει στην υπηρεσία υπογραφής
  • ένα δημόσιο κλειδί — μπορεί να το έχει ο καθένας, προσδιορίζεται μέσω του αναγνωριστικού κλειδιού (kid) στο payload

Η υπογραφή γίνεται με το ιδιωτικό κλειδί. Ο έλεγχος γίνεται με το δημόσιο — και μάλιστα στο πρόγραμμα περιήγησης του αναγνώστη, όχι στον δικό μας διακομιστή. Αυτό είναι το κρίσιμο σημείο: ένας έλεγχος που θα διενεργούσαμε εμείς και του οποίου το αποτέλεσμα θα ανακοινώναμε, δεν θα ήταν έλεγχος αλλά ισχυρισμός.


4. Γιατί ελλειπτική καμπύλη;

Κάθε υπογραφή χρειάζεται έναν υπολογισμό που είναι εύκολος προς τη μία κατεύθυνση και πρακτικά αδύνατος προς την άλλη. Στο Ed25519 αυτός είναι ο βαθμωτός πολλαπλασιασμός σε ελλειπτική καμπύλη:

a    A=aB.a \;\longmapsto\; A = a\cdot B.

Ο υπολογισμός του δημόσιου σημείου AA από τον μυστικό αριθμό aa κοστίζει μικροδευτερόλεπτα. Η εξαγωγή του aa από το AA είναι το πρόβλημα του διακριτού λογαρίθμου — για αυτό δεν είναι γνωστή καμία μέθοδος που να ολοκληρώνεται σε ανθρώπινους χρόνους σε αυτό το μέγεθος.

Το πρακτικό όφελος έναντι παλαιότερων μεθόδων όπως το RSA είναι το μέγεθος:

δημόσιο κλειδίυπογραφή
RSA-3072384 B384 B
Ed2551932 B64 B

Και μάλιστα σε συγκρίσιμο επίπεδο ασφάλειας. Τα 64 byte ανά αξιολόγηση δεν είναι μέγεθος που απασχολεί, ακόμη και με εκατομμύρια αξιολογήσεις.


5. Η καμπύλη edwards25519

Οι υπολογισμοί γίνονται modulo έναν πρώτο αριθμό:

p=225519.p = 2^{255}-19.

Από εκεί προέρχεται και το όνομα. Η καμπύλη είναι μια στρεβλή καμπύλη Edwards:

x2+y2  =  1+dx2y2,d=121665121666modp.-x^2+y^2 \;=\; 1 + d\,x^2y^2, \qquad d = -\frac{121665}{121666} \bmod p.

Ένα «σημείο» είναι ένα ζεύγος αριθμών (x,y)(x,y) από το {0,,p1}\{0,\dots,p-1\} που ικανοποιεί αυτή την εξίσωση. Δεν υπάρχει καμπύλη να δει κανείς — το σχήμα στην επόμενη ενότητα είναι ένα εποπτικό βοήθημα πάνω στους πραγματικούς αριθμούς, όχι εικόνα του πραγματικού χώρου υπολογισμού.

Προστίθενται ακόμη δύο μεγέθη:

  • ένα σταθερά συμφωνημένο σημείο βάσης BB,
  • η τάξη \ell της υποομάδας που παράγεται από το BB:
=2252+27742317777372353535851937790883648493.\ell = 2^{252} + 27742317777372353535851937790883648493.

Το \ell είναι πρώτος. Αυτό σημαίνει: αν προσθέτει κανείς το BB ξανά και ξανά στον εαυτό του, διατρέχει ακριβώς \ell διαφορετικά σημεία και έπειτα επιστρέφει στην αρχή. Όλοι οι υπολογισμοί με βαθμωτά μεγέθη γίνονται γι' αυτό modulo \ell, όλοι οι υπολογισμοί με συντεταγμένες modulo pp. Η σύγχυση αυτών των δύο αριθμών είναι το κλασικό λάθος του αρχαρίου.


6. Πρόσθεση σημείων

Δύο σημεία συνδυάζονται σε ένα τρίτο σύμφωνα με έναν σταθερό τύπο:

x3=x1y2+y1x21+dx1x2y1y2,y3=y1y2x1x21dx1x2y1y2.x_3=\frac{x_1y_2+y_1x_2}{1+d\,x_1x_2y_1y_2}, \qquad y_3=\frac{y_1y_2-x_1x_2}{1-d\,x_1x_2y_1y_2}.

Το ουδέτερο στοιχείο είναι το (0,1)(0,1) — το σημείο από το οποίο ξεκινά ο υπολογισμός.

Αυτός ο τύπος έχει μια ιδιότητα που δεν φαίνεται με την πρώτη ματιά και που για την ασφάλεια είναι σημαντικότερη από κάθε σταθερά: είναι πλήρης. Λειτουργεί για όλες τις εισόδους, χωρίς ειδικές περιπτώσεις για «τα δύο σημεία ταυτίζονται» ή «το αποτέλεσμα είναι το ουδέτερο στοιχείο». Στις παλαιότερες καμπύλες Weierstraß υπάρχουν αυτές οι ειδικές περιπτώσεις, και καθεμιά τους είναι μια διακλάδωση στο πρόγραμμα — μια διακλάδωση της οποίας ο χρόνος εκτέλεσης μπορεί να μετρηθεί. Όποιος μετρά πόσο διαρκεί μια υπογραφή, μαθαίνει σε τέτοιες μεθόδους κάτι για το μυστικό κλειδί.

Πλήρεις τύποι σημαίνουν: πάντα ο ίδιος δρόμος υπολογισμού, πάντα ο ίδιος χρόνος, τίποτα να μετρηθεί.


7. Βαθμωτός πολλαπλασιασμός — ο μονόδρομος

nBn\cdot B σημαίνει: πρόσθεση του BB ακριβώς nn φορές στον εαυτό του. Για ένα nn με 253 bit αυτό θα ήταν παράλογα πολλή δουλειά — γι' αυτό γίνονται διπλασιασμοί:

B2B4B8BB \to 2B \to 4B \to 8B \to \dots

και από αυτά τα ενδιάμεσα αποτελέσματα συντίθεται το ζητούμενο nn. Περίπου 253 διπλασιασμοί αρκούν για κάθε nn. Αυτός είναι ο δρόμος προς τα εμπρός.

Προς τα πίσω δεν υπάρχει αυτή η συντόμευση. Ο προσδιορισμός του αριθμού aa από το σημείο AA σημαίνει επίλυση του προβλήματος του διακριτού λογαρίθμου.

(0,1) — ουδέτερο στοιχείοB2B3B4B5B6B
Μια καμπύλη Edwards με τα πρώτα πολλαπλάσια του σημείου βάσης, υπολογισμένα με τον πραγματικό νόμο πρόσθεσης. Πάνω στους πραγματικούς αριθμούς κινούνται ακόμη με ορατή τάξη πάνω στην καμπύλη — θα μπορούσε κανείς να ανιχνεύσει τη διαδρομή προς τα πίσω. Modulo p εξαφανίζεται ακριβώς αυτή η τάξη, και σε αυτό στηρίζεται η ασφάλεια.

Στην πραγματική μέθοδο οι υπολογισμοί γίνονται modulo pp. Εκεί δεν υπάρχει «αριστερά», «δεξιά» ούτε γειτνίαση: από τα 17B17\,B και 18B18\,B προκύπτουν δύο ζεύγη αριθμών χωρίς καμία αναγνωρίσιμη συγγένεια.


8. Το ζεύγος κλειδιών της υπηρεσίας υπογραφής

Στην αρχή βρίσκονται 32 τυχαία byte, το seed. Όλα τα υπόλοιπα παράγονται από αυτό:

h=SHA-512(seed),h=h0..31  a    h32..63προˊθεμα.h = \mathrm{SHA\text{-}512}(\text{seed}), \qquad h = \underbrace{h_{0..31}}_{\to\;a}\;\|\;\underbrace{h_{32..63}}_{\text{πρόθεμα}}.

Από το πρώτο μισό προκύπτει το μυστικό βαθμωτό aa, όχι όμως αναλλοίωτο. Τρία bit τίθενται ή μηδενίζονται — το λεγόμενο clamping:

  • τα τρία κατώτερα bit μηδενίζονται: έτσι το aa γίνεται πολλαπλάσιο του 8. Ο λόγος είναι ο συμπαράγοντας 8 της καμπύλης — η πλήρης ομάδα σημείων είναι οκτώ φορές μεγαλύτερη από την υποομάδα τάξης \ell. Ένα aa διαιρετό με το 8 καταλήγει εγγυημένα στη σωστή υποομάδα και δεν αποκαλύπτει τίποτα μέσω σημείων μικρής τάξης.
  • το ανώτατο bit μηδενίζεται, το αμέσως επόμενο τίθεται: έτσι το aa έχει πάντα το ίδιο μήκος σε bit. Ένα συντομότερο aa θα χρειαζόταν λιγότερους διπλασιασμούς — και πάλι κάτι θα μπορούσε να διαβαστεί από τον χρόνο εκτέλεσης.

Το δημόσιο κλειδί είναι τότε απλώς

A=aB,A = a\cdot B,

αποθηκευμένο ως 32 byte: η συντεταγμένη yy, και στο ανώτατο bit το πρόσημο του xx. Το xx το υπολογίζει ο ελεγκτής μόνος του από την εξίσωση της καμπύλης — οι δύο λύσεις διαφέρουν μόνο στο πρόσημο, και ποια εννοείται το λέει αυτό το ένα bit.

Το δεύτερο μισό της τιμής κατακερματισμού, το πρόθεμα, δεν χρειάζεται για το κλειδί. Αξιοποιείται στην επόμενη ενότητα.


9. Γιατί η τυχαιότητα εδώ δεν είναι τυχαία

Κάθε υπογραφή αυτού του τύπου χρειάζεται μια μοναδική τιμή rr, που συχνά ονομάζεται nonce. Δεν επιτρέπεται ποτέ να επαναληφθεί: όποιος έχει δύο υπογραφές με το ίδιο rr μπορεί να υπολογίσει το μυστικό κλειδί με σχολική άλγεβρα.

Ακριβώς σε αυτό απέτυχαν πραγματικά συστήματα. Η γνωστότερη περίπτωση είναι ο έλεγχος υπογραφών μιας κονσόλας παιχνιδιών, της οποίας ο κατασκευαστής χρησιμοποιούσε το 2010 πάντα το ίδιο nonce — το ιδιωτικό κλειδί ήταν έτσι δημόσια ανακατασκευάσιμο.

Το Ed25519 το λύνει αυτό μη χρησιμοποιώντας καθόλου τυχαιότητα:

r=SHA-512(προˊθεμα    m)mod.r = \mathrm{SHA\text{-}512}(\text{πρόθεμα}\;\|\;m) \bmod \ell.

Το nonce εξαρτάται από το μυστικό πρόθεμα και από το μήνυμα. Από αυτό προκύπτουν δύο πράγματα:

  • Δύο διαφορετικές αξιολογήσεις δίνουν με συντριπτική πιθανότητα διαφορετικά rr — η περίπτωση επανάληψης δεν προκύπτει.
  • Η ίδια αξιολόγηση δίνει πάντα την ίδια υπογραφή. Μια διαδικασία υπογραφής μπορεί έτσι να αναπαραχθεί, και μια κακή γεννήτρια τυχαίων αριθμών στον διακομιστή δεν μπορεί να χαλάσει τίποτα, επειδή απλώς δεν χρειάζεται καμία.

Για μια πλατφόρμα αξιολογήσεων με πολλές υπογραφές την ημέρα αυτό δεν είναι ακαδημαϊκό πλεονέκτημα. Είναι η διαφορά ανάμεσα στο «ένα σφάλμα στην πηγή τυχαιότητας θα ήταν μοιραίο» και στο «δεν υπάρχει πηγή τυχαιότητας που θα μπορούσε να αστοχήσει».


10. Υπογραφή

Τρεις γραμμές, τίποτα περισσότερο:

r=H(προˊθεμα    m)mod,R=rB,r = H(\text{πρόθεμα}\;\|\;m) \bmod \ell, \qquad R = r\cdot B,
k=H(R    A    m)mod,k = H(R \;\|\; A \;\|\; m) \bmod \ell,
S=(r+ka)mod.S = (r + k\,a) \bmod \ell.

Η υπογραφή είναι το ζεύγος

σ=(R,S),\sigma = (R,\,S),

32 byte για το σημείο RR, 32 byte για τον αριθμό SS — συνολικά 64 byte.

Αξίζει προσοχής η δεύτερη γραμμή: στο kk εισέρχονται το RR, το δημόσιο κλειδί AA και το μήνυμα. Το ότι συμπεριλαμβάνεται και το AA στον κατακερματισμό δεν είναι διακοσμητικό — αποτρέπει επιθέσεις στις οποίες μια υπογραφή επαναπροσδιορίζεται ως υπογραφή άλλου κλειδιού.


11. Έλεγχος

Το πρόγραμμα περιήγησης του αναγνώστη γνωρίζει: την αξιολόγηση mm, την υπογραφή (R,S)(R,S) και το δημόσιο κλειδί AA. Υπολογίζει εκ νέου το kk και ελέγχει μία μόνο εξίσωση:

SB  =  R+kA\boxed{S\cdot B \;=\; R + k\cdot A}

Αν ισχύει, η υπογραφή είναι έγκυρη. Το RFC 8032 επιτρέπει επιπλέον την εκδοχή πολλαπλασιασμένη με τον συμπαράγοντα 8SB=8R+8kA8S\cdot B = 8R + 8k\cdot A, η οποία αντιμετωπίζει ορισμένες οριακές περιπτώσεις πιο ελαστικά.

Κανένας διακομιστής δεν ερωτάται, καμία υπηρεσία δεν χρειάζεται να είναι διαθέσιμη. Το δημόσιο κλειδί αρκεί.


12. Γιατί η εξίσωση επαληθεύεται

Αρκεί η αντικατάσταση:

SB=(r+ka)B=rB+k(aB)=R+kA.S\cdot B = (r + k\,a)\cdot B = r\cdot B + k\,(a\cdot B) = R + k\cdot A.

Όλο το τέχνασμα βρίσκεται στον μεσαίο μετασχηματισμό: ο βαθμωτός πολλαπλασιασμός συμβιβάζεται με την πρόσθεση. Όποιος γνωρίζει το aa μπορεί να υπολογίσει ένα SS που ικανοποιεί την εξίσωση. Όποιος δεν γνωρίζει το aa θα έπρεπε να βρει, για ένα kk της επιλογής του, ένα κατάλληλο SS — και αυτό σημαίνει να λύσει τον διακριτό λογάριθμο.


13. Ένα πλήρως λυμένο μικρο-παράδειγμα

Με τους πραγματικούς αριθμούς δεν επαληθεύεται τίποτα — τιμές των 253 bit δεν ελέγχονται με το μυαλό. Γι' αυτό η ίδια μέθοδος σε μια ελάχιστη ομάδα, όπου κάθε βήμα είναι επαληθεύσιμο με το κομπιουτεράκι.

Βήμα 1: Η ομάδα

Υπολογίζουμε με τα υπόλοιπα modulo 2323 και παίρνουμε g=2g = 2. Ισχύει

211=2048=8923+11(mod23),2^{11} = 2048 = 89\cdot 23 + 1 \equiv 1 \pmod{23},

το gg παράγει επομένως μια υποομάδα τάξης =11\ell = 11. Οι δυνάμεις είναι:

nn1234567891011
gng^n248169181336121

Το gg αναλαμβάνει τον ρόλο του σημείου βάσης BB, ο πολλαπλασιασμός τον ρόλο της πρόσθεσης σημείων. Τα βαθμωτά υπολογίζονται modulo 1111, οι τιμές modulo 2323.

Βήμα 2: Το ζεύγος κλειδιών

Έστω μυστικό a=6a = 6. Τότε

A=ga=26=6418(mod23).A = g^a = 2^6 = 64 \equiv 18 \pmod{23}.

Το A=18A = 18 μπορεί να το γνωρίζει ο καθένας.

Βήμα 3: Nonce και δέσμευση

Από το πρόθεμα και την αξιολόγηση ας προκύψει r=4r = 4. Από αυτό:

R=gr=24=16.R = g^r = 2^4 = 16.

Βήμα 4: Η πρόκληση

Ο κατακερματισμός των RR, AA και της αξιολόγησης ας δώσει

k=5.k = 5.

Βήμα 5: Η υπογραφή

S=(r+ka)mod11=(4+56)mod11=34mod11=1.S = (r + k\,a) \bmod 11 = (4 + 5\cdot 6) \bmod 11 = 34 \bmod 11 = 1.

Η υπογραφή είναι το ζεύγος (R,S)=(16,1)(R,S) = (16,\,1).

Βήμα 6: Το πρόγραμμα περιήγησης ελέγχει

Υπολογίζει και τα δύο μέλη. Αριστερά:

gS=21=2.g^S = 2^1 = 2.

Δεξιά, με 1853(mod23)18^5 \equiv 3 \pmod{23}:

RAk=163=482(mod23).R\cdot A^{k} = 16\cdot 3 = 48 \equiv 2 \pmod{23}.

Και τα δύο μέλη δίνουν 22:

Έγκυρη υπογραφηˊ\boxed{\text{Έγκυρη υπογραφή}}

Βήμα 7: Κάποιος αλλάζει το κείμενο της αξιολόγησης

Το κείμενο εισέρχεται στον κατακερματισμό, άρα αλλάζει η πρόκληση — ας πούμε σε k=7k' = 7. Η υπογραφή παραμένει αμετάβλητη στο (16,1)(16,1), το δεξί μέλος όμως όχι. Με 1876(mod23)18^7 \equiv 6 \pmod{23}:

RAk=166=964(mod23)    2=gSR\cdot A^{k'} = 16\cdot 6 = 96 \equiv 4 \pmod{23} \;\neq\; 2 = g^S
Άκυρη υπογραφηˊ\boxed{\text{Άκυρη υπογραφή}}

Μπορούμε να διαγράψουμε μια αξιολόγηση. Δεν μπορούμε όμως να την τροποποιήσουμε χωρίς να γίνει αντιληπτό.

Μια ειλικρινής επισήμανση για το παράδειγμα

Οι υπολογισμοί έγιναν εδώ στην πολλαπλασιαστική ομάδα modulo 2323, όχι σε καμπύλη: το gSg^S αντιστοιχεί στο SBS\cdot B, το γινόμενο RAkR\cdot A^k στην πρόσθεση σημείων R+kAR + k\cdot A. Η δομή είναι η ίδια, και αυτό ακριβώς έχει σημασία. Διαφορετικές είναι οι τάξεις μεγέθους: =11\ell = 11 έναντι 2252\ell \approx 2^{252}, και εκεί το κλειδί δεν βρίσκεται δοκιμάζοντας έντεκα δυνατότητες.


14. Τι συμβαίνει αν κάποιος αλλάξει την αξιολόγηση

Ας υποθέσουμε ότι κάποιος με πρόσβαση στη βάση δεδομένων — ακόμη και κάποιος από εμάς — αλλάζει το κείμενο της αξιολόγησης ή μία από τις καρδιές. Τότε αλλάζει η εγγραφή δεδομένων και μαζί της τουλάχιστον μία από τις δύο τιμές κατακερματισμού h και rh στο payload. Έτσι αλλάζει το mm, μαζί του η πρόκληση kk, και μαζί της το δεξί μέλος της εξίσωσης ελέγχου. Η παλιά υπογραφή δεν ταιριάζει πλέον.

Η καθοριστική πρόταση: μπορούμε να διαγράψουμε μια αξιολόγηση, δεν μπορούμε όμως να την αλλάξουμε απαρατήρητα. Στο McGesund ο ίδιος έλεγχος τρέχει επιπλέον κάθε νύχτα στην πλευρά του διακομιστή σε όλο το απόθεμα — μια αξιολόγηση που δεν τον περνά δεν συνυπολογίζεται πλέον στον μέσο όρο της επιχείρησης.


15. Γιατί αποτυγχάνει ένας επιτιθέμενος

Γνωρίζει το δημόσιο κλειδί AA, το σημείο βάσης BB, την καμπύλη και κάθε υπογραφή που έχει εκδοθεί μέχρι τώρα. Αυτό που του λείπει είναι το aa.

Η καλύτερη γνωστή κλασική επίθεση στο πρόβλημα του διακριτού λογαρίθμου σε μια ομάδα τάξης \ell χρειάζεται περίπου \sqrt{\ell} βήματα. Με 2252\ell \approx 2^{252} αυτό σημαίνει περίπου

21262^{126}

πράξεις. Για σύγκριση: ακόμη και μια μηχανή που εκτελεί ένα δισεκατομμύριο δισεκατομμύρια (101810^{18}) βήματα το δευτερόλεπτο θα χρειαζόταν γι' αυτό πολλαπλάσιο της ηλικίας του σύμπαντος.

Η πλαστογράφηση χωρίς το κλειδί θα σήμαινε να βρεθεί, για ένα kk της επιλογής του, ένα κατάλληλο SS — το ίδιο πρόβλημα με άλλο μανδύα.


16. Γιατί Ed25519 και όχι ECDSA

Και τα δύο στηρίζονται στο ίδιο πρόβλημα. Η διαφορά βρίσκεται σε όλα όσα συμβαίνουν γύρω από αυτό:

ECDSA (καμπύλες NIST)Ed25519
Nonceαπαιτεί νέα τυχαιότηταντετερμινιστικό από πρόθεμα και μήνυμα
Τύποιειδικές περιπτώσεις, διακλαδώσεις εξαρτώμενες από τα δεδομέναπλήρεις, ένας δρόμος υπολογισμού
Παράμετροι καμπύληςη προέλευση των σταθερών ουδέποτε εξηγήθηκε πλήρωςεπιλεγμένες με διαφανή κριτήρια
Μέγεθος υπογραφής64–72 B, μεταβλητή κωδικοποίησησταθερά 64 B
Στο πρόγραμμα περιήγησηςδιαθέσιμο εδώ και πολύ καιρόαπό το 2023/2024 εγγενώς, αλλιώς ως βιβλιοθήκη JS

Για εμάς το nonce ήταν το καθοριστικό επιχείρημα. Μια πλατφόρμα αξιολογήσεων υπογράφει συχνά και αυτοματοποιημένα· μια μέθοδος στην οποία μία και μόνη αδύναμη τυχαία τιμή αποκαλύπτει το κλειδί είναι λάθος επιλογή γι' αυτό.


17. Τι δεν προσφέρει το Ed25519

Το Ed25519 στηρίζεται στον διακριτό λογάριθμο — και ακριβώς αυτό το πρόβλημα το λύνει αποδοτικά ένας επαρκώς μεγάλος κβαντικός υπολογιστής με τον αλγόριθμο του Shor. Το αν και πότε θα υπάρξουν τέτοιες μηχανές παραμένει ανοιχτό. Για μια αξιολόγηση που πρέπει να είναι επαληθεύσιμη και σε δέκα χρόνια, αυτό είναι ωστόσο ερώτημα που πρέπει να απαντηθεί σήμερα.

Γι' αυτό μπορεί να προστεθεί δίπλα στην υπογραφή Ed25519 μια κβαντικά ανθεκτική σφραγίδα:

Καμία από τις δύο δεν αντικαθιστά το Ed25519, τοποθετούνται δίπλα του. Αν σπάσει η μία μέθοδος, η άλλη εξακολουθεί να ισχύει.


18. Η ροή σε εικόνα

ΥΠΗΡΕΣΊΑ ΥΠΟΓΡΑΦΉΣ (MCGESUND)ΠΡΌΓΡΑΜΜΑ ΠΕΡΙΉΓΗΣΗΣ ΤΟΥ ΕΠΙΣΚΈΠΤΗιδιωτικό βαθμωτό a + πρόθεμα (από το seed)Payload m = {επιχείρηση, αξιολόγηση, h, rh, iat}r = H(πρόθεμα ‖ m) mod ℓR = r · Bk = H(R ‖ A ‖ m) mod ℓS = (r + k · a) mod ℓΥπογραφή σ = (R, S) + kidΑξιολόγηση + σ + δημόσιο κλειδί Aνέος υπολογισμός του k από R, A και mS · B = R + k · A ;έγκυρηάκυρη
Από το payload μέχρι το τικ επαλήθευσης στο πρόγραμμα περιήγησης. Πάνω από τη διαχωριστική γραμμή όλα συμβαίνουν μία φορά κατά την υποβολή, από κάτω σε κάθε αναγνώστη εκ νέου — στη δική του συσκευή, μόνο με το δημόσιο κλειδί.

19. Τι κάνει συγκεκριμένα το McGesund με αυτό

Ο φάκελος. Κάθε υπογεγραμμένη αξιολόγηση φέρει έναν φάκελο MCG1: με έκδοση μορφής, payload και υπογραφή Ed25519. Το kid στο payload δηλώνει ποιο κλειδί εννοείται· το αντίστοιχο δημόσιο κλειδί το παραδίδει ο διακομιστής κατόπιν αιτήματος — είναι δημόσιο, δεν υπάρχει τίποτα να προστατευθεί σε αυτό.

Ο έλεγχος στο πρόγραμμα περιήγησης. Ο Chrome και ο Firefox υποστηρίζουν το Ed25519 από το 2023/2024 εγγενώς μέσω της διεπαφής WebCrypto. Ο Safari όχι — εκεί η κλήση προκαλεί σφάλμα αντί να ελέγξει. Γι' αυτό ο κώδικας ελέγχου μας καταφεύγει σε μια καθαρή υλοποίηση JavaScript, η οποία φορτώνεται μόνο εκεί όπου χρειάζεται. Έτσι ο έλεγχος υπογραφής ολοκληρώνεται σε κάθε πρόγραμμα περιήγησης, και μάλιστα στη συσκευή του αναγνώστη.

Το χρονικό αγκύρωμα. Το αποτύπωμα του κλειδιού υπογραφής αγκυρώνεται μέσω OpenTimestamps σε ένα μπλοκ του Bitcoin. Έτσι μπορεί να αποδειχθεί όχι μόνο ότι η υπογραφή είναι γνήσια, αλλά και ότι το κλειδί υπήρχε ήδη σε συγκεκριμένη χρονική στιγμή — χωρίς να χρειάζεται κανείς να πιστέψει τη δική μας χρονοσήμανση.

Η δέσμευση του περιεχομένου. Το payload φέρει το rh, τον κατακερματισμό ολόκληρης της εγγραφής υποβολής: κείμενο, καρδιές, γεω-κατάσταση, στοιχεία αφορμής και προέλευση. Η υπογραφή Ed25519 δεσμεύει έτσι όχι μόνο το κείμενο, αλλά όλα όσα εμφανίζονται δίπλα στην αξιολόγηση.


20. Μια πρόταση για να κρατήσετε

Το Ed25519 μετατρεˊπει εˊναν μυστικοˊ αριθμοˊ σε μια εξιˊσωσηπου καθεˊνας μπορειˊ να ελεˊγξει και κανειˊς να επινοηˊσει.\boxed{ \begin{array}{c} \text{Το Ed25519 μετατρέπει έναν μυστικό αριθμό σε μια εξίσωση}\\ \text{που καθένας μπορεί να ελέγξει και κανείς να επινοήσει.} \end{array}}

Όποιος κατέχει το μυστικό βαθμωτό, υπογράφει σε μικροδευτερόλεπτα. Όποιος δεν το κατέχει, θα έπρεπε να λύσει έναν διακριτό λογάριθμο σε μια ομάδα με περίπου 22522^{252} στοιχεία.

Για τον αναγνώστη μιας αξιολόγησης αυτό σημαίνει απλώς: δεν χρειάζεται να μας πιστέψει. Μπορεί να το επαληθεύσει.