Tilbake
3.1

3.1 RSA: nøkkelgenerering, kryptering og dekryptering

RSA-algoritmen fra ende til ende: n=pq, ϕ(n)=(p−1)(q−1), finn d fra e·d≡1 mod ϕ(n) via Euklid, krypter/dekrypter med effektiv potensopphøyning — og korrekthetsbeviset (Mᵉ)ᵈ≡M via Euler/Fermat.

60 min
7 oppgaver
RSAnøkkelgenereringkrypteringdekryptering
Din fremgang i kapitlet
0 / 7 oppgaver

Forkunnskaper

Fra boka: kap. 1.2 (Euklids algoritme frem og baklengs — motoren bak dd), kap. 1.4 (modulær invers), kap. 2.1 (Eulers teorem, ϕ\phi, kvadrer-og-multipliser), kap. 2.2 (Fermats lille teorem — brukes i korrekthetsbeviset) og kap. 2.4 (CRT — brukes i beviset og i den raske dekrypteringen).

Sist du var her. De tre resultatene RSA hviler helt på, ferdig oppfrisket:

1. Bézout og modulær invers. Er gcd(a,m)=1\gcd(a,m)=1, finner Euklids algoritme baklengs tall x,yx,y med
ax+my=1,ax+my=1,
og lest modulo mm gir det ax1(modm)ax\equiv 1\pmod m — altså er xx inversen til aa. Dette er hele metoden for å finne dd.

2. ϕ\phi av et produkt av to primtall. Ved multiplikativiteten og ϕ(p)=p1\phi(p)=p-1:
ϕ(pq)=(p1)(q1)(pq primtall).\phi(pq)=(p-1)(q-1)\qquad(p\ne q\text{ primtall}).

3. Eulers teorem. Når gcd(m,n)=1\gcd(m,n)=1:
mϕ(n)1(modn).m^{\phi(n)}\equiv 1\pmod n.
Dette er grunnen til at RSA virker i det hele tatt.

Fra videregående er ingenting påkrevd.

En hengelås alle kan låse, og bare én kan åpne

Du skal sende et kortnummer til en nettbutikk. Alle som lytter på linja, kan lese det som sendes. Hvordan kan butikken få nummeret uten at lytteren får det — når du og butikken aldri har møtt hverandre og ikke har avtalt noen felles hemmelighet?

Bildet som løser det: butikken sender ut tusenvis av åpne hengelåser til hvem som helst. Alle kan ta en lås, legge meldingen i en boks og klikke låsen igjen. Men nøkkelen til låsene har butikken beholdt selv. Lytteren har en boks han ikke får opp, og en lås han ikke får noe ut av.

Det er offentlig-nøkkel-kryptografi: én nøkkel til å låse (offentlig), en annen til å åpne (privat). RSA er den første og mest kjente realiseringen, publisert i 1977 av Rivest, Shamir og Adleman — og den er bygget nesten utelukkende av det du har lært i Del 1 og Del 2.

Den matematiske låsen: velg to primtall pp og qq, og la n=pqn=pq være offentlig. Å gange pp og qq er lett; å faktorisere nn tilbake til pp og qq er praktisk umulig når tallene er store nok. Det er hele asymmetrien.

Og nøkkelen: den som kjenner pp og qq, kan regne ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1) og dermed finne inversen dd til krypteringseksponenten ee. Den som bare kjenner nn, kan ikke — for å regne ϕ(n)\phi(n) måtte han faktorisert nn.

Hva du skal kunne etter kapitlet: bygge et nøkkelpar fra oppgitte p,q,ep,q,e; kryptere og dekryptere for hånd; og utlede hvorfor dekrypteringen gjenoppretter meldingen. Det siste er en eksamensoppgave i seg selv, og det er tre linjer når du har Eulers teorem.

Tidsanslag for kapitlet: ~60 minutter lesetid, fordelt på fem løkker à 10–14 minutter. Regner du med penn underveis, som du bør her, legg til omtrent halvparten.

Løkke 1: Oppsettet — de fem størrelsene

~11 minutter.

RSA har fem tall, og hvert av dem har en rolle. Kan du rollene, kan du hele sjangeren — de fleste feilene på eksamen er rolleforvekslinger, ikke regnefeil.

RSA-oppsettet
De fem størrelsene, og hvordan de lages:

1. To ulike primtall pp og qq — hemmelige. Disse velges først.
2. Modulusen n=pqn=pqoffentlig.
3. ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1) — hemmelig, fordi den avslører faktoriseringen.
4. Krypteringseksponenten eeoffentlig, valgt med gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1.
5. Dekrypteringseksponenten dd — hemmelig, løst fra
ed1(modϕ(n)).ed\equiv 1\pmod{\phi(n)}.

Den offentlige nøkkelen er paret (n,e)(n,e). Den private er dd (sammen med pp og qq, som eieren beholder).

Hele oppsettet må sitte utenat. Det er utgangspunktet for hvert delpunkt i sjanger D.

Merk hva som er offentlig og hva som ikke er: nn og ee kan alle se. pp, qq, ϕ(n)\phi(n) og dd er hemmelige — og de tre siste følger av hverandre: kjenner du én, kan du finne de andre. Det er derfor sikkerheten står og faller på at nn ikke kan faktoriseres.

Kravet gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1 er ikke pynt: uten det finnes ingen invers dd (kap. 1.4), og systemet kan ikke dekryptere.

ϕ(n) = (p−1)(q−1)
For n=pqn=pq med pqp\ne q primtall:
ϕ(n)=(p1)(q1).\phi(n)=(p-1)(q-1).

Dette utledes på stedet, én linje. Siden pqp\ne q er gcd(p,q)=1\gcd(p,q)=1, så multiplikativiteten gir ϕ(pq)=ϕ(p)ϕ(q)\phi(pq)=\phi(p)\phi(q), og ϕ(p)=p1\phi(p)=p-1 for primtall (kap. 2.1). \blacksquare

Den mest belagte feilen i sjanger D er å regne ϕ(n)\phi(n) galt. To varianter:

- ϕ(n)=n1\phi(n)=n-1 — det ville betydd at nn var et primtall. For n=247n=247 er ϕ(n)=216\phi(n)=216, ikke 246246.
- ϕ(n)=pqpq\phi(n)=pq-p-q eller lignende — gang ut riktig: (p1)(q1)=pqpq+1=npq+1(p-1)(q-1)=pq-p-q+1=n-p-q+1.

Kontrollen: ϕ(n)\phi(n) skal være et partall (for n3n\ge 3) og en god del mindre enn nn. For n=pqn=pq med tosifrede primtall er ϕ(n)\phi(n) typisk 808090%90\,\% av nn.

Eksempel: p=13p=13, q=19q=19 gir n=247n=247 og ϕ(247)=1218=216\phi(247)=12\cdot 18=216. Kontroll: 2471319+1=216247-13-19+1=216 ✓.

Hvorfor ϕ(n) må være hemmelig
Den som kjenner ϕ(n)\phi(n), kan regne dd — og da er systemet brutt. Og den som kjenner ϕ(n)\phi(n), kan også faktorisere nn.

Utledes på stedet: har du n=pqn=pq og ϕ(n)=(p1)(q1)=npq+1\phi(n)=(p-1)(q-1)=n-p-q+1, så kjenner du summen s=p+q=nϕ(n)+1s=p+q=n-\phi(n)+1 og produktet n=pqn=pq. Da er pp og qq røttene i andregradslikningen
x2sx+n=0,x^{2}-sx+n=0,
som du løser med formelen fra videregående.

