Asymmetrisk kryptering

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

Asymmetrisk kryptering är en teknik inom kryptografi som innebär att man använder två olika nycklar: en öppen för andra att kryptera med och en egen privat för att kunna dekryptera. Dessa nycklar är matematiskt relaterade på ett sätt som gör att det skulle ta lång tid att hitta den privata om man har tillgång till den öppna. Teoretiskt sett finns det inget som hindrar detta, men rent praktiskt kan det vara ogörligt av tidsbrist.

Innehåll

Historia

Vid mitten av 1970-talet fick kryptologen Whitfield Diffie idén att använda en nyckel för att kryptera ett meddelande och en annan för att dekryptera det, till skillnad från alla tidigare kända krypteringsmetoder. Vitsen med detta är att den som vill kryptera något (i detta exempel kallad Alice) skapar två nycklar, en hemlig eller privat, och en öppen som alla har tillgång till. När någon skickar meddelanden till Alice använder de hennes öppna nyckel för att kryptera meddelandet, och den enda nyckel som nu kan dekryptera är Alices privata, som ingen annan än hon själv känner till.

Diffie kände inte till något sätt att skapa och använda två sådana nycklar, men han tog ändå fram följande krav som en sådan algoritm måste uppfylla:

  • Det är lätt att skapa ett nyckelpar (en öppen och en privat nyckel).
  • Det är lätt för en avsändare att kryptera ett meddelande med mottagarens öppna nyckel.
  • Det är lätt för mottagaren att dekryptera meddelandet med sin privata nyckel.
  • Det är ogörligt för en annan part att utifrån den öppna nyckeln ta reda på den privata.
  • Det är ogörligt för en annan part att utifrån den öppna nyckeln och ett krypterat meddelande dekryptera detta.

Vad han inte visste var att James Ellis på uppdrag av den brittiska underrättelsetjänsten redan "uppfunnit" denna typ av kryptering 1969 och att Clifford Cocks 1973 också funnit en lämplig algoritm. Detta hölls dock hemligt fram till slutet av 90-talet, och det är fullt möjligt att även andra länders militära institutioner kommit på samma sak. Cocks algoritm upptäcktes återigen 1977 av den amerikanska forskartrion Ronald Rivest, Adi Shamir och Leonard Adleman, som kallade den RSA.

Praktisk användning

Öppen-nyckel-kryptering kräver mycket mer datorkraft och är långsammare än traditionell, symmetrisk kryptering. Detta beror på beräkningarna som utförs och de enorma tal som används. För den brittiska militären på 1970-talet gjorde detta att man inte kunde använda algoritmen; datorerna orkade inte. Idag ökar nycklarna hela tiden i storlek, något som gör att beräkningarna tar längre och längre tid. Därför väljer man oftast att inte kryptera stora meddelanden – i exempelvis krypteringsprogrammet Pretty Good Privacy gör man istället så här:

  1. Avsändaren skriver ett meddelande och slumpar fram en engångsnyckel.
  2. Meddelandet krypteras med en symmetrisk algoritm (CAST-128, IDEA eller 3DES) med engångsnyckeln.
  3. Engångsnyckeln krypteras med en öppen-nyckel-algoritm (RSA eller ElGamal) med mottagarens öppna nyckel och bifogas meddelandet.

På så vis behöver man bara använda de kostsamma beräkningarna för att kryptera engångsnyckeln som vanligtvis är mellan 40 och 256 bitar lång.

Eskalerande nyckelstorlekar

När man talar om nycklar som är i storleksordningen 100-200 bitar menar man oftast nycklar för symmetriska algoritmer som DES och AES. Istället är nycklar för öppen-nyckel-algoritmer som RSA mycket större, närmare bestämt mellan 512-4096 bitar. (En nyckel på 128 bitar kan bestå av 39 siffror jämfört med de 617 siffror en 2048-bitarsnyckel kan bestå av.)

Denna skillnad beror på att nyckellängderna är av olika betydelse. För en symmetrisk algoritm innebär nyckellängden 128 att det totala antalet möjliga nycklar är 2128. I genomsnitt måste en avlyssnare prova hälften av alla dessa nycklar innan han hittar den rätta, vilket alltså ger 2127 nycklar som måste testas innan meddelandet kan läsas. Om vi tänker oss att avlyssnaren hinner prova 100 miljarder nycklar per sekund – den ungefärliga hastigheten man kom upp i när DES knäcktes 1998 – skulle det ta omkring 5x1019 år, vilket motsvarar 3,6 miljarder gånger universums ålder.

