Υπογραφή ElGamal

Οι υπογραφές ElGamal βασίζονται στη μη υπολογισιμότητα του προβλήματος του διακριτού λογαρίθμου σε ένα πεπερασμένο πεδίο: είναι εύκολο να υψωθεί ένας ακέραιος g {\displaystyle g} σε μια δύναμη x {\displaystyle x} , αλλά είναι δύσκολο να υπολογιστεί το x {\displaystyle x} απο το g x {\displaystyle g^{x}} . Για τη δημιουργία κλειδιών, κάθε οντότητα A {\displaystyle A} τρέχει τον παρακάτω βασικό αλγόριθμο για το σχήμα ElGamal:

 Επίλεξε ένα μεγάλου μεγέθους πρώτο αριθμό p {\displaystyle p} και ένα γεννήτορα g {\displaystyle g} για μια ομάδα Z p ∗ {\displaystyle \mathbb {Z} _{p}^{*}} . Επίλεξε έναν τυχαίο αριθμό x {\displaystyle x} , τέτοιον ώστε 1 ≤ x ≤ p − 2 {\displaystyle 1\leq x\leq p-2} . Υπολόγισε y = g x m o d p {\displaystyle y=g^{x}\ mod\ p} .Το δημόσιο κλειδί του A {\displaystyle A} είναι το E A = ( p , g , y ) {\displaystyle E_{A}=(p,g,y)} και το ιδιωτικό του κλειδί είναι το D A = x {\displaystyle D_{A}=x} . Για την κρυπτογράφηση ενός μηνύματος m {\displaystyle m} για τη B {\displaystyle B} , η A {\displaystyle A} αποκτά το E B {\displaystyle E_{B}} και εκτελεί τον παρακάτω αλγόριθμο: Αναπαράστησε το m {\displaystyle m} με ένα σύνολο απο τμήματα m i {\displaystyle m_{i}} , το καθένα στο διάστημα [ 0 , p − 1 ] {\displaystyle [0,p-1]} . Διάλεξε έναν τυχαίο ακέραιο k {\displaystyle k} , τέτοιον ώστε 1 ≤ k ≤ p − 2 {\displaystyle 1\leq k\leq p-2} . Υπολόγισε το a = g k m o d p {\displaystyle a=g^{k}\ mod\ p} και b = m i y k m o d p {\displaystyle b=m_{i}y^{k}\ mod\ p} .Το κρυπτογράφημα για τη B {\displaystyle B} είναι τα ( a , b ) {\displaystyle (a,b)} . Η B {\displaystyle B} αποκρυπτογραφεί κάθε ένα από τα ( a , b ) {\displaystyle (a,b)} , το οποίο είναι δυο φορές το μέγεθος του αρχικού μηνύματος, χρησιμοποιώντας το D B {\displaystyle D_{B}} και εκτελώντας: Υπολόγισε το a p − 1 − x m o d p {\displaystyle a^{p-1-x}\ mod\ p} . Υπολόγισε το m i = a − x b m o d p {\displaystyle m_{i}=a^{-x}b\ mod\ p} .Το σπάσιμο της κρυπτογράφησης ElGamal είναι ισοδύναμο με το να λυθεί το πρόβλημα του διακριτού λογάριθμου. Παρ'όλα αυτά, ο τυχαίος αριθμός k {\displaystyle k} πρέπει να επιλεχθεί διαφορετικός και ανεξάρτητα για διαφορετικές κρυπτογραφήσεις. Αλλιώς, η πιθανή γνώση του μηνύματος θα μπορούσε να οδηγήσει στην ανάκτηση άλλων μηνυμάτων που κρυπτογραφήθηκαν με το ίδιο k {\displaystyle k} . Η υπογραφή ElGamal είναι ένα τυχαίο σχήμα και δημιουργεί υπογραφές με προσθήκη, χρησιμοποιώντας μια μονόδρομη συνάρτηση σύνοψης h : { 0 , 1 } ∗ → Z p {\displaystyle h:\{0,1\}^{*}\to \mathbb {Z} _{p}} . Για να υπογράψει ένα μήνυμα m {\displaystyle m} οποιουδήποτε μήκους, ο A {\displaystyle A} εκτελεί τον παρακάτω αλγόριθμο με το ιδιωτικό του κλειδί D A {\displaystyle D_{A}} : Επέλεξε έναν τυχαίο ακέραιο k {\displaystyle k} , τέτοιον ώστε 1 ≤ k ≤ p − 2 {\displaystyle 1\leq k\leq p-2} και g c d ( k , p − 1 ) = 1 {\displaystyle gcd(k,p-1)=1} . Ο k {\displaystyle k} πρέπει να κρατηθεί μυστικός. Υπολόγισε r = g k m o d p {\displaystyle r=g^{k}\ mod\ p} . Υπολόγισε k − 1 m o d ( p − 1 ) {\displaystyle k^{-1}\ mod\ (p-1)} . Υπολόγισε s = k − 1 ( h ( m ) − x r ) m o d ( p − 1 ) {\displaystyle s=k^{-1}(h(m)-xr)\ mod\ (p-1)} .To ζεύγος ( r , s ) {\displaystyle (r,s)} είναι η υπογραφή του A {\displaystyle A} στο m {\displaystyle m} . Οποιαδήποτε άλλη οντότητα που έχει το E A {\displaystyle E_{A}} μπορεί να επιβεβαιώσει την υπογραφή με τα παρακάτω βήματα: Επιβεβαίωσε ότι 1 ≤ r ≤ p − 1 {\displaystyle 1\leq r\leq p-1} , αλλιώς απόρριψε την υπογραφή. Υπολόγισε u 1 = y r r s m o d p {\displaystyle u_{1}=y^{r}r^{s}\ mod\ p} . Υπολόγισε h ( m ) {\displaystyle h(m)} . Υπολόγισε u 2 = g h ( m ) m o d p {\displaystyle u_{2}=g^{h}(m)\ mod\ p} . Έλεγξε αν u 1 = u 2 {\displaystyle u_{1}=u_{2}} . Αν ναι, αποδέξου την υπογραφή.Η επιβεβαίωση μιας υπογραφής ElGamal είναι πιο αργή απο αυτή μιας υπογραφής RSA με μικρό εκθέτη. Είναι δυνατόν να γίνουν η ύψωση σε δύναμη με υπόλοιπο και ο Ευκλείδειος Αλγόριθμος(Βήματα 2 και 3 της Δημιουργίας Υπογραφής) εκ των προτέρων. Παρ'όλα αυτά η επιβεβαίωση θα παραμείνει σημαντικά πιο αργή απο αυτή του RSA. Συνιστάται η χρήση υπολοίπου p {\displaystyle p} μήκους 1024 bits ή μεγαλύτερου. Σύγχρονη κρυπτογραφία θεωρία και εφαρμογές,MIKE BURMESTER, ΣΤΕΦΑΝΟΣ ΓΚΡΙΤΖΑΛΗΣ, ΣΩΚΡΑΤΗΣ ΚΑΤΣΙΚΑΣ, ΒΑΣΙΛΕΙΟΣ ΧΡΥΣΙΚΟΠΟΥΛΟΣ, ΑΘΗΝΑ 2011 Handbook of Applied Cryptography, A. Menezes, S. Vastone, October 1996