Kontroll med tall: n=247n=247, ϕ(n)=216\phi(n)=216 gir s=247216+1=32s=247-216+1=32, og x232x+247=0x^2-32x+247=0 har røttene x=32±10249882=32±62\displaystyle x=\frac{32\pm\sqrt{1024-988}}{2}=\frac{32\pm 6}{2}, altså 1919 og 1313 ✓.

Konklusjonen er verdt å merke seg: «finn ϕ(n)\phi(n)» og «faktoriser nn» er like vanskelige problemer. Derfor hviler hele sikkerheten på ett punkt — at store tall er vanskelige å faktorisere.

Og derfor er dette et yndet teoretisk delpunkt: «forklar hvorfor det ikke er tryggere å offentliggjøre ϕ(n)\phi(n) enn pp og qq». Svaret er utledningen over.

Valget av krypteringseksponenten e
ee velges med 1<e<ϕ(n)1<e<\phi(n) og gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1.

Hvorfor kravet: uten gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1 har ee ingen invers modulo ϕ(n)\phi(n) (kap. 1.4), så dd finnes ikke, og meldingen kan ikke dekrypteres entydig.

Slik sjekker du kravet for hånd: faktoriser ϕ(n)\phi(n) (den er (p1)(q1)(p-1)(q-1), altså et produkt av to tall du kjenner), og se om ee har noen primfaktor felles med den. Eller kjør Euklids algoritme på ee og ϕ(n)\phi(n) — du trenger den likevel for å finne dd.

Eksempel: ϕ(247)=216=2333\phi(247)=216=2^3\cdot 3^3. Da er e=7e=7 lovlig (gcd(7,216)=1\gcd(7,216)=1), mens e=9e=9 ikke er (gcd(9,216)=9\gcd(9,216)=9).

Merk at ee ofte er et lite primtall i praksis, fordi små ee gjør krypteringen rask. På eksamen er ee typisk ensifret eller lite tosifret.

Og merk at ee ikke behøver være et primtall — kravet er bare at den er relativt primisk til ϕ(n)\phi(n). e=25e=25 er lovlig hvis gcd(25,ϕ(n))=1\gcd(25,\phi(n))=1.

✏️Oppsettet i tall: p = 13, q = 19

La p=13p=13 og q=19q=19.

a) Finn nn og ϕ(n)\phi(n).
b) Er e=7e=7 et lovlig valg? Og e=9e=9?
c) Hva er offentlig og hva er hemmelig i dette systemet?

a) n=pq=1319=247.n=pq=13\cdot 19=247.
Og ved multiplikativiteten til ϕ\phi, siden gcd(13,19)=1\gcd(13,19)=1:
ϕ(247)=ϕ(13)ϕ(19)=(131)(191)=1218=216.\phi(247)=\phi(13)\phi(19)=(13-1)(19-1)=12\cdot 18=216.

Kontroll: ϕ(n)=npq+1=2471319+1=216\phi(n)=n-p-q+1=247-13-19+1=216 ✓. Og 216216 er et partall, mindre enn 247247 ✓.

b) Kravet er gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1. Vi faktoriserer 216=827=2333216=8\cdot 27=2^3\cdot 3^3.

- e=7e=7: primtallet 77 deler verken 22 eller 33, så gcd(7,216)=1\gcd(7,216)=1 ✓. Lovlig.
- e=9e=9: 9=329=3^2, og 32163\mid 216, så gcd(9,216)=91\gcd(9,216)=9\ne 1 ✗. Ikke lovlig — det finnes ingen invers dd, og systemet kunne ikke dekryptere.

c)

StørrelseVerdiStatus
nn247247offentlig
ee77offentlig
pp, qq1313, 1919hemmelig
ϕ(n)\phi(n)216216hemmelig
dd(finnes i løkke 2)hemmelig

Sluttsvar: n=247n=247, ϕ(n)=216\phi(n)=216; e=7e=7 er lovlig, e=9e=9 er ikke; (n,e)=(247,7)(n,e)=(247,7) er den offentlige nøkkelen.
Merk at tallene her er små nok til at hvem som helst kan faktorisere 247247 på et halvt minutt — systemet er altså ikke trygt. Det er med vilje: eksamensoppgavene bruker tall som er regnbare for hånd. I virkelige systemer har pp og qq flere hundre siffer hver.
📝Oppgave 1

La p=11p=11 og q=31q=31.

a) Finn nn og ϕ(n)\phi(n).
b) Avgjør om e=7e=7 og e=15e=15 er lovlige valg av krypteringseksponent.

Løkke 2: Å finne dd — Euklids algoritme baklengs

~12 minutter.

Dette er hovedvarianten på eksamen: du får pp, qq og ee (eller nn og ee med nn lett å faktorisere), og skal finne dd. Metoden er den samme som for modulær invers i kap. 1.4 — Euklids algoritme frem og baklengs.

— naturlig pausepunkt —

Å finne d — prosedyren i fire steg
dd er inversen til ee modulo ϕ(n)\phi(n), altså løsningen av
ed1(modϕ(n)).ed\equiv 1\pmod{\phi(n)}.

Prosedyren:

1. Regn ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1).
2. Kjør Euklids algoritme fremϕ(n)\phi(n) og ee. Sluttsvaret skal være gcd=1\gcd=1 — det bekrefter samtidig at ee var et lovlig valg.
3. Kjør substitusjonskjeden baklengs til 1=ϕ(n)y+ex1=\phi(n)\cdot y+e\cdot x.
4. Les likningen modulo ϕ(n)\phi(n): ex1ex\equiv 1, så d=xd=x. Ligger xx utenfor 0<d<ϕ(n)0<d<\phi(n), legg til ϕ(n)\phi(n).

Prosedyren må sitte utenat, og føringen frem OG baklengs er føringskravet (kap. 1.2): et dd oppgitt uten kjeden er et sluttall uten metode.

Koeffisientene utledes på stedet — de finnes ikke i noen tabell, og under kode D finnes det heller ingen tabell.

Kontrollen tar tjue sekunder og bør gjøres hver gang: regn ut eded og sjekk at det gir rest 11 ved divisjon med ϕ(n)\phi(n). Er e=7e=7, d=31d=31 og ϕ(n)=216\phi(n)=216: 731=217=216+17\cdot 31=217=216+1 ✓.

✏️Finn d når (n, e) = (247, 7)

Den offentlige nøkkelen i et RSA-system er (n,e)=(247,7)(n,e)=(247,7).

a) Faktoriser nn, og finn ϕ(n)\phi(n).
b) Finn dekrypteringseksponenten dd.
c) Kontrollér svaret.

a) Faktoriser n=247n=247. Vi prøvedividerer: ikke like; siffersum 1313 (ikke delelig med 33); ender ikke på 00 eller 55; 247/735,3247/7\approx 35{,}3 og 735=2457\cdot 35=245 — nei; 247/1122,5247/11\approx 22{,}5 og 1122=24211\cdot 22=242 — nei; 247/13=19247/13=19 ✓.

Altså 247=1319247=13\cdot 19, og ved multiplikativiteten
ϕ(247)=1218=216.\phi(247)=12\cdot 18=216.

b) Finn dd som inversen til 77 modulo 216216, med Euklids algoritme (kap. 1.2):