För att hitta rätt nyckel i öppen-nyckel-algoritmerna behöver man inte prova alla möjliga. Allt man behöver göra är att hitta två primtal som när man multiplicerar dem med varandra bildar en del av den öppna nyckeln. Sedan är det tämligen enkelt att räkna ut den privata nyckeln. Med hjälp av olika algoritmer och metoder för att hitta primfaktorer, som det kallas, kan man ganska snabbt lösa detta för små tal.

RSA Security hade tidigare en tävling där varje knäckt nyckel ger en belöning i form av stora prispengar. Den största knäckta nyckeln var på 200 decimala siffror (666 bitar), vilket offentliggjordes i maj 2005. Tävlingen lades ner under 2007.

Så länge som matematikerna inte hittar ett snabbare sätt att finna primfaktorerna kommer RSA kunna motstå alla attacker – bara man kontinuerligt ökar nyckelstorleken i takt med att processorer och superdatorer blir kraftfullare. Detta medför dock att nycklarna så småningom blir ogörligt långa. Alternativa algoritmer kommer dyka upp, och en finns redan idag. Kryptografi baserad på elliptiska kurvor bygger också på öppen-nyckel-idén men kräver långt kortare nycklar.

Exempel på användning

Asymmetrisk kryptering kan användas för:

  • signering, genom att kryptera med en privat nyckel det kontrolltal (så kallad digest eller hash-värde) som räknats ut med en matematisk formel (algoritm) av alla tecknen i ett digitalt dokument får man fram en signatur. Om dokumentet och signaturen skickas till en någon så är frågan om dokumentet är äkta och om signaturen är äkta. Signaturen kan av mottagaren avkrypteras med motsvarande publik nyckel och jämföras med uträknat kontrolltal på det mottagna dokumentet. Är kontrolltalen lika och om man vet att man använder rätt publiknyckel så är både dokumentet och signaturen korrekta.
  • kryptering, genom att kryptera en text med den publika nyckeln kan man vara säker på att texten kan bara avkrypteras och läsas av den som har tillgång till den privata nyckeln. I praktiken då asymmetrisk kryptering är mycket långsammare än symmetrisk använder man symmetrisk kryptering med ett slumptal och krypterar slumptalet med den privata nyckeln.

Exempel 1 - signering

Avsändare:

   1. Brevtext:   Denna text har jag skrivit själv
   2. Räkna ut kontrolltal för brevtexten:        4e4329076ab5efa045a2
   3. Använd privat nyckel för signering - kryptera kontrolltalet
   4. Signatur/Krypterat kontrolltal:         56e2096af450071639cb67e0774a28

Mottagare:

   Brevtext:      Denna text har jag skrivit själv
   Signatur/Krypterat kontrolltal:            56e2096af450071639cb67e0774a28
   1. Avkryptera signatur med publik nyckeln: 4e4329076ab5efa045a2
   2. Räkna ut kontrolltal för brevtexten:    4e4329076ab5efa045a2
   3. Är det samma kontrolltal? Ja!

Exempel 2 - kryptering

Avsändare

   1. Brevtext:       Denna text har jag skrivit själv och den är hemlig!
   2. Ta ett slumptal: 788237621773719970976235443
   3. Kryptera brevet med slumptalet:          kjdbchuewqqw¤3h<YtkUtre"hsaasl)hTgbsgtreyuIut6ext:
   4. Kryptera slumptalet med publika nyckeln: 876a43fecc760fa757653309aebc9870
   5. Skicka krypterade brevet och den krypterade symmetriska nyckeln till mottagaren

Mottagare

   Krypterat brev:   kjdbchuewqqw¤3h<YtkUtre"hsaasl)hTgbsgtreyuIut6ext:
   Krypterad nyckel: 876a43fecc760fa757653309aebc9870
   1. Avkryptera den symmetriska nyckeln med den privata nyckeln
   2. Brevets nyckel: 788237621773719970976235443
   3. Avkryptera brevet (symmetriskt): Denna text har jag skrivit själv och den är hemlig!
   Om man kan läsa brevet så gick det bra,
   annars var brevets nyckeln eller det krypterade brevet fel, 
   eller så hörde inte den publika och privata nyckeln ihop.

Litteratur

  • Simon Singh: Kodboken. Konsten att skapa sekretess - från det gamla Egypten till kvantkryptering, Norstedts förlag, Stockholm 1999. ISBN 91-1-300708-4. 

Se även

Personliga verktyg