ページの先頭です。
サイト内の現在位置を表示しています。
  1. ホーム
  2. ソフトウェア
  3. SecureWare
  4. 製品一覧
  5. SecureWare/開発キット
  6. 技術情報 - CIPHERUNICORN-A(128ビットブロック暗号)とは
ここから本文です。

技術情報 - CIPHERUNICORN-A (128ビットブロック暗号) とは

CIPHERUNICORNはNECが開発した共通鍵ブロック暗号ファミリです。

イメージ

概要

CIPHERUNICORN-Aは、データブロック長128ビット、鍵長128、192、256ビットのいずれかを利用できるFeistel構造の共通鍵暗号です。

共通鍵暗号に対する代表的な解読法として、データ撹拌関数の撹拌の偏りを利用して鍵の情報を推定する線形解読法や差分解読法があります。撹拌の偏りは、撹拌処理の最も基本となる処理での撹拌の偏りから生じることが多いので、基本となる処理において撹拌の偏りが検出できない構造にすることが望ましいと考えられます。CIPHERUNICORN-Aは、基本となる処理であるラウンド関数において、撹拌の偏りが現れないことを我々が開発した暗号強度評価支援システムで確認しました。

Y.Tsunoo, H.Kubo, H.Miyauchi and K.Nakamura, "A New 128-bit Block Cipher CIPHERUNICORN-A," ISEC2000-5, Technical Report of IEICE, The Institute of Electronics, Information and Communication Engineers, 2000. (In English)

Y.Tsunoo, H.Kubo, H.Miyauchi and K.Nakamura, "A New 128-bit Block Cipher CIPHERUNICORN-A," SCIS2000-A18, The 2000 Symposium on Cryptography and Information Security Okinawa, Japan, January 26-28, 2000. (In Japanese)

設計方針および設計基準

どのような構造を持つブロック暗号に対しても有効である代表的な解読法として、線形解読法と差分解読法があります。 これらの解読法は、データ撹拌関数の撹拌の偏りを利用して鍵の情報を推定します。撹拌の偏りは、撹拌処理の最も基本となる処理での撹拌の偏りから生じることが多いので、基本となる処理において撹拌の偏りが検出できない構造にすることが望ましいと考えられます。

我々は、基本となる処理であるラウンド関数において、撹拌の偏りが現れないように設計しました。撹拌の偏りは、入力と出力の関係を統計的に調べることで調査しました。

また、設計過程のアルゴリズムを統一的に評価できるように、暗号アルゴリズムをブラックボックスとみなして入力と出力の関係を調べられる共通な評価尺度を設定しました。偏りがなく十分撹拌できた状態を以下のように定め、我々が採用した統計的手法を用いて確認しました。

  • 高い確率で成立する入力ビットと出力ビットの関係が存在しない
  • 高い確率で成立する出力ビット間の関係が存在しない
  • 高い確率で成立する入力ビットの変化と出力ビットの変化の関係が存在しない
  • 高い確率で成立する拡大鍵ビットの変化と出力ビットの変化の関係が存在しない
  • 高い確率で0あるいは1となる出力ビットが存在しない
暗号の入出力仕様はAES(Advanced Encryption Standard)と同じブロックサイズ128ビット、秘密鍵長は128ビット、192ビット、256ビットの3種類を使用可能としました。本暗号は、32ビットプロセッサ上でより高速に実装できるようにしました。

データ撹拌部

1.Feistel構造

暗号の基本構造は以下の利点からFeistel構造を採用しました。

  • 暗号化と復号が同じ構造
  • 暗号化と復号がほぼ同じ速度
  • ラウンド関数の構造に制約がない
  • 解析実績が多い

2.初期/終期処理

1段目ラウンド関数への入力、最終段ラウンド関数への入力が既知となり攻撃しやすくなることを防ぐために初期/終期処理を付加しました。

ラウンド関数

1.二重構造

ラウンド関数は二重構造を採用し、一方が解読されてももう一方で安全性を保証できる構造にしました。

ラウンド関数は本流と一時鍵生成部から成り、各々に拡大鍵を入力します(関数鍵とシード鍵)。一時鍵生成部により一時鍵を作成し、本流に合流します。

2.本流

本流は以下の構造としました。

  • 一時鍵が固定ならば全単射
  • 本流のみでも十分な撹拌を行う

3.一時鍵生成部

一時鍵生成部は以下の構造としました。

  • 一時鍵がとりうる全値域において均等に出力する
  • 本流より軽い構造(並列処理が可能な場合を考慮)
  • 本流とは異なる構造(構造の違いによる安全性の保証)
  • 一時鍵のサイズはシード鍵サイズよりも小さくする
  • 一時鍵生成部のみでも十分な撹拌を行う
攻撃者は一時鍵生成部が本流より軽い構造のため一時鍵生成部を最初に攻撃すると考え、仮に一時鍵が既知となってもシード鍵の候補が複数存在し、シード鍵から秘密鍵、シード鍵から関数鍵を推定することが困難になることを期待しています。

4.演算子

基本的に32ビットプロセッサでの実装を考え、32ビットプロセッサ上で高速に処理できる演算子を採用しました。また、代数的構造が異なる演算を組み合わせることにより暗号の強度向上が見込めるため、代数的構造の異なる演算を組み合わせて使用しました。

5.演算単位

Truncated differential attackへの対策として、演算単位は8ビット、32ビット、64ビットの3種類を使用しました。

換字テーブル

換字テーブルは、8ビット入出力のテーブル4種を組み合わせ使用しました。8ビット入出力テーブルの条件は、以下の通りです。

  • 全単射
  • 最大差分確率が2-6
  • 最大線形確率が2-6
  • 代数次数が7次
  • 入出力多項式の次数大、かつ項数が多い
  • 平均拡散ビット数(入力1ビットの変化による出力変化ビット数)が4.0
  • 不動点がない
上記条件を満たす換字テーブルの生成法として、GF(28)上の逆数関数とアフィン変換の組み合わせを採用しました。
GP(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を乱数で選択し、上記条件を満たす換字テーブルを検索することにしました。

鍵スケジューラ

鍵スケジューラは以下の構造としました。

  • 秘密鍵から拡大鍵への写像が単射である
  • どの拡大鍵にも秘密鍵の全情報が影響している
  • 秘密鍵と拡大鍵、拡大鍵同士に高い確率で成立する関係がない (鍵関連攻撃への安全性)
  • ラウンド関数の構成要素を利用する

ページの先頭へ戻る