(i) Divisjonskjeden frem. Vi deler gjentatt med rest, ved Euklids algoritme, til resten blir 00:

216=307+6216 = 30\cdot 7 + 6
7=16+17 = 1\cdot 6 + 1
6=61+06 = 6\cdot 1 + 0

Den siste resten som ikke er 00, er 11. Altså er gcd(216,7)=1\gcd(216,7)=1. Kjeden har 3 divisjonslinjer.

(ii) Substitusjonskjeden baklengs. Vi løser den nest siste linja for resten og substituerer oppover, linje for linje:

1=7161 = 7 - 1\cdot 6
Sett inn 6=2163076 = 216 - 30\cdot 7:
1=1216+3171 = -1\cdot 216 + 31\cdot 7

(iii) Konklusjon. Altså er

gcd(216,7)=1=216(1)+7(31).\gcd(216,7) = 1 = 216\cdot(-1) + 7\cdot(31).

Kontroll ved innsetting: 216(1)+7(31)=216+217=1216\cdot(-1) + 7\cdot(31) = -216 + 217 = 1. Stemmer.

Vi leser likningen modulo 216216. Leddet 216(1)216\cdot(-1) er et multiplum av 216216 og faller bort:

7(31)1(mod216).7\cdot(31)\equiv 1\pmod{216}.

Altså er u=31u=31.

Kontroll: 731=2177\cdot 31 = 217, og 217=2161+1217 = 216\cdot 1 + 1, så resten er 11. Stemmer.

Altså er d=31d=31.

c) Kontroll. ed=731=217ed=7\cdot 31=217, og 217=216+1217=216+1, så
ed1(mod216) .ed\equiv 1\pmod{216}\ \checkmark.

Sluttsvar: n=1319n=13\cdot 19, ϕ(n)=216\phi(n)=216, og d=31d=31.

Hvor føringspoengene sitter:

- faktoriseringen er vist, ikke bare påstått — den er premisset for ϕ(n)\phi(n);
- ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1) er begrunnet med multiplikativiteten;
- Euklids algoritme er ført frem OG baklengs, som er føringsstandarden i emnet;
- kontrollen ed1ed\equiv 1 er utført — den fanger den ene feilen du ellers ikke oppdager.

Merk at faktoriseringen var mulig fordi nn er lite. Med et 600-sifret nn ville steg a) vært umulig, og det er nettopp derfor RSA er trygt i praksis.

📝Oppgave 2

Den offentlige nøkkelen er (n,e)=(341,7)(n,e)=(341,7).

a) Faktoriser nn og finn ϕ(n)\phi(n).
b) Finn dd med Euklids algoritme, ført frem og baklengs.
c) Kontrollér at ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}.

Løkke 3: Kryptering og dekryptering

~13 minutter.

Nå selve operasjonene. Begge er potensberegninger modulo nn, og begge føres med kvadrer-og-multipliser fra kap. 2.1 — mellomstegene skal stå.

Kryptering og dekryptering
Kryptering (alle kan gjøre den, med den offentlige nøkkelen (n,e)(n,e)):
cme(modn).c\equiv m^{e}\pmod n.

Dekryptering (bare eieren, med den private dd):
mcd(modn).m\equiv c^{d}\pmod n.

Begge må sitte utenat, og de er lette å forveksle. Minnekroken: ee for «encrypt», dd for «decrypt» — og ee er den offentlige, så den brukes til å låse.

Meldingen mm må være et tall med 0m<n0\le m<n. Er meldingen tekst, kodes den først om til tall (og deles i blokker mindre enn nn). Den omkodingen er ikke tallteori, og eksamensoppgavene gir derfor mm som et tall direkte.

Begge operasjonene føres med kvadrer-og-multipliser, med binærutviklingen av eksponenten og kvadrattabellen synlig. Fasitene dokumenterer mellomstegene, og et sluttall uten dem er et svar uten metode.

Merk at eksponentene her IKKE reduseres med Eulers teorem på samme måte som i kap. 2.1: ee og dd er alt mindre enn ϕ(n)\phi(n). Men den raske veien via pp og qq finnes — se løkke 5.

✏️Krypter en melding: m = 5 med (n, e) = (247, 7)

Bruk den offentlige nøkkelen (n,e)=(247,7)(n,e)=(247,7) til å kryptere meldingen m=5m=5.

Krypteringen er cme(modn)c\equiv m^{e}\pmod n, altså
c57(mod247).c\equiv 5^{7}\pmod{247}.

Vi regner med kvadrer-og-multipliser (kap. 2.1).

(v) Binærutviklingen av eksponenten og de suksessive kvadratene. Vi skriver eksponenten som en sum av toerpotenser: 7=4+2+17 = 4 + 2 + 1, altså 77 i binær er 111111. Deretter kvadrerer vi oss oppover, og reduserer modulo 247247 etter hvert kvadrat:

PotensUtregningRest modulo 247247
515^{1}55
525^{2}52=255^2=252525
545^{4}252=62525^2=625, og 625=2472+131625=247\cdot 2+131131131

(vi) Sett sammen produktet. Da er
57=545251131255(mod247),5^{7} = 5^{4} \cdot 5^{2} \cdot 5^{1} \equiv 131 \cdot 25 \cdot 5 \pmod{247},
og vi multipliserer to av gangen, med reduksjon underveis: 13125=327564131\cdot 25 = 3\,275\equiv 64; 645=3207364\cdot 5 = 320\equiv 73.
Konklusjon. Den krypterte meldingen er c=73c=\boxed{73}.

Kontroll av størrelsen: cc skal ligge mellom 00 og 246246 ✓.

Merk at 57=781255^7=78\,125 i seg selv er lite nok til å regnes direkte her — 78125=247316+7378\,125=247\cdot 316+73 ✓, samme svar. Men det er ikke poenget: med en større eksponent renner kalkulatoren over, og kvadrer-og-multipliser er den prosedyren som alltid virker. Fasitene krever den ført, uansett hvor små tallene er.

✏️Dekrypter meldingen tilbake: c = 73 med d = 31

I systemet med n=247n=247 og d=31d=31: dekrypter den mottatte meldingen c=73c=73, og kontrollér mot eksempel 3.

Dekrypteringen er mcd(modn)m\equiv c^{d}\pmod n, altså
m7331(mod247).m\equiv 73^{31}\pmod{247}.

Vi regner med kvadrer-og-multipliser.

(v) Binærutviklingen av eksponenten og de suksessive kvadratene. Vi skriver eksponenten som en sum av toerpotenser: 31=16+8+4+2+131 = 16 + 8 + 4 + 2 + 1, altså 3131 i binær er 1111111111. Deretter kvadrerer vi oss oppover, og reduserer modulo 247247 etter hvert kvadrat:

PotensUtregningRest modulo 247247
73173^{1}7373
73273^{2}732=532973^2=5\,329, og 5329=24721+1425\,329=247\cdot 21+142142142
73473^{4}1422=20164142^2=20\,164, og 20164=24781+15720\,164=247\cdot 81+157157157
73873^{8}1572=24649157^2=24\,649, og 24649=24799+19624\,649=247\cdot 99+196196196
731673^{16}1962=38416196^2=38\,416, og 38416=247155+13138\,416=247\cdot 155+131131131

