Tilbake
3.2

3.2 Drill: RSA fra nøkkelpar til dekryptering

Hele RSA-oppgaven drillet: bygg nøkkelpar fra p, q, e, finn d via Euklid, krypter og dekrypter med kvadrer-og-multipliser, og før korrekthetsbeviset — de tre variantene fasitene bruker.

70 min
10 oppgaver
DrillRSA fra nøkkelpar til dekryptering
Din fremgang i kapitlet
0 / 10 oppgaver

Forkunnskaper

Fra boka: kap. 3.1 (hele RSA-oppsettet), kap. 1.2 (Euklids algoritme frem og baklengs), kap. 2.1 (Eulers teorem og kvadrer-og-multipliser), kap. 2.2 (Fermats lille teorem) og kap. 2.4 (CRT).

Sist du var her. De fire resultatene hver oppgave i kapitlet bygger på, ferdig oppfrisket:

1. Oppsettet. n=pqn=pq, ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1), offentlig nøkkel (n,e)(n,e) med gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1, privat dd med ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}.

2. Operasjonene. cme(modn)c\equiv m^{e}\pmod n og mcd(modn)m\equiv c^{d}\pmod n.

3. Å finne dd. Kjør Euklids algoritme på ϕ(n)\phi(n) og ee, gå baklengs til 1=ϕ(n)y+ex1=\phi(n)y+ex, og les modulo ϕ(n)\phi(n): d=xd=x.

4. Korrektheten. ed=1+kϕ(n)ed=1+k\phi(n) gir med=m(mϕ(n))km(modn)m^{ed}=m\cdot\left(m^{\phi(n)}\right)^{k}\equiv m\pmod n fra Eulers teorem, når gcd(m,n)=1\gcd(m,n)=1.

Er noe av dette usikkert, gå tilbake til kap. 3.1 før du regner oppgavene her.

Løsningsoppskriften

~8 minutter. Les den, og bruk den som referanse mens du regner oppgavene.

Oppskrift: RSA i fire steg

(1) ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1). Har du bare nn, faktoriser først med prøvedivisjon opp til n\sqrt n. Kontroll: (p1)(q1)=npq+1(p-1)(q-1)=n-p-q+1.

(2) gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1-sjekken. Faktoriser ϕ(n)\phi(n) og se om ee har noen primfaktor felles. Sjekken faller ut gratis av steg (3): Euklid-kjeden ender på gcd=1\gcd=1.

(3) dd via Euklids algoritme baklengs. Kjør algoritmen på ϕ(n)\phi(n) og ee, gå baklengs til 1=ϕ(n)y+ex1=\phi(n)\,y+e\,x, og les modulo ϕ(n)\phi(n): d=xmodϕ(n)d=x\bmod\phi(n). Kontroll: eded skal gi rest 11 ved divisjon med ϕ(n)\phi(n).

(4) Potensen via kvadrer-og-multipliser. Kryptering cmec\equiv m^{e}, dekryptering mcdm\equiv c^{d}, begge modulo nn. Reduser grunntallet først, skriv binærutviklingen, og reduser etter hvert kvadrat.

Alternativ i steg (4), når du kjenner pp og qq: reduser eksponenten mot hvert primtall (dp=dmod(p1)d_p=d\bmod(p-1), dq=dmod(q1)d_q=d\bmod(q-1)), regn to små potenser, og sett sammen med CRT. Begge veier er fullgode, og den siste gir mindre tall.

— naturlig pausepunkt —

De fire kontrollpunktene

Under kode D er selvkontroll den eneste kontrollen du har. Disse fire tar til sammen under ett minutt og fanger nesten alt.

EtterKontrollFanger
faktoriseringengang pp og qq sammen igjenavskrivningsfeil
ϕ(n)\phi(n)er (p1)(q1)=npq+1(p-1)(q-1)=n-p-q+1?utregningsfeil
ddgir eded rest 11 ved divisjon med ϕ(n)\phi(n)?Euklid baklengs-slurv
dekrypteringenkrypter svaret tilbake: gir memodnm^{e}\bmod n tilbake cc?alt

