Machtsverheffen als geheimschrift dr Gerard Tel Universiteit Utrecht Nationale Wiskundedagen 2003 1 Overzicht Cryptografie vroeger Sleuteluitwisseling met getallen ElGamal geheimschrift: machten ElGamal breken: logaritme Generator met samengestelde orde RSA: worteltrekken Discussie, afsluiting 2 Cryptografie in de oudheid Caesar aan generaal: Vijand ziet boodschap maar kent z niet Aanvallen! + z (Caesar) Ddqydoohq! - z (Gen) Aanvallen! Aanvallen! Sleutel: z Symmetrisch 3 Cryptografie in 2003 Email, telefoon, betaalverkeer, disk Alice, Bob en Oscar Ez(x) ingewikkelder dan x + z Probleem: sleuteluitwisseling 4 Sleuteluitwisseling Alice en Bob hebben z Oscar ziet z niet Zonder ontmoeting? 5 Public-keycryptografie Diffie en Hellman Twee sleutels Encryptie: publiek Decryptie: geheim (1976) Pretty Good Privacy RSA en ElGamal 6 Diffie-Hellman: (ga)k = (gk)a Vast: g = 2.51 random keuze Links: a = 0.023 Rechts: k = 14.85 Bereken b = 2.51a Bereken u = 2.51k b = 1.021 u = 861300 afronden grootte Bereken z = 861300a 1.36 z = 1.369 Bereken z = 1.021k 1.36 z = 1.362 ???? 7 Modulair rekenen Modulus vast getal m = 499 498 250 *+498 350== 1600 orde(498) wordt 101= 2 250 ^ *3 350 87500 wordt 175 139 = =1 orde(139) =3 250 ^ 350 = 1901… wordt 437 360 ^ 6 = 1 orde(360) = 6 Generator g = 4 Orde q = 83 want g83 = 1 8 Modulair Diffie-Hellman Vast: g = 4 Alice: a = 40 Bob: k = 71 Bereken b = 4a Bereken u = 4k b = 187 u = 77 Bereken z = 77a z = 118 Bereken z = 187k 1. Afronden z = 118 2. Grootte 3. Random 9 Hoeveel rekenwerk? Alice: tweemaal macht ga en ua Bob: tweemaal macht gk en bk Oscar: ziet g, b en u; z=u ??(log b) Kost: 1 macht en 1 log b = ga u = gk z = ga*k = ua 10 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 11 Indiaas machtsverheffen Eerste 1: gratis Een 0: 1 verm. Schrijf 21 binair: 10101 g1 = g, g10 = g1 * g1, g101 = g10 * g10 * g, g1010 = g101 * g101, g10101 = g1010 * g1010 * Lengte: lg q 0 en 1: Half om half gratisEen 1: 2 verm. 1 verm. 2 verm. 1 verm. g, 2 verm. Kosten: 1.5 lg q 12 3log 10 berekenen op rijm Het relaas van 3kus en 10a De fout-fracties scheiden w’in tweeerlei soort Verdeling: 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 y < 5/2 want 35/2 > 10 Net zo is twee-eerste (da’s 2 dus) te klein, omdat 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. y > 2/1 want 32 < 101 y < 11/5 want 311 > 105 Elke reele functie is effectief inverteerbaar 13 De discrete logaritme Geen ordening!! Crypto> [ g^i | i <- [30..38] ] [345,382,31,124,496,487,451,307,230] Geen inperking zoekruimte! Algoritme? Kosten? 14 Shanks: grote stappen, kleine stappen Zoek a = glog g = 4, b = 187, b a < q = 83 Grote stappen: gi voor veelvouden van t: Crypto> [g^i | i <- [9,18..90] ] [169,118,481,451,371,324,365,308,156,416] g45 g9 Kleine stappen: b * gj voor j < t: g18 Crypto> [ b*(g^j) | j <- [0..8] ] g27 [187,249,497,491,467,371,486,447,291] b b*g b*g2 b*g5 b*g8 15 Shanks: Uitkomst en kosten Botsing: g45 = b * g5 Dus: b = g40 Grote stappen: q/t Veelvouden van t tot boven q Kleine stappen: Samen: Minimaal voor t = q : 2q t q/t + t 16 Werk per partij: orde q 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 17 ElGamal encryptie (1985) Alice 1. Sleutel maken: public en secret Kies a; bereken b = ga 2. Publiek Bob PGP public key: a^h479mfjksie$ (dit is b) Boodschap x Versleutelen: public Kies k; u = gk Ontsleutelen: secret z = bk; v = x.z 3. Ontvang (u, v) z = ua ; x = v/z (u, v) multiply, don’t add Oscar: b, u, v 18 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 19 Gekozen-berichtaanval Oscar zendt nep-bericht Alice ontsleutelt x Oscar pikt x 20 Aanval tegen ElGamal Oscar neemt u met Oscar heeft: samengestelde orde u, v, x kan met nep-u Stuur (u, v) Bereken: z = v/x Alice berekent ulog z a a = z=u x = v/z controleer Oscar pikt x dat uq = 1 Behandel een ontsleuteld bericht zo zorgvuldig als je geheime sleutel, ook als het onzin is! 21 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) 22 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. 23 Discussie Meer informatie: [email protected] www.cs.uu.nl/~gerard/Cryptografie 24