IDEA
International Data Encryption Algorithm
RFC 3058 CMS, S/MIMEでのIDEA暗号化アルゴリズムの利用
https://tex2e.github.io/rfc-translater/html/rfc3058.html
RFC 5649 DES and IDEA Cipher Suites for Transport Layer Security (TLS)で非推奨
DESの代用っぽい64bit 暗号 128bit 鍵 (特許切れ)
IPESという暗号の改名でPESの進化版?
GPG, SSH, TLSなどで使用可能だった(非推奨、廃止)
次期IDEA NXTがある?
IDEA-CBC OBJECTIDENTIFIER 1.3.6.1.4.enterprises(1).ascom(188).systec(7).security(1).algorithms(1).2
id-alg-CMSIDEAwrap OBJECTIDENTIFIER 1.3.6.1.4.1.188.7.1.1.6
3.1 IDEA Key Wrap
IDEA鍵ラップアルゴリズムは、IDEAコンテンツ暗号化鍵をIDEA鍵暗号化鍵で暗号化します。IDEA鍵ラップアルゴリズムは以下のように定義されます。
1. コンテンツ暗号化鍵(16オクテット)をCEKとします。
2. CMSのセクション12.6.1に記載されているように、CEKの8オクテットの鍵チェックサム値を計算し、結果をICVとします。
3. CEKICV := CEK || ICVとします。
4. 8オクテットをランダムに生成し、結果をIVとします。
5. CBCモードのIDEAと鍵暗号化鍵を用いてCEKICVを暗号化します。
前の手順で生成したランダム値を初期化ベクトル(IV)として使用します。暗号文をTEMP1とします。
6. TEMP2 = IV || TEMP1とします。
7. TEMP2のオクテットの順序を反転します。つまり、最上位(先頭)オクテットを最下位(末尾)オクテットと入れ替え、これを繰り返します。結果をTEMP3とします。
8. CBCモードのIDEAと鍵暗号化鍵を用いて、TEMP3を暗号化します。
初期化ベクトル(IV)として0x4adda22c79e82105を使用します。暗号文の長さは32オクテットです。
3.2 IDEA鍵アンラップ
IDEA鍵アンラップアルゴリズムは、IDEA鍵暗号化鍵を用いてIDEAコンテンツ暗号化鍵を復号します。IDEA鍵アンラップアルゴリズムは以下のように定義されます。
1. ラップされたコンテンツ暗号化鍵が32オクテットでない場合、エラーとなります。
2. ラップされたコンテンツ暗号化鍵を、鍵暗号化鍵を用いてIDEAのCBCモードで復号します。初期化ベクトル(IV)として0x4adda22c79e82105を使用します。出力をTEMP3とします。
3. TEMP3のオクテットの順序を逆にします。つまり、最上位(最初の)オクテットを最下位(最後の)オクテットと入れ替え、これを繰り返します。結果をTEMP2とします。
4. TEMP2をIVとTEMP1に分解します。 IVは最上位(最初の)8オクテットであり、TEMP1は残りの(最後の)24オクテットです。
5. 鍵暗号化鍵を用いて、IDEAのCBCモードでTEMP1を復号します。
前のステップのIV値を初期化ベクトルとして使用します。平文をCEKICVと呼びます。
6. CEKICVをCEKとICVに分解します。CEKは最上位(最初の)16オクテットであり、ICVは最下位(最後の)8オクテットです。
7. CMSのセクション12.6.1に従って、CEKの8オクテットの鍵チェックサム値を計算し、計算します。計算された鍵チェックサム値が復号された鍵チェックサム値ICVと一致しない場合はエラーとなります。
8. CEKをコンテンツ暗号化鍵として使用します。