RSA

Fra testwiki
Hopp til navigering Hopp til søk

Mal:Andrebetydninger RSA er en krypteringsalgoritme basert på offentlig nøkkel (en.: public key).

Drift

For å bruke RSA-algoritmen må den gjennom tre steg; generering av nøkkeltall, kryptering og dekryptering.

Generering av nøkkeltall

  • Mottaker finner fram to primtall som p og q og regner ut n=pq og b=(p1)(q1). For at dette skal bli tilstrekkelig sikkert må man velge to store primtall (over noen 100 siffer i hver).
  • Nå velger mottaker et tall e slik at sfd(e,b)=1
  • Tallene n og e kan nå offentliggjøres for at sender kan begynne kryptering. Dette er den offentlige nøkkelen (en.: public key).
  • Kongruensen ed1(modb) regnes nå ut, og det minste positive tallet velges til det hemmelige tallet d. (d= hemmelig dekrypteringsnøkkel).

Kryptering

  • Meldingen som skal sendes gjøres om til tall. La M være ett av tallene.
  • Vi finner nå det minste positive tallet for N, slik at NMe(modn). Resten ved divisjonen Me:n er altså den hemmelige meldingen.
  • Nå kan avsender sende N til mottaker.

Dekryptering

  • I dekrypteringsprosessen er M det minste positive tallet i MNd(modn). Ved å finne resten av Nd:n kan man finne meldingen, M.

Eksempel

Generering av nøkkeltall

Vi velger to primtall som p og q.

p=5 og q=7

Vi finner n og b.

n=pq=57=35
b=(p1)(q1)=(51)(71)=46=24

Nå må vi finne en verdi for e slik at sfd(e,b)=1.

Vi faktoriserer b.
24=2223
Nå velger vi et tall for e. Vi kan velge e=11 siden 11 ikke finnes i 24
Vi ser at sfd(11,24)=1

Vi offentliggjør nøklene n og e, (e = encryption key)

n=35 og e=11

Nå må vi lage det hemmelige tallet d.

ed1(modb)
11d1(mod24)
11d1+524(mod24)
11d121(mod24)
11d1111(mod24)
d11(mod24)
Det hemmelige tallet er dermed d=11 (d=decryption key)

OBS: e og d er ikke alltid like. Det er bare en tilfeldighet at de er like i dette eksemplet.

Kryptering

Vi mottar de offentlige nøklene e og n

e=11 og n=35

Meldingen M=8 ønskes å bli sendt, men den må krypteres først.
For å finne N, den krypterte meldingen, gjør vi slik:

NMe(modn)
N811(mod35)
N8589934592(mod35)
N858993459224542670235(mod35)
N22(mod35)
Den hemmelige meldingen er N=22

Dekryptering

Vi mottar den krypterte meldingen N.

N=22

Fra tidligere kjenner vi den hemmelige nøkkelen d og den offentlige nøkkelen n

d=11 og n=35

Vi ser at det er en sammenheng mellom N, d og n slik at vi kan finne M.

MNd(modn)
M2211(mod35)

For å få lettere tall å regne med så bruker vi litt kreativ regning. Vi ser på eksponenter av 22 som er lavere enn 11.

221=2222(mod35)
222=48429(mod35)
224=(222)22928411(mod35)
228=(224)2121(mod35)

Vi ser at 11=1+2+8

22122222822291(mod35)
221+2+8638(mod35)
22116381835(mod35)
22118(mod35)

Vi har nå funnet den krypterte meldingen

M=8

Historie

Algoritmen ble først beskrevet i 1977 av Ron Rivest, Adi Shamir og Leonard Adleman ved MIT; de tre bokstavene RSA er initialene i etternavnene deres i samme rekkefølge som de fremkommer på artikkelen deres.[1]

Den Britiske matematikeren Clifford Cocks beskrev et lignende system i et internt dokument for den britiske etterretningstjenesten GCHQ. Hans oppdagelse ble ikke offentliggjort før i 1997, grunnet top-secret klassifisering av arbeidet.

MIT fikk et patent på "Cryptographic communications system and method" som benyttet algoritmen i 1983. Patentet ville vært gyldig til 2003, men ble offentliggjort av RSA 21. september 2000.

Referanser

  1. SIAM News, Volume 36, Number 5, June 2003 Mal:Wayback,"Still Guarding Secrets after Years of Attacks, RSA Earns Accolades for its Founders", by Sara Robinson

Mal:Stubb

Mal:Autoritetsdata