明 細 書
暗号処理装置、および暗号処理方法、並びにコンピュータ 'プログラム 技術分野
[0001] 本発明は、喑号処理装置、および喑号処理方法、並びにコンピュータ 'プログラム に関する。さらに詳細には、共通鍵ブロック暗号処理を実行する暗号処理装置、およ び喑号処理方法、並びにコンピュータ 'プログラムに関する。
背景技術
[0002] 例えば、ネットワーク通信、電子商取引、その他のデータ処理分野においてセキュ リティ確保は重要な課題である。セキュリティ確保の 1つの方法として暗号技術があり
、喑号処理は様々な領域で利用されている。
[0003] 例えば ICカード等の小型の装置中に喑号処理モジュールを埋め込み、 ICカードと 、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、 認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されて いる。
[0004] 暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号 鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵 と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
[0005] 共通鍵暗号方式にも様々なアルゴリズムがある力 その 1つに共通鍵をベースとし て複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット, 128、 25 6ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方 式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方 式である。
[0006] 代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号 であった DES (Data Encryption Standard)アルゴリズム、現在の米国標準である AE ¾ (Advanced Encryption Standard)ァノレゴリズムなど力、失口られてレ、o。
[0007] このような、共通鍵ブロック喑号のアルゴリズムは、主として、入力データの変換を繰 り返し実行するラウンド関数実行部を有する暗号処理部と、ラウンド関数部の各ラウン
ドで適用するラウンド鍵を生成する鍵スケジュール部とによって構成される。鍵スケジ ユール部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた 拡大鍵を生成し、生成した拡大鍵に基づいて、暗号処理部の各ラウンド関数部で適 用するラウンド鍵(副鍵)を生成する。
[0008] このようなアルゴリズムを実行する具体的な構造として、線形変換部および非線形 変換部を有するラウンド関数を繰り返し実行する構造が知られて!/、る。例えば代表的 な構造に Feistel構造がある。 Feiste 冓造は、データ変換関数としてのラウンド関数 (F関数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関 数 (F関数)においては、線形変換処理および非線形変換処理が実行される。なお、 Feiste 冓造を適用した暗号処理について記載した文献としては、例えば非特許文 献 1、非特許文献 2がある。
[0009] しかし、この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩が ある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が 低いということになり、実用上、大きな問題となる。
非特許文献 1 : K. Nyberg, Generalized Feistel networks , ASIACRYPT'96, Springer Verlag, 1996, pp.91— 104.
非特許文献 2 : Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Constructio n of Blockし lphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
発明の開示
発明が解決しょうとする課題
[0010] 本発明は、上記問題点に鑑みてなされたものであり、暗号解析の困難性を高め、安 全性の高!/、共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗号 処理方法、並びにコンピュータ 'プログラムを提供することを目的とする。
課題を解決するための手段
[0011] 本発明の第 1の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、
前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、 前記鍵スケジュール部は、
秘密鍵の変換処理によって中間鍵を生成し、生成した中間鍵を格納するレジスタと 前記レジスタに格納されたレジスタ格納データに対するデータ変換処理を実行する データ変換部であり、前記レジスタ格納データを構成する部分データのスワップ (入 れ替え)処理を繰り返し実行して複数の異なるラウンド鍵を生成するデータ変換部と、 を有する構成であることを特徴とする暗号処理装置にある。
[0012] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、等 しレ、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データを 4 つの部分データに区分し、各部分データのスワップ (入れ替え)処理を繰り返し実行 して、複数の異なるラウンド鍵を生成する構成であることを特徴とする。
[0013] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、 2 mビットからなる前記レジスタ格納データを、
(a)先頭 iビットの部分データ A、
0
(b)先頭から i+ 1ビット〜 mビットの部分データ A、
(c)先頭から m+ 1ビット〜 2m— iビットの部分データ A、
2
(d)末尾 iビットの部分データ A、
3
上記(a)〜(d)に示す 4つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成する構成であることを 特徴とする。
[0014] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、等 しレ、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データを 4 つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を実行する ダブルスワップ処理実行部と、前記ダブルスワップ実行部の処理の複数の繰り返し処 理の逆処理に相当するデータ変換処理を実行するダブルスワップ逆処理実行部と、 を有する構成であることを特徴とする。
[0015] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、喑
号化処理におけるラウンド鍵生成と逆順でラウンド鍵を生成する復号用ラウンド鍵生 成処理を行なう構成を有し、等し!/、ビット数を持つ部分データの組を 2組設定するよう に前記レジスタ格納データを 4つの部分データに区分し、各組の部分データのスヮッ プ (入れ替え)処理を実行するダブルスワップ処理を予め規定されたラウンド数に基 づレヽて決定される回数分繰り返した結果データを、前記レジスタ格納データに対する 変換処理によって生成する復号用ラウンド鍵対応データ変換部と、前記復号用ラウ ンド鍵対応データ変換部にぉレ、て変換されたデータに対して、前記ダブルスワップ 処理の逆処理を実行して、各ラウンドのラウンド鍵を生成するダブルスワップ逆処理 実行部と、を有することを特徴とする。
[0016] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、 2 mビットからなる前記レジスタ格納データを、
(a)先頭 mビットの部分データ A、
0
(b)末尾 mビットの部分データ A、
上記(a)〜(b)に示す 2つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を実行するスワップ処理実行部と、
2mビットからなる前記レジスタ格納データを、
(c)先頭(m— i)ビットの部分データ A、
0
(d)先頭から(m— i+ 1)ビット〜(m + i)ビットの部分データ A、
(e)先頭から(m + i+ 1)ビット〜末尾ビットの部分データ A、
2
上記 (c)〜(e)に示す 3つの部分データに区分し、上記 (c)と(d)の部分データのス ヮップ(入れ替え)処理を実行するサブスワップ処理実行部とを有し、前記スワップ処 理実行部と、前記サブスワップ処理実行部の処理をラウンド進行に応じて交互に実 行してラウンド鍵の生成を実行する構成であることを特徴とする。
[0017] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、さ らに、前記スワップ処理実行部と、前記サブスワップ処理実行部の処理の繰り返し処 理の逆処理に相当するデータ変換を実行する逆変換処理実行部を有することを特 徴とする。
[0018] さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は
、さらに、ラウンド毎に異なる定数を生成する定数生成部と、前記定数生成部の生成 した定数と、前記レジスタ格納データとの排他的論理和演算を実行してラウンド鍵を 生成する排他的論理和演算部と、を有する構成であることを特徴とする。
[0019] さらに、本発明の暗号処理装置の一実施態様において、前記定数生成部は、生成 する定数より少ないビット数のラウンド毎に異なる少ビット数データのシフトデータの組 み合わせによってラウンド毎に異なる定数を生成する構成であることを特徴とする。
[0020] さらに、本発明の暗号処理装置の一実施態様において、前記定数生成部は、生成 する定数より少ないビット数の少ビット数データに対するデータ変換によって、ラウン ド毎に異なる少ビット数データを生成して、生成した少ビット数データのシフトデータ の組み合わせによってラウンド毎に異なる定数を生成する構成であることを特徴とす
[0021] さらに、本発明の第 2の側面は、
暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、 鍵スケジュール部にお!/、て、暗号処理部で実行する複数ラウンドのラウンド関数の 実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
暗号処理部にお!/、て、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返 すデータ変換処理を行なう喑号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって中間鍵を生成してレジスタに格納する中間鍵生成ステ データ変換部が前記レジスタに格納されたレジスタ格納データを構成する部分デ ータのスワップ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成 するデータ変換ステップと、
を有するステップであることを特徴とする暗号処理方法にある。
[0022] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納デ ータを 4つの部分データに区分し、各部分データのスワップ(入れ替え)処理を繰り返 し実行して、複数の異なるラウンド鍵を生成するステップであることを特徴とする。
[0023] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、 2mビットからなる前記レジスタ格納データを、
(a)先頭 iビットの部分データ A、
0
(b)先頭から i+ 1ビット〜 mビットの部分データ A、
(c)先頭から m+ 1ビット〜 2m— iビットの部分データ A、
2
(d)末尾 iビットの部分データ A、
3
上記(a)〜(d)に示す 4つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成するステップであること を特徴とする。
[0024] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納デ ータを 4つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を 実行するダブルスワップ処理実行ステップと、前記ダブルスワップ実行ステップの処 理の複数の繰り返し処理の逆処理に相当するデータ変換処理を実行するダブルスヮ ップ逆処理実行ステップと、を有するステップであることを特徴とする。
[0025] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、暗号化処理におけるラウンド鍵生成と逆順でラウンド鍵を生成する復号用ラウン ド鍵生成処理を行なうステップを有し、等し!/、ビット数を持つ部分データの組を 2組設 定するように前記レジスタ格納データを 4つの部分データに区分し、各組の部分デー タのスワップ(入れ替え)処理を実行するダブルスワップ処理を予め規定されたラウン ド数に基づ!/、て決定される回数分繰り返した結果データを、前記レジスタ格納データ に対する変換処理によって生成する復号用ラウンド鍵対応データ変換ステップと、前 記復号用ラウンド鍵対応データ変換ステップにおいて変換されたデータに対して、前 記ダブルスワップ処理の逆処理を実行して、各ラウンドのラウンド鍵を生成するダブ ノレスワップ逆処理実行ステップと、を有するステップであることを特徴とする。
[0026] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ ステップは、 2mビットからなる前記レジスタ格納データを、
(a)先頭 mビットの部分データ A、
(b)末尾 mビットの部分データ A、
上記(a)〜(b)に示す 2つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を実行するスワップ処理実行ステップと、
2mビットからなる前記レジスタ格納データを、
(c)先頭(m— i)ビットの部分データ A、
0
(d)先頭から(m— i+ 1)ビット〜(m + i)ビットの部分データ A、
(e)先頭から(m + i+ 1)ビット〜末尾ビットの部分データ A、
2
上記 (c)〜(e)に示す 3つの部分データに区分し、上記 (c)と(d)の部分データのス ヮップ(入れ替え)処理を実行するサブスワップ処理実行ステップと、
を有し、前記スワップ処理実行ステップと、前記サブスワップ処理実行ステップの処 理をラウンド進行に応じて交互に実行してラウンド鍵の生成を実行するステップであ ることを特徴とする。
[0027] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、さらに、前記スワップ処理実行ステップと、前記サブスワップ処理実行ステップの 処理の繰り返し処理の逆処理に相当するデータ変換を実行する逆変換処理実行ス テツプを有することを特徴とする。
[0028] さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さ らに、定数生成部が、ラウンド毎に異なる定数を生成する定数生成ステップと、排他 的論理和演算部が、前記定数生成部の生成した定数と、前記レジスタ格納データと の排他的論理和演算を実行してラウンド鍵を生成する排他的論理和演算ステップと を有することを特徴とする。
[0029] さらに、本発明の暗号処理方法の一実施態様において、前記定数生成ステップは 、生成する定数より少な!/、ビット数のラウンド毎に異なる少ビット数データのシフトデー タの組み合わせによってラウンド毎に異なる定数を生成するステップであることを特徴 とする。
[0030] さらに、本発明の暗号処理方法の一実施態様において、前記定数生成ステップは 、生成する定数より少な!/、ビット数の少ビット数データに対するデータ変換によって、 ラウンド毎に異なる少ビット数データを生成して、生成した少ビット数データのシフトデ
ータの組み合わせによってラウンド毎に異なる定数を生成するステップであることを特 徴とする。
[0031] さらに、本発明の第 3の側面は、
喑号処理装置において共通鍵ブロック喑号処理を実行させるコンピュータ 'プログ ラムであり、
鍵スケジュール部に、暗号処理部で実行する複数ラウンドのラウンド関数の実行に 適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
暗号処理部に、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデー タ変換処理を行なわせる喑号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって中間鍵を生成してレジスタに格納させる中間鍵生成ス データ変換部が前記レジスタに格納されたレジスタ格納データを構成する部分デ ータのスワップ (入れ替え)処理を繰り返し実行させて、複数の異なるラウンド鍵を生 成させるデータ変換ステップと、
を実行させるステップであることを特徴とするコンピュータ 'プログラムにある。
[0032] なお、本発明のコンピュータ 'プログラムは、例えば、様々なプログラム 'コードを実 行可能なコンピュータ 'システムに対して、コンピュータ可読な形式で提供する記憶 媒体、通信媒体、例えば、 CDや FD、 MOなどの記録媒体、あるいは、ネットワークな どの通信媒体によって提供可能なコンピュータ 'プログラムである。このようなプロダラ ムをコンピュータ可読な形式で提供することにより、コンピュータ 'システム上でプログ ラムに応じた処理が実現される。
[0033] 本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図 面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書において システムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内に あるものには限らない。
発明の効果
[0034] 本発明の一実施例の構成によれば、共通鍵ブロック暗号処理におけるラウンド鍵生
成処理において、秘密鍵の変換処理によって生成した中間鍵をレジスタに格納し、 レジスタ格納データを構成する部分データのスワップ (入れ替え)処理を繰り返し実 行してラウンド鍵を生成する。例えば、等しいビット数を持つ部分データの組を 2組設 定するようにレジスタ格納データを 4つの部分データに区分し、各部分データのスヮッ プ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成する。本構成 により、各ラウンド鍵のビット配列を効果的に入れ替え、相関性の低いラウンド鍵を生 成することが可能となり、鍵の解析困難性を高めた安全性の高い暗号処理構成が実 現される。
図面の簡単な説明
[図 1]共通鍵ブロック喑号アルゴリズムの基本構成を示す図である。
[図 2]図 1に示す共通鍵ブロック喑号処理部 E10の内部構成について説明する図で ある。
[図 3]図 2に示す喑号処理部 12の詳細構成について説明する図である。
[図 4]ラウンド関数実行部の一構成例としての SPN構造ラウンド関数について説明す る図である。
[図 5]ラウンド関数実行部の一構成例としての Feistel (フェイステル)構造につ!/、て説 明する図である。
[図 6]非線形変換処理部の具体例について説明する図である。
[図 7]線形変換処理部の具体例について説明する図である。
[図 8]暗号化処理における秘密鍵 Kと、初期鍵、ラウンド鍵、最終鍵の対応について 説明する図である。
[図 9]復号処理における秘密鍵 Kと、初期鍵、ラウンド鍵、最終鍵の対応について説 明する図である。
[図 10]暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成 例について説明する図である。
[図 11]復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例 につ!/、て説明する図である。
[図 12]暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール
部の構成例について説明する図である。
[図 13]Feiste 冓造の喑号処理において適用可能なラウンド鍵生成処理を実行する 鍵スケジュール部の構成例について説明する図である。
[図 14]暗号化処理におけるラウンド鍵生成処理においてダブルスワップ演算を適用 した処理を実行する鍵スケジュール部の構成例について説明する図である。
園 15]iビットダブルスワップ演算を適用したビット位置変更処理について説明する図 である。
園 16]iビットダブルスワップ演算を適用したビット位置変更処理を実行する ドゥエ ァ構成例について説明する図である。
[図 17] (r- 1)回分 iビットダブルスワップ逆演算を適用したビット位置変更処理を実行 するハードウェア構成例について説明する図である。
園 18]復号処理におけるラウンド鍵生成処理においてダブルスワップ演算を適用した 処理を実行する鍵スケジュール部の構成例について説明する図である。
[図 19]暗号化、復号の双方におけるラウンド鍵生成処理においてダブルスワップ演 算を適用した処理を実行する鍵スケジュール部の構成例について説明する図である 園 20]iビットダブルスワップ演算を適用したビット位置変更処理について説明する図 である。
[図 21]喑号処理におけるラウンド鍵生成処理においてスワップ演算とサブスワップ演 算を適用した処理を実行する鍵スケジュール部の構成例について説明する図である 園 22]スワップ演算を適用したビット位置変更処理について説明する図である。 園 23]iビットサブスワップ演算を適用したビット位置変更処理について説明する図で ある。
園 24]ジャンプ演算を適用したビット位置変更処理について説明する図である。 園 25]定数生成回路と排他的論理和演算部を持つラウンド鍵生成処理を実行する 鍵スケジュール部の構成例について説明する図である。
園 26]定数生成回路の構成例について説明する図である。
[図 27]本発明に係る暗号処理を実行する暗号処理装置としての ICモジュールの構 成例を示す図である。
発明を実施するための最良の形態
[0036] 以下、本発明の喑号処理装置、および喑号処理方法、並びにコンピュータ 'プログ ラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.共通鍵ブロック喑号の概要
2.鍵スケジュール部におけるラウンド鍵生成処理構成
(2— 1)鍵スケジュール部の詳細構成について
(2— 2)シフト処理を適用した一般的なラウンド鍵生成処理構成について
(2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理構成について (2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理構成について (2— 5)本発明の第 3実施例に係るラウンド鍵の生成処理構成につ!/、て
3.暗号処理装置の構成例
[0037] [1.共通鍵ブロック喑号の概要]
まず、本発明の適用可能な共通鍵ブロック暗号の概要について説明する。本明細 書において、共通鍵ブロック暗号 (以下ではブロック暗号)は、以下に定義するものを 指すものとする。
[0038] ブロック暗号は平文 Pと鍵 Kを入力し、暗号文 Cを出力する。平文と暗号文のビット 長をブロックサイズと呼びここでは nで示す。 nは任意の整数値を取りうる力 通常、ブ ロック喑号アルゴリズムごとに、予め 1つに決められている値である。ブロック長が nの ブロック喑号のことを nビットブロック喑号と呼ぶこともある。
[0039] 鍵のビット長は、 kで表す。鍵は任意の整数値を取りうる。共通鍵ブロック喑号アル ゴリズムは 1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック喑 号アルゴリズム Aはブロックサイズ n= 128であり、鍵のビット長 k= 128、または k= l 92または k = 256の各種の鍵サイズに対応するという構成もありうる。
平文 [P]、暗号文 [C]、鍵 [K]の各ビットサイズは、以下のように示される。 平文 P : nビット
暗号文 C : nビット
鍵 K : kビット
[0040] 図 1に kビットの鍵長に対応した nビット共通鍵ブロック喑号アルゴリズム Eの図を示 す。図 1に示すように、共通鍵ブロック喑号処理部 E10は、 nビットの平文 Pと、 kビット の鍵 Kを入力して、予め定められた喑号アルゴリズムを実行して、 nビットの暗号文 C を出力する。なお、図 1には平文から暗号文を生成する暗号化処理のみを示している 。暗号文から平文を生成する復号処理は、一般的には E10の逆関数が用いられる。 ただし、暗号化処理部 E10の構造によっては、復号処理においても、同様の共通鍵 ブロック喑号処理部 E10が適用でき、鍵の入力順などのシーケンスの変更によって 復号処理が可能となる。
[0041] 図 1に示す共通鍵ブロック喑号処理部 E10の内部構成について、図 2を参照して 説明する。ブロック暗号は 2つの部分に分けて考えることができる。ひとつは鍵 Kを入 力とし、ある定められたステップにより入力鍵 Kのビット長を拡大して拡大鍵 K' (ビット 長 k')を出力する鍵スケジュール部 11と、平文 Pと鍵スケジュール部 11から入力する 拡大鍵 K'を受け取り、平文 Pを入力して、拡大鍵 K'を適用した暗号処理を実行して、 暗号文 Cを生成するためのデータの変換を実行する暗号処理部 12である。なお、先 に説明したように、暗号化処理部 12の構造によっては、暗号文を平文に戻すデータ 復号処理にも暗号処理部 12が適用可能な場合もある。
[0042] 次に、図 2に示す喑号処理部 12の詳細構成について図 3を参照して説明する。喑 号処理部 12は、図 3に示すように、ラウンド関数実行部 20を適用したデータ変換を 繰り返し実行する構成を持つ。すなわち、暗号処理部 12は、ラウンド関数実行部 20 という処理単位に分割できる。ラウンド関数実行部 20は入力として、前段のラウンド関 数実行部の出力 Xと、拡大鍵に基づいて生成されるラウンド鍵 RKの 2つのデータを 受け取り、内部でデータ変換処理を実行して出力データ X を次のラウンド関数実 行部に出力する。なお、第 1ラウンドでは、入力は、平文または平文に対する初期化 処理データである。また最終ラウンドの出力は暗号文となる。
[0043] 図 3に示す例では、喑号処理部 12は、 r個のラウンド関数実行部 20を有し、 r回のラ ゥンド関数実行部におけるデータ変換を繰り返して暗号文を生成する構成となってい る。ラウンド関数の繰り返し回数をラウンド数と呼ぶ。図に示す例では、ラウンド数は r
となる。
[0044] 各ラウンド関数実行部の入力データ は暗号化途中の nビットデータであり、あるラ ゥンドにおけるラウンド関数の出力 X が次のラウンドの入力として供給される。各ラ ゥンド関数実行部のもう一つの入力データは鍵スケジュールから出力された拡大鍵 の K'に基づくデータが用いられる。この各ラウンド関数実行部に入力され、ラウンド関 数の実行に適用される鍵をラウンド鍵と呼ぶ。図で、 iラウンドに適用するラウンド鍵を RKとして示している。拡大鍵 K'は、例えば、 rラウンド分のラウンド鍵 RK〜RKの連 結データとして構成される。
[0045] 図 3に示す構成は、喑号処理部 12の入力側から見て 1ラウンド目の入力データを X
とし、 i番目のラウンド関数から出力されるデータを X、ラウンド鍵を RKとして示した
0 i i
喑号処理部 12の構成である。なお、この喑号処理部 12の構造によっては、例えば、 適用するラウンド鍵の適用シーケンスを、暗号化処理と逆に設定し、暗号文を喑号処 理部 12に入力することで平文を出力する構成とすることができる。
[0046] 図 3に示す暗号処理部 12のラウンド関数実行部 20は、さまざまな形態をとりうる。ラ ゥンド関数はその喑号アルゴリズムが採用する構造(structure)によって分類できる 。代表的な構造として、
(ァ) SPN (Substitution Permutation Network)構造、
(ィ) Feiste 冓造、
力 る。以下、これらの具体的構成について、図 4〜図 6を参照して説明する。
[0047] (ァ) SPN構造ラウンド関数
まず、図 4を参照して、ラウンド関数実行部 20の一構成例としての SPN構造ラウン ド関数について説明する。 SPN構造ラウンド関数実行部 20aは、非線形変換層(S層 )と線形変換層(P層)を接続したいわゆる SP型の構成を有する。図 4に示すように、 n ビットの入力データすべてに対して、ラウンド鍵との排他的論理和(EXOR)演算を実 行する排他的論理和演算部 21、排他的論理和演算部 21の演算結果を入力し、入 力データの非線形変換を実行する非線形変換処理部 22、非線形変換処理部 22に おける非線形変換処理結果を入力し、入力データに対する線形変換処理を実行す る線形変換処理部 23などによって構成される。線形変換処理部 23の線形変換処理
結果が、次のラウンドに出力される。最終ラウンドでは暗号文となる。なお、図 4に示 す例では、排他的論理和演算部 21、非線形変換処理部 22、線形変換処理部 23の 処理順を示している力 これらの処理部の順番は、限定されるものではなぐ他のシ 一ケンスで処理を行なう構成としてもよ!/、。
[0048] (ィ) Feiste 冓造
次に、図 5を参照してラウンド関数実行部 20の一構成例としての Feistel (フェイス テル)構造について説明する。 Feiste 冓造は、図 5に示すように、前ラウンドからの入 力(第 1ラウンドでは入力文)である nビットの入力データを n/2ビットの 2つのデータ に分割して、各ラウンドにおいて入れ替えながら処理を実行する。
[0049] Feiste 冓造を持つラウンド関数実行部 20bを適用した処理においては、図に示す ように、一方の n/2ビットデータとラウンド鍵とが F関数部 30に入力される。 F関数部 30は、上述した SPN構造と同様、非線形変換層(S層)と線形変換層(P層)を接続し た!/、わゆる SP型の構成を有する。
[0050] 前ラウンドからの n/2ビットデータとラウンド鍵とが F関数部 30の排他的論理和演 算部 31に入力され排他的論理和(EXOR)処理がなされる。さらに、この結果データ を非線形変換処理部 32に入力して非線形変換を実行し、さらに、この非線形変換結 果が線形変換処理部 33に入力され線形変換が実行される。この線形変換結果が、 F関数処理結果データとして出力する。
[0051] さらに、この F関数出力と、前ラウンドから入力するもう 1つの n/2ビット入力とを、排 他的論理和演算部 34に入力し、排他的論理和演算(EXOR)を実行して、実行結果 を、次のラウンドにおける F関数の入力として設定される。なお、図に示す第 ウンド における F関数入力に設定された n/2ビットは次のラウンドの F関数出力との排他的 論理和演算に適用される。このように、 Feiste 冓造は、各ラウンドにおいて入力を交 互に入れ替えながら F関数を適用したデータ変換処理を実行する。
[0052] 図 4〜図 5を参照して説明したように、共通鍵ブロック暗号における暗号処理部 12 のラウンド関数実行部 20は、
(ァ) SPN (Substitution Permutation Network)構造、
(ィ) Feiste 冓造、
これらの構造をとり得る。これらのラウンド関数実行部は、いずれも非線形変換層(S 層)と線形変換層(P層)を接続したいわゆる SP型の構成を有する。すなわち、非線 形変換処理を実行する非線形変換処理部と、線形変換処理を実行する線形変換処 理部とを有する。以下、これらの変換処理構成について説明する。
[0053] (非線形変換処理部)
非線形変換処理部の具体例について、図 6を参照して説明する。図 6に示すように 、非線形変換処理部 50は、具体的には、 Sボックス(S— box) 51と呼ばれる sビット入 力 sビット出力の非線形変換テーブルが m個並んだものであり、 msビットの入力デー タが sビットずつ分割されてそれぞれ対応する Sボックス(S— box) 51に入力されデー タが変換される。各 Sボックス 51では、例えば変換テーブルを適用した非線形変換処 理が実行される。
[0054] 入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。そ れを回避するために、図 6に示すように、処理対象データ Xを複数の単位に分割し、 それぞれに対して、非線形変換を施す構成がとられることが多い。例えば入力サイズ を msビットとしたとき、 sビットずつの m個のデータに分割して、 m個の Sボックス(S—b ox) 51それぞれに対して sビットを入力し、例えば変換テーブルを適用した非線形変 換処理を実行して、これらの各 Sビット出力 m個を合成して msビットの非線形変換結 果を得る。
[0055] (線形変換処理部)
線形変換処理部の具体例について、図 7を参照して説明する。線形変換処理部は 、入力値、例えば、 Sボックスからの出力データである msビットの出力値を入力値 Xと して入力し、この入力に対して線形変換を施し msビットの結果を出力する。線形変換 処理は、例えば、入力ビット位置の入れ替え処理などの線形変換処理を実行して、 msビットの出力値 Yを出力する。線形変換処理は、例えば、入力に対して、線形変 換行列を適用して入力ビット位置の入れ替え処理を行なう。この行列の一例が図 7に 示す線形変換行列である。
[0056] 線形変換処理部にお!/、て適用する線形変換行列の要素は拡大体: GF (28)の体 の要素や GF (2)の要素など、一般的にはさまざまな表現を適用した行列として構成
できる。図 7は、 msビット入出力をもち、 GF (2s)の上で定義される m X mの行列によ り定義される線形変換処理部の 1つの構成例を示すものである。
[0057] [2.鍵スケジュール部におけるラウンド鍵生成処理構成]
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を 行なう構成である。この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵 の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の 安全性が低いということになり、実用上、大きな問題となる。
[0058] 上述した説明から明らかなように、共通鍵ブロック暗号においては、各ラウンドにお いて拡大鍵に基づいて生成されるラウンド鍵を適用した処理がなされる。暗号攻撃で は、ラウンド鍵の解析に基づいて拡大鍵を復元し、さらに拡大鍵の元データである秘 密鍵を解析するといつた手順の攻撃が行なわれる場合がある。以下では、このような 鍵解析の困難性を高め、安全性の高めた暗号処理装置の構成例について説明する
[0059] 以下、以下の各項目に従って、説明を行なう。
(2— 1)鍵スケジュール部の詳細構成について
(2— 2)シフト処理を適用した一般的なラウンド鍵生成処理構成について (2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理構成について (2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理構成について (2— 5)本発明の第 3実施例に係るラウンド鍵の生成処理構成につ!/、て
[0060] (2— 1)鍵スケジュール部の詳細構成について
先に、例えば図 2を参照して説明したように、共通鍵ブロック暗号においては、鍵ス ケジュール部が、入力鍵 Kのビット長を拡大して拡大鍵 K' (ビット長 k')を出力し、拡 大鍵に基づいて生成されるラウンド鍵 RKを適用したラウンド関数が実行される。
[0061] 鍵スケジュール部は、例えば、数百ビットの鍵データを数千ビット程度の拡大鍵デ ータに拡張して、ラウンド関数を実行するデータ暗号化部に供給する。拡大鍵データ のうち、データ暗号化部のラウンド関数に入力される拡大鍵の一部をラウンド鍵と呼 ぶ。また、ラウンド関数以外にもラウンド鍵が挿入される場合がある。例えば、最初の ラウンド関数の前に揷入 (EXOR)される鍵を初期鍵、最後のラウンド関数の後に揷
入 (EXOR)される鍵を最終鍵と呼ぶ。
[0062] 図 8および図 9を参照して暗号化処理と復号処理における秘密鍵 Kと、ラウンド鍵の 対応について説明する。図 8、図 9には、それぞれ r段をラウンド数としたブロック暗号 を実行する暗号化構成および復号構成を示している。
[0063] 例えば、図 8は、 r段をラウンド数としたブロック暗号を実行する暗号化構成であり、 秘密鍵 [K] 111は、暗号化鍵スケジュール部 112に入力され、ビット拡張処理などの 所定のアルゴリズムに従ったデータ変換により、複数のラウンド鍵を含む暗号化拡大 鍵 113を生成する。データ暗号化部 114は、 r段をラウンド数としたブロック暗号を実 行する構成であり、暗号化の場合に、 1から r段目までのラウンド関数にそれぞれラウ ンド鍵 {RK , RK , · · · , RK , RK }が順に入力されてラウンド関数 (F関数)が実 fiされる。
[0064] 図 9は、復号処理構成を示している。秘密鍵 [K] 121は、復号鍵スケジュール部 12 2に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、 複数のラウンド鍵を含む復号拡大鍵 123を生成する。なお、秘密鍵 [K] 121は暗号 化処理において適用した図 8に示す秘密鍵 [K] 111と同じ鍵が適用される。
[0065] データ復号部 124は、 r段をラウンド数としたブロック暗号を実行する構成であり、復 号処理の場合は、喑号処理とは逆の順番でラウンド鍵 {RK , RK , · · · , RK , RK }が順に入力されてラウンド関数 (F関数)が実行される。
[0066] 鍵解析を行なう暗号攻撃に対する耐性の高い、すなわち鍵解析を困難として安全 性を高めた構成とするための、ラウンド鍵が満たす理想的な性質としては以下の性質 力 sある。
(a)ラウンド鍵が分かっても鍵データが復元できな!/、こと
(b)ラウンド鍵同士が独立であること
これらの性質がある。
(a)は、万が一各ラウンドにおいて適用するラウンド鍵が解析された場合でも、その ラウンド鍵から元の秘密鍵を復元不可能とすることで安全性を高められることを意味 する。また、(b)は 1つのラウンド鍵と他のラウンド鍵とのデータ間に何らかの関係があ る場合、 1つのラウンド鍵の解析に成功した場合、他のラウンド鍵が推定可能になり、
このような関連性を排除することで安全性が高まるということを意味する。
[0067] しかしながら、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を生成 することは難しぐ実際には、秘密鍵や秘密鍵から非線形変換を用いて求められた中 間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる場 合が多い。また、上記条件を満たしていない場合でも、安全性上、
* slide attack (スライド攻撃)に対し十分な耐性をもつこと
K related cipher attack (関連喑号攻撃)に対して十分な耐性をもつことが必要 とされる。
[0068] Slide attack (スライド攻撃)は,元の暗号化関数とそれをずらした暗号化関数とで 、重なったラウンド関数のデータ値が同じになる平文 ·暗号文を検出し、これを利用し てずらした部分の鍵を効率よく求める攻撃である。異なる秘密鍵に対して数段分のラ ゥンド鍵が一致する場合に攻撃可能となる。
[0069] また、 Related cipher attack (関連喑号攻撃)は,以下のような攻撃である。あ る共通鍵ブロック喑号がラウンド数 rの kビットの鍵長,ラウンド数 rの kビットの鍵長
1 1 2 2
を共にサポートしている場合 (r < rかつ k < kとする)を考える。鍵長 kビットのラウ
1 2 1 2 1
ンド鍵が鍵長 kビットのラウンド鍵の一部と一致する場合を考える。この場合、鍵長 k
2 1 ビットの場合のデータ暗号部の出力を用いることにより、鍵長 kビットの場合の残りの
2
ラウンド鍵を攻撃することが可能になる。
[0070] (2— 2)シフト処理を適用した一般的なラウンド鍵生成処理構成について
上述したように、上述のラウンド鍵を利用する共通鍵ブロック暗号処理を実行する装 置を構成する場合、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を 生成することは難しぐ実際には、秘密鍵から非線形変換を用いて求められた中間鍵 データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる。
[0071] この秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデ ータから切り出したデータをラウンド鍵として用いる場合の鍵スケジュール部の一般 的な構成例について、図 10〜図 12を参照して説明する。
[0072] 図 10は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の 構成例、
図 11は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構 成例、
図 12は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュ ール部の構成例を示して!/、る。
[0073] まず、図 10に示す暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュ ール部の構成、および処理について説明する。秘密鍵 Kを kビットとする。秘密鍵 Kを 、非線形変換回路 201に入力し、非線形変換処理を行い nビットの中間鍵データを 生成する。中間鍵データをしとする。
[0074] 中間鍵データ Lは、セレクタ 202を介してレジスタ RegL203に入力され格納される 。セレクタ 202には、 iビット左循環シフト回路 211 (r-1) X iビット右循環シフト回路 212が接続され、セレクタ 202を介してレジスタ RegL203に対してそれぞれの循環シ フト処理信号が入力され、レジスタ RegL203に格納されたデータの iビット左循環シ フト処理、または (r—l) Xiビット右循環シフト処理が実行される。なお、 iは 1以上の 整数である。
[0075] 例えば、 iビット左循環シフト回路 211は、レジスタ RegL203に格納された nビットの 中間鍵 Lの iビット循環左シフトを実行し、次のように、レジスタ RegL203に格納され た中間鍵しから、 nビットの r個のラウンド鍵データ {RK , RK , · · ·, RK , RK }を 作り出す。
RK =L
RK =L<<<i
2
RK =L<<< (2Xi)
3
RK =L<<< ((r-2) Xi)
RK =L<<< ((r-1) Xi)
[0076] なお、上記式において、 [< < <i]は、 iビット循環左シフトを表す。
RK =Lは、シフト量ゼロのデータであり、中間鍵 Lに等しく、
RK =L<<<iは、中間鍵 Lに対して、左に iビットの循環シフトを行なったデータ、
2
RK Lくくく(2Xi)は、中間鍵 Lに対して、左に 2Xiビットのシフトを行なったデ
ータ
· · ·をそれぞれ示している。
[0077] この方式を適用した実装構成および処理について、図 10を参照して説明する。ま ず、中間鍵生成プロセスにおいて、 kビットの秘密鍵 Kを非線形変換回路 201に入力 して、 nビットの中間鍵データ Lを生成してセレクタ 202を介してそのままシフト処理な しに、ラウンド中間鍵用レジスタ RegL203に格納する。
[0078] 暗号化の場合には、 iビット左循環シフト回路 211の処理信号をセレクタ 202を介し てラウンド中間鍵用レジスタ RegL203に選択入力し、ラウンド中間鍵用レジスタ Reg L203に格納された nビットの中間鍵データ Lに対する iビット循環左シフトを繰り返し 実行して、ラウンド鍵データ {RK , RK , · · · , RK , RK }を順次作り出すことがで きる。
[0079] この処理によって、すべてのラウンドのラウンド鍵 {RK , RK , · · · , RK— , RK } が生成されて出力されると、最後にラウンド中間鍵用レジスタ RegL203に格納された データを (r— 1) X iビット循環右シフトする。この処理は、(r— 1) X iビット右循環シフ ト回路 212の処理信号をセレクタ 202を介してラウンド中間鍵用レジスタ RegL203に 選択入力することで実行される。この右シフト処理によって、ラウンド中間鍵用レジス タ RegL203に格納されたデータを、シフトなしの初期状態としての中間鍵データしに 戻すことができる。
[0080] この暗号化処理におけるラウンド鍵生成プロセスは、中間鍵 L、ラウンド数 r、各ラウ ンドでのラウンド鍵 RK、各ラウンド移行時のシフト量 iとして、以下のように表現される
For n= 1 to r—丄 αο
RK—RegL
RegL—RegLく < < i
RK—RegL
RegL— RegL〉 > > ( (r- l) X i)
[0081] 上記記載において、
< < < iは iビット左循環シフト、
> >〉iは iビット右循環シフト、
を示している。
[0082] 図 11は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構 成例である。図 11に示す復号処理におけるラウンド鍵生成処理を実行する鍵スケジ ユール部において、非線形変換回路 201、セレクタ 202、レジスタ RegL203は、図 1 0に示す構成と同様であり、シフト回路 221 , 222のみが異なっている。
[0083] すなわち、復号処理におけるシフト回路 221 , 222は、喑号処理におけるシフト回 路 211 , 212と逆向きのシフトを実行する回路、すなわち、
iビット右循環シフト回路 221と、
(r- 1) X iビット左循環シフト回路 222
によって構成される。
[0084] この復号処理における鍵スケジュール部では、まず、(r—l) X iビット左循環シフト 回路 222の処理によって、レジスタ RegL203に格納された中間鍵データを、 (r- 1) X iビット循環左シフトする。その後に、 iビット右循環シフト回路 221の処理により、各 ラウンドのラウンド鍵生成毎に、レジスタ RegL203に格納されたデータを適宜 iビット 右循環シフトする。この処理シーケンスにより、ラウンド鍵データは、暗号処理時と逆 の順番で生成される。すなわち、 {RK , RK , · · · , RK , RK }を順次作り出すこと ができる。
[0085] この復号処理におけるラウンド鍵生成プロセスは、中間鍵 L、ラウンド数 r、各ラウンド でのラウンド鍵 RK、各ラウンド移行時のシフト量 iとして、以下の処理アルゴリズムとし て表現される。
RegL— RegL< < < ( (r- 1) X i)
For n = r to 2 do
RK—RegL
RegL—RegL〉 > >i
RK—RegL
[0086] 上記記載において、
< < < iは iビット左循環シフト、
> >〉iは iビット右循環シフト、
を示している。
[0087] なお、図 10、図 11は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理 の際のラウンド鍵生成処理を実行する構成である力 S、これらの機能を兼ね備えた構 成も構築可能である。この構成を図 12に示す。図 12に示す構成では、循環シフト回 路 23;!〜 234を備え、それぞれ、
iビット左循環シフト回路 231、
iビット右循環シフト回路 232、
(r- 1) X iビット右循環シフト回路 233、
(r- 1) X iビット左循環シフト回路 234、
であり、図 10、図 11に構成された循環シフト回路をすベて含む構成であり、 iビット左循環シフト、 iビット右循環シフト、 (r—l) X iビット右循環シフト、 (r- l) X i ビット左循環シフトを選択的に実行することが可能な構成を持つ。この構成を適用す ることで、暗号化および復号処理!/、ずれの場合もラウンド鍵を生成して出力すること が可能となる。
[0088] このような巡回シフト処理によるラウンド鍵生成処理構成について考察する。特に、 ラウンド鍵データを構成するビット間の相対位置の変化状況につ!/、て考える。 iビット 左巡回シフトは、操作対象となるビット列の左から iビット分を切り取って、それを右側 に移動させて連結する操作である。特定のビットデータに着目すると、巡回シフトを、 任意回実行しても、あるビットの両側にあるビットは変化することがない。
[0089] あるビットがビット列の左端または右端に移動した場合には隣のビットが存在しなく なる力 再度、シフト処理を行えばまた以前と同様のビット並びとなる。すなわち、ある 特定のビットの前後にあるビットはビット列の端部に設定される場合以外は常に変化 がな!/、ことになる。このようにビットの両側のビットが一切変更されな!/ヽとレ、う性質、す なわちビット配列の不変性は、ラウンド関数を持つ暗号処理構成における鍵漏洩の 困難性を高めるための要求である「ラウンド鍵同士が独立であること」という条件に対 する脆弱性をもたらすこととなり、好ましくない。
[0090] また、ビット配列の不変性は、前述の Slide attack (スライド攻撃)による鍵解析に
対する脆弱性も有する。例えば、
(A)秘密鍵 Kに基づいて生成された中間鍵データ Lと、
(B)別の秘密鍵 K'に基づいて生成された中間鍵データ L'を (s X i)ビット左循環シ フトした拡大鍵データ L' < < < (s X i)
これらが同じ値になった場合には、その後にビットシフトによって生成される各ラウン ドのラウンド鍵、すなわち、
(a)中間鍵データ Lより生成される r— s段分のラウンド鍵 {RK , RK , ••- . RK
1 2 (r-s)
, RK }と、
1 (r-s)
(b)拡大鍵データ L' < < < (s X i)より生成される r— s段分のラウンド鍵 {RK , R s + 1
K ,…, RK , RK }
2s+ 2 2r- l 2r
これらの各ラウンド鍵が ω (b)とで同一のデータとなってしまう。
この性質により、前述の Slide attack (スライド攻撃)による鍵解析が容易となり、攻 撃に対する耐性が不十分となってしまう。
[0091] 先に説明したように、共通鍵ブロック暗号のアルゴリズムを実行する代表的な構造と して Feiste 冓造がある。 Feiste 冓造は、データ変換関数としてのラウンド関数 (F関 数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関数 (F 関数)においては、線形変換処理および非線形変換処理が実行される。 Feiste 冓 造では、各ラウンドにおいて適用するラウンド鍵のサイズは、暗号化処理データとして の入力ビット数 nに対して、 n/2ビットとなる。
[0092] このような場合、中間鍵データ Lを nビットとして生成して、 nビットのデータのうちの 上位半分の n/2ビットを奇数ラウンドに利用し、残りの下位 n/2ビットを次ラウンドの 鍵として用いる構成が一般的である。この場合には、上位と下位をラウンドごとに選択 するための回路を追加実装する必要がある。すなわち、 n/2ビットのラウンド鍵を利 用する暗号処理装置構成 (暗号化/複号化共有の実装例)は、例えば図 13に示す 構成となる。
[0093] 図 13に示す構成は、先に説明した図 12に示す構成と同様の構成として、非線形 変換回路 201、セレクタ 202、レジスタ RegL203、さらに、
iビット左循環シフト回路 231、
iビット右循環シフト回路 232、
(r- 1) X iビット右循環シフト回路 233、
(r- 1) X iビット左循環シフト回路 234、
これらの構成を有し、さらに、
セレクタ 241を備えている。
[0094] レジスタ RegL203には、先に図 12を参照して説明したと同様の中間鍵データ L (n ビット)が格納され、セレクタ 241において、レジスタ RegL203に格納された nビットデ ータのうちの上位半分の n/2ビットを奇数ラウンドにおいて適用するラウンド鍵として 出力し、残りの下位 n/2ビットを次ラウンドのラウンド鍵として出力する構成である。こ のように、上位と下位をラウンドごとに選択するためのセレクタ 241を追加実装する必 要がある。
[0095] 上述したように、中間鍵データに対してシフト処理を行ってラウンド鍵を生成するラ ゥンド鍵生成法では、
*隣り合うビットに変化が少ないことによるラウンド鍵間の独立性が少ない。
* Slide attack (スライド攻撃)に対して十分な耐性がない。
* Feiste 冓造での利用の場合上位 ·下位ビット列選択回路の追加が必要。
これらの欠点をもつ。
[0096] (2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理構成について
以下、上述した循環シフト処理によるラウンド鍵の生成処理における問題点を解決 し、様々な暗号攻撃に対する耐性の高い、すなわち安全性の高い暗号処理を実行 するラウンド鍵の生成処理構成につ!/、て説明する。
[0097] 以下に説明する実施例は、秘密鍵 Kに基づく非線形変換処理の結果として得られ た中間鍵データ Lに対して、循環シフト処理を実行するのではなぐ中間鍵データ L のビット位置変更処理としてのダブルスワップ(Double Swap)処理を実行して、ラ ゥンド鍵を生成する処理例である。各ラウンドの進行に伴い、ビット位置変更処理とし てのダブルスワップ(Double Swap)処理を繰り返し実行する。
[0098] 図 14を参照して、本発明の喑号処理装置の実施例として、ダブルスワップ(Doubl e Swap)処理を適用してラウンド鍵生成処理を実行する鍵スケジュール部の構成、
および処理につ!/、て説明する。
[0099] 図 14に示す構成は、先に、図 10を参照して説明したビット循環シフト処理によって ラウンド鍵を生成する鍵スケジュール部の構成における iビット左循環シフト回路 211 を、 iビットダブルスワップ(Double Swap)演算回路 311に置き換え、また、図 10に 示す (r— 1) X iビット右循環シフト回路 212を、(r—1)回分 iビットダブルスワップ (Do uble Swap)逆演算回路 312に置きかえた構成である。すなわち、図 14に示すよう に、 iビットダブルスワップ(Double Swap)演算回路 31 1と、(r— 1)回分 iビットダブ ルスワップ(Double Swap)逆演算回路 312とからなるデータ変換部 310を有する。 その他の構成は、図 10を参照して説明した構成と同様の構成を持つ。
[0100] 図 14に示す鍵スケジュール部の処理について説明する。鍵スケジュール部に入力 する秘密鍵 Kを kビットとする。秘密鍵 Kを、非線形変換回路 301に入力し、非線形変 換処理を行い nビットの中間鍵データを生成する。中間鍵データをしとする。
[0101] 中間鍵データ Lは、セレクタ 302を介してレジスタ RegL303に入力され格納される 。セレクタ 302には、データ変換部 310の各処理部、すなわち iビットダブルスワップ( Double Swap)演算回路 311、および(r— 1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312が接続され、セレクタ 302を介してレジスタ RegL303に対し てそれぞれの回路における処理信号が入力され、レジスタ RegL303に格納された データのビット位置変更処理が実行される。なお、 iは 1以上の整数である。
[0102] 図 15を参照して、 iビットダブルスワップ(Double Swap)演算回路 311において 実行するビット位置変更処理例について説明する。図 15の例は、 128ビットの中間 鍵データ Lの iビットダブルスワップ(Double Swap)処理を例として示して!/、る。
[0103] 中間鍵データ Lを構成する 128ビットのデータ Aを、
A= a , a , · · · , a , a )、
0 1 126 127
とする。
aは、 128ビットの各ビットデータである。
さらに、
a [x→y]:、データ A中の連続ビットデータ a力、ら aまでのビット列、
b I c :ビット列 b、 cを連結したビット列、
とする。
[0104] 上記表現を適用すると、 128ビットデータに対する iビットダブルスワップ (Double Swap)演算は以下のように定義される。
128ビットデータ Aに対する iビット DoubleSwap演算によって得られるデータ Bを、 B = DoubleSwap (A)
128, i
とすると、
B = a [i→63] I a [ (128 -i)→127] | a [0→(i— 1) ] | a [64→ (127 -i) ] となる。
[0105] 図 15を参照して具体的な 128ビットデータに対する iビットダブルスワップ (Double
Swap)演算につ!/、て説明する。図 15にお!/、て、
(a)は、入力 128ビット、
(b)は、演算結果としての出力 128ビット、
を示している。
[0106] (a)の入力 128ビットは、 4つのパート A〜Aに区分される。各区分の構成ビットは
0 3
以下のように表現される。
A: a [0→(i— 1) ]、すなわち先頭 iビット、
0
A: a [i→63]、すなわち先頭 iビットの後続ビット〜データ Aの前半終端ビット
A: a [64→(127— i) ]、すなわちデータ Aの後半開始ビット〜末尾 iビットの先行ビ
2
ッ卜
A: a [ (128— i)→127]、すなわち末尾 iビット、
3
[0107] iビットダブルスワップ(Double Swap)演算回路 311では、この 4分割されたデー タ Aの構成ビットを図 15 (b)の出力データのように入れ替える処理を実行する。すな わち、
入力ビットの配列: A
0 I A
1 I A
2 I Aを、
3
出力ビットの配列: A
1 I A
3 I A A、
0 I 2
とするビットデータの位置変更処理を実行する。
[0108] この結果として、
128ビットデータ Aに対する iビット DoubleSwap演算によって得られるデータ Bを、 B = DoubleSwap (A)
128, i
としたとき、出力 Bは、
B = a [i→63] I a [ (128 -i)→127] | a [0→(i— 1) ] | a [64→ (127 -i) ] となる。
[0109] この DoubleSwap処理を実行するための処理信号力 S、図 14に示す iビットダブルス ヮップ(Double Swap)演算回路 311から、図 14に示すセレクタ 302を介してレジス タ RegL303に入力されて、レジスタ RegL303に格納されたデータのビット位置変更 を実行して、次のラウンドのラウンド鍵を生成する。さらに、次のラウンドでは、図 15に 示す (b)出力に対して、再度、図 14に示す iビットダブルスワップ(Double Swap) 演算回路 31 1によるビット位置変更処理、すなわち、図 15において説明した iビットダ ブルスワップ(Double Swap)処理が実行されて次のラウンドに対応するラウンド鍵 が生成される。
[0110] 図 15を参照して説明した DoubleSwap演算には以下の 2点のメリットがあげられる
*ビットの相対位置が大きく変化する力 S、循環シフトに比べて回路規模が増えない * Fesite 冓造に利用すると実装コストの削減効果
なお、これらの利点については、後段で説明する。
[0111] なお、 iビットダブルスワップ(Double Swap)演算回路 311をハードウェアとして構 成する場合、例えば図 16に示すような入力ビット 321の構成ビットの各出力ビット位 置を変更するビット位置変換回路 322によって実現可能である。ビット位置変換回路 322は、各ビット位置のビットデータを先に図 16を参照して説明した位置に変更する 入出力部を有する回路として構成され、出力ビット 323を生成して出力する。なお、 i ビットダブルスワップ(Double Swap)演算回路 311は、ハードウェアに限らず、ソフ トウエアとしてのプログラムによって実行する構成としてもよい。
[0112] さらに、図 14に示す鍵スケジュール部の(r—l)回分 iビットダブルスワップ(Double
Swap)逆演算回路 312は、 iビットダブルスワップ(Double Swap)演算回路 311 において実行されるビット位置変更処理によってすベてのラウンド演算に適用される ラウンド鍵の生成が終了した後、最初の中間鍵データ Lに戻す処理を実行する。
[0113] 例えばラウンド数 rの暗号処理では、最初の中間鍵データ Lが最初のラウンド鍵とし て利用されるので、 r—1回の iビットダブルスワップ(Double Swap)処理によって全 rラウンドに適用するラウンド鍵の生成が終了する。 (r—1)回分 iビットダブルスワップ( Double Swap)逆演算回路 312は、この r— 1回の iビットダブルスワップ(Double Swap)処理によって生成された最終ラウンドのラウンド鍵に適用されたデータに対す るビット位置変更処理を実行して、最初の中間鍵データ Lに戻す処理を実行する。
[0114] DoubleSwap逆演算は以下のように定義される。
「iビットダブルスワップ (Double Swap)逆演算定義」
128ビットデータ Aに対する iビット DoubleSwap逆演算によって得られるデータ Bを B = DoubleSwap— 1 (A)
128, i
とすると、
B = a [64→63 + i] | a [0→(63— i) ] | [ (64 + i)→127] | a [ (64— i)→63] となる。
[0115] 上記定義は、図 15に示す (b)出力を(a)入力に戻す iビットダブルスワップ (Double
Swap)逆演算に相当する。 (r—1)回分 iビットダブルスワップ(Double Swap)逆 演算回路 312では、(r—1)回分に相当する iビットダブルスワップ(Double Swap) 逆演算を実行することになる。しかし、実際に繰り返し逆演算を実行することは必要で なぐ(r—1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312をハードウ エアとして構成する場合、例えば図 17に示すような入力ビット 331の構成ビットの各 出力ビット位置を変更するビット位置変換回路 332によって実現可能である。
[0116] ビット位置変換回路 332は、最終ラウンドに適用したラウンド鍵としてレジスタ RegL 303に格納されたデータ、すなわち、(r—1)回分 iビットダブルスワップ(Double S wap)の処理後のデータである入力ビット 331に対してビット位置変更処理を実行し て、ビット位置変更のなされていない最初の中間鍵データ Lのビット配置に戻して出 力ビット 331を生成する処理を実行する。なお、この(r—1)回分 iビットダブルスワップ (Double Swap)逆演算回路 312についても、 iビットダブルスワップ(Double Swa P)演算回路 311と同様、ハードウェアに限らず、ソフトウェアとしてのプログラムによつ
て実行する構成としてもよい。
[0117] なお、上述した実施例では、ラウンド鍵を 128ビットデータとして、 128ビットのデー タに対する DoubleSwap演算および逆演算についての処理を説明した力 Double Swap演算および逆演算は 128ビット以外のビット数においても適用可能である。す なわち、一般化して 2mビット(mは 2以上の整数)のデータに対する DoubleSwap演 算は、以下のように定義できる。
[0118] 「iビットダブルスワップ(Double Swap)定義」
2mビットデータ A(mは 2以上の整数)に対する iビット DoubleSwap演算によって 得られるデータ Bを、
B = DoubleSwap (A)
2in、 i
とすると、
B = a[i→ (m-1)] | a[(2m— i)→(2m— 1)] | a[0→(i— 1)] | a[m→(2m— 1 i)]
として表現すること力 Sでさる。
[0119] 具体的には、先に図 15を参照して説明したように、 2mビットをビット 0〜ビット(2m
1)として示すと、
A: a[0→(i— 1)]、すなわち先頭 iビット、
0
A: a[i→(m— 1)]、すなわち先頭 iビットの後続ビット〜データ Aの前半終端ビット A: a[m→ (2m- 1 i) ]、すなわちデータ Aの後半開始ビット〜末尾 iビットの先行
2
ビット
A :&[(2111—1)→(2111—1)]、すなゎち末尾 "ット、
3
これらの 4分割データを、
入力ビットの配列: A
0 I A
1 I A
2 I Aを、
3
出力ビットの配列: A
1 I A
3 I A 、
0 I A
2
とするビットデータの位置変更処理を実行することになる。
[0120] 逆変換は同様に以下のように、定義可能である。
(r-1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312の実行する Do ubleSwap逆演算は以下のように定義される。
「iビットダブルスワップ (Double Swap)逆演算定義」
2mビットデータ A (mは 2以上の整数)に対する iビット DoubleSwap逆演算によつ て得られるデータ Bを、
B = DoubleSwap— 1 (A)
2m, i
とすると、
B = a [m→ (m- 1) + i] | a [0→ ( (m— 1) i)コ | [ (m + i)→ (2m— 1) ] | a [ (m -i)→(m- l) ]
となる。
[0121] このように、図 14に示すラウンド鍵を生成する鍵スケジュール部の構成は、先に、図
10を参照して説明したビット循環シフト処理によってラウンド鍵を生成する鍵スケジュ ール部の構成における iビット左循環シフト回路 211を、 iビットダブルスワップ (Doubl e Swap)演算回路 311に置き換え、また、図 10に示す (r— 1) X iビット右循環シフト 回路 212を、(r—1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312に 置きかえた構成であり、暗号化において適用する各ラウンド鍵は、以下のようにして 生成される。
[0122] 鍵スケジュール部に入力する kビットの秘密鍵 Kを、非線形変換回路 301に入力し 、非線形変換処理を行い nビットの中間鍵データ Lを生成して、中間鍵データ Lをセレ クタ 302を介してレジスタ RegL303に格納する。この最初のレジスタ RegL303格納 データは、最初のラウンドのラウンド鍵として出力される。さらに、このデータに対して 、 iビットダブルスワップ (Double Swap)演算回路 311によるビット位置変更処理、 すなわち、先に図 15を参照して説明したビット位置変更処理としての iビットダブルス ヮップ(Double Swap)演算が実行され、その結果が、レジスタ RegL303に格納さ れ、このレジスタ格納データが次のラウンドのラウンド鍵として出力される。
[0123] さらに、このレジスタ格納データに対して、 iビットダブルスワップ(Double Swap) 演算回路 31 1によってダブルスワップ (Double Swap)演算が繰り返し実行される。 このようにして、各ラウンド関数において適用するラウンド鍵 RK , RK , · · · , RK , RKが生成される。最後に (r—1)回分 iビットダブルスワップ (Double Swap)逆演 算回路 312によって、レジスタ RegL303に格納されたデータに対して、 DoubleSwa
P逆演算の r 1回分に相当する演算に対応するビット位置変更処理が実行されて実 行結果がレジスタ RegL303に格納される。このデータは、最初にレジスタ RegL303 に入力された中間鍵 Lと同じビット配置を持つデータとなる。
[0124] ラウンド数 rとした喑号処理において、鍵スケジュール部の実行する処理アルゴリズ ムは以下のように表現することができる。
or i= l to r— 1 do
RK—RegL
RegL^DoubleSwap (RegL)
RK—RegL
RegL^DoubleSwap ( · · · (DoubleSwap (DoubleSwap (RegL) ) ) )
[0125] 上記アルゴリズム中、
For i= 1 to r— 1 do
RK—RegL
RegL— DoubleSwap (RegL)
RK― (RegL) L
これらは、 iビットダブルスワップ(Double Swap)演算回路 311における iビットダブ ノレスワップ処理の繰り返し実行に基づくラウンド鍵の生成プロセスに相当し、最後の 処理、すなわち、
RegL— DoubleSwap い · · (DoubleSwap (DoubleSwap (RegL) ) ) )
この処理は、(r—1)回分 iビットダブルスワップ (Double Swap)逆演算回路 312 における DoubleSwap逆演算の r—1回分に相当する演算により元の中間鍵 Lを生 成する処理に相当する。
[0126] 先に、図 17を参照して説明したように、最後の r—1回の DoubleSwap逆変換はひ とつの関数としてビット位置の入れ替え演算として実装することが可能であり、巡回シ フト演算を r 1回まとめて行う演算と同程度の回路規模で実現可能である。結果とし て巡回シフト演算を利用したときと比較して、回路規模を増加させることなぐ効果的
にビット位置を変更して各ラウンド鍵の関連性を低下させたセキュリティの高い喑号処 理構成が実現されることになる。
[0127] 復号処理を実行する場合のラウンド鍵生成処理を実行する鍵スケジュール部の構 成例を図 18に示す。図 18に示す復号処理におけるラウンド鍵生成処理を実行する 鍵スケジュール部において、非線形変換回路 301、セレクタ 302、レジスタ RegL303 は、図 14に示す構成と同様であり、図 14に示す iビットダブルスワップ(Double Sw ap)演算回路 311の代わりに(r— 1)回分 iビットダブルスワップ(Double Swap)逆 演算回路 321が設定され、図 14に示す(r—1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312の代わりに iビットダブルスワップ(Double Swap)演算回路 322が設定されたデータ変換部 320を持つ。その他の構成は、図 14を参照して説明 した構成と同様の構成を持つ。
[0128] 図 18に示す鍵スケジュール部の処理について説明する。鍵スケジュール部に入力 する秘密鍵 Kを kビットとする。秘密鍵 Kを、非線形変換回路 301に入力し、非線形変 換処理を行い nビットの中間鍵データを生成する。中間鍵データをしとする。
[0129] 中間鍵データ Lは、セレクタ 302を介してレジスタ RegL303に入力され格納される 。セレクタ 302には、 iビットダブルスワップ(Double Swap)逆演算回路 321、および (r—1)回分 iビットダブルスワップ (Double Swap)演算回路 322が接続され、セレ クタ 302を介してレジスタ RegL303に対してそれぞれの回路における処理信号が入 力され、レジスタ RegL303に格納されたデータのビット位置変更処理が実行される。 なお、 iは 1以上の整数である。
[0130] 復号処理においては、喑号処理に用いた rラウンドの r個のラウンド鍵を喑号処理と は逆の順番で生成して出力することになる。従って、復号処理における鍵スケジユー ル部では、まず、レジスタ RegL303に格納された中間鍵データ L力 S、 (r— 1)回分 iビ ットダブルスワップ(Double Swap)演算回路 322に入力され、レジスタ RegL303 に格納されたデータに DoubleSwap演算の r—1回分に相当する演算を実行する。 この処理によって、暗号処理時の最終ラウンドに適用したラウンド鍵が生成される。
[0131] このラウンド鍵を復号処理における最初のラウンド鍵として出力する。さらに、このラ ゥンド鍵データは、 iビットダブルスワップ (Double Swap)逆演算回路 321に入力さ
れる c
[0132] iビットダブルスワップ(Double Swap)逆演算回路 321では、先に図 15を参照し て説明した処理と逆の処理が実行される。すなわち、図 15 (b)に示す出力を入力値 として、図 15 (a)に示す入力を出力値とするビット位置変更処理が実行されることに なる。この処理結果がレジスタ RegL303に格納されて、次のラウンドのラウンド鍵とし て利用される。さらに、次のラウンドでは、レジスタ RegL303の格納値に対して、 iビッ トダブルスワップ(Double Swap)逆演算回路 321 ί ou ble Swap)逆演算処理が実行され、ビット位置の変更が実行されて、
対応するラウンド鍵が生成される。
[0133] このようにして、各ラウンド毎にレジスタ RegL303に格納されたデータを、 iビットダ ブルスワップ(Double Swap)逆演算回路 321で、 DoubleSwap逆演算を行い、先 に図 9を参照して説明した様に各ラウンド関数に適用するラウンド鍵: RK , RK , · · · , RK , RKを順に生成して出力することができる。
2 1
[0134] なお、復号処理において利用される iビットダブルスワップ (Double Swap)逆演算 回路 321、および(r—1)回分 iビットダブルスワップ(Double Swap)演算回路 322 も、先に図 16、図 17を参照して説明したと同様、ビット位置変換回路を持つハードウ エアによって構成可能であり、また、ソフトウェアとしてのプログラムによって実行する 構成としてあよい。
[0135] ラウンド数 rとした復号処理において、鍵スケジ -ール部の実行する処理アルゴリズ ムは以下のように表現することができる。
RegL^DoubleSwap … (Double¾wap (DoubleSwap (RegL) ) ) ) For i = r to 2 do
RK—RegL
RegL— DoubleSwap (RegL)
RK—RegL
[0136] 上記アルゴリズム中の最初の処理、すなわち、
RegL— DoubleSwap … (Double¾wap (DoubleSwap (RegL) ) ) ) この処理は、(r 1)回分 i Swap)演算回路 322
おける DoubleSwap演算の r— 1回分に相当する演算により元の中間鍵 Lから喑号 処理における最終ラウンドのラウンド鍵、すなわち復号処理における最初のラウンド 鍵を生成する処理に相当する。
その後のステップ、すなわち、
For i = r to 2 do
RK—RegL
RegL— DoubleSwap (RegL)
RK—RegL
この処理は、復号処理における第 2ラウンド以降のラウンド鍵生成処理に相当し、 i ビットダブルスワップ(Double Swap)逆演算回路 321における DoubleSwap逆演 算の実行によるラウンド鍵の生成処理である。
[0137] なお、図 14、図 18は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理 の際のラウンド鍵生成処理を実行する構成である力 S、これらの機能を兼ね備えた構 成も構築可能である。この構成を図 19に示す。図 19に示す構成では、非線形変換 回路 301、セレクタ 302、レジスタ RegL303は、図 14、図 18に示す構成と同様であり 、さらに、図 14および図 18に示すダブルスワップ(Double Swap)演算および逆演 算回路をすベて備えたデータ変換部 330の構成を持つ。すなわち、
iビットダブルスワップ(Double Swap)演算回路 331、
iビットダブルスワップ(Double Swap)逆演算回路 332、
(r- 1)回分 iビットダブルスワップ(Double Swap)演算回路 333、
(r- 1)回分 iビットダブルスワップ(Double Swap)逆演算回路 334、
これらのビット位置変換処理回路を備えたデータ変換部 330を有する構成となって いる。
[0138] この構成では、暗号化処理および復号処理共に中間鍵データ Lを生成し、レジスタ RegL303に格納しておけば、 DoubleSwap演算、 DoubleSwap逆演算、 r— 1回の DoubleSwap演算に相当する演算、 r—l回の DoubleSwap逆演算に相当する演 算を行なうことが可能であり、暗号化時/復号時に利用されるラウンド鍵を生成するこ と力 Sできる。
[0139] 以上、説明したように、本発明の喑号処理装置におけるラウンド鍵生成処理におい ては、シフト処理によるラウンド鍵生成処理ではなぐ iビットダブルスワップ(Double Swap)演算処理、あるいは逆演算処理によってラウンド鍵を生成する構成となって!/ヽ る。この処理によって、巡回シフト演算を利用したときと比較して、回路規模を増加さ せることなぐ効果的にビット位置を変更して各ラウンド鍵の関連性を低下させたセキ ユリティの高い暗号処理構成が実現されることになる。以降でラウンド数 rは偶数であ るあのとする。
[0140] ダブルスワップ(DoubleSwap)変換あるいは逆変換によるビット位置変更では、シ フト処理と異なり、隣接するビットの順番を様々に入れ替えることになり、結果として各 ラウンド鍵の類似性や関連性を低下させることができる。このダブルスワップ (Double Swap)変換ある!/、は逆変換によるビット位置の効果的な入れ替え処理につ!/、て、図 20を参照して説明する。
[0141] 図 20は、 128ビットデータに対するダブルスワップ変換処理によって発生するビット 位置の変化を説明する図であり、
(a)初期的な中間鍵データ、
(b)ダブルスワップ変換処理 1回実行後のデータ、
(c)ダブルスワップ変換処理 2回実行後のデータ、
(d)ダブルスワップ変換処理 3回実行後のデータ、
これらの 4つのデータを示して!/、る。
[0142] (a)初期的な中間鍵データにおいて、先頭から i+ 1番目のビット [B]とそのビットの すぐ左に位置するビット [bl]に着目し、 iビット DoubleSwap変換を実行した場合を 考える。
[0143] (a)初期的な中間鍵データにお!/、ては左から i番目のビット [bl]が [B]の左隣に存 在する。ここで DoubleSwap変換を一回適用すると、
(b)ダブルスワップ変換処理 1回実行後のデータ、
の設定となる。
(b)のデータにおいて、 [B]はデータ左端に移動する。このとき [B]の左にはビット が存在しない。さらに、 DoubleSwap変換を一回適用すると、
(c)ダブルスワップ変換処理 2回実行後のデータ、
の設定となる。
(c)のデータにおいて、 [B]はデータ左端から 65番目のビット位置に移動する。こ の状態では、 [B]の左に位置するビット [b2]は、(b)のデータにおいて右端に存在し たビットデータ [b2]である。さらに、 DoubleSwap変換を一回適用すると、
(d)ダブルスワップ変換処理 3回実行後のデータ、
の設定となる。
(d)のデータにおいて、 [B]は、データ左端から 65 + i番目のビット位置に移動する 。この状態では、 [B]の左に位置するビット [b3]は、(c)のデータにおいて左端から i 番目に存在したビットデータ [b3]となる。
[0144] このように、 1つのビット位置のビット [B]に着目してダブルスワップ変換処理によつ て隣接ビット (左に隣接するビット)の変化を解析すると、ビット [B]隣り合うビット情報 が [bl]→ [なし]→[b2]→[b3]と変化していくことが理解される。この隣接ビットの変 化は、データを構成する複数のビット位置にお!/、て発生して!/、る。
[0145] このような隣接ビットの変化はシフト処理においては基本的に発生することがない。
従って、ラウンド鍵の関連性が発生することになる力 本発明に従ったダブルスワップ 処理によるビット位置変更を行なうことで、ビットの順番が入れ替わり、結果として、ラ ゥンド鍵のランダム性を向上させることになる。
[0146] このように、本発明の喑号処理装置におけるラウンド鍵生成処理においては、シフト 処理によるラウンド鍵生成処理ではなぐ iビットダブルスワップ(Double Swap)演 算処理、あるいは逆演算処理によってラウンド鍵を生成する構成を適用したことで、 回路規模を増加させることなぐ効果的にビット位置を変更して各ラウンド鍵の関連性 を低下させたセキュリティの高い暗号処理構成が実現される。
[0147] (2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理構成について
次に、 FeisteKフェイステル)型喑号のように、喑号処理対象データを nビットとした とき、ラウンド鍵として n/2ビットを利用する構成において上述のダブルスワップ (Do ubleSwap)演算を適用する実施例につ!/、て説明する。
[0148] 前述した実施例では、暗号処理対象データを nビットとし、ラウンド鍵も nビットデータ
として利用する例を説明した。しかし、先に、図 13を参照して説明したように、例えば Feistel (フェイステル)型暗号では、ラウンド鍵は n/2ビットとなる。に、図 13を参照 して説明したようにシフト処理を実行する構成では、中間鍵データ Lのサイズを nビット として生成して、上位および下位のビットを 2ラウンドで使用して 2ラウンドに一回のシ フト処理を行う構成としていた。
[0149] しかし、前述したように、このようなシフト処理で生成したラウンド鍵は、各ラウンド鍵 の相関性が高く攻撃に弱いという欠点がある。さらに、上位'下位の選択回路(図 13 に示すセレクタ 241)を追加する必要性があり、実装コストや面積が大きくなり望ましく ない。以下、このようなセレクタを省略し、 nビットの中間鍵データを生成して、上述し たダブルスワップ (DoubleSwap)演算および逆演算を適用して、 n/2ビットのラウン ド鍵を出力する鍵スケジュール部の構成例について図 21を参照して説明する。
[0150] 本処理例では、ダブルスワップ (DoubleSwap)演算を 2段階の処理、すなわち、
(a)スワップ(Swap)演算、
(b) iビットサブスワップ (SubSwap)演算、
これらの 2つの処理を交互に実行する構成とした。すなわち、
ダブルスワップ(DoubleSwap)演算
=スワップ(Swap)演算 + iビットサブスワップ(SubSwap)演算、
となる。
[0151] 図 21に示す構成では、非線形変換回路 401、セレクタ 402、レジスタ RegL403は 、図 19に示す構成と同様である。ただし、図 21に示す構成においては、図 19に示す 構成にぉレ、て利用して!/、たダブルスワップ演算および逆演算回路を持たず、その代 わりに、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらを備えたデータ変換部 410を持つ。なお、 iは 1以上の整数である。
[0152] まず、暗号化処理の際の n/2ビットラウンド鍵の生成プロセスについて説明する。
鍵スケジュール部に入力する秘密鍵 Kを kビットとする。秘密鍵 Kを、非線形変換回
路 401に入力し、非線形変換処理を行い nビットの中間鍵データを生成する。中間鍵
[0153] 中間鍵データ Lは、セレクタ 402を介してレジスタ RegL403に入力され格納される 。セレクタ 402には、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらのビット位置変更処理回路が接続され、予め設定されたアルゴリズムに従つ て、レジスタ RegL403に格納されたデータのビット位置変更処理が実行される。
[0154] ラウンドに応じてレジスタ RegL403に格納されたデータに対して、スワップ(Swap) 演算回路 41 1によるスワップ演算、および iビットサブスワップ(SubSwap)演算回路 4 12による iビットサブスワップ演算を交互に実行して、各ラウンド関数において適用す るラウンド鍵: RK , RK . · · · , RK , RKを生成する。なお、レジスタ RegL403に 格納されたデータは nビットであり、スワップ(Swap)演算回路 411によるスワップ演算 、および iビットサブスワップ(SubSwap)演算回路 412による iビットサブスワップ演算 はレジスタ RegL403に格納された nビットデータに対して実行する力 S、ラウンド鍵とし て出力するのは、常に、レジスタ RegL403に格納された nビットデータ中の n/2ビッ トデータのみとする。例えば、レジスタ RegL403に格納された nビットデータ中の上位 n/2ビットを各ラウンド鍵として出力する。
[0155] すべてのラウンド(rラウンド)の生成が終了した時点で、最後にレジスタ RegL403 に格納された nビットデータは、最初の初期的な中間鍵データ Lに戻す処理を実行す る。この処理を実行するのは、ジャンプ (Jumo )演算回路 413である。
[0156] スワップ(Swap)演算回路 41 1の実行するビット位置変更処理例について図 22を 参照して説明する。図 22は、 128ビットの中間鍵データ Lのスワップ(Swap)処理例 を示している。
[0157] スワップ(Swap)演算の定義につ!/、て説明する。
128ビットのデータ Aを、
A= a , a , · · · , a , a )、
0 1 126 127
とする。
aは、 128ビットの各ビットデータである。
さらに、
a [x→y]:、データ A中の連続ビットデータ a力、ら aまでのビット列、
b I c :ビット列 b、 cを連結したビット列、
とする。
[0158] 128ビットデータに対するスワップ(Swap)演算は以下のように定義できる。
「スワップ(Swap)演算定義」
128ビットデータ Aに対する Swap演算によって得られるデータ Bを、
B = Swap 128 (A)
とすると、
B = a [64→127] | a [0→63]
となる。
[0159] すなわち、図 22に示すように、(a)入力データの上位半分のデータ Aと、下位半分
0
のデータ Aを入れ替えて(b)出力を生成する処理がスワップ(Swap)演算によるビッ ト位置変更処理である。なお Swap演算は自分自身が逆変換となる。すなわち、 Swap演算 = swapi {i¾算
でめる。
[0160] なお、上述の例では、 128ビットのデータに対する Swap演算を定義した力 一般 化した 2mビット (mは 2以上の整数)のデータに対する Swap演算は、以下のように定 義できる。
「スワップ(Swap)演算定義」
2mビットデータ A (mは 2以上の整数)に対する Swap演算によって得られるデータ Bを、
B = Swap (A)
2m
とすると、
B = a [m→(2m- 1) ] | a [0→(m— 1) ]
として表現すること力 Sでさる。
[0161] 次に、図 23を参照して、 iビットサブスワップ(SubSwap)演算回路 412の実行する ビット位置変更処理例について説明する。図 23は、 128ビットデータのサブスワップ( SubSwap)処理例を示して!/、る。
[0162] iビットサブスワップ(SubSwap)演算の定義について説明する。
128ビットデータに対する iビットサブスワップ(SubSwap)演算は以下のように定義 できる。
「iビットサブスワップ(SubSwap)演算定義」
128ビットデータ Aに対する iビットサブスワップ(SubSwap)演算によって得られる データ Bを、
B = SubSwap (A)
128、 i
とすると、
B = a [ (64 + i)→127] | a [ (64 -i)→ (63 + i) ] | a [0→(63— i) ]
となる。
[0163] すなわち、図 23に示すように、(a)入力データの中央 2iビットデータ を固定し、デ ータ Aを除く上位ビッタデータ Aと、下位ビットデータ Aを入れ替えて(b)出力を生
1 0 2
成する処理が iビットサブスワップ(SubSwap)演算によるビット位置変更処理である。 なおサブスワップ(SubSwap)演算も、自分自身が逆変換となる。
[0164] なお、上述の例では、 128ビットのデータに対する SubSwap演算を定義した力 一 般化した 2mビット (mは 2以上の整数)のデータに対する SubSwap演算は、以下の ように定義できる。
「iビットサブスワップ(SubSwap)演算定義」
2mビットデータ A (mは 2以上の整数)に対する iビットサブスワップ(SubSwap)演 算によって得られるデータ Bを、
B = SubSwap (A)
2in、 i
とすると、
B = a [ (m + i)→127] | a [ (m— i)→(m—l + i) ] | a [0→(m—l—i) ] として表現すること力 Sでさる。
[0165] 図 22、図 23を参照して説明した
スワップ(Swap)演算、
サブスワップ(SubSwap)演算、
これらを連続して 1回ずつ実行すると、先に、図 15を参照して説明したダブルスヮッ プ(DoubleSwp)演算によるビット位置変更処理と同様のビット位置変更がなされる ことになる。
[0166] 図 21に示す鍵スケジュール部では、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
これらの各演算回路を適用したビット位置変更処理を交互に実行して各ラウンド鍵 を生成する。
[0167] 図 21に示す鍵スケジュール部のラウンド鍵の生成シーケンスについて説明する。
鍵スケジュール部に入力する kビットの秘密鍵 Kを、非線形変換回路 401に入力し、 非線形変換処理を行い nビットの中間鍵データ Lを生成して、中間鍵データ Lをセレ クタ 402を介してレジスタ RegL403に格納する。この最初のレジスタ RegL403格納 データ中の n/2ビット、例えば上位半分の n/2ビットが、最初のラウンドのラウンド鍵 として出力される。
[0168] さらに、このレジスタ RegL403格納データに対して、スワップ(Swap)演算回路 41 1によるビット位置変更処理、すなわち、先に図 22を参照して説明したビット位置変 更処理としてのスワップ(Swap)処理が実行され、その結果が、レジスタ RegL403に 入力され、この入力データ中の n/2ビット、例えば上位半分の n/2ビットが次のラウ ンド鍵として出力される。
[0169] さらに、このレジスタ RegL403格納データに対して、サブスワップ(SubSwap)演算 回路 412によるビット位置変更処理、すなわち、先に図 23を参照して説明したビット 位置変更処理としてのサブスワップ(SubSwap)処理が実行され、その結果が、レジ スタ RegL403に入力され、この入力データ中の n/2ビット、例えば上位半分の n/2 ビットが次のラウンド鍵として出力される。
[0170] 以下、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
これらの各演算回路を適用したビット位置変更処理を交互に実行して各ラウンド鍵 を生成する。このようにして、各ラウンド関数において適用するラウンド鍵 RK , RK ,
1 2
• · · , RK , RKが生成される。最後にレジスタ RegL403に格納されたデータに対 して、ジャンプ (Jump )演算回路 413によるビット位置変更処理が実行され、レジス タ RegL403に最初に格納された中間鍵データ Lに戻す処理が実行される。
[0171] ジャンプ (Jump )演算回路 413によるビット位置変更処理について、図 24を参照 して説明する。ジャンプ (Jump )演算回路 413によるビット位置変更処理は、図 24 に示すように、
スワップ(Swap)演算回路 41 1による r/2回のスワップ(Swap)演算と、 iビットサブスワップ(SubSwap)演算回路 412による(r/2— l )回の iビットサブスヮ ップ(SubSwap)演算を交互に繰り返して得られた結果を初期データに戻す演算と してのビット位置変更処理に相当する。先に説明したように、スワップ(Swap)演算と サブスワップ(SubSwap)演算はそれぞれ自分自身が逆変換になって!/、ること力 、 結果としては、ジャンプ (Jumo )演算回路 413によるビット位置変更処理は、図 24 に示すように、
スワップ(Swap)演算回路 41 1による r/2回のスワップ(Swap)演算と、 iビットサブスワップ(SubSwap)演算回路 412による(r/2— 1 )回の iビットサブスヮ ップ(SubSwap)演算を交互に繰り返す処理を再度実行することに相当する。
[0172] このジャンプ (Jump― )演算回路 413による Jump演算により、最後にレジスタ Reg L403に格納されたデータ力 S、スワップ演算およびサブスワップ演算を実行する前の 初期データである中間鍵データ Lの値に戻ることが保証される。
[0173] なお、図 21に示す各演算回路、すなわち、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらの演算回路は、先に、図 16、図 17を参照して説明したと同様のビット位置変 換回路によって実装可能である。従って、例えば、ジャンプ (JumtD )演算回路 413
は、巡回シフト演算を r 1回まとめて行う演算と同程度の回路規模で実現可能であ る。なお、これらのビット位置変更処理は図 16、図 17を参照して説明したと同様のハ 一ドウエア構成として実現しても、ソフトウェアによって実 fiする構成としてもよい。
[0174] 図 21に示す鍵スケジュール部における喑号処理実行時のラウンド鍵生成アルゴリ ズムについて説明する。すなわち、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらの演算回路によるビット位置変更処理を適用した n/2ビットのラウンド鍵生成 アルゴリズムは、以下のように示される。なお、ラウンド数は、偶数ラウンドとし r = rとし て表す。
For i= 1 to r— 1 do
RK— RegLの上位 n/2ビット
IF i= =odd
Swap (RegL)
IF i= = even
SubSwap (RegL)
RK—RegLの上位 n/2ビット
RegL^-Jump (RegL)
[0175] また、図 21に示す鍵スケジュール部を適用して復号処理を実行する際のラウンド鍵 生成アルゴリズムは、以下のようになる。
RegL^-Jump (RegL)
For i = r to 2 do
RKi— RegLの上位 n/2ビット
IF i= = even
Swap (RegL)
IF i= =odd
SubSwap (RegL)
RK— RegLの上位 n/2ビット
[0176] 復号処理においては、最初に、ジャンプ (Jump^)演算回路 413による Jump演算 を実行している。この処理によって、暗号処理時の最終ラウンドで適用したラウンド鍵 データを含むデータが、レジスタ RegL403にセットされる。その後は、喑号処理時と 同様、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
これらの演算回路によるビット位置変更処理を交互に実行して、各ラウンドのラウン ド鍵生成を実行する構成である。
[0177] 上述したように、図 21に示す構成により、暗号化/復号共に中間鍵データ Lを生成 してレジスタ RegL403に格納したデータに対して、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらの各演算回路によるビット位置変更処理を行なうことによりラウンド鍵を生成 すること力 Sできる。この実装により、循環シフト回路で必要であった選択回路(図 13に 示すセレクタ 241)を省略でき、なおかつ循環シフト回路で 4種類必要であった演算 回路の種類を 3つに減らすことが可能となり、実装コスト、実装面積の削減が可能とな
[0178] (2 - 5)本発明の第 3実施例に係るラウンド鍵の生成処理構成につ!/、て
次に、本発明の第 3実施例に係るラウンド鍵の生成処理構成について、図 25を参 照して説明する。以下において説明する実施例は、先に説明した構成によって生成 するラウンド鍵データに対して、ラウンド毎に異なる定数 Cを排他的論理和(EXOR) し、この結果をラウンド鍵とする構成である。この構成とすることで、
*中間鍵がオール 0やオール 1の場合にラウンド鍵が同じにならない。
* Slide attack (スライド攻撃)に対して十分な耐性をもつ。
これらの効果がもたらされる。
[0179] 本実施例の鍵スケジュール部の構成例を図 25に示す。図 25に示す鍵スケジユー
ル部の構成例は、先に図 21を参照して説明した鍵スケジュール部の構成に、定数生 成回路 420と、排他的論理和演算部 430を追加した構成である。なお、ここでは、図 25に示す鍵スケジュール部の構成をベースとした例を説明する力 先に図 14、図 15 、図 21を参照して説明したダブルスワップ演算と逆演算回路を持つ構成においても 、定数生成回路 420と、排他的論理和演算部 430を追加した構成が実現可能であり 、上述と同様の効果を奏する。ここでは、代表例として、図 19を参照して説明した鍵 スケジュール部の構成に、定数生成回路 420と、排他的論理和演算部 430を追加し た構成例にっレ、て説明する。
[0180] 図 25に示す構成は、各ラウンド (j)ごとに、異なる定数 C (l≤j≤r)を生成する定数
J
生成回路 420と、定数生成回路 421において生成したラウンド毎の定数 C (l≤j≤r)
J
と、レジスタ RegL403の各ラウンド毎のデータとの排他的論理和演算(EXOR)を実 行する排他的論理和(EXOR)演算部 430を追加した構成である。本実施例では、こ の排他的論理和(EXOR)演算部 430による演算結果をラウンド鍵 {RK , RK , · · ·
1 2
, RK , RK }として出力する。
[0181] この構成では、例えば、レジスタ RegL403の格納データの全てのビットが 0となった 場合でも、最終的に出力されるラウンド鍵 {RK , RK , · · · , RK , RK }が同じデ ータとならなレ、と!/、う効果がある。
[0182] 図 25に示す構成では、出力するラウンド鍵は n/2ビットであり、排他的論理和(EX OR)演算部 430では、例えば、レジスタ RegL403の nビット格納データの上位 n/2 ビットと、定数生成回路 420の生成するラウンド毎に異なる nビットのデータとの排他 的論理和(EXOR)演算を実行して、この結果をラウンド鍵として出力する。
[0183] この場合、定数生成回路 420の生成するラウンド毎に異なる定数は nビットのデータ となる力 S、 nビットのランダムな定数をラウンド数 rに応じて r通り生成する回路は、ビット 数 nが大きい場合にはその回路規模も大きくなるという問題がある。このような問題を 解決して、定数生成回路 420の回路規模の小型化を実現する構成につ!/、て説明す
[0184] 例えば、図 26に示すように、定数生成回路 420は、 nビットのデータをラウンド毎に 異なる mビット(m<n)のデータ bに分割して、 bを n/m回繰り返し使用する構成とし
て回路規模を小さくする。例えば、 n = 64の場合、定数生成回路 420は、ラウンド毎 に異なる n = 64ビットの定数 Cを生成することになる。
J
[0185] 定数生成回路 420は、例えば、 m= 16として、ラウンド (j)毎に異なる 16ビットのデ ータ bを適用して、以下の演算を実行して、 64ビットのラウンド毎に異なる定数 Cjを生
J
成して排他的論理和(EXOR)演算部 430に出力する。
Cj = ( (b < < < i) [EXOR] (Mask ) , (b < < <j) [EXOR] (Mask ) , (b < < < j 1 j 2 j k) [EXOR] (Mask ) , (b < < <1) [EXOR] (Mask ) )
3 j 4
上記式において、
b < < < iは、 16ビットのデータ bを iビット左シフトしたデータである。
j j
Maskは、予め設定された固定値としてのマスク値(16ビット)である。
(b < < < i) [EXOR] (Maskl)は、(b < < < i)と(Maskl)との排他的論理和演 j j
算を示す。
i, j , k, 1はそれぞれ予め決定されたシフト量であり、
MASK , MASK , MASK , MASKはそれぞれ予め決定されたマスク値(16ビ
1 2 3 4
ット)である。
[0186] すなわち、上記式は、
16ビットのデータ bをそれぞれ異なるシフト量 i, j, k, 1によってシフトした 16ビットデ
J
ータに対して、それぞれ異なるマスクイ直 Mask, Mask, Mask, Maskを適用した
1 2 3 4 排他的論理和演算を実行して得られた 4つの 16ビッデータを並べて 64ビットのラウン ド毎に異なる定数 Cを生成する式である。
J
[0187] このように、定数生成回路 420を、 nビットのデータをラウンド毎に異なる mビット(m <n)のデータ bに分割して、 bを n/m回繰り返し使用する構成とすることで回路規 j J
模を/ J、さくすること力できる。
[0188] また、例えば、図 25に示す鍵スケジュール部力 複数の異なる暗号処理に対応す る異なる鍵長のラウンド鍵を生成して出力する構成とする場合、定数生成回路 420も 、その出力鍵長に応じたビット長のデータを生成して出力することが必要となる。この 場合、定数生成回路 420が生成する定数を鍵長に応じて変えることによって、例えば 、異なる鍵長においてレジスタ RegL403の格納値 Lが同じ値になった場合にもラウ
ンド鍵を異なる値にすることができる。
[0189] 例えば、
(a)ラウンド数 rの kビットの鍵長、
(b)ラウンド数 rの kビットの鍵長、
2 2
(c)ラウンド数 rの kビットの鍵長、
3 3
これらの全てをサポートする構成とする場合には、定数生成回路 420は、複数の異 なる喑号処理に対応する全ラウンド数: r +r +r個の異なる mビットのデータ bを、
1 2 3 j 各ラウンドにおいて適用する。この構成により、異なる鍵長においてレジスタ RegL40 3の格納値 Lが同じ値になった場合にもラウンド鍵を異なる値にすることができる。
[0190] なお、 bをラウンドに応じたランダムな値とすると、 bを記録する回路の規模は大きく
J J
なってしまう。複数の異なる暗号処理に対応する全ラウンド数: r +r +r個より少な
1 2 3 い数の mビットのデータ bを設定し、これらを異なる暗号処理に適用する場合に適用
J
順を変更する構成としてもょレ、。
[0191] あるいは、 mビットの定数 bをある初期値からラウンド毎にある規則を用いて更新す
J
るような構成としてもよい。例えば、ガロア体 GF (2)上で定義される m次の既約多項 式 f (X)によって作られる拡大体 GF (2m)上の X倍演算を適用して初期値からラウンド 毎に異なる値を生成する規則が適用可能である。既約多項式 f (X)が原始多項式の 場合には、ある初期値から生成される X倍演算の値の周期は 2m—lとなるため、 2m— 1の異なるデータを生成することが可能となる。他に、上記規則を拡大体 GF (2m)上 の X—1倍演算などとしてもよい。
[0192] 図 25に示すように、レジスタ RegL403の格納データと、定数生成回路 420の生成 するラウンド毎に異なるデータとの排他的論理和(EXOR)演算を実行して、この結果 をラウンド鍵として出力する構成により、
*中間鍵がオール 0やオール 1の場合にラウンド鍵が同じにならない。
*各ラウンド鍵の関連性が排除され Slide attack (スライド攻撃)に対して十分な 耐性をもつ。
これらの効果がもたらされる。
[0193] [3.暗号処理装置の構成例]
最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としての ICモ ジユーノレ 700の構成例を図 27に示す。上述の処理は、例えば PC、 ICカード、リーダ ライタ、その他、様々な情報処理装置において実行可能であり、図 27に示す ICモジ ユール 700は、これら様々な機器に構成することが可能である。
[0194] 図 27に示す CPU(Central processing Unit)701は、喑号処理の開始や、終了、デ ータの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実 行するプロセッサである。メモリ 702は、 CPU701が実行するプログラム、あるいは演 算パラメータなどの固定データを格納する ROM (Read-Only-Memory)、 CPU701 の処理において実行されるプログラム、およびプログラム処理において適宜変化する パラメータの格納エリア、ワーク領域として使用される RAM (Random Access Memory )等からなる。また、メモリ 702は暗号処理に必要な鍵データや、暗号処理において 適用する変換テーブル (置換表)や変換行列に適用するデータ等の格納領域として 使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成され ることが好ましい。
[0195] 喑号処理部 703は、例えば上述した各種の喑号処理構成、例えば、
(ァ) SPN (Substitution Permutation Network)構造、
(ィ) Feiste 冓造、
これらの構成を適用した共通鍵ブロック喑号処理アルゴリズムに従った喑号処理、 復号処理を実行する。
[0196] また、暗号処理部 703は、上述した各実施例に対応した構成、すなわち、
(2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理
(2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理
(2— 5)本発明の第 3実施例に係るラウンド鍵の生成処理
これらの処理構成のいずれかに対応する構成を持つ鍵スケジュール部を持つ。
[0197] なお、ここでは、暗号処理手段を個別モジュールとした例を示した力 このような独 立した喑号処理モジュールを設けず、例えば喑号処理プログラムを ROMに格納し、 CPU701が ROM格納プログラムを読み出して実行するように構成してもよい。
[0198] 乱数発生器 704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数
の発生処理を実行する。
[0199] 送受信部 705は、外部とのデータ通信を実行するデータ通信処理部であり、例え ばリーダライタ等、 ICモジュールとのデータ通信を実行し、 ICモジュール内で生成し た暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行 する。
[0200] 以上、特定の実施例を参照しながら、本発明について詳解してきた。し力、しな力 Sら、 本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ること は自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的 に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の 欄を参酌すべきである。
[0201] なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、 あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理 を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに 組み込まれたコンピュータ内のメモリにインストールして実行させる力、、あるいは、各 種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させること が可能である。
[0202] 例えば、プログラムは記録媒体としてのハードディスクや ROM (Read Only Memory )に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、 CD — ROM(Compact Disc Read Only Memory), MO(Magneto optical)ディスク, DVD( Digital Versatile Disc),磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、 一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記 録媒体は、 V、わゆるパッケージソフトウェアとして提供することができる。
[0203] なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインス トールする他、ダウンロードサイトから、コンピュータに無線転送したり、 LAN(Local A rea Network),インターネットといったネットワークを介して、コンピュータに有線で転 送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵する ハードディスク等の記録媒体にインストールすることができる。
[0204] なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみ
ならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個 別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的 集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
産業上の利用可能性
上述したように、本発明の一実施例の構成によれば、共通鍵ブロック暗号処理にお けるラウンド鍵生成処理において、秘密鍵の変換処理によって生成した中間鍵をレ ジスタに格納し、レジスタ格納データを構成する部分データのスワップ(入れ替え)処 理を繰り返し実行してラウンド鍵を生成する。例えば、等しいビット数を持つ部分デー タの組を 2組設定するようにレジスタ格納データを 4つの部分データに区分し、各部 分データのスワップ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を 生成する。本構成により、各ラウンド鍵のビット配列を効果的に入れ替え、相関性の 低いラウンド鍵を生成することが可能となり、鍵の解析困難性を高めた安全性の高い 暗号処理構成が実現される。