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[särskiljning behövs] 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.[1]

Bild över hur ett enkelt blockchiffer fungerar.

Definition redigera

Ett blockchiffers funktion redigera

 
Funktionen E från mängden P till C och funktionen D från C till P.

En funktion för ett chiffer definieras enligt följande:[2]

  1. En mängd P kallas funktionen domän och innehåller alla möjliga klartexter.(Plaintext på engelska)
  2. En mängd C kallas funktionens ko-domän och innehåller alla möjliga krypterade texter.(Ciphertext på engelska)
  3. 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.

 
Bild över hur ett blockchiffer fungerar med vektorbeteckningar.

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 redigera

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  .[3]

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

Enkel användning - ECB-metoden redigera

 

Original
Krypterad med ECB-kryptering
Bilden till höger är krypterad med ECB-kryptering och mönster syns tydligt från originalbilden.

 

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.[4]

Kedjeanvändning redigera

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.[5]

Kedjeanvändning med föränderlig nyckel redigera

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:[6]

 

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 redigera

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:[7]

 

 

där

 

Själv-synkroniserande blockchiffer med information från krypterad text - CBC redigera

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;[8]

 

där

 

I så fall beskrivs kryptering och dekryptering av:

 

 

Säkerhet redigera

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.[9]

Referenser redigera

  1. ^ Alfred J . Menezes , Paul C . van Oorschot , and Scott A . Vanstone: Handbook of Applied Cryptography, CRC Press, 1996, Kap.7, sid. 1.
  2. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 16.
  3. ^ Alfred J . Menezes , Paul C . van Oorschot , and Scott A . Vanstone, "Handbook of Applied Cryptography", CRC Press, 1996, Kap.7, sid. 2.
  4. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 65.
  5. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 62.
  6. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 67.
  7. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 69.
  8. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 71.
  9. ^ Carl H.Meyer, Stephen M.Matyas, "Cryptography: A new dimension in computer data security - A Guide for the Design and Implementation of Secure Systems, John Wiley & Sons, 1982, s. 24.