Algebra och talteori Mitt i kursen-utvärdering Övningen 29/2 flyttad

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