Den siste er unik for RSA og helt avgjørende: du kan alltid gå den andre veien. Det koster like mye som krypteringen, men det er en absolutt kontroll — og på eksamen betyr det at du vet at svaret er riktig.
Er du presset på tid, ta i det minste eded-kontrollen. Den er den billigste, og dd-feil er den vanligste.

Gjennomregnet eksamenscase

~15 minutter.

Her er en typisk RSA-oppgave med tre delpunkt, med margnotater som sier hva hvert steg er verdt og hvorfor. Les den én gang med blyanten i hånda, og regn deretter oppgavene selv.

✏️Eksamenscase: finn d og dekrypter, med (n, e) = (437, 13)

Den offentlige nøkkelen i et RSA-system er (n,e)=(437,13)(n,e)=(437,13), og du har fanget opp den krypterte meldingen c=289c=289.

a) Faktoriser nn og finn ϕ(n)\phi(n). (3 poeng)
b) Finn dekrypteringseksponenten dd. (5 poeng)
c) Dekrypter meldingen. (4 poeng)

a) Faktoriser n=437n=437. (~2 min)

43720,9\sqrt{437}\approx 20{,}9, så vi prøvedividerer med primtallene opp til 2020: ikke like; siffersum 1414 (ikke delelig med 33); ender ikke på 00 eller 55; 762=4347\cdot 62=434 — nei; 1139=42911\cdot 39=429, 1140=44011\cdot 40=440 — nei; 1333=42913\cdot 33=429, 1334=44213\cdot 34=442 — nei; 1725=42517\cdot 25=425, 1726=44217\cdot 26=442 — nei; 1923=43719\cdot 23=437 ✓.

Altså 437=1923437=19\cdot 23, og ved multiplikativiteten til ϕ\phi:
ϕ(437)=(191)(231)=1822=396.\phi(437)=(19-1)(23-1)=18\cdot 22=396.

Kontroll: npq+1=4371923+1=396n-p-q+1=437-19-23+1=396 ✓.

Margnotat: faktoriseringen er premisset for hele oppgaven, og den skal vises — ikke bare påstås. Legg merke til at prøvedivisjonen stopper ved n\sqrt n: det er ikke en snarvei, det er et teorem (kap. 1.1).

---

b) Finn dd. (~5 min)

dd er inversen til 1313 modulo 396396. Vi bruker Euklids algoritme (kap. 1.2), ført frem og baklengs:

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

396=3013+6396 = 30\cdot 13 + 6
13=26+113 = 2\cdot 6 + 1
6=61+06 = 6\cdot 1 + 0

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

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

1=13261 = 13 - 2\cdot 6
Sett inn 6=39630136 = 396 - 30\cdot 13:
1=2396+61131 = -2\cdot 396 + 61\cdot 13

(iii) Konklusjon. Altså er

gcd(396,13)=1=396(2)+13(61).\gcd(396,13) = 1 = 396\cdot(-2) + 13\cdot(61).

Kontroll ved innsetting: 396(2)+13(61)=792+793=1396\cdot(-2) + 13\cdot(61) = -792 + 793 = 1. Stemmer.

Vi leser likningen modulo 396396. Leddet 396(2)396\cdot(-2) er et multiplum av 396396 og faller bort:

13(61)1(mod396).13\cdot(61)\equiv 1\pmod{396}.

Altså er u=61u=61.

Kontroll: 1361=79313\cdot 61 = 793, og 793=3962+1793 = 396\cdot 2 + 1, så resten er 11. Stemmer.

Altså er d=61d=61.

Kontroll: ed=1361=793ed=13\cdot 61=793, og 793=3962+1793=396\cdot 2+1 ✓.

