Enkripsi TEA, XTEA, XXTEA

Isi artikel

  • Deskripsi algoritma enkripsi TEA





  • Implementasi TEA





  • Hilangkan kesalahan TEA kritis dan dapatkan XTEA (Block TEA)





  • Implementasi XTEA





  • Lebih baik lagi: XXTEA (Corrected Block TEA)





  • Kriptanalisis dari algoritma enkripsi





pengantar

Mari pertimbangkan beberapa definisi yang digunakan dalam artikel. Ada dua jenis enkripsi: simetris dan asimetris .





Dalam algoritma enkripsi simetris , kunci yang sama digunakan untuk mengenkripsi data dan mendekodekannya. Kunci ini harus diketahui hanya oleh pengirim dan penerima, jika tidak data di tangan penyerang pada dasarnya tidak dienkripsi. Seseorang, mengetahui kuncinya, yang seharusnya tidak dia ketahui, dapat mendekripsi ciphertext dan mengetahui bahwa Anda meminta seorang teman untuk membeli pasta di toko.





Dalam algoritme enkripsi asimetris , tidak ada satu kunci yang sudah digunakan, tetapi dua: publik dan privat . Data dienkripsi dengan kunci publik, didekripsi hanya dengan kunci pribadi. Kunci publik dapat didistribusikan ke semua orang, tetapi kunci privat harus dirahasiakan.





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 = \ kiri (\ sqrt {5} - 1 \ kanan) \ 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
- 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 \ kiri (\ kiri \ {\ kiri [R_n \ ll 4 \ oplus R_n \ gg 5 \ kanan] \ boxplus R_n \ kanan \} \ oplus \ kiri \ {\ kiri (i - 1 \ kanan) \ cdot \ delta \ boxplus K _ {\ kiri (\ kiri (i - 1 \ kanan) \ cdot \ delta \ kanan) \ wedge 3} \ kanan \} \ kanan)





:





Diagram blok 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 _ {\ kiri [\ kiri (\ delta \ cdot n \ gg 2 \ kanan) \ oplus n \ kanan] ~ \ text {mod} ~ 4}. :





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





  • \ beta = \ kiri (\ delta \ cdot n ~ \ oplus ~ L \ kanan) \ boxplus \ kiri (K _ {\ kiri [\ kiri (\ delta \ cdot n \ gg 2 \ kanan) \ oplus n \ kanan] ~ \ text {mod} ~ 4} ~ \ oplus ~ R \ kanan)





: \ kiri (\ alpha ~ \ oplus ~ \ beta \ kanan) \ boxplus \ kiri (LR \ kanan), ~~~ LR - \ text {seluruh kata}





-:





Diagram blok XXTEA
- 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 dan David J. Wheeler: TEA, Algoritma Enkripsi Kecil





  • A. Roger M. Needham dan David J. Wheeler: ekstensi TEA





  • David J. Wheeler, Roger M. Needham: Koreksi untuk XTEA





  • Elias Yarrkov: Analisis kripto XXTEA












All Articles