Blockchiffer

Från Wikipedia
Hoppa till: navigering, sök
Bild över hur ett enkelt blockchiffer fungerar.

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

Definition[redigera | redigera wikitext]

Ett blockchiffers funktion[redigera | redigera wikitext]

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,

 P=(p_1, p_2,..., p_n) där  \left| P \right| är längden av klartexten P, dvs hur många bitar den består av. På samma sätt skrivs den krypterade texten,  C=(c_1, c_2,..., c_n) och i ett blockchiffer gäller att:  \left| P \right| = \left| C \right| .

Definition av blockchiffer[redigera | redigera wikitext]

Blockchifferfunktionen tar ett block av storlek n, en nyckel av storlek k och returnerar ett block av storlek n. Låt  V_n beteckna en vektor av längd n. I så fall kan blockchifferfunktionen definieras som:  E:V_n \times K \rightarrow V_n så att det för varje  K\in K, E(P, K) är en krypteringsfunktion för  K från  V_n till  V_n , skrivet  E_k(P) . Den inversa funktionen är dekrypteringsfunktionen  D_k(C) .[3]

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

Enkel användning - ECB-metoden[redigera | redigera wikitext]

Ecb kryptering.png

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

Ecb dekryptering.png

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 klaretxter och krypterade texter kan en motståndare knäcka chiffret.[4]

Kedjeanvändning[redigera | redigera wikitext]

Istället görs 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 | redigera wikitext]

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]

 K(i)=h(K(i-1), U(i-1)); \qquad i \ge 1

där

U(0)=IV

K(0)=K

I så fall beskrivs kryptering och dekryptering av:

 C(i)=E_{K(i)}(P(i)); \qquad i \ge 1


P(i)=D_{K(i)}(C(i)); \qquad i \ge 1

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 | redigera wikitext]

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]

 C(i)=E_K(P(i) \oplus U(i)); \qquad i \ge 1

 P(i)=D_K(C(i)) \oplus U(i); \qquad i \ge 1

där

 U(i)=\left\{\begin{matrix} IV; &  i=1 \\ h(P(i-1), C(i-1)); & i> 1 \end{matrix}\right.

Själv-synkroniserande blockchiffer med information från krypterad text - CBC[redigera | redigera wikitext]

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)

Cbc kryptering.png

Cbc dekryptering.png

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

 h(P(i-1), C(i-1))=C(i-1); \qquad i \ge 1

där

 C_o=IV

I så fall beskrivs kryptering och dekryptering av:

 C(i)=E_K(P(i) \oplus C(i-1)); \qquad i \ge 1

 P(i)=D_K(C(i)) \oplus C(i-1); \qquad i \ge 1

Säkerhet[redigera | redigera wikitext]

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 | redigera wikitext]

  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.