Schnorr Signatur

Edit: Fehler gefunden.. ich hatte ein paar Stellen falsch getippt..dabei habe ich extra mehrmals drüber gelesen .. vermutlich die allseitsbekannte Blindheit :( Ich highlighte mal die Defekte..

Hallo allerseits,

ich habe über Sagemath ( cloud.sagemath.com ) mal versucht den Schnorr Algo nachzuprogrammieren, dabei bin ich nach dem Skipt der Uni Paderborn, ab S. 12 vorgegangen:

http://www2.cs.uni-paderborn.de/cs/...df?PHPSESSID=3d004efafdfa502c98b609e5c038db3c

Mein Problem ist, dass die Verifikation nicht klappt. Hier mal mein Algorithmus dazu:

Parameter
Code:
p= 1329227995784915872903807060280346043
q = 24615333255276219868589019634821223
alpha = 1129227995784915872903807060280346114
a = 23780225161306315207852102510417998
beta = power_mod(alpha, a, [B]p[/B])

m=102350555675438522214370921419364423088

"Hashfunktion" H: (x,y) \mapsto x_{10} || y_{10} mod q (x zur Basis 10 gepadded y zur Basis 10 modulo q):
Code:
def H(x,y):
    x = str(x)
    y = str(y)
    return (int(x + y) % q)

Signierung
Code:
def sign(m):
    k = 12698857874403839828140608868073320
    x = power_mod(alpha,k,p)
    gamma = H(x,m)
    sigma = (k+ a*gamma) % q
    return [gamma,sigma]

Verifizierung
Code:
def verify(s):
    gamma = s[0]
    sigma = s[1]
    r_v = power_mod(alpha, sigma, p)* power_mod(power_mod(beta, gamma, p), euler_phi([B]p[/B])-1, p) % p
    e_v = H(r_v,m)
    return (e_v == gamma)

Hat jemand eine Idee, warum das falsch ist? Ich vermute, dass ich hier den Fehler begangen habe und nicht, dass der Algo der Uni falsch ist. Auf dem englischen Wiki findet man ja äquivalente Formulierungen..
 
Zuletzt bearbeitet:
Zurück
Oben