Kryptoalgoritmer i klartext
Inom säkerhetsmekanismen ssl finns ett antal kombinationer av algoritmer som kan användas för att skapa säker kommunikation. Ett exempel på en sådan kombination är ”SSL_RSA_WITH_ RC4_128_SHA” – beteckningen säger oss bland annat att det symmetriska kryptot rc4 tillämpas.

I ett symmetriskt krypto används samma nyckel för att kryptera och dekryptera. Därför måste mottagaren få nyckeln innan det går att skicka över skyddade meddelanden. Om en tredje part får tag på nyckeln går det inte att lita på säkerheten.

nyckel

Symmetriskt eller inte
Asymmetriska krypton lider inte av det problemet. De arbetar med par av nycklar: den ena nyckeln används för att kryptera meddelanden, den andra nyckeln används för att dekryptera det som krypterats med den första nyckeln. Två parter som vill kommunicera utbyter nycklar för att kryptera med varandra och kan sedan skicka skyddade meddelanden till varandra.

Varför då inte bara använda asymmetriska krypton? Skälet är mycket enkelt: prestanda. Ett symmetriskt krypto är flera tusen gånger snabbare än ett asymmetriskt. Därför används det asymmetriska kryptot rsa i kombinationen vi nämnde ovan för att sätta upp en session, och den sessionen krypteras sedan med aes.

I den här artikeln tittar vi närmare på symmetriska krypton. De finns i många olika varianter, det som skiljer dem åt är till exempel hur mycket data som bearbetas i stöten, hur mycket resurser kryptot kräver, hur långa nycklarna är, hur fort det går att starta kryptot och hur säkert kryptot är.


3ds – med rötterna i USA:s spiontjänst


Det första icke-militära kryptot i stor spridning heter des, data encryption standard. Det utvecklades av IBM med hjälp av USA:s underrättelsetjänsten National Security Agency i början av 1970-talet och har sedan dess använts i otaliga system och applikationer.

I dag är des officiellt pensionerat, det togs bort som godkänd standard 2008. Men det lever vidare i kryptot 3des, även kallat tdea, triple des encryption algorithm. Som namnet antyder är det ett krypto som består av des tre gånger om. Även 3des har fått stor spridning, både för generell kommunikation och inbyggt i system. EMV-systemet för kreditkort och elektronisk betalning använder exempelvis 3des.

3des har 48 iterationer och arbetar på data i block om 64 bitar. Det stora antalet iterationer och tabelluppslagningar gör att 3des är förhållandevis långsamt. Våra tester med verktyget Openssl visar att kryptot är långsammast av de krypton vi undersöker i den här artikeln.


35 år – fortfarande säkert
Des har en nyckel på 56 bitar och med tre stycken separata des-nycklar får 3des alltså en nyckel på 168 bitar.

Säkerhetsmässigt har des och 3des stått sig förvånansvärt starkt. Trots mer än 35 års bruk har inga stora svagheter i algoritmen upptäckts. I stället är det teknikutvecklingen sprungit ifatt – i dag går det att pröva alla möjliga nycklar för ett des-krypterat meddelande på några få dagar. 3des däremot är betydligt säkrare, och kommer att användas i ett antal år framöver. Dess stora spridning gör att det är ett säkert val för den som vill få olika system att fungera tillsammans. Men i dag finns det andra krypton som ger större flexibilitet, säkerhet och prestanda.


Aes – tävlingsvinnaren som står sig


År 2001 avslutades en internationell, öppen tävling om att ta fram en ersättare till des. Vinnaren blev en algoritm från Belgien med namnet Rijndael, som utsågs till ny standard med namnet advanced encryption standard – aes.

Aes har sedan dess varit framgångsrikt. Kryptot används i dag bland annat för att säkra kommunikation i rfid-standarden Zigbee, för höghastighetslänkar i många gigabit per sekund och i wlan-standarden wpa2.

Många processorer innehåller i dag stöd i hårdvaran för aes vilket gör att kryptot blir ett självklart val i nya applikationer.
Aes är precis som des ett blockkrypto, men arbetar på block om 128 bitar. Kryptot stödjer tre nyckellängder: 128, 192 och 256 bitar, men oftast bara en av längderna. Kryptot har 10 iterationer för 128 bitars nyckel och 14 iterationer för 256 bitars nyckel.


AES_subbytes
Delfunktionen Subbytes i en iteration av aes. För varje element a i matrisen med 4 gånger 3 byte slås ett nytt värde b upp i en sbox.


Opererar byte för byte
Aes är uppbyggt med operationer som arbetar på en matris om 4 gånger 4 byte. De operationer som utförs, exempelvis rotationer av rader i matrisen och uppslagning i sbox, sker för varje byte. Det gör att operationerna är små, snabba och enkla att parallellisera, vilket betyder att aes är lätt att accelerera i hårdvara. Strukturen i aes gör det även lätt att skapa implementationer med mer eller mindre resursdelning och parallellism. Det gör det möjligt att anpassa storleken på implementationen till de prestandakrav som applikationen ställer. I våra mätningar är aes generellt snabbast, och speciellt för korta sessioner och på en maskin med lägre klockfrekvens går det riktigt fort.


Krävande attacker
Säkerhetsmässigt har aes-algoritmen klarat sig bra. De senaste åren har det publicerats artiklar som visar på teoretiska attacker på aes med 192 och 256 bitars nycklar, men de attackerna kräver tillgång till stora mängder nycklar och data. Däremot har ett antal framgångsrika attacker skett mot implementationer av aes. Speciellt attacker på små, kostnadsdrivna implementationer har visat sig vara relativt lätta genomföra. De attacker som beskrivits kräver dock fysisk tillgång till maskinen där aes är implementerad.

Vi ser att aes gott kan användas som huvudsakligt krypto. Dess förmåga att skala upp och ned efter prestandakrav och snabba initiering gör det lämpligt för många applikationer, stora som små.

Läs ocksåKryptering med aes inte så säkert som man trott

Sida 1 / 2

Innehållsförteckning

Fakta

  • block: En bestämd mängd data, vanligen 64 eller 128 bitar, som bearbetas av ett blockkrypto.
  • blockkrypto: En kryptofunktion som given en nyckel och ett block data genererar ett nytt block data. Exempel på blockkrypton är aes, des och cast.
  • matris: Ett rutmönster med värden. Kryptot aes arbetar till exempel på en matris om fyra gånger fyra värden.
  • initiering: Den process som krävs för att starta upp ett protokoll eller en funktion.
  • iteration: Ett varv av den sekvens interna operationer som ett symmetriskt krypto består av. Kryptot aes består till exempel av en sekvens med fyra distinkta operationer som sedan upprepas 10 till 14 gånger.
  • parallellisering: Uppdelning av ett arbete som ska utföras i mindre delar som utförs samtidigt.
  • sbox: En tabell som byter ut (substituerar) ett värde mot ett annat.