Skaičių teorija ir modulinė aritmetika: uždaviniai su sprendimais žingsnis po žingsnio
Nemokami uždaviniai tema Skaičių teorija ir modulinė aritmetika su brėžiniais, užuominomis ir išsamiais sprendimais. Kiekvieną kartą naujos reikšmės, trijų lygių: DBD ir liekanos, atvirkštiniai skaičiai ir kongruencijos, moduliniai laipsniai ir RSA.
Nemokamas pratybų uždavinysLengvas
Raskite 942 mod 11, liekaną r, kai 0 ≤ r < 11.
a = 942n = 11
Tikslus atsakymas: sveikasis skaičius, be apvalinimo.
Atvirkštiniam skaičiui taikykite išplėstinį algoritmą ir pasilikite a koeficientą; jei jis neigiamas, pridėkite n.
Sprendžiant a·x ≡ b, dauginkite iš a⁻¹; dvi kongruencijas sujunkite rašydami x = r₁ + m₁k.
Laipsniams užrašykite rodiklį dvejetainiu pavidalu ir kelkite kvadratu pakartotinai; RSA atveju d = e⁻¹ mod φ(n), kur φ(n) = (p − 1)(q − 1).
Dažnos klaidos
Neigiamam skaičiui duoti neigiamą liekaną.
Sustoti Euklido algoritme ties pirmąja liekana.
Palikti atvirkštinį skaičių neigiamą, o ne pridėti n.
Imti RSA rodiklį d moduliu n, o ne φ(n).
Pagal Ferma teoremą redukuoti rodiklį moduliu p, o ne p − 1.
Pagrindinės formulės
Dalyba su liekana
a = q·n + r, 0 ≤ r < n
Euklidas
gcd(a, b) = gcd(b, a mod b)
Mažiausias bendrasis kartotinis
lcm(a, b) = a·b/gcd(a, b)
Atvirkštinė
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
Tiesinė kongruencija
a·x ≡ b → x ≡ a⁻¹·b (mod n)
Oilerio funkcija
φ(n) = n·∏(1 − 1/p), φ(pᵏ) = pᵏ − pᵏ⁻¹
Ferma
aᵖ⁻¹ ≡ 1 (mod p)
RSA
n = pq, φ = (p − 1)(q − 1), d = e⁻¹ mod φ, c = mᵉ mod n, m = cᵈ mod n
Išmokite Skaičių teorija ir modulinė aritmetika nuo nulio
1Liekanos ir kongruencijos
Dalijant a iš n gaunamas dalmuo q ir liekana r: a = q·n + r, kur 0 ≤ r < n. Liekana žymima a mod n. Neigiamam skaičiui q taip pat neigiamas: −3 = −1·7 + 4, taigi −3 mod 7 = 4.
Du skaičiai yra kongruentūs moduliu n, a ≡ b (mod n), kai duoda tą pačią liekaną, t. y. kai n dalija a − b.
Liekanas galima redukuoti kiekviename žingsnyje, taip skaičiai išlieka maži:
(a + b) mod n = ((a mod n) + (b mod n)) mod n, ir taip pat a·b
Pavyzdžiui, 47·58 mod 9: 47 ≡ 2 ir 58 ≡ 4, taigi 47·58 ≡ 8 (mod 9).
Savikontrolė Kam lygu −17 mod 5?
2
3
−2
−3
Atsakymas: 3. −17 = −4·5 + 3, todėl liekana yra 3. Atsakymas 2 yra 17 mod 5; liekana niekada nėra neigiama.
2Euklido algoritmas
Didžiausias bendrasis daliklis gcd(a, b) yra didžiausias skaičius, dalijantis abu. Euklido algoritmas naudoja gcd(a, b) = gcd(b, a mod b):
Padalykite: a = q·b + r.
Pakeiskite (a, b) į (b, r).
Kartokite, kol liekana bus 0. Paskutinė nenulinė liekana yra DBD.
Mažiausias bendrasis kartotinis išplaukia iš jo: lcm(a, b) = a·b / gcd(a, b).
Savikontrolė Kam lygu gcd(84, 36)?
12
252
4
6
Atsakymas: 12. 84 = 2·36 + 12 ir 36 = 3·12 + 0, taigi DBD yra 12. 252 yra mažiausias bendrasis kartotinis, 84·36/12.
3Atvirkštiniai skaičiai ir išplėstinis algoritmas
Skaičiaus a atvirkštinis moduliu n yra skaičius x, kad a·x ≡ 1 (mod n). Jis egzistuoja tik tada, kai gcd(a, n) = 1.
Išplėstinis Euklido algoritmas vykdo Euklido algoritmą porai (n, a) ir kiekvienai liekanai išsaugo koeficientą t, kad kiekviena liekana r ≡ t·a (mod n). Pradėkite nuo t = 0 skaičiui n ir t = 1 skaičiui a; kiekvienas naujas t yra t dviem eilutėmis aukščiau minus q kartų t viena eilute aukščiau. Pasirodžius liekanai 1, jos t yra atvirkštinis skaičius.
Turint atvirkštinį skaičių, kongruencija a·x ≡ b (mod n) išsprendžiama x ≡ a⁻¹·b. Kai d = gcd(a, n) didesnis už 1, yra d sprendinių, jei d dalija b, o priešingu atveju sprendinių nėra.
Dvi kongruencijos su tarpusavyje pirminiais moduliais, x ≡ r₁ (mod m₁) ir x ≡ r₂ (mod m₂), turi lygiai vieną sprendinį moduliu m₁·m₂ (Kinų liekanų teorema). Užrašykite x = r₁ + m₁k ir spręskite k atžvilgiu.
Kartotinis kėlimas kvadratu greitai apskaičiuoja aᵏ mod n: užrašykite k dvejetainiu pavidalu, raskite a, a², a⁴, a⁸, … mod n keldami kvadratu ir redukuodami, ir sudauginkite laipsnius, kurių bitas lygus 1.
Mažoji Ferma teorema: pirminiam p, nedalijančiam a, aᵖ⁻¹ ≡ 1 (mod p). Taigi rodiklį galima redukuoti moduliu p − 1.
RSA raktas sudaromas iš dviejų pirminių skaičių p ir q:
n = p·q ir φ(n) = (p − 1)(q − 1).
Pasirinkite e, kad gcd(e, φ(n)) = 1; (n, e) yra viešasis raktas.
Apskaičiuokite d = e⁻¹ mod φ(n): tai privatusis raktas.
Užšifruokite c = mᵉ mod n; iššifruokite m = cᵈ mod n.
Oilerio φ(n) skaičiuoja skaičius nuo 1 iki n, tarpusavyje pirminius su n: pirminiam skaičiui φ(p) = p − 1, φ(pᵏ) = pᵏ − pᵏ⁻¹, o tarpusavyje pirminių daugiklių atveju φ yra multiplikatyvi.
Savikontrolė RSA raktas naudoja p = 5, q = 11 ir e = 3. Kam lygu d?
13
27
37
3
Atsakymas: 27. φ(n) = 4·10 = 40, o 3·27 = 81 = 2·40 + 1, taigi d = 27. 3 atvirkštinis moduliu n = 55 būtų 37, bet d imamas moduliu φ(n).
5Dažnos klaidos
Duoti neigiamą liekaną neigiamam skaičiui: −17 mod 5 yra 3, o ne −2.
Sustoti ties pirmąja Euklido algoritmo liekana, o ne paskutine nenuline.
Pamiršti pridėti n prie neigiamo išplėstinio algoritmo koeficiento.
Skaičiuoti RSA rodiklį d moduliu n, o ne moduliu φ(n).
Pagal Ferma teoremą redukuoti rodiklį moduliu p, o ne p − 1.
6Kaip atrodo egzamino uždaviniai
Lengvas: DBD ir liekanos. Vykdote Euklido algoritmą DBD ar MBK rasti, ieškote neigiamų skaičių liekanų ir redukuojate sumas bei sandaugas moduliu n.
Vidutinis: atvirkštiniai skaičiai ir kongruencijos. Randate modulinius atvirkštinius skaičius išplėstiniu algoritmu, sprendžiate tiesines kongruencijas, jungiate dvi kongruencijas Kinų liekanų teorema ir skaičiuojate Oilerio φ(n).
Sunkus: moduliniai laipsniai ir RSA. Naudojate kartotinį kėlimą kvadratu ir Ferma teoremą, sprendžiate kongruencijas su keliais sprendiniais, randate RSA privačiuosius rodiklius, šifrogramas ir iššifruotus pranešimus.
Raskite (914·953) mod 11 nedaugindami didelių skaičių: pirmiausia redukuokite.
n = 11
Raskite (914·953) mod 11
Rodyti užuominas
(x·y) mod n = ((x mod n)·(y mod n)) mod n, ir tas pats galioja sumoms.
914 mod 11 = 1, 953 mod 11 = 7.
Liekanų sandaugą suredukuokite moduliu 11.
Rodyti atsakymą ir sprendimą žingsnis po žingsnio
Dalumas ir liekanos: a mod n yra liekana r, kur 0 ≤ r < n ir a = q·n + r, taip pat ir kai a neigiamas. Euklido algoritmas randa gcd(a, b) kartodamas a = q·b + r ir keisdamas (a, b) į (b, r); paskutinė nenulinė liekana yra DBD. Tada lcm(a, b) = a·b/gcd(a, b). Liekanas galima redukuoti kiekviename žingsnyje: (a + b) mod n ir (a·b) mod n priklauso tik nuo a mod n ir b mod n.
Suredukuokite kiekvieną skaičių
914 ≡ 1, 953 ≡ 7 (mod 11)
Sujunkite
1·7 = 7 ≡ 7 (mod 11)
Atsakymas
(914·953) mod 11 = 7
Pavyzdys 2Vidutinis
Raskite Oilerio funkciją φ(637), t. y. sveikųjų skaičių nuo 1 iki 637, tarpusavyje pirminių su 637, skaičių.
n = 637 = 72·13
Raskite φ(637)
Rodyti užuominas
Išskaidykite n pirminiais daugikliais: 637 = 72·13.
φ yra multiplikatyvi tarpusavyje pirminiams daugikliams, o φ(pᵏ) = pᵏ − pᵏ⁻¹.
φ(n) = n·∏(1 − 1/p).
Rodyti atsakymą ir sprendimą žingsnis po žingsnio
Atvirkštiniai skaičiai ir kongruencijos: a turi atvirkštinį moduliu n lygiai tada, kai gcd(a, n) = 1. Išplėstinis Euklido algoritmas užrašo 1 = s·n + t·a, ir tada a⁻¹ ≡ t (mod n). Kongruencija a·x ≡ b (mod n), kai gcd(a, n) = 1, turi sprendinį x ≡ a⁻¹·b. Dvi kongruencijos x ≡ r₁ (mod m₁) ir x ≡ r₂ (mod m₂) su tarpusavyje pirminiais moduliais turi vieną sprendinį moduliu m₁·m₂ (Kinų liekanų teorema). Oilerio φ(n) skaičiuoja skaičius nuo 1 iki n, tarpusavyje pirminius su n: φ(n) = n·∏(1 − 1/p).
Pirminiai daugikliai
637 = 72·13
Oilerio funkcija
φ(637) = φ(49)·φ(13) = 42·12 = 504
Atsakymas
φ(637) = 504
Pavyzdys 3Sunkus
RSA raktas naudoja p = 13, q = 37 ir e = 23. Iššifruokite šifrogramą c = 225: raskite pranešimą m.
p = 13q = 37e = 23c = 225
Raskite m
Rodyti užuominas
n = 481, φ(n) = 432.
d = e⁻¹ mod φ(n) = 263.
m = cd mod n = 225263 mod 481: naudokite kartotinį kėlimą kvadratu.
Rodyti atsakymą ir sprendimą žingsnis po žingsnio
Moduliniai laipsniai ir RSA: aᵏ mod n skaičiuokite kartotiniu kėlimu kvadratu: užrašykite k dvejetainiu pavidalu, keliate kvadratu, po kiekvieno žingsnio redukuokite ir sudauginkite laipsnius, kurių bitas lygus 1. Ferma: aᵖ⁻¹ ≡ 1 (mod p) pirminiam p, nedalijančiam a, todėl rodiklį galima redukuoti moduliu p − 1. RSA: pasirinkite pirminius p ir q, n = p·q ir φ(n) = (p − 1)(q − 1); viešasis rodiklis e tarpusavyje pirminis su φ(n), o privatusis rodiklis yra d = e⁻¹ mod φ(n). Šifruokite c = mᵉ mod n ir dešifruokite m = cᵈ mod n.
Privatusis rodiklis
n = 481, φ(n) = 432
d = 23−1 mod 432 = 263
Iššifruokite kartotiniu kėlimu kvadratu
263 = 256 + 4 + 2 + 1
2251 ≡ 225 (mod 481)
2252 ≡ 120 (mod 481)
2254 ≡ 451 (mod 481)
2258 ≡ 419 (mod 481)
22516 ≡ 477 (mod 481)
22532 ≡ 16 (mod 481)
22564 ≡ 256 (mod 481)
225128 ≡ 120 (mod 481)
225256 ≡ 451 (mod 481)
225263 ≡ 225·120·451·451 ≡ 361 (mod 481)
Žinutė
m = 361
patikra: 36123 mod 481 = 225
Atsakymas
m = 361
Klausimai ir atsakymai
Skaičių teorija ir modulinė aritmetika: kas tai?
Dalijant a iš n gaunamas dalmuo q ir liekana r: a = q·n + r, kur 0 ≤ r < n. Liekana žymima a mod n. Neigiamam skaičiui q taip pat neigiamas: −3 = −1·7 + 4, taigi −3 mod 7 = 4.
Du skaičiai yra kongruentūs moduliu n, a ≡ b (mod n), kai duoda tą pačią liekaną, t. y. kai n dalija a − b.
Skaičių teorija ir modulinė aritmetika: kaip spręsti uždavinius žingsnis po žingsnio?
Pirmiausia visus skaičius suredukuokite moduliu n; liekanos yra nuo 0 iki n − 1.
Atvirkštiniam skaičiui taikykite išplėstinį algoritmą ir pasilikite a koeficientą; jei jis neigiamas, pridėkite n.
Sprendžiant a·x ≡ b, dauginkite iš a⁻¹; dvi kongruencijas sujunkite rašydami x = r₁ + m₁k.
Laipsniams užrašykite rodiklį dvejetainiu pavidalu ir kelkite kvadratu pakartotinai; RSA atveju d = e⁻¹ mod φ(n), kur φ(n) = (p − 1)(q − 1).
Skaičių teorija ir modulinė aritmetika: kokios klaidos dažniausios?
Neigiamam skaičiui duoti neigiamą liekaną.
Sustoti Euklido algoritme ties pirmąja liekana.
Palikti atvirkštinį skaičių neigiamą, o ne pridėti n.
Imti RSA rodiklį d moduliu n, o ne φ(n).
Pagal Ferma teoremą redukuoti rodiklį moduliu p, o ne p − 1.
Skaičių teorija ir modulinė aritmetika: ką lavinsite?
Lengvas: DBD ir liekanos
Vidutinis: atvirkštiniai skaičiai ir kongruencijos
Sunkus: moduliniai laipsniai ir RSA
Kiekviename uždavinyje naujos reikšmės, todėl išmokstate metodą, o ne atsakymą. Strigote? Pirmiausia atverkite nedidelę užuominą, o visą paaiškinimą – tik kai jo prireiks.
Kaip vyksta praktika
Kiekviename uždavinyje naujos reikšmės, todėl išmokstate metodą, o ne atsakymą.
Strigote? Pirmiausia atverkite nedidelę užuominą, o visą paaiškinimą – tik kai jo prireiks.
Jūsų pažanga, klaidos ir išsaugoti uždaviniai išlieka, todėl prieš egzaminą galite viską pakartoti.