Download presentation
Presentation is loading. Please wait.
Published byLéonard René Modified over 6 years ago
1
Sveučilište u Splitu Sveučilišni studijski centar za stručne studije
Kriptografija javnog (asimetričnog) ključa (Public-key or Asymmetric Cryptography) Mario Čagalj Sveučilište u Splitu Sveučilišni studijski centar za stručne studije 4/3/2012.
2
Kriptografski sustav Plaintext Encryption Ciphertext Decryption Plaintext Message Channel Key Channel Ke Kd Key Generation Kriptografija simetricnog (tajnog) kljuca: Ke = Kd Kriptografija javnog (asimetricnog) kljuca: Ke Kd
3
Public-key Cryptosystems (1/4)
Encryption c Decryption m Message Channel Key Channel PUB PRB Key Generation Source A Destination B Entitet B generira par kljuceva (PUB, PRB) PUB – javni kljuc (public key), PRB – privatni kljuc (private key) PUB je javna informacija (dostupna je svima, npr. entitetu A) Kljuc PRB zna samo entitet B (B cuva PRB tajnim, npr. A ne zna PRB) Zastita tajnosti: Entitet A zeli poslati tajnu poruku m entitetu B A enkriptira m javnim kljucem PUB: c = E(PUB, m) B dekriptira c koristeci privatni kljuc PRB: m=D(PRB, c) = D(PRB, E(PUB, m)) Nitko drugi tko ne poznaje PRB ne moze dekriptirati sifriranu poruku c
4
Public-key Cryptosystems (2/4)
Encryption c Decryption m Message Channel Key Channel PRA PUA Key Generation Source A Destination B Autentikacija: Entitet A zeli poslati autenticiranu poruku m entitetu B A enkriptira m koristeci svoj privatni (tajni) kljuc PRA: c = E(PRA, m) B dekriptira poruku c koristeci javni kljuc PUA : m = D (PUA, c) Samo A zna PRA, stoga je samo A mogla pripremiti poruku m - source integrity Cijela enkriptirana poruka c sluzi kao digitalni potpis (digital signature) Ako bi bilo nemoguce promjeniti poruku m bez poznavanja privatnog kljuca PRA, m je takodjer autenticiran u smislu data integrity Q: Je li osigurana tajnost poruke m u ovo primjeru?
5
Public-key Cryptosystems (3/4)
Encryption c Encryption c’ Decryption c Decryption m PRA PUB PRB PUA Source A Key Generation Destination B Key Generation Autentikacija i tajnost: Entitet A zeli poslati autenticiranu i tajnu poruku m entitetu B Realizacija dvostrukim koristenjem kripto-sustava baziranog na javnom kljucu A enkriptira m kako slijedi: c = E(PRA, m), c’ = E(PUB, E(PRA, m)) B dekriptira poruku c’: c = D (PRB, c’), m = D (PUA, c) Q: Pretpostavite da A i B zamjene uloge. Koristeci standardnu notaciju, opisite proceduru koju izvrsavaju A i B.
6
Klasifikacija kriptosustava prema namjeni
Enkripcija/dekripcija Posiljalac enkriptira poruku koristeci javni kljuc primaoca. Digitalni potpis Posiljalac “potpisuje” poruku koristeci svoj privatni kljuc. Najcesce se ne potpisuje cijela poruka vec mali blok podataka (message digest) koji se dobije kao “one-way” funkcija originalne poruke. Razmjena kljuceva (key exchange) Dva entiteta (korisnika, racunala) zele uspostaviti sesijski (tajni) kljuc za upotrebu u simetricnom kriptosustavu Najpoznatiji protokol iz ove kategorije: Diffie-Hellman Key Exchange Protocol
7
RSA (Rivest, Shamir and Adleman)
Kriptografija asimetričnog (javnog) ključa RSA (Rivest, Shamir and Adleman)
8
PKCS: Public Key Cryptography Standard
RSA u praksi Webmail (Secure Socket Layer - SSL) PKCS: Public Key Cryptography Standard
9
Modularna aritmetika: zbrajanje
Primjer: zbrajanje modulo 10 5 + 5 mod 10 = 0, mod 10 = 2, mod 10 = mod 10 = 7, mod 10 = mod 10 = 8 Q: Zbrajanje modulo 10 sa tajnom konstantom K daje sifru. Koju? + 1 2 3 4 5 6 7 8 9
10
Modularna aritmetika: mnozenje (1/3)
Primjer: mnozenje modulo 10 5 5 mod 10 = 5, 3 9 mod 10 = 7 Q: Samo mnozenje sa 1, 3, 7 ili 9 moze raditi kao sifra. Zasto? 1 2 3 4 5 6 7 8 9
11
Modularna aritmetika: mnozenje (2/3)
Primjer: poruka m = 3, tajni kljuc K = 7 Enkripcija: c = m K = 3 7 = 21 mod 10 = 1 Dekripcija: m = c K-1 = 1 7-1 = 1 3 = 3 mod 10 = 3 Multiplikativni inverzni broj (multiplicative inverse) modulo n broja X (pisano X-1 ) je broj za koji vrijedi: X X-1 = 1 mod n, (npr., n = 10) U nasem primjeru (prethodna tablica) samo brojevi 1, 3, 7 ili 9 imaju multiplikativne inverzne brojeve modulo 10 Q: Nadjite 9-1 i 1-1 modulo 10. Napomena: za vrlo velike brojeve n (npr. 100 znamenkasti broj) racunanje inverza “brute-force” metodom neizvedivo Euclid’s Algorithm - efikasan algoritam za racunanje inverznih brojeva
12
Modularna aritmetika: mnozenje (3/3)
Brojevi 1, 3, 7 i 9 su relativno prosti (relatively prime) brojevi u odnosu na broj 10 Nemaju zajednickih faktora sa brojem 10 (osim naravno 1) Euler-ova f(n) funkcija (totient function) Oznacava broj relativno prostih brojeva, u odnosu na n, koji su manji od n Velicina funkcije f(n) Ako je n prost broj onda f(n) = n – 1. Q: Zasto? Ako je n produkt dva razlicita prosta broja p i q, onda f(n) = (p-1)(q-1). Q: Je li n prost broj? Izvedite izraz za f(n).
13
Modularna aritmetika: potenciranje (1/2)
Primjer: potenciranje modulo 10 311 = mod 10 = 7 Primjer: eksponent 3 se moze koristiti za enkripciju, ali broj 2 ne moze. Q: Zasto? xy 1 2 3 4 5 6 7 8 9 10 11 12 -
14
Modularna aritmetika: potenciranje (2/2)
Zasto su stupci 1 i 5, 2 i 6, 3 i 7 isti? Zbog zanimljivog svojstva f(n) funkcije: xy mod n = x( y mod f(n) ) mod n U slucaju n = 10, {1, 3, 7, 9} su relativno prosti -> f(n) = 4. Stoga su stupci s te s + 4 jednaki. Vazna napomena: Ovo svojstvo f(n) funkcije vrijedi za sve primarne brojeve n, te za sve n = pq, gdje su p i q razliciti prosti brojevi. Za nas (RSA) je interesantan specijalan slucaj: y = 1 mod f(n) U ovom slucaju, za svaki x imamo: xy = x( 1 mod f(n) ) = x mod n
15
RSA algoritam Ron Rivest, Adi Shamir i Len Adlemam. MIT, 1977.
RSA je blok sifra gdje su plaintext i ciphertext cijeli brojevi iz {1,..., n-1} Tipicna velicina za n je 1024 bita ili 309 decimalnih znamenki Generiranje kljuceva Odaberi brojeve p i q ( p q ) p i q su prosti i razliciti (p q) Izracunaj n = pq Izracunaj f(n) = (p-1)(q-1) Odaberi cijeli broj e e je relativno prost u odnosu na f(n); 1 < e < f(n) Izracunaj d ed mod f(n) = 1, d je multiplikativan inverz od e Javan kljuc (public key) PU = {e, n} Privatni kljuc (private key) PR = {d, n} Enkripcija Plaintext: M < n Ciphertext: C = Me mod n Dekripcija Ciphertext: C Plaintext: M = Cd mod n
16
Zašto RSA algoritam radi
M < n PU = {e, n} PR = {d, n} Enkripcija: C = Me mod n Dekripcija: Digitalni potpis poruke M < n (primjer naseg Webmail-a) Entitet A potpise M svojim privatnim kljucem {d,n}: S = Md mod n Entitet B prima (M, S) te provjerava da li je zadovoljeno: M = Se mod n (M = Se mod n = Mde mod n = M) M = Cd mod n Med mod n M(ed mod f(n)) mod n M1 mod n
17
RSA: Toy Example Odaberi proste brojeve, p = 17 i q = 11
Izracunaj n = pq = 17 x 11 = 187 Izracunaj f(187) = 16 x 10 = 160. Q: Objasnite sto predstavalja f(187). Odaberi e < f(n), tako da je e relativno prost obzirom na f(n); e = 7 Odredi d < 160, tako da ed mod f(n) = 1; d = 23 (jer 23 x 7 = 161 = ) PU = {7, 187} i PR = {23, 187} Encryption Decryption ciphertext 11 plaintext 88 887 mod 187 1123 mod 187 plaintext 88 PU = {7, 187} PR = {23, 187}
18
Sigurnost RSA algoritma
Ako napadac moze rastaviti n na faktore p i q Moze izracunati f(n) = (p-1)(q-1), te naci privatni kljuc d = e-1 (mod f(n)) Postojeci algoritmi za faktorizaciju ne mogu izvrsiti faktorizaciju u polinomnom vremenu ako je n dovoljno velik (tezak problem za n veci od 1024 bitova) Timing Attacks Paul Kocher je pokazao da napadac moze otkriti privatni kljuc tako da biljezi koliko vremena treba racunalu da dekriptira enkriptiranu poruku. Chosen Ciphertext Attack Napadac bira poruku koju ce enkriptirati “zrtvinim” javnim kljucem te od “zrtve” prima poruku dekriptiranu “zrtvinim” privatnim kljucem Svojstvo RSA: E(PU, M1) x E(PU, M2) = E (PU, M2 x M2). Q: Uvjerite se. Primjer: napadac ne zna d te zeli dekriptirati C = Me mod n. Kako napadac moze dekriptirati C ako “zrtva” ne dekriptira C direktno za napadaca? Izracunaj X = (C x 2e) mod n Daj “zrtvi” X, te od nje primi Y = Xd mod n Slijedi: Xd = ((C mod n) x (2e mod n))d = ((Me mod n) x (2e mod n))d = ((2M)e mod n)d = (2M) ed mod n = 2M mod n Prakticni RSA kriptosustavi dodaju random vrijednost plaintext-u prije same enkripcije (Optimal Asymmetric Encryption Padding - OAEP)
19
RSA enkripcija u praksi
Public Key Cryptography Standard (PKCS) Definira enkodiranje informacija koje ce biti potpisivane ili enkriptirane upotrebom RSA algoritma PKCS je dizajniran na nacin da sprijecava mnoge poznate napade na “textbook” RSA algoritam PKCS#1 v2.0 encoding hashed label some 0x00 bytes 0x01 message to be encrypted random seed MGF + MGF + 0x00 masked seed masked message MGF – Mask Generating Function (hash function)
20
How to “break” RSA despite all the protections
Assumptions: the algorithm is flawless it is implemented as it was designed Decryption Ciphertext: C Plaintext: m = cd mod n RSA relies on modular exponentiations for encryption and decryption Brute force: Multiply c by itself d times. If c,d and n are n-bit integers, number of multiplications proportional to 2n ! It we don’t “mod out”, memory requirements 2n ! For security reasons, n must be a large number, e.g. n= Modular exponentiation is usually implemented using a (bit by bit) square and multiply algorithm
21
RSA with square and multiply
Decryption Ciphertext: C Plaintext: M = Cd mod n C20 = C16 x C4 = (C8)2 x (C2)2 = (C8 x C2)2 = ((C4)2 x C2)2 = ((C4 x C))2)2 = (((C2)2 x C))2)2 (only 5 multiplications v.s. 19) C25 = C16 x C8 x C = (C8)2 x (C4)2 x C = (C8 x C4)2 x C = ((C4)2 x (C2)2)2 x C = ((C4 x C2))2)2 x C = (((C2)2 x C2))2)2 x C = (((C2 x C)2)2)2 x C (only 6 multiplications vs. 24) 2010 = (1, 10, 101, 1010, 10100) = (1, 2, 5, 10, 20) 2510 = (1, 11, 110, 1100, 11001) = (1, 3, 6, 12, 25)
22
RSA with square and multiply
Decryption Ciphertext: C Plaintext: M = Cd mod n Decryption key: d = d1,…,dw x = 1 for j = 1 to w x = x·x mod N (square) if dj == 1 then x = x·C mod N (multiply) end if next j return x This means that the decryption execution time depends on the key !!!
23
Simple Timing Attack on RSA
Measure the time of the decryption execution The measured time corresponds to the number of 1s in the key => i.e., time leaks the Hamming weight of the key!!! Attack: 2|k| key search is now reduced to (|k| over w), where w is the measured Hamming weight of the key and |k| is the size of the key. (i.e., key combinations with w bits equal to 1) Best case for the attacker: w=1 => the search space is |k| The worst case for the attacker: w=|k|/2 => the search space is |k|!/(|k|/2)!x(|k|/2)! Example: a 2^1024 now reduced to 2^612
24
Simple Power Analysis (E.g., Kocher 1998) Attacker directly uses power consumption to learn bits of secret key. Wave forms visually examined. Big features like rounds of DES, square vs. multiply in RSA exponentiation, and small features, like hamming weight of words. Relatively easy to defend against.
25
Experiment: SPA on exponentiation
Attack on the top-down square and multiply exponentiation algorithm during signing or decryption Record a power trace of the operation Visually confirm if multiplications were executed in each step
26
Experiment: SPA on exponentiation
If a squaring is followed by another squaring, this bit of the exponent is zero If the squaring is followed by a multiplication, this bit of the exponent is one
27
Experiment: SPA on exponentiation
If the squaring is followed by another squaring, this bit of the exponent is zero If the squaring is followed by a multiplication, this bit of the exponent is one
28
RSA timing attacks over the network
Remote timing attacks are practical. by D. Boneh and D. Brumley, In proceedings of the 12th Usenix Security Symposium, The attack was performed over the campus network The attacks extracts the bits of the factor q (n=pq) time measurement indicates if a bit of q is 1 or 0 n measure time Attacker Server RSAK(n)
29
Diffie-Hellman kriptografski sustav
Kriptografija asimetričnog (javnog) ključa Diffie-Hellman kriptografski sustav
30
Diffie-Hellman: uvod Prvi algoritam zasnovan na javnom kljucu objavili su Diffie i Hellman godine “New Directions in Cryptography.” W. Diffie and M. Hellman, IEEE Transactions on Information Theory, Vol. 22 #6, 1976, pp Ovaj rad je prvi uveo pojam kriptografije javnog kljuca Diffie-Hellman (DH) algoritam omogucuje “sigurnu” uspostavu simetricnog kljuca izmedju dva korisnika Diffie-Hellman Key Exchange (Agreement) Protocol Postoje eksenzije za uspostavu simetricnih kljuceva izmedju vise od dva korisnika tzv. Group Key Agreement DH algoritam se zasniva na problemu odredjivanja (racunanja) diskretnog logaritma (discrete logarithm problem)
31
Discrete Logarithm Problem
Za dani prosti broj p, broj cije potencije modulo p generiraju sve cijele brojeve iz skupa {1,2,..., p-1} nazivamo primitivan korijen (primitive root). Ako je g primitivan korijen prostog broja p tada su brojevi gi mod p, (i = 1, 2, ..., p-1), razliciti i daju neku permutaciju niza 1, 2,..., p-1 Za p = 7, g = 3 -> {31 = 3, 32 = 2, 33 = 6, 34 = 4, 35 = 5 , 36 = 1}. Q. Je li g primitivni korijen za broj p? Za bilo koji cijeli broj b i primitivni korijen g prostog broja p, mozemo naci jedinstveni eksponent i takav da b mod p = gi mod p ( skraceno b gi (mod p) ) Eksponent i nazivamo diskretnim logaritmom broja b po bazi g, mod p Racunanje diskretnih logaritama modulo prosti broj je vrlo tezak problem Za razliku od potenciranja (postoje efikansi algoritmi) Diffie-Hellman algoritam koristi ovu cinjenicu
32
Diffie-Hellman algoritam
Dijeljeni javni elementi p prosti broj g g < p; g je primitivni korijen broja p Korisnik A generira kljuceve Odaberi privatan kljuc XA XA < p Izracunaj javni kljuc YA YA = g XA mod p Korisnik B generira kljuceve Odaberi privatan kljuc XB XB < p Izracunaj javni kljuc YB YB = g XB mod p Korisnik A generira tajni (simetricni) kljuc KAB = (YB) XA mod p Korisnik B generira tajni (simetricni) kljuc KBA = (YA) XB mod p
33
Zasto Diffie-Hellman algoritam radi
Korisnik A racuna: Korisnik B racuna: Dakle A i B se dogovore oko zajednickog tajnog kljuca K = KAB = KBA = g XAXB mod p KAB = (YB) XA mod p (g XB mod p) XA mod p (g XB) XA mod p g XBXA mod p KBA = (YA) XB mod p (g XA mod p) XB mod p (g XA) XB mod p g XAXB mod p
34
Diffie-Hellman: Toy Example
p = 353, g = 3 A izabere privatan (tajan) kljuc XA = 97 B izabere privatan (tajan) kljuc XB = 233 A racuna javan kljuc YA = 397 mod 353 = 40 B racuna javan kljuc YB = 3233 mod 353 = 248 A racuna zajednicki tajni kljuc K= mod 353 = 160 B racuna zajednicki tajni kljuc K= mod 353 = 160 Sigurnosni aspekti: Potencijalan napadac zna slijedece informacije: p = 353, g = 3, YA = 40, te YB = 248 Napadac moze lako otkriti zajednicki kljuc K tako da otkrije rjesenje jednadzbe 3a mod 353 = 40 ili jednadzbe 3b mod 353 = 248 Napadac provjerava da li je 3a mod 353 = 40 za razlicite vrijednosti a = 1, 2, ..., 95, 96, 97 Sa velikim brojevima XA,XB i p, ovaj napad je nepraktican
35
Diffie-Hellman Key Exchange Protocol
Protokol nije autenticiran -> Man-In-The-Middle (MITM) napad. Q: Dajte primjer MITM napada na DH protokol. Alice Bob odaberi slucajan XA izracunaj gXA mod p gXA mod p odaberi slucajan XB izracunaj gXB mod p gXB mod p K = (g XB)XA mod p K = (g XA)XB mod p
36
Diffie-Hellman protokol: MITM napad
Napadac Malice pripremi za napad dva privatna kljuca XM1 i XM2 te izracuna odgovarajuce javne kljuceve YM1 i YM2. Alice transmitira YA Bobu. Malice presretne YA te prosljedi YM1 Bobu. Malice izracuna KAM =(YA) XM2 mod p. Bob primi YM1 te izracuna KBM =(YM1) XB mod p. Bob transmitira YB Alice. Malice presretne YB te prosljedi YM2 Alice. Malice izracuna KBM =(YB) XM1 mod p. Alice primi YM2 te izracuna KAM =(YM2) XA mod p. U ovom trenutku Alice i Bob misle da dijele zajednicki kljuc, ali zapravo Alice i Malice dijele kljuc KAM, dok Bob i Malice dijele kljuc KBM, gdje vjerojatno KAM KBM. Sada Malice moze dekriptirati i modificirati sve poruke koje Alice i Bob salju jedno drugome (preko Malice).
37
The Station-to-Station Protocol
Rjesava problem neautenticiranog Diffie-Hellman protokola Mutual entity authentication, mutual explicit key authentication Pretpostavka je da Alice i Bob posjeduju autenticirane javne kljuceve PUB odnosno PUA (npr., RSA javni kljucevi) Alice Bob odaberi slucajan XA izracunaj gXA mod p gXA mod p odaberi slucajan XB izracunaj gXB mod p K = (gXB )XA mod p gXB mod p,EK( E(PRB,gXB,gXA) ) digitalni potpis K = (gXB )XA mod p EK( E(PRA,gXB,gXA) )
38
RSA i Diffie-Hellman: primjene
SSL (e.g., Webmail) SSH (secure remote access) IPSec (Internet Key Exchange - IKE) PGP ( )
39
Slef-study: CrypTool
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.