Margnotat: to ting bærer uttellingen her. (1) Kjeden frem og baklengs — det er føringsstandarden i emnet, og et dd uten kjeden er et sluttall uten metode. (2) eded-kontrollen, som koster tjue sekunder og fanger den vanligste tallfeilen i hele sjangeren. Merk også at Euklid-kjeden ender på gcd=1\gcd=1 — det bekrefter samtidig at e=13e=13 var et lovlig valg.

---

c) Dekrypter c=289c=289. (~6 min)

mcd=28961(mod437).m\equiv c^{d}=289^{61}\pmod{437}.

(v) Binærutviklingen av eksponenten og de suksessive kvadratene. Vi skriver eksponenten som en sum av toerpotenser: 61=32+16+8+4+161 = 32 + 16 + 8 + 4 + 1, altså 6161 i binær er 111101111101. Deretter kvadrerer vi oss oppover, og reduserer modulo 437437 etter hvert kvadrat:

PotensUtregningRest modulo 437437
2891289^{1}289289
2892289^{2}2892=83521289^2=83\,521, og 83521=437191+5483\,521=437\cdot 191+545454
2894289^{4}542=291654^2=2\,916, og 2916=4376+2942\,916=437\cdot 6+294294294
2898289^{8}2942=86436294^2=86\,436, og 86436=437197+34786\,436=437\cdot 197+347347347
28916289^{16}3472=120409347^2=120\,409, og 120409=437275+234120\,409=437\cdot 275+234234234
28932289^{32}2342=54756234^2=54\,756, og 54756=437125+13154\,756=437\cdot 125+131131131

(vi) Sett sammen produktet. Da er
28961=2893228916289828942891131234347294289(mod437),289^{61} = 289^{32} \cdot 289^{16} \cdot 289^{8} \cdot 289^{4} \cdot 289^{1} \equiv 131 \cdot 234 \cdot 347 \cdot 294 \cdot 289 \pmod{437},
og vi multipliserer to av gangen, med reduksjon underveis: 131234=3065464131\cdot 234 = 30\,654\equiv 64; 64347=2220835864\cdot 347 = 22\,208\equiv 358; 358294=105252372358\cdot 294 = 105\,252\equiv 372; 372289=1075086372\cdot 289 = 107\,508\equiv 6.
Den dekrypterte meldingen er m=6m=\boxed{6}.
Kontroll — krypter tilbake: 613mod4376^{13}\bmod 437 skal gi 289289.
(v) Binærutviklingen av eksponenten og de suksessive kvadratene. Vi skriver eksponenten som en sum av toerpotenser: 13=8+4+113 = 8 + 4 + 1, altså 1313 i binær er 11011101. Deretter kvadrerer vi oss oppover, og reduserer modulo 437437 etter hvert kvadrat:
PotensUtregningRest modulo 437437
616^{1}66
626^{2}62=366^2=363636
646^{4}362=129636^2=1\,296, og 1296=4372+4221\,296=437\cdot 2+422422422
686^{8}4222=178084422^2=178\,084, og 178084=437407+225178\,084=437\cdot 407+225225225

(vi) Sett sammen produktet. Da er

613=6864612254226(mod437),6^{13} = 6^{8} \cdot 6^{4} \cdot 6^{1} \equiv 225 \cdot 422 \cdot 6 \pmod{437},

og vi multipliserer to av gangen, med reduksjon underveis: 225422=94950121225\cdot 422 = 94\,950\equiv 121; 1216=726289121\cdot 6 = 726\equiv 289.

Samme c=289c=289 ✓. Svaret er sikret.

Margnotat: kvadrattabellen skal stå i besvarelsen. Et sluttall uten den er et svar uten metode, og instruksen på hvert sett er at alle svar må begrunnes. Og legg merke til kontrollen: å kryptere tilbake er den eneste absolutte kontrollen som finnes i denne sjangeren — bruk den når du har tid.

