Machtsverheffen als geheimschrift dr Gerard Tel Universiteit Utrecht Nationale Wiskundedagen 2003
Overzicht Cryptografie vroeger Sleuteluitwisseling met getallen ElGamal geheimschrift: machten ElGamal breken: logaritme Generator met samengestelde orde RSA: worteltrekken Discussie, afsluiting
Cryptografie in de oudheid Caesar aan generaal: Vijand ziet boodschap Aanvallen! Aanvallen! Ddqydoohq! + z (Caesar) - z (Gen) maar kent z niet Sleutel: z Symmetrisch Aanvallen!
Cryptografie in 2003 Email, telefoon, betaalverkeer, disk Alice, Bob en Oscar Ez(x) ingewikkelder dan x + z Probleem: sleuteluitwisseling
Sleuteluitwisseling Zonder ontmoeting? Alice en Bob hebben z Oscar ziet z niet Zonder ontmoeting?
Public-keycryptografie Diffie en Hellman (1976) Twee sleutels Encryptie: publiek Decryptie: geheim Pretty Good Privacy RSA en ElGamal
Diffie-Hellman: (ga)k = (gk)a afronden grootte random keuze ???? Vast: g = 2.51 Links: a = 0.023 Bereken b = 2.51a Rechts: k = 14.85 Bereken u = 2.51k b = 1.021 u = 861300 Bereken z = 861300a Bereken z = 1.021k z = 1.369 z = 1.362 z = 1.36
Modulair rekenen Modulus vast getal m = 499 498 * 498 = 139 ^ 3 = 360 ^ 6 = 1 orde(498) = 2 1 orde(139) = 3 1 orde(360) = 6 250 + 350 = 600 wordt 101 250 * 350 = 87500 wordt 175 250 ^ 350 = 1901… wordt 437 Generator g = 4 Orde q = 83 want g83 = 1
Modulair Diffie-Hellman Vast: g = 4 Alice: a = 40 Bereken b = 4a Bob: k = 71 Bereken u = 4k b = 187 u = 77 Bereken z = 77a Bereken z = 187k z = 118 z = 118 1. Afronden 2. Grootte 3. Random
Hoeveel rekenwerk? Alice: tweemaal macht ga en ua Bob: tweemaal macht gk en bk Oscar: ziet g, b en u; z = ?? b = ga u = gk z = ga*k = ua z = u(log b) Kost: 1 macht en 1 log
Wat kost machtsverheffen? Hoeveel vermenigvuldigingen: g21? g21 = ((g10)2) * g 2 verm uit g10 = (((g5)2)2) * g 1 verm uit g5 = ((((g2)2 * g)2)2) * g 2 verm uit g2 Vermenigvuldigingen: 6
Indiaas machtsverheffen Een 0: 1 verm. Een 1: 2 verm. Eerste 1: gratis Schrijf 21 binair: 10101 g1 = g, gratis g10 = g1 * g1, 1 verm. g101 = g10 * g10 * g, 2 verm. g1010 = g101 * g101, 1 verm. g10101 = g1010 * g1010 * g, 2 verm. Lengte: lg q 0 en 1: Half om half Kosten: 1.5 lg q
3log 10 berekenen op rijm Het relaas van 3kus en 10a De fout-fracties scheiden w’in tweeerlei soort in die te klein zijn, en die te groot zijn de fractie vijf tweede blijkt boven de maat; waarom dat zo is, valt vrij simpel te zeggen want 3kus hoog vijf wint van 10a-kwadraat Net zo is twee-eerste (da’s 2 dus) te klein, om- dat drie-tot-de-twee-de haalt niet tien-hoog-een. Maar neem je elf-vijfde dan zit j’er weer boven want drie-tot-de-elfde slaat vijfde-macht-van-tien. Verdeling: y < 5/2 want 35/2 > 10 y > 2/1 want 32 < 101 y < 11/5 want 311 > 105 Elke reele functie is effectief inverteerbaar
De discrete logaritme Geen ordening!! Geen inperking zoekruimte! Crypto> [ g^i | i <- [30..38] ] [345,382,31,124,496,487,451,307,230] Geen inperking zoekruimte! Algoritme? Kosten?
Shanks: grote stappen, kleine stappen g = 4, b = 187, a < q = 83 Zoek a = glog b Grote stappen: gi voor veelvouden van t: Crypto> [g^i | i <- [9,18..90] ] [169,118,481,451,371,324,365,308,156,416] g9 g18 g27 g45 Kleine stappen: b * gj voor j < t: Crypto> [ b*(g^j) | j <- [0..8] ] [187,249,497,491,467,371,486,447,291] b b*g b*g2 b*g8 b*g5
Shanks: Uitkomst en kosten Botsing: g45 = b * g5 Dus: b = g40 Grote stappen: q/t Veelvouden van t tot boven q Kleine stappen: t Samen: q/t + t Minimaal voor t = q : 2q
Werk per partij: ordeq Alice/Bob: 1.5 lg q Oscar: 2 q 83 10 18 106 30 2000 1012 60 2.000.000 1048 240 2 x 1024 Kan op SmartCard Kan niet op Supercomputer
PGP public key: a^h479mfjksie$ ElGamal encryptie (1985) Sleutel maken: public en secret Alice Publiek Bob 1. Kies a; bereken b = ga PGP public key: a^h479mfjksie$ (dit is b) 2. Boodschap x Kies k; u = gk z = bk; v = x.z multiply, don’t add (u, v) Versleutelen: public Ontsleutelen: secret 3. Ontvang (u, v) z = ua ; x = v/z Oscar: b, u, v
Samengestelde orde: Pohlig-Hellman Bepaal a = hlog b waar hr = 1 r = c . d Shanks: 2 r Gemengde radix: a = a0 + c . a1 Vind a0 in 2c en a1 in 2d: Samen 2(c + d) Omdat b = ha: bd = (ha)d = h(a0 + c. a1)d = hd.a0 + c.d.a1 = (hd)a0 Dus a0 = h’ log bd waar h’ = hd, orde(h’) = c
Gekozen-berichtaanval Oscar zendt nep-bericht Alice ontsleutelt x Oscar pikt x
Aanval tegen ElGamal Oscar neemt u met samengestelde orde Stuur (u, v) Alice berekent z = ua x = v/z Oscar pikt x Oscar heeft: u, v, x Bereken: z = v/x a = ulog z kan met nep-u Behandel een ontsleuteld bericht zo zorgvuldig als je geheime sleutel, ook als het onzin is! controleer dat uq = 1
RSA: geheim grondtal Eerste PK-systeem Public key (n, e) Encryptie van x door Bob: y = xe (mod n) Ontsleutelen: Discrete wortel ey Rivest, Shamir, Adleman (1978)
Ontsleutelen met Lagrange n = p . q φ = (p -1)(q -1) xφ = 1 (mod n) Bereken d zo dat e.d = k.φ +1 yd = (xe)d = x k.φ +1 = 1k . x = x Kraken? Oscar probeert n te factoriseren. Neem n 1024 bits.
Discussie Meer informatie: gerard@cs.uu.nl www.cs.uu.nl/~gerard/Cryptografie