Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

26
Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker

Transcript of Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

Page 1: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

Kryptosysteme,Digitale Signaturen,

Keymanagement

Digitale SignaturenJürgen Ecker

Page 2: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

Folie 2

Inhalt

Einführung

RSA-Signaturen

PKCS #1

ISO 9796

ElGamal-Signaturen

DSS

Page 3: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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.

Page 4: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 5: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 6: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 7: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 8: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 9: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 10: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 11: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 12: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 13: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 14: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 15: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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.

Page 16: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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´.

Page 17: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 18: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 19: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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)

Page 20: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 21: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 22: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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

Page 23: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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.

Page 24: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

Folie 24

DSS

• Digital Signature Standard

• DSA (Digital Signature Algorithm)

• FIPS 186

• Variante des ElGamal-Signaturschemata

• verwendete Hashfunktion ist SHA-1

Page 25: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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.

Page 26: Kryptosysteme, Digitale Signaturen, Keymanagement Digitale Signaturen Jürgen Ecker.

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.