190 likes | 332 Views
Krüptoalgoritmid. Algoritmid ja andmestruktuurid Loeng 9. Raamat. Bruce Schneier. Applied Cryptography. Protokollid, algoritmid ja lähtekoodid C-s Teine väljaanne (1996). Ei vaata kõiki. 1 plokkšiffer – DES 1 jadašiffer 1 HASH 1 Assümmeetriline šiffer – RSA 1 Allkirjaalgoritm – DSA.
E N D
Krüptoalgoritmid Algoritmid ja andmestruktuurid Loeng 9
Raamat Bruce Schneier. Applied Cryptography. Protokollid, algoritmid ja lähtekoodid C-s Teine väljaanne (1996)
Ei vaata kõiki 1 plokkšiffer – DES 1 jadašiffer 1 HASH 1 Assümmeetriline šiffer – RSA 1 Allkirjaalgoritm – DSA
DES Mis on blokk-siffreerimine • Lähteteksti (P) plokid šifreeritakse ja ja saadud tulemustest koostatakse šifrogramm (E) • E(P=P1+P2...) = E(P1)+E(P2)...
DES • Nõuded • Kõrge turvalisus • Algoritm peab olema selge ja arusaadav • Saladus peab olema võtmes • Algoritm peab olema vabalt saadav • Algoritm peab olema kergelt kasutatav • Algoritm peab olema elektrooniliselt realiseeritav • Algoritm peab olema effektiivne • Algoritm peab olema kontrollitav
DES • 64bitised blokid ja 56bitine võti • plokk jagatakse kaheks (left-right) • tehakse terve hulk permutatsioone (ümbertõstmisi) • vehapeal teisendused võtme ja pooltega • dešifreerimine peaagu sama algoritm
DES nõrkused • nõrgad võtmed (ei saa alati usaldada random võtit) • On olemas vastandvõtmed • Võtme pikkus
DESi variandid • Mitu võtit • Igas faasis oma võti (kokku 786bitine) • DESX (lisatakse eelnev häsh ja XOR • DES muutuvate S-Boxidega
Jadašifrid • blockšiffer bloki pikkusega 1 • 256 eri varianti? • vajab muutuvat võtit
Pseudojuhuslik generaator • Xn = (aXn-1 + b) mod m • Xn = (aXn-12 + bXn-1 + c) mod m • ... • mõned arvud (O – ületäitumine) • a=106, b=1283, m = 6075, O=220 • a=84589, b=45989, m=217728, O=235
Tagasisidega nihkeregister bn bn-1 ... b4 b3 b2 b1 Tagasisidefunktsioon
h = H(M) Eesmärk Antud M-st on lihtne leida h Antud h-st on raske (võimatu) leida M Antud M-st on raske leida M’,nii et h(M) = h(M’) HASH-funktsioonid
MD5 • Produtseeritakse 128-bitine hash • 4 initsiaalarvu • A = 0x01234567 • B = 0x89abcdef • C = 0xfedcba98 • D = 0x76543210 • neli funktsiooni • F(X,Y,Z) = (X and Y) or ((not X) and Z) • G(X,Y,Z) = (X and Z) or (Y and (not Z)) • H(X, Y, Z) = X xor Y xor Z • I(X, Y, Z) =Y xor (X or (not Z)) • Igale 512bitisele blokile 4 tiiru, igas 12 korda vastavat funktsiooni (plus veel midagi)
RSA • Kõige lihtsam algoritm • leitakse kaks VÄGA SUURT algarvu p ja q • leitakse nende korrutis n = pq • leitakse juhuslik võti e, nii et e ja (p-1)(q-1) • Eukleidese algoritmi järgi leitakse ded = 1 mod (p-1)(q-1) ehkd = e-1 mod (p-1)(q-1)
RSA šifreerimine • Public Key: • n ja e (p ja q hävitatakse) • Private key: • d • Krüpteerimine e šifreerimine • c = me mod n • Dešifreerimine • m = cd mod n
DSA - digiallkiri • Public keyp 512-1024 bitine algarvq 160bitine algtegur arvule p-1g = h(p-1)/q mod p, kus h<p-1 ja h(p-1)/q mod p > 1y = gx mod p • Private keyx < q (160bitine number)
DSA - allkirjastamine • Signeeriminek juhuarv < qr(signature) = (gk mod p) mod qs(signature) = (k-1(H(m) + xr)) mod q • Valideeriminew = s-1 mod qu1 = (H(m) * w) mod qu2 = (rw) mod qv = ((gu1*u2) mod p) mod qkui v=r siis allkiri kehtib
System.Security.Crypto • vaatame korraks sisse, homme kasutame