Oude cijfers en moderne cryptosystemen SuperTU/esday Eindhoven 11 februari, 2010 Henk van Tilborg Technische Universiteit Eindhoven 1 Het Caesar systeem Julius Caesar (100-44 BC), die Romeinse keizer was en door Brutus en Cassius is doodgestoken, gebruikte de volgende vercijfermethode: Verplaats iedere letter in het alfabet cyclisch over k plaatsen. Met k = 1 gaat de a naar de b, de b naar de c,, en de z weer naar de a. Dus met k = 7 krijg je de volgende vercijfering van het woord cleopatra: cleopatra ô +1 dmfpqbusb ô +1 engqrcvtc ô +1 fohrsdwud ô +1 gpistexve ô +1 hqjtufywf ô +1
2 SuperTUesday.nb irkuvgzxg ô +1 jslvwhayh Zo'n optelling kun je ook met een tabel uitvoeren. 0 a b c d e f g h i j k l m n o p q r s t u v w x y z 1 b c d e f g h i j k l m n o p q r s t u v w x y z a 2 c d e f g h i j k l m n o p q r s t u v w x y z a b 3 d e f g h i j k l m n o p q r s t u v w x y z a b c 4 e f g h i j k l m n o p q r s t u v w x y z a b c d 5 f g h i j k l m n o p q r s t u v w x y z a b c d e 6 g h i j k l m n o p q r s t u v w x y z a b c d e f 7 h i j k l m n o p q r s t u v w x y z a b c d e f g 8 i j k l m n o p q r s t u v w x y z a b c d e f g h 9 j k l m n o p q r s t u v w x y z a b c d e f g h i 10 k l m n o p q r s t u v w x y z a b c d e f g h i j 11 l m n o p q r s t u v w x y z a b c d e f g h i j k 12 m n o p q r s t u v w x y z a b c d e f g h i j k l 13 n o p q r s t u v w x y z a b c d e f g h i j k l m 14 o p q r s t u v w x y z a b c d e f g h i j k l m n 15 p q r s t u v w x y z a b c d e f g h i j k l m n o 16 q r s t u v w x y z a b c d e f g h i j k l m n o p 17 r s t u v w x y z a b c d e f g h i j k l m n o p q 18 s t u v w x y z a b c d e f g h i j k l m n o p q r 19 t u v w x y z a b c d e f g h i j k l m n o p q r s 20 u v w x y z a b c d e f g h i j k l m n o p q r s t 21 v w x y z a b c d e f g h i j k l m n o p q r s t u 22 w x y z a b c d e f g h i j k l m n o p q r s t u v 23 x y z a b c d e f g h i j k l m n o p q r s t u v w 24 y z a b c d e f g h i j k l m n o p q r s t u v w x 25 z a b c d e f g h i j k l m n o p q r s t u v w x y De Vigenère Tabel Voor het vercijferen op een computer maak je gebruik van een zogenaamde klokberekening, waarbij op de klok de getallen 0, 1,, 25 staan. Je ziet dan a als 0, b als 1, enzevoort, dus z als 25. Bijvoorbeeld c + 7 levert dan 2 + 7 = 9, wat dus j is. Evenzo levert x + 7 de letter e, want 23 + 7 = 30 en dat is gelijk aan 4 op deze klok.
SuperTUesday.nb 3 a 0 Het alfabet op een klok met 26 cijfers. In de wiskunde noemen we klokrekenen modulo rekenen. Hier zijn we modulo 26 aan het optellen. Rekenen modulo 26 houdt in dat we alleen werken met de getallen 0, 1,, 25. Als je bij je berekeningen antwoorden krijgt die buiten de verzameling 0, 1, 2,, 24, 25 liggen, moet je bij het antwoord net zolang 26 erbij tellen of ervan aftrekken tot het antwoord weer in 0, 1,, 25 zit. We schrijven in plaats van = om in de gaten te houden dat we aan het klokrekenen zijn. Op het einde van de regel schrijven we "(mod 26)" om de modulus (in dit geval 26) te onthouden. Dus: 23 + 7 4 mod 26, want 30 en 4 zijn hetzelfde modulo 26, In Mathematica gebruiken we de functie Mod hiervoor:
4 SuperTUesday.nb Mod 20 10, 26 4 Een andere manier om hetzelfde te zeggen is dat 20 + 10 4 mod 26 omdat 30 en 4 een veelvoud van 26 verschillen. Op de cirkel zijn ze hetzelfde. Nog een andere manier om hetzelfde te zeggen, is dat je van elke berekening het antwoord deelt door 26 en dat je de rest neemt. Om het Caesar cijfer op de computer uit te voeren hebben we nog een truc nodig om letters naar cijfers te transformeren. De internationale ASCII code kan hierbij helpen. a heeft de waarde 97, b de waarde 98,, en z de waarde 122. Als we er 97 van aftrekken krijgen we a Æ 0, b Æ 1,, z Æ 25. ToCharacterCode "cleopatra" 99, 108, 101, 111, 112, 97, 116, 114, 97 ToCharacterCode "cleopatra" 97 2, 11, 4, 14, 15, 0, 19, 17, 0 Je moet nu de sleutel erbij optellen, uiteraard modulo 26. Mod ToCharacterCode "cleopatra" 97 7, 26 9, 18, 11, 21, 22, 7, 0, 24, 7 Daarna moet je van de cijfers weer teruggaan naar de letters. Hieronder kun je zien hoe je in Mathematica deze stappen in één commando verpakt. Dit commando krijgt de naam "CaesarCijfer" en je kunt er een willekeurige tekst mee vercijferen. CaesarCijfer klaretekst_, sleutel_ : FromCharacterCode Mod ToCharacterCode klaretekst 97 sleutel, 26 97 Voorbeeld:
SuperTUesday.nb 5 klaretekst "typehierjeboodschap"; sleutel 5; CaesarCijfer klaretekst, sleutel ydujmnjwojgttixhmfu Een simpele manier om het Caesar systeem te breken is alle sleutels uit te proberen. Deze methode heet in het Engels exhaustive key search. De analyse van de cijfertekst "vvrnpqiybabzi" gaat dan als volgt: elke sleutelwaarde 0, 1,, 25 trekken we van de cijfertekst af en we kijken welke sleutel een nederlandse tekst geeft. We zetten alle mogelijkheden netjes in een tabel met behulp van de Table functie. cijfertekst "vvrnpqiybabz"; Table sleutel, CaesarCijfer cijfertekst, sleutel, sleutel, 0, 25 TableForm
6 SuperTUesday.nb 0 vvrnpqiybabz 1 uuqmophxazay 2 ttplnogwzyzx 3 ssokmnfvyxyw 4 rrnjlmeuxwxv 5 qqmikldtwvwu 6 pplhjkcsvuvt 7 ookgijbrutus 8 nnjfhiaqtstr 9 mmieghzpsrsq 10 llhdfgyorqrp 11 kkgcefxnqpqo 12 jjfbdewmpopn 13 iieacdvlonom 14 hhdzbcuknmnl 15 ggcyabtjmlmk 16 ffbxzasilklj 17 eeawyzrhkjki 18 ddzvxyqgjijh 19 ccyuwxpfihig 20 bbxtvwoehghf 21 aawsuvndgfge 22 zzvrtumcfefd 23 yyuqstlbedec 24 xxtprskadcdb 25 wwsoqrjzcbca
SuperTUesday.nb 7 2 Het Vigenère systeem 2.1 Het Vigenère systeem Wikipedia: Blaise de Vigenère (Saint-Pourçain-sur-Sioule, 5 april 1523-1596) was een Frans diplomaat en cryptograaf. Van zijn hand verschenen meer dan twintig werken waarvan zijn tractaat aangaande cryptografie hem de meeste roem opleverde. Men heeft naar aanleiding van dit tractaat onterecht het Vigenèrecijfer naar hem vernoemd. Het Vigenèrecijfer is in de cryptografie één van de klassieke handcijfers. Het werd uitgevonden door Giovanni Batista Belaso in 1553, maar het was door Blaise de Vigenère dat het algemeen bekend raakte, waardoor het zijn naam kreeg. Het werd echter lange tijd zelden gebruikt vanwege zijn complexiteit. Het idee van Vigenère was simpelweg om een beperkt aantal Caesar cijfers om de beurt toe te passen. Dat gebeurt dan aan de hand van een sleutelwoord. Bijvoorbeeld als het sleutelwoord "best" is, pas je de Caesar cijfers met waarde 1, 4, 18 en 19 om de beurt toe. ToCharacterCode "best" 97 1, 4, 18, 19
8 SuperTUesday.nb Voorbeeld: de sleutel is het woord "best" v i g e n e r e c r y p t o s y s t e e m b e s t b e s t b e s t b e s t b e s t b w m y x o i j x d v q i u s k r t x w x n Je kunt bij de vercijfering weer de Vigenère tabel gebruiken, maar ook het zgn. Vigenère wiel. Wij gebruiken de functie "tel-twee-letters-op" teltweelettersop a_, b_ : FromCharacterCode Mod ToCharacterCode a 97 ToCharacterCode b 97, 26 97 en vinden de cijfertekst
SuperTUesday.nb 9 klaretekst "technischeuniversiteiteindhoven"; sleutel "best"; L StringLength klaretekst ; sleuteluitg StringJoin Table StringTake sleutel, Mod i 1, 4 1, i, 1, L ; cijfertekst teltweelettersop klaretekst, sleuteluitg uiuaomkviimgjzwktmlxjxwbohzhwif 2.2 Het breken van Vigenère door Kasiski (1863) Wikipedia: Majoor Friedrich Wilhelm Kasiski (Schlochau in West-Pruisen, thans Człuchów in Polen, 29 november 1805-22 mei 1881) was Pruisisch infanterie officier, cryptograaf en archeoloog. In 1863 publiceerde Kasiski een 95 pagina's tellend boek over cryptografie, Die Geheimschriften und die Dechiffrierkunst (Duits: Geheimschrift en de kunst der ontsleuteling). Dit werk bevat de eerste bekende procedure voor het cryptoanalyse aanvallen van polyalfabetische substitutie versleutelingen, specifiek voor Vigenèrecijfers (hoewel niet wordt uitgesloten dat Charles Babbage alreeds op de hoogte was van soortgelijke methoden). De grafsteen bij Patjitan Op een grafsteen dicht bij de stad Patjitan op het eiland Java in Indonesië (Rudy Kousbroek, NRC, 29 maart 2002),
10 SuperTUesday.nb
SuperTUesday.nb 11 kan men de volgende tekst vinden:
12 SuperTUesday.nb
SuperTUesday.nb 13 cijfertekst "z_gjxfxfmf_dfwefdxwbujhrvwwgzebgzzzbagkbmagxbzmqhwgenfwb _vwohwxkywobml_dnnxokwwbmvxksotxkxwbmvxzdeubqfxddfmfdfalmvxocwgbdfhjxfwgzebgzzfvmjhlrntkrsklmzhblgxqhcnjxfxihwyadwgengzxbzmfmyubsmbddfwbgwxidoxoddwfrerazskqnwmbjdxfmrtihcnlnamt_vxoyaxkzdlbqwxkkwobmalehwkkzetxkk zvsztkrage swvrrrkfqpxzjm gzldvxkvwkayg lorhdzbfghfcvt gffjrticwgjnwb cxkvwzluwkdndzlsztkdexkdfntdwkqdjnduagadfmlsoxadjsfdfl" L StringLength cijfertekst z_gjxfxfmf_dfwefdxwbujhrvwwgzebgzzzbagkbmagxbzmqhwgenfwb _vwohwxkywobml_dnnxokwwbmvxksotxkxwbmvxzdeubqfxddfmfdfalmvxocwgbdfhjxfwgzebgzzfvmjhlrntkrsklmzhblgxqhcnjxfxihwyadwgengzxbzmfmyubsmbddfwbgwxidoxoddwfrerazskqnwmbjdxfmrtihcnlnamt_vxoyaxkzdlbqwxkkwobmalehwkkzetxkk zvsztkrage swvrrrkfqpxzjm gzldvxkvwkayg lorhdzbfghfcvt gffjrticwgjnwb cxkvwzluwkdndzlsztkdexkdfntdwkqdjnduagadfmlsoxadjsfdfl 403 Het idee is te zoeken naar twee identieke wat langere rijtjes letters in de cijfertekst. Hoogst waarschijnlijk komen die van twee identieke rijtjes letters in de klare tekst en werd hetzelfde stukje sleutel er op toegepast. i 4; Do If Count Characters StringTake cijfertekst, m, m i 1 Characters StringTake cijfertekst, n, n i 1, 0 i, Print m, n, StringTake cijfertekst, m, m i 1, n m, m, 1, L i, n, m 1, L i 1 4, 160, jxfx, 156 27, 127, wgze, 100 28, 128, gzeb, 100 29, 129, zebg, 100 30, 130, ebgz, 100
14 SuperTUesday.nb 31, 131, bgzz, 100 44, 176, xbzm, 132 50, 170, wgen, 120 66, 250, wobm, 184 79, 91, wbmv, 12 80, 92, bmvx, 12 267, 281,, 14 267, 282,, 15 273, 365, sztk, 92 281, 282,, 1 307, 351, xkvw, 44 Hieruit concluderen we dat de sleutellengte bijna zeker gelijk is aan 4. Merk op dat we zelfs twee identieke rijtjes van de lengte 8 gevonden hebben. We gaan nu de vier verschillende deelrijtjes bekijken, namelijk de letters 1, 5, 9, 13,, maar ook 2, 6, 10, 14, en 3, 7, 11, 15, en 4, 8, 12, 16,. r 4; subtext Table, i, 1, r ; Do subtext Mod i 1, r 1 subtext Mod i 1, r 1 StringTake cijfertekst, i, i, 1, L ; Do Print subtext i, i, 1, r zxmfduvzzambhn_hymnkmskmdqddmcdxzzmrrmlhxhdnbmsdgddrznjmhn _yzqkmhzk_sr rfz_dvy_hfc_jcn_vunsddddudsdd gx_ewhwbzkgmgwwxo _xwxtwxuxmaxghwbfhtkhxnxygzmubwxxwrkmxtnmxxlxolkt_ztg_wrpmzxk _ozhtftgbxzkztxnkngmxsl _ffwxjwezgazwfvwwlnwvoxvefffvwffezjnszgcfwwgzymfwodeswdrcavadwwawek_za_srqjgvwgldgvgrwwcwwdzefwjafojf jfdfbrggbbxqebokbdobkxbzbdflobjggvlklbqjiaexfbdbiofaqbfiltokbkbekx_vke_vkx_lka_rbf_fij_kldlkktqdalaf Voor de letters 1, 5, 9, 13, krijgen we de volgende letterfrequenties: Table FromCharacterCode j, Count ToCharacterCode subtext 1, j, j, 97, 122
SuperTUesday.nb 15 a, 1, b, 2, c, 3, d, 17, e, 0, f, 3, g, 1, h, 7, i, 0, j, 2, k, 4, l, 1, m, 11, n, 7, o, 0, p, 0, q, 2, r, 5, s, 5, t, 0, u, 3, v, 3, w, 0, x, 3, y, 3, z, 9 Nu kent het Nederlands de volgende letterwaarschijnlijkheden (in procenten): a 8.0 h 5.5 o 7.6 v 1.0 b 1.5 i 7.3 p 2.0 w 1.9 c 3.1 j 0.2 q 0.1 x 0.2 d 4.0 k 0.7 r 6.1 y 1.7 e 12.5 l 4.1 s 6.5 z 0.1 f 2.3 m 2.5 t 9.3 g 2.0 n 7.0 u 2.7 Omdat we aannemen dat hier het Caesar cijfer gebruikt is, concluderen we dat zeer waarschijnlijk a Æ z en dus e Æ d is toegepast. Evenzo volgt uit Table FromCharacterCode j, Count ToCharacterCode subtext 2, j, j, 97, 122 a, 6, b, 0, c, 3, d, 5, e, 6, f, 13, g, 7, h, 0, i, 0, j, 5, k, 1, l, 2, m, 1, n, 2, o, 3, p, 0, q, 1, r, 3, s, 3, t, 0, u, 0, v, 7, w, 20, x, 2, y, 1, z, 7 dat zeer waarschijnlijk e Æ w en dus a Æ s is toegepast op de letters 2, 6, 10, 14,. Evenzo levert Table FromCharacterCode j, Count ToCharacterCode subtext 3, j, j, 97, 122 a, 1, b, 4, c, 0, d, 0, e, 1, f, 2, g, 8, h, 5, i, 0, j, 0, k, 7, l, 3, m, 7, n, 4, o, 3, p, 1, q, 0, r, 2, s, 1, t, 8, u, 2, v, 0, w, 10, x, 19, y, 1, z, 7 dat a Æ t voor de letters 3, 7, 11, 15,. Ten slotte levert
16 SuperTUesday.nb Table FromCharacterCode j, Count ToCharacterCode subtext 4, j, j, 97, 122 a, 5, b, 16, c, 0, d, 6, e, 4, f, 9, g, 4, h, 0, i, 4, j, 4, k, 12, l, 8, m, 0, n, 0, o, 5, p, 0, q, 4, r, 2, s, 0, t, 2, u, 0, v, 3, w, 0, x, 5, y, 0, z, 1 dat e Æ b en dus a Æ x voor de letters 4, 8, 12, 16,. trektweelettersaf a_, b_ : FromCharacterCode Mod ToCharacterCode a 97 ToCharacterCode b 97, 26 97 We krijgen aldus de sleutel "zstx". sleutel "zstx"; klaretekst ""; Do klaretekst If StringTake cijfertekst, i "_", klaretekst klaretekst "_", klaretekst klaretekst trektweelettersaf StringTake cijfertekst, i, StringTake sleutel, Mod i 1, StringLength sleutel 1, i, 1, StringLength cijfertekst klaretekst a_nmyneinn_ggeliefdevrouwedjamijahgeboreninachttienhonde _ddrieenzevent_goverledendentwaalfdendecembernegentienhonderdeneenomyndjamijahmynroosvansaronhoemoetikumyneliefdeenhoogachtingbetuigendeheelewereldismydaartoetekleinzalikuooitw_derzienalsereenlevenishiernamaals gythansinh adyszyngywaart ogoedenwerdzo tvuilgegooidda omikzaldenmoei kenwegovergolgothanemenenuweerterugvindentotwederziens É Reconstructie Hieruit reconstrueren we Aan myne innig geliefde vrouwe Djamijah, geboren in achttienhonderd drie en zeventig overleden den twaalfden December negentienhonderd en een. O myn
SuperTUesday.nb 17 g g y Djamijah, myn roos van Saron, hoe moet ik u myne liefde en hoogachting betuigen? De heele wereld is my daar toe te klein. Zal ik u ooit wederzien? Als er een leven is hiernamaals zoudt gy thans in het paradys zyn. Gy waart zoo goed en werd zoo met vuil gegooid daarom. Ik zal den moeilyken weg over Golgotha nemen en u weer terugvinden. Tot wederziens! waarbij de rode letters door ons ingevuld zijn. Kousbroek: Latere nasporingen geven aan dat haar echtgenote Marcus Jacobus van Erp Taalman-Kip heette en dat hij haar trouwde toen hij 71 was! Waar zou de combinatie "zstx" vandaan komen? Is het misschien een Caesar vercijfering? cijfertekst "zstx"; Table sleutel, CaesarCijfer cijfertekst, sleutel, sleutel, 0, 25 TableForm 0 zstx 1 yrsw 2 xqrv 3 wpqu 4 vopt 5 unos 6 tmnr 7 slmq 8 rklp 9 qjko 10 pijn 11 ohim 12 nghl 13 mfgk 14 lefj 15 kdei 16 jcdh 17 ibcg 18 habf 19 gzae 20 fyzd 21 exyc 22 dwxb 23 cvwa 24 buvz 25 atuy Het woord "pijn" lijkt erg waarschijnlijk.
18 SuperTUesday.nb 3 "Kop of munt" over de telefoon Alice en Bob willen over een telefoon "kop of munt" gooien, maar ze vertrouwen elkaar niet. Eerste afspraak: Alice wint als de munten van Alice en van Bob met dezelfde kant boven komen, anders wint Bob. Kop Beide munten komen met dezelfde kant omhoog Munt Beide munten komen met verschillende kant omhoog Tweede afspraak: Kop Tail een eigennaam met een even aantal letters een eigennaam met een oneven aantal etters Alice geeft het Eindhovense telefoonnummer 2513316. Hierop moet Bob de uitkomst van zijn worp vertellen, bijvoorbeeld "munt". Alice geeft nu de naam "Dobbelsteen'' van oneven lengte. Bob kan dit gemakkelijk controleren. Oneven is "munt", net zoals de uitkomst van de worp van Bob, dus Alice heeft gewonnen.
SuperTUesday.nb 19 4 Hoe spreek je een geheime sleutel af, als je afgeluisterd wordt? 4.1 Het idee We maken gebruik van de wiskunde formule Bijvoorbeeld a m n = a m n = a n m. en 2 3 4 = 2 2 2 4 = 2 2 2 2 2 2 2 2 2 2 2 2 = 2 12 2 4 3 = 2 2 2 2 3 = 2 2 2 2 2 2 2 2 2 2 2 2 = 2 12 Stap 1 Alice kiest de geheime exponent 3 en zegt over de telefoon 8 (wat 2 3 is). Bob kiest de geheime exponent 4 en zegt over de telefoon 16 (wat 2 4 is). Stap 2 geheim openbaar Alice 3 8 Bob 4 16 Alice berekent 16 3 en vindt 4096 (want dit is 2 4 3 = 2 12 ). Bob berekent 8 4 en vindt 4096 (want dit is 2 3 4 = 2 12 ). Het getal 1024 is hun geheime sleutel. hoort berekent Alice 16 16 3 4096 Bob 8 8 4 4096
20 SuperTUesday.nb GROOT PROBLEEM Dit getal 1024 is niet zo erg geheim, want Eve (de afluisteraar), weet dat 8 gelijk is aan 2 3. Eve kent dus het geheime getal 3 van Alice en vindt (net als Alice) het getal 1024 uit de berekening: 16 3. 4.2 De oplossing met modulo (klok) rekenen. We werken: - met grotere getallen - antwoorden worden gedeeld door 99991 en dan wordt alleen de rest van deze deling opgeschreven. geheim openbaar Alice 12 345 rest van 2 12 345 na deling door 99 991 Bob 11 111 rest van 2 11 111 na deling door 99 991 Hoe reken je de rest van 2 12 345 na deling door 99991 uit? Niet zo: 12 345 xx 2 164 171 010 688 258 216 356 020 741 663 906 501 410 127 235 530 735 881 272-116 103 087 925 094 171 390 144 280 159 034 536 439 457 734 870 419 127-140 401 667 195 510 331 085 657 185 332 721 089 236 401 193 044 493 457-116 299 768 844 344 303 479 235 489 462 436 380 672 117 015 123 283 299-131 391 904 179 287 678 259 173 308 536 738 761 981 139 958 654 880 852-234 908 448 338 817 289 014 166 774 169 869 251 339 379 828 599 748 492-918 775 437 864 739 032 217 778 051 333 882 990 074 116 246 281 269 364-933 724 892 342 134 504 702 491 040 016 637 557 429 810 893 780 765 197-418 589 477 584 716 543 480 995 722 533 317 862 352 141 459 217 781 316-266 211 186 486 157 019 262 080 414 077 670 264 642 736 018 426 998 113-523 445 732 680 856 144 329 876 972 273 300 703 392 584 997 729 207 197-971 083 945 700 345 494 092 400 147 186 997 307 012 069 454 068 489 589-035 676 979 448 169 848 060 836 924 945 824 197 706 493 306 108 258 511-936 030 341 393 221 586 423 523 264 452 449 403 781 993 352 421 885 094-664 052 270 795 527 632 721 896 121 424 813 173 522 474 674 395 886 155-092 203 404 036 730 748 474 781 710 715 745 446 135 468 098 139 831 824-083 259 647 919 175 273 503 681 561 172 684 624 283 384 438 504 776 503-000 432 241 604 550 454 374 116 320 822 227 191 911 322 123 484 085 063-926 350 606 342 197 146 407 841 178 028 071 147 192 533 942 517 270 553-513 988 142 925 976 090 769 695 456 221 159 699 052 583 533 011 331 652 -
SuperTUesday.nb 21 079 347 093 098 173 086 975 483 539 274 464 023 357 456 484 465 482 927-479 569 437 320 368 592 222 760 278 170 306 076 733 438 801 098 370 797-675 711 274 671 054 970 711 442 158 930 561 684 343 135 774 118 741 594-506 702 833 147 396 758 825 015 850 042 983 343 690 345 185 995 956 235-143 825 771 620 543 546 030 664 562 647 854 656 431 302 644 574 119 873-820 215 595 718 618 624 485 232 422 006 575 550 007 068 883 734 241 454-686 368 856 734 496 265 385 908 809 403 972 494 685 137 741 122 866 896-719 678 053 937 285 818 409 751 670 320 140 501 843 039 224 040 735 870-096 889 596 273 419 106 389 103 662 095 318 937 990 625 980 136 711 988-237 421 962 315 266 686 856 089 505 981 438 440 850 638 067 589 321 141-759 499 017 023 839 596 858 455 548 192 000 140 085 142 294 166 987 063-499 024 792 681 334 843 159 790 936 321 351 919 859 758 669 569 200 541-507 612 099 780 909 705 198 902 176 026 219 872 201 715 422 096 090 343-686 272 984 351 441 594 569 506 778 041 062 663 266 799 342 793 856 313-801 540 959 815 845 788 584 759 033 248 828 248 561 586 450 271 172 777-240 971 795 656 082 001 848 115 815 260 930 521 663 167 480 173 886 064-019 118 572 778 281 516 735 157 779 555 888 167 787 064 432 558 595 410-843 987 446 497 881 666 288 423 233 170 060 413 025 924 629 950 477 303-342 180 149 398 926 073 618 582 715 358 742 250 388 958 231 281 694 757-980 523 791 263 699 450 732 952 325 727 664 209 947 786 063 982 561 775-327 638 504 516 918 570 101 319 391 698 412 388 607 603 742 484 414 748-268 389 669 129 118 026 878 969 735 782 286 841 116 842 656 410 574 647-607 524 418 900 720 328 045 377 993 386 279 808 768 990 376 289 424 757-351 052 369 393 977 137 871 998 119 168 898 493 037 938 756 635 621 557-623 138 404 459 266 598 837 784 229 325 799 838 782 026 060 481 496 865-561 757 031 839 002 257 091 802 876 949 248 392 744 175 669 112 242 088-439 883 248 336 310 597 001 257 385 980 776 961 529 351 198 877 747 193-531 054 956 881 808 332 177 946 751 404 038 228 718 567 911 769 630 971-553 915 410 012 677 600 002 457 982 207 465 176 670 752 102 117 002 773-980 548 089 696 530 972 476 439 694 599 881 281 812 973 217 265 853 884-727 906 535 479 745 854 085 338 851 105 144 585 481 994 156 206 497 436-745 899 944 877 732 531 412 541 279 014 300 324 594 890 623 941 145 509-856 940 982 863 769 834 430 048 120 562 966 797 907 114 102 689 879 364-945 689 860 493 474 954 538 422 367 719 507 882 513 166 051 007 352 994-068 319 251 450 666 676 648 368 200 564 329 382 998 758 875 760 414 259-654 004 977 261 309 988 267 319 806 354 856 051 784 553 990 936 610 634-733 375 984 159 028 722 378 614 984 450 255 386 315 585 631 994 503 350-002 142 910 493 190 254 825 610 707 400 589 976 364 985 748 467 955 131-077 971 641 882 672 895 854 571 236 368 282 811 336 220 769 174 784 720-113 331 269 084 746 524 204 124 263 475 054 112 841 630 933 586 166 195-036 115 696 469 686 075 600 480 420 563 557 567 616 835 633 252 622 327-172 811 002 146 392 754 445 051 182 169 805 284 630 259 703 542 633 955-126 179 520 113 059 629 914 229 833 688 535 925 729 676 778 028 406 897-316 106 101 038 469 119 090 984 567 152 591 962 365 415 039 646 394 591 -
22 SuperTUesday.nb 503 830 797 626 339 246 986 057 077 758 611 413 664 914 168 745 375 266-786 298 141 171 496 573 941 614 387 744 125 843 685 677 063 619 782 918-759 823 106 021 054 037 757 857 761 587 472 240 835 040 580 447 360 544-029 064 930 412 569 943 169 729 238 102 162 312 218 687 930 203 068 055-400 275 795 180 972 382 856 696 655 279 408 212 344 832 Mod xx, 99 991 66 730 Om 2 12 345 efficiënt uit te rekenen, het antwoord te delen door 99991 en de rest te vinden, maken we gebruik van de volgende truc: 2 12 345 = 2 12 344 2 = 2 6172 2 2 = 2 3086 2 2 2 = 2 1543 2 2 2 2 = 2 771 2 2 2 2 2 2 = Als je dit even volhoudt kom je op 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 x 2 x 2 2 2 2 2 2 2 x 2 x 2 x 2 2 2 x 12 345 x Truc 2: het resultaat van elke tussenberekening deel je door 99991 en dan ga je met de rest verder. In Mathematica doet de PowerMod functie een machtsverheffing op deze manier. Alice berekent PowerMod 2, 12 345, 99 991 66 730
SuperTUesday.nb 23 Bob berekent PowerMod 2, 77 777, 99 991 15 822 geheim openbaar Alice 12 345 66 730 Bob 77 777 15 822 Om de gemeenschappelijke sleutel te vinden berekenen ze nu: Alice berekent hoort berekent Alice 15 822 12 345 15 822 77 777 Bob 66 730 66 730 PowerMod 15 822, 12 345, 99 991 80 549 Bob berekent PowerMod 66 730, 77 777, 99 991 80 549 De gemeenschappelijke geheime sleutel is dus: 80549 É Kan Eve dit systeem niet ook gemakkelijk breken? NEE, want je kunt niet gemakkelijk bij gegeven 66730 de exponent 12345 terugvinden. Dat komt omdat je niet weet hoe vaak de deling door 99991 opging. Anders gezegd De "tegenovergestelde" operatie van machtsverheffen is het nemen van een logaritme. De gewone logaritme is een gemakkelijke functie. p 541; Plot Log x, x, 1, p
24 SuperTUesday.nb 6 5 4 3 100 200 300 400 500 Maar met "delen met rest" niet. ListPlot Table Mod 2 j,p, j, j, 1, p 500 400 300 200 100 100 200 300 400 500 5 Anoniem betalen, maar wel maar één keer! Als je met digitaal geld betaalt, zou je eigenlijk wel anoniem willen blijven. Maar de winkel of bank zou wel achter je identiteit willen komen als je hetzelfde "geld" twee keer wilt besteden.
SuperTUesday.nb 25 Idee 1: Om dit aan te pakken is de eigennaam over twee kastjes verborgen. Als je de inhoud van beide kastjes kent, bijv. "eikvwrt" en "pabgsan", dan kun met "teltweelettersop" die naam achterhalen. teltweelettersop "eikvwrt", "pabgsan" tilborg Idee 2: Voeg aan elke digitale munt een aantal van die bij elkaar horende kastjes toe. Hieronder zie je 6 paren kastjes. Het bovenste kastje is steeds op een willekeurige manier gevuld. Het onderste kastje wordt steeds zo gevuld dat bovenste en onderste kastje samen "tilborg" opleveren. boxes Table "", i, 1, 2, j, 1, 6 ; Do boxes 1, j FromCharacterCode Table Random Integer, 97, 97 25, 7, j, 1, 6 ; Do boxes 2, j trektweelettersaf "tilborg", boxes 1, j, j, 1, 6 boxes TableForm rrajafy nnjjwpi qgwmuhq qrsimgk rnlnzay abfvdin crlsomi gvcsscy dcppukq drttclw cvaopri thggljt Als je je geld besteed bij een winkel opent die voor elk paar kastjes OF het bovenste OF het onderste (steeds op een onvoorspelbare manier). openeen Table Random Integer, 1, 2, 6 antwoordeen Table boxes openeen j, j, j, 1, 6
26 SuperTUesday.nb 2, 1, 1, 1, 2, 2 crlsomi, nnjjwpi, qgwmuhq, qrsimgk, cvaopri, thggljt Op grond hiervan weet de winkelier niets. Hij verricht de transactie en stuurt deze gegevens naar de bank. Als dezelfde persoon hetzelfde geld nog een keer wil besteden, gebeurt er bij die winkel hetzelfde. opentwee Table Random Integer, 1, 2, 6 antwoordtwee Table boxes opentwee j, j, j, 1, 6 1, 2, 1, 2, 1, 1 rrajafy, gvcsscy, qgwmuhq, drttclw, rnlnzay, abfvdin De kans dat bij beide winkeliers dezelfde kastjes worden geopend is 1 2 6. Dus met kans 1-1 2 6 is er een groep waarvan zowel het bovenste als het onderste kastje open is gegaan i 2; teltweelettersop antwoordeen i, antwoordtwee i tilborg Dus met 6 groepjes wordt je identiteit al met een kans van N 1 1 2 6 100, 3 98.4 bekend! Deze methode is niet erg practisch, maar laat wel zien dat dit soort dingen gerealizeerd kunnen worden.