(vi) Sett sammen produktet. Da er
7331=731673873473273113119615714273(mod247),73^{31} = 73^{16} \cdot 73^{8} \cdot 73^{4} \cdot 73^{2} \cdot 73^{1} \equiv 131 \cdot 196 \cdot 157 \cdot 142 \cdot 73 \pmod{247},
og vi multipliserer to av gangen, med reduksjon underveis: 131196=25676235131\cdot 196 = 25\,676\equiv 235; 235157=3689592235\cdot 157 = 36\,895\equiv 92; 92142=1306422092\cdot 142 = 13\,064\equiv 220; 22073=160605220\cdot 73 = 16\,060\equiv 5.
Konklusjon. Den dekrypterte meldingen er m=5m=\boxed{5} — nøyaktig meldingen vi krypterte i eksempel 3 ✓.
Antall operasjoner: eksponenten 31=11111231=11111_2 ga fire kvadrater og fire multiplikasjoner, altså åtte steg, alle med tall under 247247. Det er typisk for en RSA-dekryptering på eksamen, og det tar ~6 minutter med penn.
Ser du på binærutviklingen, forstår du hvorfor eksamensoppgavene ofte har en dd med få enere: d=31d=31 har fem enere og krever fire multiplikasjoner, mens d=32d=32 ville krevd fem kvadrater og ingen multiplikasjon. Det er den samme regningen, men færre steg å gjøre feil i.

I løkke 5 ser vi en snarvei: dekryptering via pp og qq hver for seg, som gir mindre eksponenter. Begge veier er fullgode.

📝Oppgave 3

Et RSA-system har p=7p=7, q=19q=19 og e=5e=5.

a) Finn nn og ϕ(n)\phi(n), og bekreft at ee er et lovlig valg.
b) Krypter meldingen m=9m=9.
c) Dekrypteringseksponenten er d=65d=65. Kontrollér at ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}.

📝Oppgave 4

I systemet med n=133n=133 og d=65d=65: dekrypter den mottatte meldingen c=130c=130, og kontrollér mot oppgave 3.

Løkke 4: Korrekthetsbeviset

~13 minutter.

Hvorfor gjenoppretter dekrypteringen meldingen? Dette er et eget delpunkt i arkivet, og svaret er tre linjer med Eulers teorem — pluss et tilfelle du må behandle separat.

— naturlig pausepunkt —

📜RSA-korrektheten
La n=pqn=pq med pqp\ne q primtall, gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1 og ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}. Da er
(me)dm(modn)for ALLE m med 0m<n.(m^{e})^{d}\equiv m\pmod n\qquad\text{for ALLE }m\text{ med }0\le m<n.

Bevis, tilfelle 1: gcd(m,n)=1\gcd(m,n)=1. Fra ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)} finnes et helt tall kk med
ed=1+kϕ(n).ed=1+k\phi(n).
Da er
(me)d=med=m1+kϕ(n)=m(mϕ(n))km1k=m(modn),(m^{e})^{d}=m^{ed}=m^{1+k\phi(n)}=m\cdot\left(m^{\phi(n)}\right)^{k}\equiv m\cdot 1^{k}=m\pmod n,
der vi brukte Eulers teorem (kap. 2.1) i siste skritt. \blacksquare

Det var tre linjer. Derfor står korrektheten i «utledes på stedet»-listen: du skal ikke pugge den som et faktum, du skal kunne føre den.

Bevis, tilfelle 2: gcd(m,n)1\gcd(m,n)\ne 1. Da deler pp eller qq tallet mm (siden n=pqn=pq), og Eulers teorem gjelder ikke modulo nn. Vi viser påstanden modulo pp og modulo qq hver for seg, og setter sammen med det kinesiske restteoremet.

Modulo pp, to undertilfeller:

- pmp\mid m: da er m0(modp)m\equiv 0\pmod p, og også med0(modp)m^{ed}\equiv 0\pmod p. Begge sider er 0\equiv 0, så medm(modp)m^{ed}\equiv m\pmod p.
- pmp\nmid m: fra Fermats lille teorem (kap. 2.2) er mp11(modp)m^{p-1}\equiv 1\pmod p. Siden (p1)ϕ(n)(p-1)\mid\phi(n), er kϕ(n)k\phi(n) et multiplum av p1p-1, og dermed
med=m(mp1)kϕ(n)/(p1)m1=m(modp).m^{ed}=m\cdot\left(m^{p-1}\right)^{k\phi(n)/(p-1)}\equiv m\cdot 1=m\pmod p.

Altså er medm(modp)m^{ed}\equiv m\pmod p i alle tilfeller, og med samme argument medm(modq)m^{ed}\equiv m\pmod q.

Sett sammen: pp og qq er ulike primtall, så gcd(p,q)=1\gcd(p,q)=1, og ved det kinesiske restteoremet (kap. 2.4) følger
medm(modpq)=(modn).m^{ed}\equiv m\pmod{pq}=\pmod n.\qquad\blacksquare

Merk hvorfor tilfelle 2 er verdt arbeidet: uten det gjelder RSA bare for meldinger som er relativt primiske til nn. Med det gjelder det for alle meldinger — og det er en eksamensoppgave i seg selv å se at tilfellet finnes.

Case-analysen er uttømmende: enten er gcd(m,n)=1\gcd(m,n)=1, eller pmp\mid m, eller qmq\mid m (eller begge, som er m=0m=0).

Korrekthetsbeviset i tre linjer

Kortversjonen du skal kunne skrive kaldt, for tilfellet gcd(m,n)=1\gcd(m,n)=1:

1. ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)} betyr ed=1+kϕ(n)ed=1+k\phi(n) for et helt tall kk.
2. Da er med=m(mϕ(n))km^{ed}=m\cdot\left(m^{\phi(n)}\right)^{k}.
3. Fra Eulers teorem er mϕ(n)1m^{\phi(n)}\equiv 1, så medmm^{ed}\equiv m.

Dette utledes på stedet — tre linjer, under et minutt.

Hva som MÅ stå i besvarelsen:

- at ed=1+kϕ(n)ed=1+k\phi(n) (altså hva kongruensen betyr);
- teoremnavnet «fra Eulers teorem»;
- vilkåret gcd(m,n)=1\gcd(m,n)=1, og — hvis oppgaven sier «alle mm» — tilfellet der pp eller qq deler mm.

Den vanligste mangelen: å hoppe over gcd(m,n)1\gcd(m,n)\ne 1-tilfellet når oppgaven ber om «alle meldinger». Da er case-analysen ikke uttømmende, og bevisstruktur teller for seg selv i dette faget.

Den nest vanligste: å ikke navngi Eulers teorem. Det er der argumentet hviler, og et argument uten teoremnavn er en byggefeil.

📝Oppgave 5

La n=pqn=pq med pqp\ne q primtall, og la e,de,d oppfylle ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}.

a) Vis at (me)dm(modn)(m^{e})^{d}\equiv m\pmod n for alle mm med gcd(m,n)=1\gcd(m,n)=1.
b) Forklar hvorfor argumentet i a) ikke dekker tilfellet der pp deler mm, og vis at påstanden likevel holder da.
c) Kontrollér påstanden numerisk for n=133n=133, e=5e=5, d=65d=65 og m=7m=7 (merk at 71337\mid 133).

Løkke 5: Eksamensnivå — bygg et helt nøkkelpar, og den raske veien

~11 minutter.

Til slutt hele oppgaven fra ende til ende, og en andre vei til dekrypteringen som er raskere for hånd når du kjenner pp og qq.

Dekryptering via p og q — den raske veien