Samlet tidsbruk: ~13 minutter for tre delpunkt (uten tilbake-krypteringen; med den ~19). Eksamensbudsjettet er ~24 minutter per delpunkt (4 timer på ~10 likt vektede delpunkt), så du har god margin når apparatet sitter.

Oppgavene

~45 minutter til sammen. Ti oppgaver, gruppert etter variant.

Regn dem med penn og lukket bok. Forskjellen mellom å ha lest en oppskrift og å kunne den, viser seg først når boka er lukket — og på eksamen er den lukket.

Gruppene: oppgave 1–3 er «finn dd og dekrypter», 4–5 er «bygg nøkkelpar», 6 er kryptering, 7–8 er dekryptering med oppgitt dd (8 med den raske veien via pp og qq), og 9–10 er korrekthetsbeviset.

— naturlig pausepunkt —

📝Oppgave 1

Den offentlige nøkkelen er (n,e)=(299,5)(n,e)=(299,5), og du har mottatt c=63c=63.

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

📝Oppgave 2

Den offentlige nøkkelen er (n,e)=(851,13)(n,e)=(851,13), og du har mottatt c=84c=84.

a) Finn ϕ(n)\phi(n) og dd.
b) Dekrypter meldingen.

📝Oppgave 3

Den offentlige nøkkelen er (n,e)=(407,23)(n,e)=(407,23), og du har mottatt c=347c=347.

a) Finn pp, qq, ϕ(n)\phi(n) og dd.
b) Dekrypter meldingen.
c) Kontrollér ved å kryptere svaret tilbake.

📝Oppgave 4

Et RSA-system skal bygges med p=29p=29, q=41q=41 og e=19e=19.

a) Finn nn og ϕ(n)\phi(n), og bekreft at ee er et lovlig valg.
b) Finn dd.
c) Krypter meldingen m=5m=5.

📝Oppgave 5

Et RSA-system skal bygges med p=17p=17, q=23q=23 og e=15e=15.

a) Finn nn og ϕ(n)\phi(n), og bekreft at ee er lovlig — selv om ee ikke er et primtall.
b) Finn dd.
c) Krypter meldingen m=9m=9.

📝Oppgave 6

I et RSA-system er den offentlige nøkkelen (n,e)=(1147,23)(n,e)=(1147,23).

a) Krypter meldingen m=12m=12.
b) Hva er det største tallet som kan sendes som én melding i dette systemet, og hvorfor?

📝Oppgave 7

I et RSA-system er n=329n=329 og den private eksponenten d=65d=65. Du har mottatt c=38c=38.

Dekrypter meldingen.

📝Oppgave 8

I et RSA-system er p=19p=19, q=23q=23, e=13e=13 og d=61d=61. Du har mottatt c=289c=289.

a) Dekrypter meldingen ved å regne modulo pp og modulo qq hver for seg, og sette sammen med det kinesiske restteoremet.
b) Sammenlign arbeidsmengden med den direkte metoden (cdmodnc^{d}\bmod n), som ble brukt i eksamenscasen over.

📝Oppgave 9
a) Vis at dekrypteringen i RSA gjenoppretter meldingen når gcd(m,n)=1\gcd(m,n)=1, altså at (me)dm(modn)(m^{e})^{d}\equiv m\pmod n.
b) Hvor i beviset brukes at ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)}, og hvor brukes Eulers teorem?
c) Kontrollér beviset numerisk for n=299n=299, e=5e=5, d=53d=53 og m=7m=7.
📝Oppgave 10

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

a) Forklar hvorfor beviset i oppgave 9 ikke dekker meldinger mm der pmp\mid m.
b) Vis at (me)dm(modn)(m^{e})^{d}\equiv m\pmod n likevel holder for alle mm med 0m<n0\le m<n.
c) Kontrollér for n=391=1723n=391=17\cdot 23, e=15e=15, d=47d=47 og m=17m=17.

Prosedyrekort

