Blockchiffer

Blockchiffer är ett chiffer där en text av en bestämd längd (vanligtvis 64 bitar) genom en funktion som bestäms av en nyckel översätts till en lika lång krypterad text. Med hjälp av funktionens invers fås den ursprungliga klartexten om inversen används på den krypterade texten. Blockchiffer är viktiga byggstenar och används i många kryptografiska system för exempelvis meddelandeautenticering och dataintegritet. De används dessutom i olika algoritmer såsom DES.

Definition

Ett blockchiffers funktion

En funktion för ett chiffer definieras enligt följande:

En mängd P kallas funktionen domän och innehåller alla möjliga klartexter.(Plaintext på engelska)
En mängd C kallas funktionens ko-domän och innehåller alla möjliga krypterade texter.(Ciphertext på engelska)
En lag E som associerar varje element p i P med ett enda element c i C.

Krav 3 beskriver en injektiv funktion, för varje p i P finns exakt ett c i C men i ett blockchiffer skall inversen av funktionen returnera klartexten och därför måste den vara både surjektiv och injektiv. För varje klartext finns exakt en krypterade text och för varje krypterad text finns exakt en klartext.

I ett blockchiffer består klartexten P av bitar och beskrivs därför ofta som en vektor,

 där  är längden av klartexten P, dvs hur många bitar den består av. På samma sätt skrivs den krypterade texten,  och i ett blockchiffer gäller att: .

Definition av blockchiffer
Blockchifferfunktionen tar ett block av storlek n, en nyckel av storlek k och returnerar ett block av storlek n.
Låt  beteckna en vektor av längd n. I så fall kan blockchifferfunktionen definieras som:
 så att det för varje  
är en krypteringsfunktion för  från  till , skrivet .
Den inversa funktionen är dekrypteringsfunktionen .

 innebär att den krypterade texten C fås när klartext P krypteras med K.

Enkel användning - ECB-metoden

Ett sätt att kryptera ett stycke text med blockchiffer är att dela in stycket i block med rätt längd och kryptera varje block med blockchiffret. Problemet med denna metod är att varje del krypteras på samma sätt och mönster som fanns i klartexten återfinns i den krypterade texten. Med tillgång till tillräckligt många klartexter och krypterade texter kan en motståndare knäcka chiffret.

Kedjeanvändning
För att försvåra oönskad kodknäckning görs i stället den krypterade texten beroende av inte bara aktuell klartext utan även tidigare klartexter och krypterade texter. Därför skickas en initialiseringsvektor, IV med i första krypteringen och vid varje kryptering bildas ett nytt värde som används vid nästa steg. Hur denna vektor beräknas och används bestämmer vilken kedjeanvändning som använts.

Kedjeanvändning med föränderlig nyckel
Ett sätt att åstadkomma kedjeanvändning är att byta nyckel vid varje steg i krypteringsprocessen genom att till exempel beräkna en ny nyckel med hjälp av ett värde från funktionen. Samma nycklar måste kunna beräknas vid dekryptering. Låt h vara den funktion som beräknar en ny nyckel, IV initialiseringsvektorn och U(1), U(2),....,U(n-1) värdena från funktionen. 

Nyckeln K bestäms då av:

där

I så fall beskrivs kryptering och dekryptering av:

Detta kommer att eliminera mönster i den krypterade texten även om samma initialiseringsvektor IV används. Nycklarna beräknas beroende på tidigare texter och värden vilket gör att klartexterna kommer att krypteras olika. Meddelanden som är identiska kommer dock att förbli identiska då deras nycklar kommer att vara lika genom alla krypteringssteg.

Kedjeanvändning med information från klartext och krypterad text 
Istället för att förändra nyckeln kan klartexten ändras genom att låta den vara en funktion av föregående klartext och krypterad text. I så fall beskrivs kryptering och dekryptering av:

där

Själv-synkroniserande blockchiffer med information från krypterad text - CBC
En kryptografisk procedur sägs vara själv-synkroniserande om den rättar sig själv när ett fel inträffar så att all klartext kan fås fram utom den del som påverkades av felet. Om informationen från klartexten lämnas ute i "Kedjeanvändning med information från klartext och krypterad text" fås ett själv-synkroniserande kedjeanvändande blockchiffer vilket kallas CBC.(Cipher Block Chaining)

Låt funktionen h bero endast av föregående krypterad text;

där

I så fall beskrivs kryptering och dekryptering av:

Säkerhet
I ett blockchiffer är det viktigt att blocklängden n är tillräckligt lång. Är den för kort och motståndaren har tillgång till tillräckligt många par av krypterade texter och klartexter kan en ordbok byggas upp och användas för att läsa nya krypterade texter. Om blocklängden är längre blir dock ordboken för stor att skapa och lagra. Något annat att tänka på är om viss data förekommer oftare än andra, om det gör det kan en blockfrekvensanalys användas mot det. Genom att jämföra hur ofta data förekommer kan slutsatser dras.
En tredje attack chiffret ska försvara sig mot är den deterministiska attacken, om chiffrets operationer beskrivs med matematiska ekvationer kan det vara möjligt att genom att lösa dessa knäcka chiffret. 
För att motstå detta måste varje bit i den krypterade texten bero på en tillräckligt komplex funktion av varje bit i klartexten och nyckeln.

Referenser

Kryptologi