Verschlüsselung TEA, XTEA, XXTEA

Der Inhalt des Artikels

  • Beschreibung des TEA-Verschlüsselungsalgorithmus





  • TEA-Implementierung





  • Beseitigen Sie kritische TEA-Fehler und erhalten Sie XTEA (Block TEA)





  • XTEA-Implementierung





  • Besser noch: XXTEA (Corrected Block TEA)





  • Kryptoanalyse von Verschlüsselungsalgorithmen





Einführung

Betrachten wir einige im Artikel verwendete Definitionen. Es gibt zwei Arten der Verschlüsselung: symmetrisch und asymmetrisch .





Bei symmetrischen Verschlüsselungsalgorithmen wird derselbe Schlüssel verwendet, um Daten zu verschlüsseln und zu dekodieren. Nur der Absender und der Empfänger sollten diesen Schlüssel kennen, da sonst die Daten in den Händen von Angreifern im Wesentlichen nicht verschlüsselt werden. Eine Person, die den Schlüssel kennt, den sie nicht kennen sollte, kann den Chiffretext entschlüsseln und herausfinden, dass Sie einen Freund gebeten haben, im Geschäft Nudeln zu kaufen.





Bei asymmetrischen Verschlüsselungsalgorithmen wird bereits nicht ein Schlüssel verwendet, sondern zwei: öffentlich und privat . Daten werden mit einem öffentlichen Schlüssel verschlüsselt, nur mit einem privaten. Der öffentliche Schlüssel kann an alle verteilt werden, der private Schlüssel muss jedoch geheim gehalten werden.





TEA, XTEA, XXTEA . , , , .





, , .





.





TEA

TEA a.k.a. Tiny Encryption Algorithm -- . , , .





. 64 , 32 : K_0, K_1, K_2, K_3. 64, . : 32 2 . -- . . :





\ delta = \ left (\ sqrt {5} - 1 \ right) \ cdot 2 ^ {31}-- , . ,





X \ ll Y.-- X Y ( )





X \ oplus Y.-- - XOR





X \ boxplus Y.-- 2 ^ {32}





n- , : \ left (L_n, R_n \ right), \ left (L_ {n + 1}, R_ {n + 1} \ right) :





: L_ {n + 1} = R_n





: n = 2 \ cdot i, ~~~ i \ in [1;  32]  R_ {n + 1} = L_n \ boxplus \ left (\ left \ {\ left [R_n \ ll 4 \ right] \ boxplus K_2 \ right \} \ oplus \ left \ {R_n \ boxplus i \ cdot \ delta \ right \} \ oplus \ left \ {\ left [R_n \ gg 5 \ right] \ boxplus K_3 \ right \} \ right)





: n = 2 \ cdot i - 1, ~~~ i \ in [1;  32] R_ {n + 1} = L_n \ boxplus \ left (\ left \ {\ left [R_n \ ll 4 \ right] \ boxplus K_0 \ right \} \ oplus \ left \ {R_n \ boxplus i \ cdot \ delta \ right \} \ oplus \ left \ {\ left [R_n \ gg 5 \ right] \ boxplus K_1 \ right \} \ right)





, . :





TEA-Blockdiagramm
- TEA

TEA

, TEA . : David J. Wheeler Roger M. Needham. -- .





  • k[0], k[1], k[2], k[3] -- ,





  • v[0], v[1] -- ,





  • encode -- (true), , (false),





void tea(long* v, long* k, bool encode) {
  unsigned long y = v[0];
  unsigned long z = v[1];
  unsigned long sum = 0;
  unsigned long delta = 0x9e3779b9;
  unsigned long n = 32;
  
  if(encode) {
    
    // encoding
  
    while(n-- > 0) {
      sum += delta;
      y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
      z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
    }
  
  } else {
    
    // decoding
  
    sum = delta << 5;
  
    while(n-- > 0) {
      z -= ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
      y -= ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
      sum -= delta;
    }
  }
  
  v[0] = y;
  v[1] = z;
  
  return;
}
      
      



XTEA

TEA , , XTEA.





XTEA a.k.a. eXtended TEA -- , TEA. David J. Wheeler Roger M. Needham. TEA, 64 . , TEA , . XTEA . ( 4).





. n- n \ in [1;  64] , :\ left (L_n, R_n \ right), \ left (L_ {n + 1}, R_ {n + 1} \ right) :





: L_ {n + 1} = R_n





: n = 2 \ cdot i, ~~~ i \ in [1;  32] R_{n+1} = L_n \boxplus \left( \left\{  \left[ R_n \ll 4 \oplus R_n \gg 5 \right] \boxplus R_n \right\} \oplus \left\{ i \cdot \delta \boxplus K_{\left( i \cdot \delta \gg 11 \right) \wedge 3} \right\} \right)





