180 likes | 275 Views
Sicherheit in Pervasiven Systemen. Peter Langendörfer & Zoya Dyka. Outline. Introduction Cipher Means and t heir I mplementation I ssues Hardware B ased Attacks and C ounter Measures Key Management. Cipher Means and their Implementation Issues. Ziel des Angreifers:
E N D
Sicherheit in Pervasiven Systemen Peter Langendörfer & Zoya Dyka
Outline • Introduction • CipherMeans and theirImplementation Issues • Hardware BasedAttacks and Counter Measures • Key Management
Cipher Means and their Implementation Issues Ziel des Angreifers: • Schlüssel ermitteln • Krypto-Chip klonen Basis für erfolgreiche Angriffe • Mathematische „Schwäche“ der Krypto-Algorithmen • Implementierungs-Schwächen: • einen arbeitenden Chip begleiten mehrere Effekte: Zeit, Energieverbrauch, Änderungen des EM-Feldes, optische Effekte • Diese Effekte sind messbar und analysierbar... Sie liefern dem Angreifer eine große Menge an „Zwischen-Werten“ und erleichtern oder beschleunigen die Ermittlung des Schlüssels
Cipher Means and their Implementation Issues Basis für erfolgreiche Angriffe • Kenntnisse der Krypto-Algorithmen und ihrer Implementierungen • Kenntnisse der Begleit-Prozesse • physikalische Effekte • Messgeräte • Analyse-Methoden
Basis für Angriffe Krypto- system kryptographische Funktionen (Algorithmen) encryption / decryption digitale signature generation / verification mathematische Operationen Multiplikation ; Division Addition; Subtraktion Hardware-Implementierung CMOS-Technologie: elementare Funktionen als Gatter aus Hersteller-Biblothek 5
RSA-Kryptosystem RSA kryptographische Funktionen encryption / decryption ( Basisoperation: modulare Potenzieren ) 2 später 1 mathematische Operationen in GF(p) Multiplikation ; Division Addition; Subtraktion Hardware-Implementierung CMOS-Technologie: elementare Funktionen als Gatter aus Hersteller-Biblothek 6
mathematische Operationen in GF(p) • was ist GF(p) • welche Operationen mit Elementen aus GF(p) sind definiert • Basis-Operation bei RSA – modulares Potenzieren
was ist GF(p) • GF(p)-Elemente sind Ganze Zahlen von 0 bis (p-1): • {0, 1, 2, ..., p-1} • p ist Anzahl der Elemente in GF(p) • jede Ganze Zahlx ≥ p kann in die Menge{0, 1, 2, ..., p-1} abgebildet werden: x mod p – Reduktion • Beispiele 1) = 390o = 30o 2) 3) Reduktion: 5 mod 5 = 0 17 mod 5 = 2
mathematische Operationen in GF(p) • Addition: ‚+‘ (a+b) mod p • Subtraktion: ‚-‘(a-b) mod p= (a+x) mod p mit x= -b mod p, d.h. (x+b) mod p = 0 (x ist additive Inverse) • Multiplikation ‚●‘ (a●b) mod p • Division ‚/‘(a/b) mod p= (a●x) mod p mit x= 1/b mod p, d.h. (x●b) mod p = 1 (x ist multiplikative Inverse)
Beispiel : Mathe in GF(5) 0 • Reduktion: 7 mod 5=2 (Rest von Division) • Addition: (2+4) mod 5= 6 mod 5 = 1 • Subtraktion: (2-3) mod 5= 4 -3=2 mod 5 • Multiplikation: (2●3) mod 5= (3+3) mod 5= 1 • Division: (2/3) mod 5= (2●3-1) mod 5 = ... ? 3-1mod 5 = ? (2/3) mod 5= (2●2) mod 5 = 4 4 1 3 2 3●3-1 mod 5 =1 - Definition 3 · 0 = 0 ≠ 1 3 · 1 = 3 ≠ 1 3 · 2 = 1 =>3-1 mod 5 = 2
RSA: Generieren von Schlüssel-Paar • finden 1024-Bits lange Primzahlen p und q; berechnen n=p∙q • berechnen (n)=(p-1)∙(q-1) • wählen e= 3=21+20, oder e= 17=24+20, oder e= 65537=216+20 • berechnendaus der Gleichung:e∙d mod (n)=1 • (n, e) – RSA public key • (n, d) – RSA private key
(n, e) – RSA public key • (n, d) – RSA private key RSA_key=(public_key; private_key) modulon public expe private expd 310=112=21+1 1710=100012=24+1 6553710=100000000000000012=216+1 2048-bit ( !!! ) 2048-bit ( !!! ) max 17-bit long binary !
RSA: Encryption / Decryption public key Alice: (n_Alice, e) public key Bob: (n_Bob, e) • (n_Alice, e) • (n_Alice, d_Alice) berechnet: Message=cipherd_Alice mod n_Alice • (n_Bob, e) • (n_Bob, d_Bob) hat: Message sendet: cipher= (Message)e mod n_Alice Basisoperation bei RSA ist das modulare Potenzieren
modulare Quadrierung modulares Potenzieren modulare Multiplikation Algorithmus für modulares Potenzieren Beispiel:e=17 x17mod n = (x16 x1)mod n = ((x24) x20)mod n 1710=100012 x17modn =((x 24)1 (x 23)0 (x 22)0 (x 21)0 (x 20)1)modn
Algorithmus „square-and-multiply“ x24 1 1 1 x 20 1710=100012 Zu berechnen ist: y=xkeymod n 1. y=1; z=x 2.for i=0to (key_length-1) 3.ifkeyi= 1 then y = y z mod n 4.z = z2 mod n 5. Output y x17modn =((x 24)1 (x 23)0 (x 22)0 (x 21)0 (x 20)1)modn elsey1= y z mod n // “dummy operation”
Hausaufgabe: 1) berechnen eigenen RSA-key: p=5; q=7; e=3 2) verschlüssen mit eigenem public_key: message =dritte Zahl von rechts in MatrikelNr. 3)cipher entschlüssen 4) Mein RSA public key ist: (3, 120). Wie ist mein private key?