Kjenner du pp og qq (og det gjør eieren av nøkkelen), kan du dekryptere uten å regne cdc^{d} modulo nn:

1. Reduser eksponenten mot hvert primtall: dp=dmod(p1)d_p=d\bmod(p-1) og dq=dmod(q1)d_q=d\bmod(q-1) — lovlig fra Fermats lille teorem (kap. 2.2).
2. Regn to små potenser: mpcdp(modp)m_p\equiv c^{d_p}\pmod p og mqcdq(modq)m_q\equiv c^{d_q}\pmod q.
3. Sett sammen med CRT (kap. 2.4) til mm modulo nn.

Hvorfor det er raskere for hånd: eksponentene dpd_p og dqd_q er mindre enn p1p-1 og q1q-1, altså mye mindre enn dd — og tallene du kvadrerer, er mindre enn pp og qq i stedet for mindre enn nn.

Begge veier er fullgode. Den direkte veien (cdmodnc^{d}\bmod n) krever ingenting utover den offentlige nøkkelen og dd; den raske veien krever at du kjenner faktoriseringen. Si hvilken du bruker.

Merk at dette også er en sikkerhetsobservasjon: en angriper som bare har (n,e)(n,e) og cc, kan ikke bruke denne veien — den forutsetter nøyaktig den hemmeligheten han ikke har.

Kravet i steg 1: pcp\nmid c og qcq\nmid c. Er ett av dem brutt, er den tilhørende resten 00, og du regner den direkte.

✏️Eksamensnivå: bygg nøkkelpar, krypter, og dekrypter på to måter

La p=13p=13, q=19q=19 og e=7e=7.

a) Bygg RSA-nøkkelparet: finn nn, ϕ(n)\phi(n) og dd.
b) Krypter meldingen m=100m=100.
c) Dekrypter resultatet med den direkte metoden.
d) Dekrypter det på nytt via pp og qq, og sammenlign metodene.

a) Nøkkelparet.

n=1319=247,ϕ(n)=(131)(191)=1218=216.n=13\cdot 19=247,\qquad \phi(n)=(13-1)(19-1)=12\cdot 18=216.

216=2333216=2^3\cdot 3^3, og gcd(7,216)=1\gcd(7,216)=1 ✓, så e=7e=7 er et lovlig valg.

dd er inversen til 77 modulo 216216, funnet i eksempel 2: d=31d=31. Kontroll: 731=217=216+17\cdot 31=217=216+1 ✓.

Offentlig nøkkel: (n,e)=(247,7)(n,e)=(247,7). Privat nøkkel: d=31d=31 (med p=13p=13, q=19q=19).

b) Kryptering av m=100m=100.

c1007(mod247).c\equiv 100^{7}\pmod{247}.

(v) Binærutviklingen av eksponenten og de suksessive kvadratene. Vi skriver eksponenten som en sum av toerpotenser: 7=4+2+17 = 4 + 2 + 1, altså 77 i binær er 111111. Deretter kvadrerer vi oss oppover, og reduserer modulo 247247 etter hvert kvadrat:

PotensUtregningRest modulo 247247
1001100^{1}100100
1002100^{2}1002=10000100^2=10\,000, og 10000=24740+12010\,000=247\cdot 40+120120120
1004100^{4}1202=14400120^2=14\,400, og 14400=24758+7414\,400=247\cdot 58+747474

(vi) Sett sammen produktet. Da er
1007=10041002100174120100(mod247),100^{7} = 100^{4} \cdot 100^{2} \cdot 100^{1} \equiv 74 \cdot 120 \cdot 100 \pmod{247},
og vi multipliserer to av gangen, med reduksjon underveis: 74120=888023574\cdot 120 = 8\,880\equiv 235; 235100=2350035235\cdot 100 = 23\,500\equiv 35.
Den krypterte meldingen er c=35c=35.

c) Dekryptering, direkte metode.

m3531(mod247).m\equiv 35^{31}\pmod{247}.

(v) Binærutviklingen av eksponenten og de suksessive kvadratene. Vi skriver eksponenten som en sum av toerpotenser: 31=16+8+4+2+131 = 16 + 8 + 4 + 2 + 1, altså 3131 i binær er 1111111111. Deretter kvadrerer vi oss oppover, og reduserer modulo 247247 etter hvert kvadrat:

PotensUtregningRest modulo 247247
35135^{1}3535
35235^{2}352=122535^2=1\,225, og 1225=2474+2371\,225=247\cdot 4+237237237
35435^{4}2372=56169237^2=56\,169, og 56169=247227+10056\,169=247\cdot 227+100100100
35835^{8}1002=10000100^2=10\,000, og 10000=24740+12010\,000=247\cdot 40+120120120
351635^{16}1202=14400120^2=14\,400, og 14400=24758+7414\,400=247\cdot 58+747474

(vi) Sett sammen produktet. Da er

3531=35163583543523517412010023735(mod247),35^{31} = 35^{16} \cdot 35^{8} \cdot 35^{4} \cdot 35^{2} \cdot 35^{1} \equiv 74 \cdot 120 \cdot 100 \cdot 237 \cdot 35 \pmod{247},

og vi multipliserer to av gangen, med reduksjon underveis: 74120=888023574\cdot 120 = 8\,880\equiv 235; 235100=2350035235\cdot 100 = 23\,500\equiv 35; 35237=829514435\cdot 237 = 8\,295\equiv 144; 14435=5040100144\cdot 35 = 5\,040\equiv 100.

Vi får m=100m=100 — den opprinnelige meldingen ✓.
d) Dekryptering via pp og qq.
Steg 1: reduser eksponenten mot hvert primtall.
dp=31mod12=7,dq=31mod18=13.d_p=31\bmod 12=7,\qquad d_q=31\bmod 18=13.
(Lovlig fra Fermats lille teorem, siden 133513\nmid 35 og 193519\nmid 35.)
Steg 2: to små potenser.
Modulo 1313: 35=132+935=13\cdot 2+9, så 359(mod13)35\equiv 9\pmod{13}. Da er

353197(mod13).35^{31}\equiv 9^{7}\pmod{13}.

Kvadrer-og-multipliser: 92=8139^2=81\equiv 3 (siden 81=136+381=13\cdot 6+3), 9432=99^4\equiv 3^2=9, og med 7=4+2+17=4+2+1:

97939=2439(mod13),9^{7}\equiv 9\cdot 3\cdot 9=243\equiv 9\pmod{13},

siden 243=1318+9243=13\cdot 18+9.

Modulo 1919: 35=19+1635=19+16, så 35163(mod19)35\equiv 16\equiv -3\pmod{19}. Da er, siden 1313 er et oddetall,

3531(3)13=313(mod19).35^{31}\equiv(-3)^{13}=-3^{13}\pmod{19}.
Vi regner 3133^{13}: 32=93^2=9, 348153^4\equiv 81\equiv 5 (siden 81=194+581=19\cdot 4+5), 3852=2563^8\equiv 5^2=25\equiv 6, og med 13=8+4+113=8+4+1:
313653=9014(mod19),3^{13}\equiv 6\cdot 5\cdot 3=90\equiv 14\pmod{19},

siden 90=194+1490=19\cdot 4+14. Altså