: n = 2 \cdot i - 1, ~~~ i \in [1; 32] R_{n+1} = L_n \boxplus \left( \left\{  \left[ R_n \ll 4 \oplus R_n \gg 5 \right] \boxplus R_n \right\} \oplus \left\{ \left( i - 1 \right) \cdot \delta \boxplus K_{\left( \left( i - 1 \right) \cdot \delta \right) \wedge 3} \right\} \right)





:





- XTEA
- XTEA

XTEA

, David J. Wheeler Roger M. Needham . , ( ), .





  • v -- 2





  • k -- 4





  • N -- ( 32)





  • long -- 32





void xtea(long* v, long* k, long N) {
  unsigned long y = v[0];
  unsigned long z = v[1];
  unsigned long delta = 0x9e3779b9;
  
  if(N > 0) {
    
    // encoding
    
    unsigned long limit = delta * N;
    unsigned long sum = 0;
    
    while(sum != limit) {
      y += (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3];
      sum += delta;
      z += (y << 4 ^ y >> 5) + y ^ sum + k[sum >> 11 & 3];
    }
    
  } else {
    
    // decoding
    
    unsigned long sum = delta * (-N);
    
    while (sum) {
      z -= (y << 4 ^ y >> 5) + y ^ sum + k[sum >> 11 & 3];
      sum -= delta;
      y -= (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3];
    }
    
  }
  
  v[0] = y;
  v[1] = z;
  
  return;
}
      
      



XTEA : XTEA-1, XTEA-2, XTEA-3. . .





XXTEA

XXTEA a.k.a. Corrected Block TEA (.. XTEA Block TEA) -- , XTEA. , David J. Wheeler Roger M. Needham, . , , , :





  • ,





  • (, ), ,





  • ,





  • " ", ,





  • , , 60 , , DES





, XXTEA . , , , , . . n- :





LR . \delta , . ( ): K_{\left[ \left( \delta \cdot n \gg 2 \right) \oplus n \right] ~ \text{mod} ~ 4}. :





  • \alpha = \left( L \ll 2 ~ \oplus ~ R \gg 5 \right) \boxplus \left( L \gg 3 ~ \oplus ~ R \ll 4 \right)





  • \beta = \left( \delta \cdot n ~ \oplus ~ L \right) \boxplus \left( K_{\left[ \left( \delta \cdot n \gg 2 \right) \oplus n \right] ~ \text{mod} ~ 4} ~ \oplus ~ R \right)





: \ left (\ alpha ~ \ oplus ~ \ beta \ right) \ boxplus \ left (LR \ right), ~~~ LR - \ text {ganzes Wort}





-:





XXTEA-Blockdiagramm
- XXTEA

XXTEA

, -- David J. Wheeler Roger M. Needham. .





  • v -- 2





  • k -- 4





  • N --





  • long -- 32





#define MX (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)

long xxtea(long* v, long * k, long N) {
  unsigned long z = v[N - 1];
  unsigned long y = v[0];
  unsigned long sum = 0;
  unsigned long e = 0;
  unsigned long delta = 0x9e3779b9;
  
  long m = 0;
  long p = 0;
  long q = 0;
  
  if(N > 1) {
    
    // encoding
    
    q = 6 + 52 / N;
    
    while(q-- > 0) {
      sum += delta;
      e = sum >> 2 & 3;
      for(p = 0; p < N - 1; p++) {
        y = v[p + 1];
        z = v[p] += MX;
      }
      y = v[0];
      z = v[N - 1] += MX;
    }
    
    return 0;
  } else if(N < -1) {
    
    // decoding
    
    N = -N;
    q = 6 + 52 / N;
    sum = q * delta;
    
    while(sum != 0) {
      e = sum >> 2 & 3;
      for(p = N - 1; p > 0; p--) {
        z = v[p - 1];
        y = v[p] -= MX;
      }
      z = v[N - 1];
      y = v[0] -= MX;
    }
    
    return 0;
  }
  
  return 1;
}
      
      



TEA, XTEA, XXTEA

TEA . 17 2 ^ {123}. " " TEA , ( ). : , .





XTEA, , , TEA. - ( XOR) XTEA , TEA. XTEA -- .





XXTEA . E. Yarrkov 2010 XXTEA . . 212 , 6 , . E. Yarrkov , .





  • Roger M. Needham und David J. Wheeler: TEA, ein kleiner Verschlüsselungsalgorithmus





  • A. Roger M. Needham und David J. Wheeler: TEA-Erweiterungen





  • David J. Wheeler, Roger M. Needham: Korrektur von XTEA





  • Elias Yarrkov: Kryptoanalyse von XXTEA












All Articles