Dette er flashcard-stoff — hopp trygt over ved førstegangslesing; tidsanslaget på 70 minutter gjelder oppskriften, casen og oppgavene.

Drillkapitlene har ingen begrepsbank i vanlig forstand: begrepene står i kap. 3.1. Kortene her er oppskriftskort — de tar prosedyrene og gjør dem til noe du kan gjenkalle kaldt, som kode D krever.

Kort: RSA i fire steg
(1) ϕ(n)=(p1)(q1)\phi(n)=(p-1)(q-1) — faktoriser nn først om nødvendig. Kontroll: =npq+1=n-p-q+1.

(2) gcd(e,ϕ(n))=1\gcd(e,\phi(n))=1-sjekken.

(3) dd via Euklids algoritme frem og baklengsϕ(n)\phi(n) og ee; les 1=ϕ(n)y+ex1=\phi(n)y+ex modulo ϕ(n)\phi(n). Kontroll: eded gir rest 11.

(4) Potensen via kvadrer-og-multipliser: cmec\equiv m^{e}, mcdm\equiv c^{d}, begge modulo nn.

Må sitte utenat. Rekkefølgen er alltid den samme: nϕ(n)dn\to\phi(n)\to d\to potens.

Selvtest: dekk til og skriv de fire stegene på tjue sekunder.

Kort: finn d
dd er inversen til ee modulo ϕ(n)\phi(n):
ed1(modϕ(n)).ed\equiv 1\pmod{\phi(n)}.

Prosedyre: Euklids algoritme frem på ϕ(n)\phi(n) og ee → baklengs til 1=ϕ(n)y+ex1=\phi(n)y+exd=xmodϕ(n)d=x\bmod\phi(n).

Må sitte utenat, og føringen frem OG baklengs er føringskravet (kap. 1.2).

Ble xx negativ? Legg til ϕ(n)\phi(n). Det endrer ikke restklassen, og dd skal oppgis i 0<d<ϕ(n)0<d<\phi(n).

Kontroll: eded skal gi rest 11 ved divisjon med ϕ(n)\phi(n). Typisk er ed=ϕ(n)+1ed=\phi(n)+1 eller 2ϕ(n)+12\phi(n)+1 på eksamen.

Snarvei å se etter: er ed=ϕ(n)+1ed=\phi(n)+1 for en liten dd, finner du dd ved å prøve — men skriv kjeden likevel, den er føringskravet.

Kort: potensen i RSA
Kryptering: cme(modn)c\equiv m^{e}\pmod n. Dekryptering: mcd(modn)m\equiv c^{d}\pmod n.

Prosedyre (kvadrer-og-multipliser): reduser grunntallet først → skriv eksponenten binært → regn suksessive kvadrater, redusert modulo nn etter hvert → gang sammen de som svarer til enerne.

Må sitte utenat.

Se på binærutviklingen først — den forteller hvor lang oppgaven blir. d=65=10000012d=65=1000001_2 gir seks kvadrater og én multiplikasjon; d=63=1111112d=63=111111_2 gir fem kvadrater og fem multiplikasjoner.

Reduser grunntallet, og se etter negative rester. Er c3(modn)c\equiv -3\pmod n, er kvadratene mye lettere.

Kontroll: alle tall i tabellen under nn; og til slutt, krypter svaret tilbake.

Kort: den raske dekrypteringsveien

Kjenner du pp og qq:

(1) dp=dmod(p1)d_p=d\bmod(p-1) og dq=dmod(q1)d_q=d\bmod(q-1) — hjemmelen er Fermats lille teorem.
(2) Reduser også cc modulo pp og modulo qq.
(3) Regn mpcdp(modp)m_p\equiv c^{d_p}\pmod p og mqcdq(modq)m_q\equiv c^{d_q}\pmod q.
(4) Sett sammen med CRT til mm modulo nn.

Utledes på stedet — det er Fermat brukt to ganger pluss CRT, alt fra Del 2.

