Asymmetrisk kryptering
Wikipedia
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 |
[redigera] 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.
[redigera] 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:
- Avsändaren skriver ett meddelande och slumpar fram en engångsnyckel.
- Meddelandet krypteras med en symmetrisk algoritm (CAST-128, IDEA eller 3DES) med engångsnyckeln.
- 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.
[redigera] 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.
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.
För att hela tiden ligga steget före utlyser man på RSA Security tävlingar där varje knäckt nyckel ger en belöning i form av stora prispengar. Den hittills största knäckta nyckeln var på 576 bitar, vilket offentliggjordes i december 2003.
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. Elliptic-curve cryptography bygger också på öppen-nyckel-idén men kräver långt kortare nycklar.
[redigera] Litteratur
- Simon Singh, Kodboken. Konsten att skapa sekretess - från det gamla Egypten till kvantkryptering (1999) Stockholm: Norstedts förlag. ISBN 91-1-300708-4.