Japan
サイト内の現在位置を表示しています。
技術情報 - CIPHERUNICORN-E (64ビットブロック暗号) とは
CIPHERUNICORNはNECが開発した共通鍵ブロック暗号ファミリです。

概要
CIPHERUNICORN-Eは、データブロック長64ビット、鍵長128ビットのFeistel構造の共通鍵暗号です。
共通鍵暗号に対する代表的な解読法として、データ撹拌関数の撹拌の偏りを利用して鍵の情報を推定する線形解読法や差分解読法があります。撹拌の偏りは、撹拌処理の最も基本となる処理での撹拌の偏りから生じることが多いので、基本となる処理において撹拌の偏りが検出できない構造にすることが望ましいと考えられます。CIPHERUNICORN-Eは、基本となる処理であるラウンド関数において、撹拌の偏りが現れないことを我々が開発した暗号強度評価支援システムで確認しました。
Y.Tsunoo, H.Kubo, H.Miyauchi and K.Nakamura, "A Secure Cipher Evaluated by Statistical Methods, " SCIS'98-4.2.B, The 1998 Symposium on Cryptography and Information Security Hamanako, Japan, January 28-31, 1998, The Institute of Electronics, Information and Communication Engineers, 1998. (In Japanese)
設計方針および設計基準
どのような構造を持つブロック暗号に対しても有効である代表的な解読法として、線形解読法と差分解読法があります。これらの解読法は、データ撹拌関数の撹拌の偏りを利用して鍵の情報を推定します。撹拌の偏りは、撹拌処理の最も基本となる処理での撹拌の偏りから生じることが多いので、基本となる処理において撹拌の偏りが検出できない構造にすることが望ましいと考えられます。
我々は、基本となる処理であるラウンド関数において、撹拌の偏りが現れないように設計しました。撹拌の偏りは、入力と出力の関係を統計的に調べることで調査しました。
また、設計過程のアルゴリズムを統一的に評価できるように、暗号アルゴリズムをブラックボックスとみなして入力と出力の関係を調べられる共通な評価尺度を設定しました。偏りがなく十分撹拌できた状態を以下のように定め、我々が採用した統計的手法を用いて確認しました。
- 高い確率で成立する入力ビットと出力ビットの関係が存在しない
- 高い確率で成立する入力ビットと出力ビットの関係が存在しない
- 高い確率で成立する入力ビットの変化と出力ビットの変化の関係が存在しない
- 高い確率で成立する拡大鍵ビットの変化と出力ビットの変化の関係が存在しない
- 高い確率で0あるいは1となる出力ビットが存在しない
データ撹拌部
1.Feistel構造
暗号の基本構造は以下の利点からFeistel構造を採用しました。
- 暗号化と復号がほぼ同じ速度
- ラウンド関数の構造に制約がない
- 解析実績が多い
2.初期/終期処理
1段目ラウンド関数への入力、最終段ラウンド関数への入力が既知となり攻撃しやすくなることを防ぐため、また、未知の攻撃に対する防御として、初期/終期およびラウンド関数2段おきに64ビット幅の関数を付加しました。
ラウンド関数
1.二重構造
ラウンド関数は二重構造を採用し、一方が解読されてももう一方で安全性を保証できる構造にしました。
ラウンド関数は本流と一時鍵生成部から成り、各々に拡大鍵を入力します(関数鍵とシード鍵)。一時鍵生成部により一時鍵を作成し、本流に合流します。
2.本流
本流は以下の構造としました。
- 一時鍵が固定ならば全単射
- 本流のみでも十分な撹拌を行う
3.一時鍵生成部
一時鍵生成部は以下の構造としました。
- 一時鍵がとりうる全値域において均等に出力する
- 本流より軽い構造(並列処理が可能な場合を考慮)
- 本流とは異なる構造(構造の違いによる安全性の保証)
- 一時鍵のサイズはシード鍵サイズよりも小さくする
- 一時鍵生成部のみでも十分な撹拌を行う
4.演算子
基本的に32ビットプロセッサでの実装を考え、32ビットプロセッサ上で高速に処理できる演算子を採用しました。また、代数的構造が異なる演算を組み合わせることにより暗号の強度向上が見込めるため、代数的構造の異なる演算を組み合わせて使用しました。
5.演算単位
Truncated differential attackへの対策として、演算単位は8ビット、32ビットの2種類を使用しました。
換字テーブル
換字テーブルは、8ビット入出力のテーブル4種を組み合わせ使用しました。8ビット入出力テーブルの条件は、以下の通りです。
- 全単射
- 最大差分確率が2-6
- 最大線形確率が2-6
- 代数次数が7次
- 入出力多項式の次数大、かつ項数が多い
- 平均拡散ビット数(入力1ビットの変化による出力変化ビット数)が4.0
- 不動点がない
GF(28)上の逆数関数は、最大差分・線形確率が2-6(最良)であることが知られており、代数次数は7次の全単射関数です。また、入出力多項式の次数は254次と大きくなっています。アフィン変換を取り入れることにより、入出力多項式の項数の増加が期待できます。
また、8ビット入出力テーブル4種を組み合わせ使用するため、既約多項式はそれぞれ異なるものを採用することにしました。
換字テーブルの生成式を以下に示します。
S(x) = matrixA{ (x + c)-1 mod g } + d
matrixA : GF(2)の8×8の全単射行列
c,d : 8ビットの定数(0以外)
g : 8次の既約多項式
matrixA, c, d, gを乱数で選択し、上記条件を満たす換字テーブルを検索することにしました。
鍵スケジューラ
鍵スケジューラは以下の構造としました。
- 秘密鍵から拡大鍵への写像が単射である
- どの拡大鍵にも秘密鍵の全情報が影響している
- 秘密鍵と拡大鍵、拡大鍵同士に高い確率で成立する関係がない (鍵関連攻撃への安全性)
- ラウンド関数の構成要素を利用する