Gevinsten: små eksponenter og små tall. Tap: to reduksjoner og en CRT ekstra. Begge veier er fullgode.

Vilkåret: pcp\nmid c og qcq\nmid c. Er ett brutt, er den resten 00, og du regner den direkte.

Sikkerhetsmerknad: veien krever faktoriseringen, så en angriper kan ikke bruke den.

Kort: korrekthetsbeviset
Tilfelle gcd(m,n)=1\gcd(m,n)=1, tre linjer:

1. ed1(modϕ(n))ed\equiv 1\pmod{\phi(n)} betyr ed=1+kϕ(n)ed=1+k\phi(n).
2. 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å medm(modn)m^{ed}\equiv m\pmod n.

Tilfelle pmp\mid m (kreves når oppgaven sier «alle mm»): vis medmm^{ed}\equiv m modulo pp (begge sider 0\equiv 0) og modulo qq (Fermats lille teorem, siden (q1)ϕ(n)(q-1)\mid\phi(n)), og sett sammen med CRT.

Utledes på stedet — begge tilfellene. Ikke pugg konklusjonen; kunn utledningen.

Det som MÅ stå: hva kongruensen ed1ed\equiv 1 betyr, teoremnavnet, og case-analysen om oppgaven ber om alle mm.

Kort: kontrollene, samlet
EtterKontrollFanger
faktoriseringpq=npq=n?avskrivningsfeil
ϕ(n)\phi(n)(p1)(q1)=npq+1(p-1)(q-1)=n-p-q+1?utregningsfeil
ddgir eded rest 11 modulo ϕ(n)\phi(n)?Euklid baklengs-slurv
kvadrattabellalle tall under nn?glemt reduksjon
sluttsvari 0,,n10,\dots,n-1?glemt siste reduksjon
hele rundenkrypter svaret tilbake — gir det cc?alt

Den siste er unik for RSA og absolutt. Har du tid, bruk den: da vet du at svaret er riktig, og det er en sjelden luksus på en eksamen uten hjelpemidler.
Er du presset: ta eded-kontrollen. Den koster tjue sekunder og fanger den vanligste feilen.
Kort: kode D-realistiske RSA-tall
StørrelseTypisk verdi på eksamen
pp, qqtosifrede primtall, 774747
n=pqn=pqunder 1000010\,000
ϕ(n)\phi(n)to- til firesifret
eeensifret eller lite tosifret
ddtosifret, funnet i 3–5 Euklid-linjer
meldingen mmensifret eller tosifret
dekrypteringssteg5–9 kvadrer-og-multipliser-steg

Bruk det som kontroll. Blir Euklid-kjeden tolv linjer, har du regnet feil. Blir dd tresifret, sjekk ϕ(n)\phi(n).
Og bruk det når du lager egne øvingsoppgaver: velg to tosifrede primtall, regn ϕ(n)\phi(n), og velg ee slik at ed=ϕ(n)+1ed=\phi(n)+1 eller 2ϕ(n)+12\phi(n)+1 med begge eksponenter tosifrede. Da er oppgaven regnbar på under et kvarter.
Kort: tidsbudsjettet for sjanger D

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

StegTid
faktorisering av nn~2 min
ϕ(n)\phi(n) med kontroll~1 min
dd via Euklid frem og baklengs~5 min
kryptering (liten ee)~3 min
dekryptering (5–9 steg)~6 min
korrekthetsbevis~3 min
tilbake-krypteringskontroll~4 min

En full oppgave (finn dd + dekrypter + kontroll) tar ~18 minutter, altså under ett delpunkts budsjett — mens oppgaven er verdt to eller tre.
Prioriteringsråd: ta ϕ(n)\phi(n) og dd først (billige poeng), og dekrypteringen etterpå. Blir tiden knapp, er et riktig dd med vist kjede mer verdt enn en halvferdig potensberegning.

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.