RSA algoritam šifriranja je vrsta algoritma šifriranja s javnim ključem. Da bismo bolje razumjeli RSA, prvo shvatimo što je algoritam šifriranja s javnim ključem.
Algoritam šifriranja javnog ključa:
Algoritam šifriranja s javnim ključem naziva se i asimetrični algoritam. Asimetrični algoritmi su oni algoritmi u kojima pošiljatelj i primatelj koriste različite ključeve za šifriranje i dešifriranje. Svakom pošiljatelju je dodijeljen par ključeva:
The Javni ključ koristi se za šifriranje, a Privatni ključ koristi se za dešifriranje. Dešifriranje se ne može izvesti pomoću javnog ključa. Dva ključa su povezana, ali se privatni ključ ne može izvesti iz javnog ključa. Javni ključ je dobro poznat, ali privatni ključ je tajan i poznat je samo korisniku koji posjeduje ključ. To znači da svatko može poslati poruku korisniku korištenjem korisničkog javnog ključa. Ali samo korisnik može dešifrirati poruku koristeći svoj privatni ključ.
Algoritam javnog ključa radi na sljedeći način:
- Podatke koji se šalju kriptira pošiljatelj A koristeći javni ključ predviđenog primatelja
- B dekriptira primljeni šifrirani tekst pomoću svog privatnog ključa, koji je poznat samo B. B odgovara A šifriranjem njegove poruke koristeći A-ov javni ključ.
- A dekriptira primljeni šifrirani tekst koristeći svoj privatni ključ koji je samo njemu poznat.
RSA enkripcijski algoritam:
RSA je najčešći algoritam s javnim ključem, nazvan po svojim izumiteljima Rivest, Shamir i Adelman (RSA).
RSA algoritam koristi sljedeći postupak za generiranje javnih i privatnih ključeva:
- Odaberite dva velika prosta broja, p i q .
- Pomnožite ove brojeve da biste pronašli n = p x q, gdje n naziva se modul za šifriranje i dešifriranje.
- Odaberite broj to je manje od n , tako da je n relativno prost (p - 1) x (q -1). To znači da to je i (p - 1) x (q - 1) nemaju zajednički faktor osim 1. Odaberite 'e' tako da je 1
gcd (e,d(n)) =1 - Ako n = p x q, tada je javni ključ . Javna tekstualna poruka m je šifriran korištenjem javnog ključa. Za pronalaženje šifriranog teksta iz običnog teksta koristi se sljedeća formula za dobivanje šifriranog teksta C.
C = mto jeprotiv n
Ovdje , m mora biti manje od n . Veća poruka (>n) tretira se kao spoj poruka od kojih je svaka zasebno šifrirana. - Za određivanje privatnog ključa koristimo sljedeću formulu za izračun d tako da je:
Dto jemod {(p - 1) x (q - 1)} = 1
Ili
Dto jemod φ (n) = 1 - Privatni ključ je . Šifrirana poruka c se dešifrira pomoću privatnog ključa. Za izračunavanje običnog teksta m iz šifriranog teksta c sljedeća formula se koristi za dobivanje običnog teksta m.
m = cdprotiv n
Uzmimo neki primjer algoritma RSA enkripcije:
Primjer 1:
Ovaj primjer pokazuje kako možemo šifrirati otvoreni tekst 9 koristeći RSA algoritam šifriranja javnog ključa. Ovaj primjer koristi proste brojeve 7 i 11 za generiranje javnih i privatnih ključeva.
Obrazloženje:
Korak 1: Odaberite dva velika prosta broja, p i q .
p = 7
q = 11
Korak 2: Pomnožite ove brojeve da biste pronašli n = p x q, gdje n naziva se modul za šifriranje i dešifriranje.
Prvo, izračunavamo
n = p x q
n = 7 x 11
primjeri python programa
n = 77
Korak 3: Odaberite broj to je manje od toga n , tako da je n relativno prost (p - 1) x (q -1). To znači da to je i (p - 1) x (q - 1) nemaju zajednički faktor osim 1. Odaberite 'e' tako da je 1 Drugo, izračunavamo φ (n) = (p - 1) x (q-1) φ (n) = (7 - 1) x (11 - 1) φ (n) = 6 x 10 φ (n) = 60 Izaberimo sada relativni prost e od 60 kao 7. Stoga je javni ključ = (7, 77) Korak 4: Javna tekstualna poruka m je šifriran korištenjem javnog ključa. Za pronalaženje šifriranog teksta iz običnog teksta koristi se sljedeća formula za dobivanje šifriranog teksta C. Za pronalaženje šifriranog teksta iz običnog teksta koristi se sljedeća formula za dobivanje šifriranog teksta C. C = mto jeprotiv n C = 97protiv 77 C = 37 Korak 5: Privatni ključ je . Za određivanje privatnog ključa koristimo sljedeću formulu d tako da je: Dto jemod {(p - 1) x (q - 1)} = 1 7d mod 60 = 1, što daje d = 43 Privatni ključ je = (43, 77) Korak 6: Šifrirana poruka c se dešifrira pomoću privatnog ključa. Za izračunavanje običnog teksta m iz šifriranog teksta c sljedeća formula se koristi za dobivanje običnog teksta m. m = cdprotiv n m = 3743protiv 77 m = 9 U ovom primjeru, običan tekst = 9, a šifrirani tekst = 37 U RSA kriptosustavu, određeni A koristi dva prosta broja, 13 i 17, za generiranje javnog i privatnog ključa. Ako je javni ključ A 35. Tada je privatni ključ A ……………?. Obrazloženje: Korak 1: u prvom koraku odaberite dva velika prosta broja, str i q . p = 13 q = 17 Korak 2: Pomnožite ove brojeve da biste pronašli n = p x q, gdje n naziva se modul za šifriranje i dešifriranje. Prvo, izračunavamo n = p x q n = 13 x 17 n = 221 Korak 3: Odaberite broj to je manje od toga n , tako da je n relativno prost (p - 1) x (q -1). To znači da to je i (p - 1) x (q - 1) nemaju zajednički faktor osim 1. Odaberite 'e' tako da je 1 Drugo, izračunavamo φ (n) = (p - 1) x (q-1) φ (n) = (13 - 1) x (17 - 1) φ (n) = 12 x 16 φ (n) = 192 g.c.d (35, 192) = 1 Korak 3: Za određivanje privatnog ključa koristimo sljedeću formulu za izračun d tako da je: Izračunajte d = dto jemod φ (n) = 1 d = d x 35 mod 192 = 1 d = (1 + k.φ (n))/e [neka je k =0, 1, 2, 3………………] Stavite k = 0 d = (1 + 0 x 192)/35 d = 1/35 Stavite k = 1 d = (1 + 1 x 192)/35 d = 193/35 Stavite k = 2 d = (1 + 2 x 192)/35 d = 385/35 d = 11 Privatni ključ je = (11, 221) Dakle, privatni ključ, tj. d = 11 RSA kriptosustav koristi dva prosta broja 3 i 13 za generiranje javnog ključa = 3 i privatnog ključa = 7. Koja je vrijednost šifriranog teksta za čisti tekst? Obrazloženje: Korak 1: U prvom koraku odaberite dva velika prosta broja, str i q . p = 3 q = 13 Korak 2: Pomnožite ove brojeve da biste pronašli n = p x q, gdje n naziva se modul za šifriranje i dešifriranje. Prvo, izračunavamo n = p x q n = 3 x 13 n = 39 Korak 3: Ako n = p x q, tada je javni ključ . Javna tekstualna poruka m je šifriran korištenjem javnog ključa. Stoga je javni ključ = (3, 39). Za pronalaženje šifriranog teksta iz običnog teksta koristi se sljedeća formula za dobivanje šifriranog teksta C. C = mto jeprotiv n C = 53prema 39 C = 125 naspram 39 C = 8 Dakle, šifrirani tekst generiran iz običnog teksta, C = 8. RSA kriptosustav koristi dva prosta broja, 3 i 11, za generiranje privatnog ključa = 7. Koja je vrijednost šifriranog teksta za čisti tekst 5 koji koristi RSA algoritam šifriranja s javnim ključem? Obrazloženje: Korak 1: u prvom koraku odaberite dva velika prosta broja, str i q . p = 3 q = 11 Korak 2: Pomnožite ove brojeve da biste pronašli n = p x q, gdje n naziva se modul za šifriranje i dešifriranje. Prvo, izračunavamo n = p x q n = 3 x 11 n = 33 Korak 3: Odaberite broj to je manje od toga n , tako da je n relativno prost (p - 1) x (q -1). To znači da to je i (p - 1) x (q - 1) nemaju zajednički faktor osim 1. Odaberite 'e' tako da je 1 Drugo, izračunavamo φ (n) = (p - 1) x (q-1) φ (n) = (3 - 1) x (11 - 1) φ (n) = 2 x 10 φ (n) = 20 Korak 4: Za određivanje javnog ključa koristimo sljedeću formulu za izračunavanje d tako da je: Izračunajte e x d = 1 mod φ (n) e x 7 = 1 prema 20 e x 7 = 1 prema 20 e = (1 + k. φ (n))/ d [neka je k =0, 1, 2, 3………………] Stavite k = 0 e = (1 + 0 x 20) / 7 e = 1/7 Stavite k = 1 e = (1 + 1 x 20) / 7 e = 21/7 e = 3 Javni ključ je = (3, 33) Dakle, javni ključ, tj. e = 3 Primjer 2:
Primjer 3:
Primjer 4: