kryptosysteme, digitale signaturen, keymanagement digitale signaturen jürgen ecker

Post on 05-Apr-2015

114 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

top related