3531145(mod19).35^{31}\equiv -14\equiv 5\pmod{19}.
Steg 3: sett sammen med CRT. Vi søker mm med
m9(mod13),m5(mod19),0m<247.m\equiv 9\pmod{13},\qquad m\equiv 5\pmod{19},\qquad 0\le m<247.
Suksessiv innsetting. Vi starter i kongruensen med størst modulus, fordi den gir færrest tall å prøve, og arbeider oss nedover.
Fra x5(mod19)x\equiv 5\pmod{19} skriver vi

x=5+19t,tZ.x = 5 + 19t,\qquad t\in\mathbb{Z}.
Setter vi dette inn i x9(mod13)x\equiv 9\pmod{13}, får vi
5+19t9(mod13)6t4(mod13).5 + 19t\equiv 9\pmod{13}\quad\Longleftrightarrow\quad 6t\equiv 4\pmod{13}.
Inversen til 66 modulo 1313 er 1111 (kontroll: 611=66=135+16\cdot 11 = 66 = 13\cdot 5+1), så t114=445(mod13)t\equiv 11\cdot 4 = 44\equiv 5\pmod{13}.
Da er t=5+13st = 5 + 13s, og
x=5+19(5+13s)=100+247s,x = 5 + 19(5 + 13s) = 100 + 247s,

altså x100(mod247)x\equiv 100\pmod{247}.
Kontroll — sett inn i ALLE kongruensene: 100=137+9100 = 13\cdot 7 + 9 ✓; 100=195+5100 = 19\cdot 5 + 5 ✓. Samme svar som formelen gir.

Vi får m=100m=100 — samme svar som i c) ✓.

Sammenligning av de to veiene:

Direkte (cdmodnc^{d}\bmod n)Via pp og qq
Kreverdd og nndd, pp og qq
Eksponenter313177 og 1313
Tallstørrelse i tabelleneunder 247247under 1919
Antall steg83 + 3 + CRT
Virker for en angriperja (om han har dd)nei — krever faktoriseringen

Begge er fullgode, og fasitene i arkivet honorerer dem likt. Den direkte er enklest å huske; den via pp og qq er raskest når tallene vokser, fordi du regner med små tall hele veien.

Sluttsvar: n=247n=247, ϕ(n)=216\phi(n)=216, d=31d=31; c=35c=35; og dekrypteringen gir m=100m=100 på begge veier.

📝Oppgave 6

Et RSA-system har p=17p=17, q=31q=31 og e=13e=13.

a) Finn nn, ϕ(n)\phi(n) og dd.
b) Krypter meldingen m=4m=4.
c) Dekrypter resultatet, og kontrollér at du får mm tilbake.

📝Oppgave 7

En angriper fanger opp den krypterte meldingen c=202c=202 i et system med offentlig nøkkel (n,e)=(589,23)(n,e)=(589,23).

a) Forklar hva angriperen må gjøre for å finne dd, og hvorfor det er vanskelig når nn er stor.
b) Gjør det for dette systemet: faktoriser nn, finn ϕ(n)\phi(n) og dd.
c) Dekrypter c=202c=202.

Begrepsbank

Dette er flashcard-stoff — hopp trygt over ved førstegangslesing; tidsanslaget på 60 minutter gjelder kjernestoffet over.

Kortene dekker oppsettet, prosedyrene, sikkerhetsargumentet og føringskravene. Under kode D er de eksamensverktøy: det finnes ingen formelsamling å slå opp RSA-oppsettet i.

Offentlig-nøkkel-kryptografi

Et krypteringssystem der krypteringsnøkkelen er offentlig og dekrypteringsnøkkelen er privat. Alle kan sende en kryptert melding til deg; bare du kan lese den.

Kontrasten er symmetrisk kryptografi, der samme nøkkel brukes til begge, og der avsender og mottaker derfor må ha avtalt en felles hemmelighet på forhånd. Problemet det løser: du og nettbutikken har aldri møtt hverandre.

Hva som kreves matematisk: en operasjon som er lett å gjøre og vanskelig å reversere — med mindre man har en ekstra opplysning. I RSA er operasjonen mmemodnm\mapsto m^{e}\bmod n, og den ekstra opplysningen er faktoriseringen av nn.

Historikk i én linje: RSA er navngitt etter Rivest, Shamir og Adleman, som publiserte systemet i 1977. Det er fremdeles i bruk, med tall på 2048 bits eller mer.

Hvorfor det står i en tallteoribok: hele systemet er bygget av Eulers teorem, Euklids algoritme og modulær potensopphøyning — tre resultater du kan fra Del 1 og Del 2.

Nøkkelparet — hva som er hva
StørrelseNavnStatusRolle
n=pqn=pqmodulusenoffentligalle regninger skjer modulo nn
eekrypteringseksponentenoffentligcmec\equiv m^{e}
dddekrypteringseksponentenhemmeligmcdm\equiv c^{d}
pp, qqprimtallsfaktorenehemmeliggir ϕ(n)\phi(n)
ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1)hemmeligmodulusen for eksponentene

Den offentlige nøkkelen er paret (n,e)(n,e). Den skrives ofte slik i oppgavene: «den offentlige nøkkelen er (n,e)=(247,7)(n,e)=(247,7)».
Merk to moduler i spill samtidig: meldinger og krypterte tekster regnes modulo nn; eksponentene ee og dd henger sammen modulo ϕ(n)\phi(n). Å blande de to er en av de vanligste feilene — det er samme forveksling som i kap. 2.1.
Minnekroken for ee og dd: ee som i «encrypt», dd som i «decrypt». Og ee er den alle har.
Hva sikkerheten hviler på
RSA er trygt fordi faktorisering er vanskelig, ikke fordi krypteringen er hemmelig.

Kjeden av avhengigheter:

bryte RSA  finne d  finne ϕ(n)  faktorisere n.\text{bryte RSA}\ \Longleftarrow\ \text{finne }d\ \Longleftarrow\ \text{finne }\phi(n)\ \Longleftrightarrow\ \text{faktorisere }n.

Den siste ekvivalensen viste vi i kortet «Hvorfor ϕ(n)\phi(n) må være hemmelig»: ϕ(n)\phi(n) gir summen p+qp+q, og sammen med produktet nn gir det pp og qq via en andregradslikning.

Hva som IKKE er hemmelig: algoritmen, nn, ee, og hele matematikken. Det er et prinsipp i moderne kryptografi — sikkerheten skal ligge i nøkkelen, ikke i at metoden er ukjent.

Hvorfor eksamenstallene ikke er trygge: med n=247n=247 tar faktoriseringen et halvt minutt for hånd. Det er nødvendig for at oppgaven skal være regnbar, og det er greit — så lenge du vet at virkelige systemer bruker tall med flere hundre siffer.

Et yndet teoretisk delpunkt: «forklar hvorfor systemet ikke er trygt hvis pp og qq ligger nær hverandre». Svaret: da er pnp\approx\sqrt n, og du finner dem ved å søke oppover fra n\sqrt n.

Kode D-realisme: hva RSA-tallene ser ut som
StørrelseTypisk verdi på eksamen
pp, qqtosifrede primtall, 774747
n=pqn=pqtresifret eller lite firesifret (under 1000010\,000)
ϕ(n)\phi(n)to- til firesifret
eeensifret eller lite tosifret, ofte et primtall
ddtosifret, funnet i 3–5 Euklid-linjer
meldingen mmensifret eller tosifret
kvadrer-og-multipliser-steg5–9 ved dekryptering

