Upload
nonnie
View
26
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Kryptosysteme, Digitale Signaturen, Keymanagement. Digitale Signaturen Jürgen Ecker. Inhalt. Einführung RSA-Signaturen PKCS #1 ISO 9796 ElGamal-Signaturen DSS. Klassifikation. Digitale Signaturen mit message recovery - PowerPoint PPT Presentation
Citation preview
Kryptosysteme,Digitale Signaturen,
Keymanagement
Digitale SignaturenJürgen Ecker
Folie 2
Inhalt
Einführung
RSA-Signaturen
PKCS #1
ISO 9796
ElGamal-Signaturen
DSS
Folie 3
Klassifikation
Digitale Signaturen mit message recovery
Aus der Signatur kann die signierte Nachricht ermittelt werden, diese braucht nicht zusätzlich gesendet zu werden.
Digitale Signaturen ohne message recovery
Die signierte Nachricht ist zweiteilig, die Nachricht wird zusätzlich zur Signatur benötigt, um die Unterschrift überprüfen zu können.
Randomisierte Signaturschemata
Die Signatur hängt außer von der Nachricht und vom Schlüssel auch noch von einem zufälligen Parameter ab.
Deterministische Signaturschemata
Die Signatur hängt nur von der Nachricht und vom Schlüssel ab.
Folie 4
RSA-Signaturen mit message recovery
Setup:
Wähle RSA Schlüsselpaar (n,e), (n,d)
Wähle eine Redundanzfunktion R, die Nachrichten zu Zahlen zwischen 1 und n-1 macht (vorerst beliebig).
Signieren von m:
berechne m´ = R(m) Redundanz hinzufügen
berechne s = (m´)d mod n Signieren
Verifizieren von s:
berechne m´ = se mod n Signatur öffnen
prüfe, ob m´ in R(M) liegt Redundanz prüfen
berechne m = R-1(m´) message recovery
Folie 5
RSA-Signaturen mit message recovery
Zur Redundanzfunktion
Die Redundanzfunktion ist so zu wählen, dass es praktisch unmöglich ist, ohne den private key eine Signatur s zu erzeugen, so dass se mod n in R(M) liegt, d.h. die geforderte Redundanz besitzt.
Beispiel: Die Funktionswerte von R sind immer von der Form xx
Folie 6
RSA Signaturen in der Praxis: ISO/IEC 9796
Eigenschaften
für PK Signaturschemata,
die aus k-Bit Nachrichten k-Bit Signaturen erzeugen
zum Signieren von Nachrichten begrenzter Länge
keine Hashfunktion benötigt
message recovery
Folie 7
ISO/IEC 9796: Notation
Symbol Bedeutung
k Bitlänge der Signatur
d Bitlänge der zu signierenden Nachricht;
d ≤ 8 (k+3)/16z z = d/8
r Anzahl der Füllbits +1: r = 8z-d+1
t t = (k-1)/16; 2t Bytes enthalten zumindest k-1 Bits
Beispiel: k=1024, d=150, z=19, r=3, t=64
Folie 8
ISO/IEC 9796: Signieren
Auffüllen (padding):an die Nachricht m werden links 0 bis 7 Nullen angehängt, damit die Bitlänge ein Vielfaches von 8 wird. Man erhält die z-Byte Nachricht
Auffüllen
Message
Signatur
MP = mzmz-1 … m2m1
Folie 9
ISO/IEC 9796: Signieren
Erweiterung (extension)MP wird so oft links an MP angehängt, bis die so entstehende Bytefolge aus t Bytes besteht. Gegebenenfalls werden beim letzten Mal nur mehr die ersten paar Bytes von rechts verwendet. Man erhält die t-Byte Nachricht
Auffüllen
Erweiterung
Message
Signatur
MP = mzmz-1 … m2m1
ME = MEtMEt-1 … ME2ME1
Folie 10
ISO/IEC 9796: Signieren
Redundanz
Verwendet wird eine Shadow-Funktion S
S(ab) = π(a)π(b)
man erhält die 2t-Byte-Folge
zuletzt wird das Byte S(MEz) durch rS(MEz) ersetzt.
Auffüllen
Erweiterung
Redundanz
Message
Signatur
π0 1 2 3 4 5 6 7 8 9 A B C D E F
E 3 5 8 9 4 2 F 0 D B 6 7 A C 1
MR = S(MEt)MEtS(MEt-1)MEt-1... S(ME1)ME1
ME = MEtMEt-1 … ME2ME1
Folie 11
ISO/IEC 9796: Signieren
Truncatingman nimmt die k-1 rechten Bits von MR und fügt links eine 1 an.
Forcingmit dem Rabin-Signaturverfahren lassen sich nur Nachrichten signieren, die modulo 16 kongruent zu 6 sind, daher ersetzt man das letzte Byte ab durch b0110.
man erhält eine k-Bit Nachricht IR
Auffüllen
Erweiterung
Redundanz
Truncating/forcing
Message
Signatur MR = S(MEt)MEtS(MEt-1)MEt-1... S(ME1)ME1
Folie 12
ISO/IEC 9796: Signieren
SignaturerstellungDie Nachricht IR wird signiert, man erhält eine k-Bit-Signatur s.
Auffüllen
Erweiterung
Redundanz
Truncating/forcing
Signaturerstellung
Message
Signatur
Folie 13
ISO/IEC 9796: Verifizieren
Signatur öffnenDie Signatur s wird geöffnet und geprüft, ob die Nachricht IR´ mit 1 beginnt und mit 0110 endet.Andernfalls wird die Signatur zurückgewiesen.
Signatur öffnen
Signatur
akzeptierenzurückw
eisen
Folie 14
ISO/IEC 9796: Verifizieren
Signatur öffnen
message recovery
Signatur
akzeptierenzurückw
eisen
Message recovery
Seien X die rechten k-1 Bits von IR´
Seien abc0110 die rechten 4 Nibbles von X.
Stimmt das Format nicht, zurückweisen.
Ersetze abc0110 durch abπ-1(a)c.
Füge zwischen 0 und 15 Nullbits links an X an, um eine Bytefolge der Länge 2t zu erhalten
Folie 15
ISO/IEC 9796: Verifizieren
Signatur öffnen
message recovery
Signatur
akzeptierenzurückw
eisen
Ermittlung von z und r:
Aus MR´ = MR´2tMR´2t-1…MR´2MR´1 berechnet man für alle 1≤i≤t
MR´2iS(MR´2i-1)
Sind alle Ergebnisse gleich 0 wird die Signatur zurückgewiesen.
Sonst ist z der kleinste Wert, so dass MR´2zS(MR´2z-1) ≠ 0.
Dann ist r = (MR´2zS(MR´2z-1)) mod 16. Liegt r nicht zwischen 1 und 8, wird die Signatur zurückgewiesen.
Folie 16
ISO/IEC 9796: Verifizieren
Signatur öffnen
message recovery
Signatur
akzeptierenzurückw
eisen
Ermittlung der ursprünglichen Nachricht
MP´i = MR´2i-1 für 1≤i≤z.
Sind die r-1 linken Bits von MP´ nicht gleich 0, so wird die Signatur zurückgewiesen.
Sonst besteht M´ aus den 8z-r+1 rechten Bits von MP´.
Folie 17
ISO/IEC 9796: Verifizieren
Redundanz prüfenDie Nachricht M´ wird (wie beim Signieren) den Schritten Auffüllen, Erweitern, Redundanz unterworfen, ist das Ergebnis nicht MR´, so wird die Signatur zurückgewiesen.
Signatur öffnen
message recovery
Redundanz prüfen
Signatur
akzeptierenzurückw
eisen
Folie 18
RSA-Signaturen ohne message recovery
PKCS
Public Key Cryptography Standards
RSA Laboratories
ab 1991
PKCS #1 RSA Cryptography Standard
andere: #3: DH-Key Agreement Standard
#6: Extended-Certificate Syntax Standard
#12: Personal Information Exchange Syntax Standard
#13: Elliptic Curve Cryptography Standard
…
Folie 19
PKCS #1: Notation
Symbol Bedeutung Symbol Bedeutung
|X| Bytelänge von X EB encryption block
n RSA-Modul k k=|n|
p, q n = p.q BT Blocktyp
e (n,e) public key d (n,d) private key
M Nachricht S Signatur
MD, MD´ Hashwerte (unter MD2 oder MD5)
PS Füllstring (padding string)
Folie 20
PKCS #1: Signieren und Verifizieren
HashingNachricht wird mit MD2 oder MD5 gehasht
CodierungHashwert und Hashfunktionsidentifikator werden ASN.1- und anschließend BER-codiert.
Hashing
Codierung
Nachricht
Signatur
Folie 21
PKCS #1: Signieren und Verifizieren
Formatierung
D Bytestring mit |D| ≤ k-11.
BT (Blocktyp) ist 00 oder 01, empfohlen wird BT=01.
PS (padding string) ist Bytestring mit |PS| = k-3-|D|; ist BT=00, dann sind alle Bytes von PS gleich 00,ist BT=01, dann sind alle Bytes von PS gleich FF.
EB = 00BTPS00D.
Hashing
Codierung
Integer2Bytestring
RSA
Bytestring2Integer
Blockformatierung
Nachricht
Signatur
Folie 22
PKCS #1: Signieren und Verifizieren
Parsenprüfen, ob der Bytestring von der Form 00BTPS00D ist, wobei
D Bytestring mit |D| ≤ k-11.
BT (Blocktyp) ist 00 oder 01
PS (padding string) ist Bytestring mit |PS| = k-3-|D|; ist BT=00, dann sind alle Bytes von PS gleich 00,ist BT=01, dann sind alle Bytes von PS gleich FF.
Bytestring2Integer
RSA
Integer2Bytestring
Parsen
akzeptieren
zurückweisen
Signatur
Folie 23
PKCS #1: Signieren und Verifizieren
DecodierungBER-decodieren, Hashwert und Hashfunktionsidentifikator auslesen. Falls nicht decodierbar oder sinnlos, Signatur zurückweisen.
Bytestring2Integer
RSA
Integer2Bytestring
Parsen
Decodierung
Hashing + Vergleich
akzeptieren
zurückweisen
Signatur
HashingHashwert mit Hashfunktion gemäß Identifikator berechnen und vergleichen. Gegebenenfalls Signatur zurückweisen.
Folie 24
DSS
• Digital Signature Standard
• DSA (Digital Signature Algorithm)
• FIPS 186
• Variante des ElGamal-Signaturschemata
• verwendete Hashfunktion ist SHA-1
Folie 25
DSS: Schlüsselerzeugung
• Wähle q, so dass 2159 < q < 2160.
• Wähle t, so dass 0 ≤ t < 8. Wähle t=8.
• Wähle p prim, so dass gilt2511+64t < p < 2512+64t und q | p-1.
• Wähle ein Element g der Ordnung q in Zp*.
• Wähle a zufällig, so dass 1 < a < q-1.
• Berechne A = ga mod p.
• Public key ist (p,q,g,A), secret key ist a.
Folie 26
DSS: Signieren und Verifizieren
Signieren:
Wähle k zufällig, so dass 1 < k < q.
Berechne r = (gk mod p) mod q.
Berechne s = k-1(h(m)+ar) mod q.
Signatur ist (r,s).
Verifizieren:
Prüfe 0 < r < q und 0 < s < q.
Berechne x = s-1.h(m) mod qund y = r.s-1 mod q.
Prüfe r = (gx .Ay mod p) mod q.