Algebra och talteori MMGL31 Föreläsning 7 VT 2008 Samuel Bengmark Mitt i kursen-utvärdering • Föreläsningar – – – – repetition tempo bilderna tekniken • Inlämningsuppgiften • Information • Övningar – uppgifterna – samarbetet – tekniken Övningen 29/2 flyttad till 19/2 • dvs övning nästa tisdag 13.00 1 Repetition • • • • Primtal på formen an-1 Mersenneprimtal Perfekta tal Samband mellan jämna perfekta tal och Mersenneprimtal Idag • Beräkna ak mod n för stora k (och n). • Lösa xk ≡n b • RSA-kryptering Beräkna 4523089≡1147 ? Börjar med att reducera exponenten med Eulers formel – φ(1147)= φ(31·37)=φ(31)·φ(37)=30·36=1080 – Får 4523089 ≡1147 4521080 2 + 929 ≡1147 ≡1147 (4521080)2· 452929 ≡1147 ≡1147 452929 Blev ju lite bättre, men … 2 Räcker beräkna 452929≡1147 ? … 452929 har 2467 siffror: 452929= 42034505218717012055276415687998850574700425170925176941017619153871580810504850404549522545164046276050812210 59160108249704394721597125657321896834030922122781196349871786111506029341288577319868403324412093592810026734 28132121389163553423145470035709998064721261173485091602584354167726246432329904116807428240571456932164971034 59947618183450540972034721534892498411277645357410204481240740213144520590652079930111224536574917100656081187 56955462203875231709405046528074271574233775484435227213189067359599674611756395959845932316708267895881523308 22140501686854077687045963176626437727474984265219222602835915972952108652668733471901604470837324851791443416 74901157775534691276757241715983092150129229720787261651155159891931301467485600210246807226690002139114370405 77422318811023573203269206250723662340849371140533087075644436132515599013123323855466696055838058591458696057 17932729414132411344381091780924847467950392667919388349279377326371961786035182053510854817928336547353534036 89787050408219106704624774567502945988657019707943175543828210094083376993149548743464824900170728613609582675 50231635948400349625638033511226970515516347777630024314221921204750905397936104285578098255710498772173639598 49169405015062685761339812940805759440444911217795109560262515317976166674085836339299398616241393205749592107 01006194814433039953864852832775488913211879388362403530936495314953492081961555399848198387681145673904817722 79292240410135254204020255484331593314379044067309070698876154211177797539393152751746301836832753606470672967 35431316764891137691433169972422382171824669154290842668540913061994591511183186151618821993990540068993413573 51212483437542957212690731131427892135906429694607147512900266025862404796710705908077376100702597628993035098 42475320619644976578122538396522298509918416956022520223156937258762836896468012842701602718384208402200768285 54838993304597910932780831329786518837849518693605596762871593600401781486595791673396083940651594420732067660 39133639969573547548968605674234497049257345247446650395955707167854697255096428336639853777598514818147896264 59117181038771927054765490949856494265058967194249970921126837435686671239264403422824976268552552531682030658 53535862831799016530218145658916611721697845428101384770202830201682308203051032020278099852780006311872593688 61661471841231174048292241169813546258839548391895777381165509978176318428281920041436518973671433422231636132 14105751648525898218689089152396443107261939712 Hur beräkna 452929≡1147 ? • Multipliciera 928 gånger och reducera mod 1147 varje gång. Går men är jobbigt. • Smartare med succesiv kvadrering. • Visar med exempel Beräkna 452929≡1147 ? 1. Skapar listan ï 2i 452 mod 1147 i 2 0 1 452 1 2 138 2 4 692 3 8 565 4 16 359 5 32 417 6 64 692 7 128 565 8 256 359 9 512 417 2. Skriver 929 som summa av 2-potenser 929 = 512 + 256 + 128 + 32 + 1 3. Får multiplikation av 5 faktorer 452 929 = 452 512 452 256 452128 452 32 4521 = = 417 ⋅ 359 ⋅ 565 ⋅ 417 ⋅ 452 ≡1147 417 ⋅ 359 ⋅ 565 ⋅ 417 ⋅ 452 ≡1147 353 ⋅ 565 ⋅ 417 ⋅ 452 ≡1147 121 ⋅ 417 ⋅ 452 ≡1147 1136 ⋅ 452 ≡1147 763 4. Slutsats 452929 ≡1147 763 3 Tänk gärna binärt! 929 = 512 + 256 + 128 + 32 + 1, dvs 929 på decimalform = 1110100001 på binär form i i 2ï 452 2 mod 1147 929 på binär form 0 1 452 1 1 2 138 0 2 4 692 0 3 8 565 0 4 16 359 0 5 32 417 1 6 64 692 0 7 128 565 1 8 256 359 1 9 512 417 1 452 929 = 417 ⋅ 359 ⋅ 565 ⋅ 417 ⋅ 452 ≡1147 417 ⋅ 359 ⋅ 565 ⋅ 417 ⋅ 452 ≡1147 353 ⋅ 565 ⋅ 417 ⋅ 452 ≡1147 121 ⋅ 417 ⋅ 452 ≡1147 1136 ⋅ 452 ≡1147 763 Succesiv kvadrering av ak mod n 1. 2. 3. Reducera först exponenten till ett värde r < φ(n) med hjälp av Euler formel, dvs så att ar ≡n ak. j Beräkna alla värden a, a2, a4, … , a2 , en kvadrering för varje nytt värde tills 2j<r och reducera i varje steg till ett värde mellan 0 och n. Skriv r på binär form, dvs j −1 r = c j a 2 + c j −1a 2 + ... + c2 a 2 + c1a 2 + c0 a, j 4. Får ak ≡n a r ≡n a j c j a 2 + c j −1a 2 j −1 2 2 +...+ c2 a 2 + c1a 2 + c0 a ≡n a c ja2 j a c j −1a 2 ci ∈ {0,1} j −1 22 2 ...a c2 a a c1a a c0 a Vilket är produkten av högst j tal i Zn. Lösa ekvation xk ≡m b Använder Eulers formel och invers till k modulo φ(m). 1. Beräkna φ(m) och finn invers k-1 till k modulo φ(m) (den finns omm SGD(k,φ(m))=1) 2. Då är bk en lösning eftersom -1 -1 -1 xk=(bk )k=bk k=b1+rφ(m)≡m b Det siste steget gäller enligt Eulers formel om SGD(b,m)=1 4 Uppgift 17.1 Uppgift : Lös x329 ≡1147 452 Lösning: 1. Beräknar φ(1147)=φ(31·37)=φ(31)·φ(37)=30·36=108 0 2. Beräkna invers till 392 mod 1080, dvs 329· x≡1080 1 ⇔ x≡1080 929 3. Beräknar 452929≡1147 763, mha succesiv kvadrering Förutsättningarna viktiga! • Patologiskt exempel x3 ≡8 2 RSA-krypto Utgår ifrån att även för stora n är • xk är lätta att beräkna med hjälp av bara x, k och n, genom successiv kvadrering Men • xk≡n a är mycket svår att beräkna utan att ha φ(n), vilken är svårt att beräkna utan att ha primtalsfaktorisering av n. 5 Exempel: ”då ba” • Välj sätt att koda bokstäver som tal a b c d e f g h i j k l m n … 11 12 13 14 15 16 17 18 19 20 21 22 23 24 … • • • • • Väljer två primtal p=11, q=13 Beräknar m=143, φ(143)=φ(11)φ(13)=10· 12=120. Väljer k=7 och beräknar k-1 ≡120 103. Publicerar m=143 samt k=7 Håller φ(143)=120 och k-1 ≡8 103 hemliga. Kunden • Text kodas till en sekvens siffror. då ba → 1438391112 • Sekvens delas upp i bitar så att ingen bit representerar ett tal ≥ 143, dvs s=(14,38,39,111,2) • Varje bit bi öpphöjs i 7 och får • (a1,a2, …, an)=(147,387, 397,1117,27) ≡143 (53,25,52,45,128). • Sekvensen (53,25,52,45,128) skickas till banken Banken • Banken får (a1,a2, …, an) ≡143 (53,25,52,45,128). • Banken beräknar (53103,25103, 52103,45103,128103,25103) ≡143 (14,38,39,111,2) • Wow!! 6 Öppen nyckel krypto • Alla vet nyckeln för att kryptera (m och k). • Dekrypteringsnycklarna känner bara mottagaren till (k-1,φ(m)). • För att beräkna dekryperingsnycklarna utifråm krypteringsnycklarna måste man för stora m kunna faktorisera m i sina primtalsfaktorer. • Om p och q har 200 siffror var tar det ca 75 år för världens idag snabbaste datorsystem att hitta faktorerna. Krypto-ägaren, tex banken • Välj sätt att koda bokstäver som tal, tex a b c d e f g h i j k l m n … 11 12 13 14 15 16 17 18 19 20 21 22 23 24 … Även blanksteg kan få sin egen siffra, låt säga 39. • Välj två stora primtal p och q (minst 200 siffror var) • Beräkna m=pq, samt φ(m)=(p-1)(q-1). • Välj k så att SGD(k,φ(m))=1, och kan då även beräkna inversen k-1 till k modulo φ(m). • Publicerar m, k (och valt sätt att koda bokstäver som siffror) (men publicerar absolut inte φ(m) och k-1). Kunden • Text kodas till en sekvens siffror. • Sekvens delas upp i bitar så att ingen bit representerar ett tal ≥ m, dvs s=(b1,b2,…,bN) • Varje bit bi öpphöjs i k och (a1,a2, …, an)=(b1k,b2k, …, bnk) skickas till banken. 7 Banken • Banken vill ta reda på bi och löser därför ekvationen xk ≡m ai genom beräkna aij. • Banken får då att x ≡m aik^{-1} ≡m bikk^{-1} ≡m bi1+rφ(m) ≡m bi 8