Kryptering

 

Det finns många bra länkar till sidor som har ett omfattande material om kryptering. Tyvärr är de flesta som försöker sig på en förklaring av hur ett starkt krypto fungerar, på alldeles för hög matematisk nivå. Här är mitt försök att förklara det vanligaste vi normala(?)  människor stöter på; RSA-kryptot. Den används bl a i Pretty Good Privacy (PGP).

Till att börja med skall 4 st tal tas fram, P Q E D.

  1. Hitta 2 st primtal, P och Q (ju högre siffra desto starkare krypto. PGP använder 2 ^ 2048)
  2. Välj E så att E och (P-1) * (Q-1) ej är jämt delbart med varandra. Talet E måste vara udda.
  3. Räkna fram D så att D*E-1 / ((P-1)*Q-1)) är jämt delbart.

Ser komplicerat ut? Ett räkneexempel:

  1. Jag väljer talen 5 och 9 (för att göra det lätt och att Ni kan följa med med räknedosan)
  2. Som talet E tar jag 3, (4*8 delat med 3 är inte jämt (10,666...))
  3. Talet D blir lämpligen 11 (11*3-1)/(4*8) = 32/32 vilket blir jämt delbart.

Talen PQ(5*9=45) och E(3) är tillsammans den publika nyckeln som Ni kan distribuera till den som skall skicka ett krypterat meddelande till dig. Det är alltså inte P och Q som lämnas ut, utan dess summa. Det är detta som gör att det blir svårt att knäcka kryptot. Det finns det ju bara två av primtalen som bildar summan 45.
Talet D(11) får inte avslöjas. Det är din privata nyckel.

 

Nästa steg är att kryptera.

Nu tar jag ett lämpligt tal (egentligen en bokstav): 17 . Detta tal skall upphöjas med E och modulo PQ.
Encrypt(17): 17^3 MOD 45 = 8
Alltså talet 17 blir 8 i krypterad form om vi fortsätter att använda räkneexemplets tal. Så här ser det ut i miniräknaren:

17 ^ 3    =  4913
4913/45   =  109.1777778
109*45    =  4905
4913-4905 =  8

Att sedan dekryptera ser ut så här: Krypto upphöjt med D och modulo PQ
Decrypt(8): 8^11 MOD 45 = 17
Talet är tillbaka till 17 och därmed i klartext igen! Så här blir det i miniräknaren:

8 ^ 11        =  8589934592
8589934592/45 =  190887435.4
190887435*45  =  8589934575
8589934592-
8589934575    =  17

Skitlätt, eller hur?!