RSA |
||
RSA
(en förkortning av skaparnas namn: Rivest, Shamir and Adleman
Algorithm) är det publika nyckelsystem som är spritt i
någon större omfattning. RSA är ett så
kallat blockchiffersystem i vilken originaltexten och den chiffrerade
texten
är heltal mellan 0 och n-1 för något n. Kryptering och
dekryptering sker på följande sätt för någon
originaltext M och chiffrerad text C (e står
för encryption och d står för
decryption):
C= Me mod n M= Cd mod n= (Me)d mod n= Med mod n Både sändaren och mottagaren måste veta
värdet
på n. Sändaren vet värdet på
e och bara mottagaren
vet värdet på d. Det innebär att detta
är ett publikt
nyckelkrypteringsalgoritm med den publika nyckeln KU= {e,n} och en
privat
nyckel KR= {d,n}. För att denna algoritm ska fungera som en publik
nyckelkryptering måste följande krav vara uppfyllda:
De första två punkterna gäller för RSA
och det
är bara den tredje punkten som är lite tveksam. Detta krav
gäller
dock om man väljer tillräckligt stora värden på e
och n. Princip för att kunna välja n och båda
nycklarna: Nu är det dags att välja publika nyckeln (e), följande är begränsningar för valet:
följande formel ska gälla för de valda nycklarna: (d*e) mod g = 1 Vi tar ett exampel: primtal={2,3,5,7,11,13,17,19,23,29,...}
A krypterar talet 20 med publika nyckeln 5, alltså: C=Me mod n= 205 mod 39= (202 202 201) mod 39= (202 mod 39)*(202 mod 39)*(201 mod 39)= (400 mod 39)*(400 mod 39)*20=10*10*20=2000 2000 är fortfarande större än 39 då kan vi fortsätta på samma sätt: C=2000 mod39= ((10*10) mod 39)* (20 mod 39)= 100 mod 39* 20=22*20=440 >39 då fortsätter vi: C=440 mod 39=11 alltså det krypterade talet är 11. så A skickar 11 till B. Nu har B fått 11, då är det dags att dekryptera det med sin privata nyckel( som är hemlig och det var 29). M= Cd mod n= 1129 mod 39=(112)14 *11 mod 39= (112 mod 39)14 *11 =(121 mod 39)14 * 11= 414*11= (43)4 * 42*11=(64 mod39)4* 16*11=254*176= (625 mod 39)*(625 mod 39) *(176 mod 39)=1*1*20=20 vad var det A ville skicka? |
||