Bruk det som kontroll. Blir Euklid-kjeden for dd tolv linjer, har du regnet feil. Blir dd tresifret, sjekk ϕ(n)\phi(n) — den er sannsynligvis gal.
Merk at RSA-dekryptering krever flere steg enn en vanlig restberegning (5–9 mot 2–5). Grunnen er at dd ikke kan reduseres ytterligere modulo ϕ(n)\phi(n) — den er alt mindre. Vil du ha færre steg, bruk veien via pp og qq.
Og bruk det når du lager egne øvingsoppgaver: velg to tosifrede primtall, regn ϕ(n)\phi(n), velg en liten ee med gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1, og regn dd. Er dd tresifret, prøv en annen ee — eller velg ee og dd slik at ed=kϕ(n)+1ed=k\phi(n)+1 med begge tosifrede.
De fire måtene RSA spørres om på eksamen

1. Dekrypter med oppgitt dd. Ren kvadrer-og-multipliser. Den enkleste varianten, og den som gir bestått.
2. Finn dd selv, og dekrypter. Hovedvarianten: faktoriser nn (eller få p,qp,q oppgitt), regn ϕ(n)\phi(n), kjør Euklids algoritme, dekrypter. Dette er midtsjiktets oppgave.
3. Bygg et helt nøkkelpar fra p,q,ep,q,e, og krypter en melding. Samme verktøy, andre rekkefølge.
4. Vis at dekrypteringen gjenoppretter meldingen. Korrekthetsbeviset fra Eulers teorem, tre linjer — pluss gcd(m,n)1\gcd(m,n)\ne 1-tilfellet hvis oppgaven sier «alle mm».

Alle fire bruker samme fire ingredienser: ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1), Euklids algoritme, kvadrer-og-multipliser, og Eulers teorem.

Merk at type 4 er teoretisk og likevel hyppig. Den koster tre linjer og prøver om du forstår hvorfor systemet virker — ikke bare at det gjør det.

Kontrollrutinen i sjanger D

Fem kontroller, til sammen under to minutter. Under kode D er dette hele kvalitetssikringen din.

EtterKontrollFanger
faktoriseringen av nngang pp og qq sammen igjenavskrivningsfeil
ϕ(n)\phi(n)er (p1)(q1)=npq+1(p-1)(q-1)=n-p-q+1?utregningsfeil
dder eded lik 11 mer enn et multiplum av ϕ(n)\phi(n)?Euklid baklengs-slurv
kvadrattabellener alle tall under nn?glemt reduksjon
hele rundenkrypter svaret tilbake og se at du får ccalt

Den siste er den sterkeste, og den er unik for RSA: du kan alltid sjekke svaret ved å gå den andre veien. Har du dekryptert cc til mm, regn memodnm^{e}\bmod n og se at du får cc tilbake. Det koster like mye som krypteringen, men det er en absolutt kontroll.
Er du presset på tid, ta i det minste eded-kontrollen. Den er den billigste, og dd-feil er den vanligste.

Tidsbudsjettet for en RSA-oppgave

Eksamen er 4 timer på omtrent 10 likt vektede delpunkt — ~24 minutter per delpunkt. En RSA-oppgave har typisk to eller tre delpunkt.

StegInnholdTid
faktorisering av nnprøvedivisjon opp til n\sqrt n~2 min
ϕ(n)\phi(n)ett produkt, med kontroll~1 min
ddEuklids algoritme frem og baklengs~5 min
krypteringkvadrer-og-multipliser, liten eksponent~3 min
dekrypteringkvadrer-og-multipliser, 5–9 steg~6 min
korrekthetsbevistre linjer (pluss to for gcd1\gcd\ne 1)~3 min

En full oppgave (finn dd + dekrypter) tar altså ~14 minutter, godt innenfor to delpunkts budsjett.
Er du over 30 minutter, ligger det nesten alltid i dekrypteringen — prøv veien via pp og qq, som gir mindre tall, eller sjekk om du har glemt å redusere etter hvert kvadrat.

Skriveraden: hva som SKAL stå i besvarelsen

En fullgod besvarelse av «finn dd og dekrypter cc» inneholder alle disse:

1. faktoriseringen n=pqn=pq, vist (om den ikke er oppgitt);
2. ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1), med tallene satt inn;
3. at gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1, slik at dd finnes;
4. Euklids algoritme frem OG baklengs til 1=ϕ(n)y+ex1=\phi(n)y+ex;
5. lesningen modulo ϕ(n)\phi(n), som gir dd;
6. kontrollen ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)};
7. dekrypteringen mcd(modn)m\equiv c^{d}\pmod n med binærutvikling og kvadrattabell;
8. en konklusjonssetning med mm som et tall i 0,,n10,\dots,n-1.

Punkt 4 og 7 er der føringspoengene ligger, og punkt 6 er den kontrollen som fanger den vanligste feilen.

Selvtesten: kan noen som leser besvarelsen din, følge hvert steg fra (n,e)(n,e) til mm uten å regne selv? Da er føringen god nok.

Det som ikke holder: «d=31d=31, så m=5m=5». To riktige tall, ingen metode — og instruksen på hvert sett er at alle svar må begrunnes.

Hvorfor meldingen må være mindre enn n

Kravet er 0m<n0\le m<n. Grunnen er at dekrypteringen gir tilbake resten modulo nn, og to meldinger som er kongruente modulo nn, kan ikke skilles.

Eksempel: med n=247n=247 ville m=5m=5 og m=252m=252 gitt samme krypterte melding, siden 2525(mod247)252\equiv 5\pmod{247}. Mottakeren kan ikke vite hvilken.

Hva man gjør i praksis: deler meldingen i blokker som hver er mindre enn nn, og krypterer blokk for blokk. Tekst kodes først om til tall (for eksempel to bokstaver per blokk).

På eksamen er mm gitt som et tall, og omkodingen er ikke en del av pensum — den er informatikk, ikke tallteori. Men kravet m<nm<n er verdt å kjenne, fordi et delpunkt kan spørre hvorfor det finnes.

Merk et grensetilfelle: m=0m=0 og m=1m=1 krypteres til seg selv (0e=00^{e}=0, 1e=11^{e}=1). Det er en av flere grunner til at virkelige systemer legger til tilfeldig «utfylling» før kryptering.

Hvor RSA er Eulers teorem i forkledning

Hele RSA er én anvendelse av Eulers teorem, og det er verdt å se koblingen tydelig:

I RSAI kap. 2.1
n=pqn=pqmodulusen nn
ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1)ϕ\phi via multiplikativiteten
ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}modulær invers, kap. 1.4
(me)dm(m^{e})^{d}\equiv meksponentreduksjon: ed1ed\equiv 1 betyr at potensen «går en hel runde og ett skritt»
kvadrer-og-multiplisersamme prosedyre

Den ene setningen som binder det sammen: eksponenter på mm teller bare modulo ϕ(n)\phi(n), så ed1ed\equiv 1 betyr at kryptering fulgt av dekryptering er det samme som eksponent 11 — altså ingenting.
Hvorfor det er verdt plass i bunken: ser du RSA slik, trenger du ikke pugge korrekthetsbeviset. Det er eksponentreduksjon, brukt baklengs.

Hvorfor to primtall, og ikke ett eller tre?
Ett primtall (n=pn=p) ville vært utrygt: da er ϕ(n)=p1\phi(n)=p-1, som alle kan regne ut fra det offentlige nn. Enhver kunne funnet dd som inversen til ee modulo p1p-1, og systemet ville ikke hatt noen hemmelighet.

Tre eller flere primtall virker fint matematisk: er n=p1p2p3n=p_1p_2p_3, er ϕ(n)=(p11)(p21)(p31)\phi(n)=(p_1-1)(p_2-1)(p_3-1) ved multiplikativiteten, og alt annet er som før. Slike varianter finnes («multi-prime RSA») og brukes fordi dekryptering via CRT blir raskere.

Hvorfor to er standard: med flere faktorer blir hver faktor mindre for samme nn, og små faktorer er lettere å finne. Sikkerheten bestemmes av den minste primfaktoren, så to like store er det beste valget for et gitt nn.

På eksamen er det alltid to. Men spørsmålet «hva om nn hadde tre primfaktorer?» er et rimelig teoretisk delpunkt, og svaret er: ϕ(n)\phi(n) blir produktet av alle (pi1)(p_i-1), og resten av oppsettet er uendret.

Samme maskineri baklengs: digital signatur
Bruker du din private dd først og lar andre bruke din offentlige ee etterpå, får du en digital signatur:

smd(modn)(du signerer),s\equiv m^{d}\pmod n\qquad\text{(du signerer)},
sem(modn)(alle kan verifisere).s^{e}\equiv m\pmod n\qquad\text{(alle kan verifisere)}.

Hvorfor det virker: korrektheten (me)dm(m^{e})^{d}\equiv m er symmetrisk i ee og dd — begge er eksponenter med ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}, så rekkefølgen betyr ingenting. Utledningen er den samme tre linjene.

Hva det gir: bare du kan lage ss (du har dd), men alle kan sjekke at ss passer til mm (de har ee). Altså et bevis på at meldingen kom fra deg.

Merk at dette ikke skjuler meldingen — hvem som helst kan regne ses^{e} og lese mm. Signering og kryptering er to ulike formål, og bruker nøklene i motsatt rekkefølge.

Dette er utenfor kjernepensum i sjanger D, men det er en naturlig oppfølging som viser at korrekthetsbeviset gir mer enn dekryptering. (Verifiser mot gjeldende pensumliste om digitale signaturer er eksplisitt pensum i ditt kull — arkivet har det ikke som egen oppgavetype.)

Sjanger D i én oversikt
Det du fårDet du gjørVerktøy
pp, qq, een=pqn=pq, ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1), dd via Euklidkap. 1.2, kap. 2.1
(n,e)(n,e) med lite nnfaktoriser nn, så som overprøvedivisjon
mm og (n,e)(n,e)cme(modn)c\equiv m^{e}\pmod nkvadrer-og-multipliser
cc og ddmcd(modn)m\equiv c^{d}\pmod nkvadrer-og-multipliser
cc, dd, pp, qqreduser dd mot p1p-1 og q1q-1, regn to potenser, CRTkap. 2.2, kap. 2.4
«vis at mm gjenopprettes»ed=1+kϕ(n)ed=1+k\phi(n) og Eulers teoremtre linjer

Rekkefølgen er alltid den samme: nϕ(n)dn\to\phi(n)\to d\to potens. Og hvert steg har sin kontroll: pq=npq=n, (p1)(q1)=npq+1(p-1)(q-1)=n-p-q+1, ed1ed\equiv 1, og til slutt hele runden tilbake.
Neste kapittel (kap. 3.2) er drillen: tolv oppgaver som roterer de fire variantene, med sensor-margnotater på den gjennomregnede casen.
Å faktorisere n på eksamen

Får du bare (n,e)(n,e) og ikke pp og qq, må du faktorisere nn selv. På eksamen er det alltid mulig — tallene er valgt slik.

Prosedyren (kap. 1.1): prøvedivider med 2,3,5,7,11,13,17,19,23,2,3,5,7,11,13,17,19,23,\dots opp til n\sqrt n. Går ingen opp, er nn et primtall — og da er oppgaven feil, for RSA krever n=pqn=pq.

Rask utelukking først: er nn like? Ender den på 55? Er siffersummen delelig med 33? Tre sekunder, og du har utelukket tre primtall.

De tallene som faktisk forekommer, og som ser prime ut: n=247=1319n=247=13\cdot 19, 253=1123253=11\cdot 23, 299=1323299=13\cdot 23, 323=1719323=17\cdot 19, 341=1131341=11\cdot 31, 377=1329377=13\cdot 29, 391=1723391=17\cdot 23, 437=1923437=19\cdot 23, 527=1731527=17\cdot 31, 589=1931589=19\cdot 31. Legg merke til mønsteret: begge faktorene er tosifrede primtall, så du finner den minste et sted mellom 77 og n\sqrt n.

Ikke pugg lista — den er der for å vise deg hvor du skal lete. Prøvedivisjonen tar ~2 minutter og er alt du trenger.

Kontrollen: gang pp og qq sammen igjen. Fem sekunder, og du har utelukket en avskrivningsfeil som ville veltet hele oppgaven.

Hvorfor kvadrer-og-multipliser er uunngåelig her

En dekryptering er cdmodnc^{d}\bmod n med dd tosifret. Selv med små tall er cdc^{d} astronomisk: 353135^{31} har 48 siffer.

Kalkulatoren under kode D gir opp. Den regner med begrenset presisjon, og et 48-sifret tall kan den ikke representere — langt mindre dele på 247247 og gi eksakt rest.

Kvadrer-og-multipliser løser det ved å redusere underveis: hvert mellomtall holdes under nn, så du regner aldri med mer enn seks siffer (kvadratet av et tresifret tall).

Merk forskjellen fra kap. 2.1: der kunne eksponenten først reduseres med Eulers teorem, og du satt igjen med noe under 3232. Her kan dd ikke reduseres modulo ϕ(n)\phi(n) — den er alt mindre. Derfor tar RSA-dekryptering 5–9 steg, mot 2–5 for en vanlig restberegning.

Vil du ha færre steg: bruk veien via pp og qq, der eksponentene blir dmod(p1)d\bmod(p-1) og dmod(q1)d\bmod(q-1). Begge veier er fullgode.

Hvor RSA står i settet

Den faste dramaturgien i arkivet (kap. 0.1) plasserer RSA som oppgave 3 eller 4, etter diofant/kongruens (oppgave 1) og CRT (oppgave 2), og før kvadratiske rester.

Hva det betyr praktisk: når du kommer til RSA-oppgaven, har du alt brukt Euklids algoritme én gang og kanskje CRT én gang. Verktøyene er varme, og oppgaven er derfor ofte den raskeste i settet.

Hva den bygger på fra tidligere oppgaver: ingenting — hver hovedoppgave i dette emnet er selvstendig. Et tapt tema koster ett delpunkt, ikke hele settet.

Prioriteringsråd hvis tiden blir knapp: RSA-oppgavens første delpunkt (regn ϕ(n)\phi(n) og finn dd) er billige poeng du bør ta før du kaster deg over resiprositet eller bevis. Dekrypteringen er den dyreste delen i tid, og den kan tas sist.

Og en påminnelse om karakterrealisme: C er en god og vanlig karakter, og den nås ved å dekryptere med oppgitt dd. Å finne dd selv er midtsjiktet; korrekthetsbeviset og den raske veien er toppsjiktet.

Repetisjonsoppgaver
Symbol- og formelliste

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Norges teknisk-naturvitenskapelige universitet. Dette er ikke offisielt studiemateriell. Les mer.