暗号学において、XTEA(拡張TEA)はTEAの弱点を修正するために設計されたブロック暗号である。この暗号の設計者はケンブリッジコンピュータ研究所のデイビッド・ウィーラーとロジャー・ニーダムであり、アルゴリズムは1997年に未発表の技術報告書で発表された(ニーダムとウィーラー、1997)。特許の対象とはなっていない。[ 1 ]
TEAと同様に、XTEAは128ビットの鍵と推奨される64ラウンドを備えた64ビットブロックのファイステル暗号です。TEAとはいくつかの点で異なっており、鍵スケジュールがやや複雑であることや、シフト、XOR、加算の順序が変更されていることなどが挙げられます。
この標準C言語のソースコードは、 David Wheeler氏とRoger Needham氏がパブリックドメインで公開したリファレンスコードを基に作成されており、XTEAを使用して暗号化と復号化を行います。
#include <stdint.h>/* v[0]とv[1]に64ビットのデータ、key[0]~key[3]に128ビットのデータを取り込む */void encipher ( unsigned int num_rounds , uint32_t v [ 2 ], uint32_t const key [ 4 ]) { unsigned int i ; uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0 , delta = 0x9E3779B9 ; for ( i = 0 ; i < num_rounds ; i ++ ) { v0 += ((( v1 << 4 ) ^ ( v1 >> 5 )) + v1 ) ^ ( sum + key [ sum & 3 ]); sum += delta ; v1 += ((( v0 << 4 ) ^ ( v0 >> 5 )) + v0 ) ^ ( sum + key [( sum >> 11 ) & 3 ]); } v [ 0 ] = v0 ; v [ 1 ] = v1 ; }void decipher ( unsigned int num_rounds , uint32_t v [ 2 ], uint32_t const key [ 4 ]) { unsigned int i ; uint32_t v0 = v [ 0 ], v1 = v [ 1 ], delta = 0x9E3779B9 , sum = delta * num_rounds ; for ( i = 0 ; i < num_rounds ; i ++ ) { v1 -= ((( v0 << 4 ) ^ ( v0 >> 5 )) + v0 ) ^ ( sum + key [( sum >> 11 ) & 3 ]); sum -= delta ; v0 -= ((( v1 << 4 ) ^ ( v1 >> 5 )) + v1 ) ^ ( sum + key [ sum & 3 ]); v [ 0 ] = v0 ; v [ 1 ] = v1 ; }参照ソースコードからの変更点は軽微です。
unsigned longではなく、その型が使用されていました。uint32_tconst型が使用されていなかった。v1 += (v0<<4 ^ v0>>5) + v0 ^ sum + k[sum>>11 & 3]。「num_rounds」パラメータの推奨値は64ではなく32です。ループの各イテレーションで2回のファイステル暗号ラウンドが実行されるためです。さらに速度を向上させるには、sum+key[]の値を事前に計算してループを展開することができます。
2004年、KoらはXTEAの64ラウンドのうち27ラウンドに対して関連鍵差分攻撃を発表し、2 20.5個の選択平文と2 115.15の時間計算量を必要とした。[ 2 ] [ 3 ]
2009年、LuはXTEAの36ラウンドに対する関連鍵矩形攻撃を発表し、XTEAのこれまで発表されたどの暗号解読結果よりも多くのラウンドを破った。この論文では、弱い鍵の仮定なしと仮定ありの2つの攻撃が提示されており、それぞれ264.98バイトのデータと2126.44回の操作、および263.83バイトのデータと2104.33回の操作に相当する。[ 4 ]
XTEA と共に発表された可変幅ブロック暗号はBlock TEAと呼ばれ、XTEA のラウンド関数を使用しますが、Block TEA はそれをメッセージ全体に数回繰り返し適用します。メッセージ全体に作用するため、Block TEA は動作モードを必要としないという特性を持っています。完全な Block TEA に対する攻撃は Saarinen [ 5 ]によって説明されており、 Block TEA の後継であるXXTEAの弱点も詳細に説明されています。