See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Schnorr-Signatur – Wikipedia

Schnorr-Signatur

aus Wikipedia, der freien Enzyklopädie

Die Schnorr-Signatur ist ein 1989/91 vom deutschen Mathematikprofessor Claus-Peter Schnorr entworfenes kryptographisches Schema für Digitale Signaturen. Es leitet sich aus der Schnorr-Identifikation ab, indem wie bei der Fiat-Shamir-Identifikation die Interaktion durch den Einsatz einer kryptographischen Hashfunktion ersetzt wird. Die Sicherheit beruht auf der Komplexität des Diskreten Logarithmus in endlichen Gruppen.

Das Verfahren ist von Schnorr patentiert.[1] Es ist exklusiv an RSA lizenziert (Siemens hat aber eine nicht-exklusive Lizenz). Schnorr warf im Rahmen der Standardisierung IEEE P1363 der NIST vor, mit dem von ihr entwickelten Signatur-Verfahren Digital Signature Algorithm, kurz DSA, sein Patent zu verletzen.

Inhaltsverzeichnis

[Bearbeiten] Parameter

[Bearbeiten] Systemweite Parameter

Alle Benutzer können diese Parameter gemeinsam nutzen:

  • Eine Gruppe G primer Ordnung q = | G | . Diese ist zyklisch, sei g ein Generator
  • Eine kryptografische Hash-Funktion H mit Wertebereich [0,q − 1].

Schnorr schlägt vor, eine Untergruppe G von Z_p^* für ein primes p zu wählen. Er argumentiert, dass Schlüssel- und Signaturlängen sich auf | G | beziehen, das Sicherheitsniveau sich hingegen am größeren |Z_p^*| orientiert.

[Bearbeiten] Privater Schlüssel

Der private Schlüssel besteht aus einer zufällig gewählten Zahl:

  • x mit 0 < x < q

[Bearbeiten] Öffentlicher Schlüssel

Der öffentliche Schlüssel ist das x entsprechende Gruppenelement y:

  • y = gx

[Bearbeiten] Unterschreiben

Um eine Nachricht m zu unterschreiben, wird folgendermaßen verfahren:

  1. Wähle k zufällig mit 0 < k < q.
  2. Setze r: = gk
  3. Setze e: = H(m | | r). Dabei ist || die Konkatenation von Zahlen als Bitfolgen.
  4. Setze s := (k + xe) \mod q.

Die Unterschrift der Nachricht ist das Tupel (e,s).

[Bearbeiten] Verifizieren

Um eine Unterschrift (e,s) einer Nachricht m zu verifizieren, wird folgendermaßen verfahren:

  1. Setze r_v := g^s \cdot y^e
  2. Setze ev: = H(m | | rv)
  3. Akzeptiere die Unterschrift genau dann, wenn ev = e ist.

[Bearbeiten] Sicherheitsdiskussion (informell)

Die Sicherheit der Schnorr-Signatur ist auf die Komplexität des diskreten Logarithmus beweisbar zu reduzieren, d. h. wer das Schnorr-Signatur-Schema bricht, kann auch effizient den diskreten Logarithmus berechnen. Von diesem Problem nimmt man allerdings nach Jahrzehnten intensiver Forschung an, dass es effizient nicht zu lösen ist. Diese beweisbare Reduktion auf bekannte, als schwierig eingestufte Probleme ist typisch für Verfahren mit öffentlichen Schlüsseln.

Im Random-Oracle-Modell nimmt man an, die Hashfunktion verhalte sich wie eine zufällige Funktion und ein Angreifer kann die Funktionswerte nur über eine Orakel für die Funktionswerte berechnen. Angenommen, es gäbe einen erfolgreichen Unterschriftenfälscher. Dieses kann man nutzen, um aus dem öffentlichen Schlüssel y = gx den geheimen Schlüssel x zu bestimmen, also den Diskreten Logarithmus x von y zu berechnen - im Widerspruch zur Annahme, der diskrete Logarithmus sei schwierig.

  1. Simuliere den Algorithmus zum Unterschreiben einer Nachricht m, speichere Zustand beim Aufruf des Orakels, um e1 = H(m | | r) zu berechnen.
  2. Wiederhole die Simulation an gespeicherten Zustand, gib allerdings ein anderes e2 = H(m | | r) zurück (Dies geht im Random-Oracle-Modell)
  3. Seien s1 und s2 die beiden (verschiedenen) Unterschriften zur gleichen Nachricht m und gleichem Zufallswert k bzw. r
  4. Es gilt s_1-s_2 = (k + xe_1)-(k + xe_2) = x(e_1-e_2)\mod q, also x=(e_1-e_2)/(s_1-s_2)\mod q

Die Division durch s1s2 ist möglich, da die Differenz modulo q ungleich 0 ist da q prim ist, auch ein Inverses modulo q existiert.

[Bearbeiten] Weblinks

Claus-Peter Schnorr, Vorlesung Kryptographie I/II, Kapitel 1.7 , (PDF, 454 kB)

[Bearbeiten] Einzelnachweise

  1. Patent EP 0384475 vom 22. Februar 1990, Patent US 4995082 vom 23. Februar 1990
Andere Sprachen


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -