説明

暗号処理装置、暗号処理装置の暗号処理方法および暗号処理プログラム

【課題】ランダムオラクルモデルで安全な任意の暗号アルゴリズムを原像計算困難性がないランダムオラクルモデルで安全な暗号アルゴリズムに変換する。
【解決手段】暗号アルゴリズムCからハッシュ関数Hが呼び出されたとき、加工関数fは、ハッシュ関数Hの入力Mに固定値cを付加した値「c||M」をハッシュ関数Hに入力する。ハッシュ関数Hは「c||M」のハッシュ値H(c||M)を出力し、暗号アルゴリズムCはハッシュ値H(c||M)を計算に使用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハッシュ関数を用いた暗号アルゴリズムを実行する暗号処理装置、暗号処理装置の暗号処理方法および暗号処理プログラムに関するものである。
【背景技術】
【0002】
ハッシュ関数の危殆により、ハッシュ関数を用いた暗号アルゴリズムの安全性が問題となる。通常、暗号アルゴリズムは、理想ハッシュ関数であるランダムオラクルモデルで安全である。
【0003】
ランダムオラクルは理想的なハッシュ関数である。定義は以下のとおり。
【0004】
「X」をハッシュ関数の入力の集合、「Y」をハッシュ関数の出力(ハッシュ値)の集合とする。XからYへ移すハッシュ関数の集合を「F」とおく。
ランダムオラクルは、Fからランダムに選んだ1つのハッシュ関数である。
【0005】
安全なハッシュ関数は「(1)衝突困難性」「(2)第二原像計算困難性」および「(3)原像計算困難性」を満たす。
各性質(1)〜(3)の定義は以下のとおりである。以下の定義において、「H」はハッシュ関数、「M」「M’(≠M)」はハッシュ関数Hの入力値、「H(x)」はxを入力したハッシュ関数Hの出力(ハッシュ値)を示す。
【0006】
(1)衝突困難性を満たすハッシュ関数とは、「H(M)=H(M’)」となる2つの入力値M、M’を見つけることが困難なハッシュ関数である。つまり、衝突困難性とは、ハッシュ値が同じである複数の入力値を求めることが難しいという性質のことである。
(2)第二原像計算困難性を満たすハッシュ関数とは、ランダムな入力値Mが与えられたとき、「H(M)=H(M’)」を満たす入力値M’を見つけることが困難なハッシュ関数である。つまり、第二原像計算困難性とは、第1の入力値とハッシュ値が同じである第2の入力値を求めることが難しいという性質のことである。
(3)原像計算困難性を満たすハッシュ関数とは、ランダムな値zが与えられたとき、「z=H(M)」を満たすMを見つけることが困難なハッシュ関数である。つまり、原像計算困難性とは、ハッシュ値に対応する入力値を求めることが難しいという性質のことである。
【0007】
上記(1)〜(3)には、(1)衝突困難性を満たすハッシュ関数は(2)第二原像計算困難性を満たし、(2)第二原像計算困難性を満たすハッシュ関数は(3)原像計算困難性を満たす、という関係がある。
また、(3)原像計算困難性が破られたハッシュ関数(原像計算困難性を満たさない[有さない]ハッシュ関数)は、(1)衝突困難性および(2)第二原像計算困難性を満たさない、という関係がある。つまり、原像計算困難性が破られたハッシュ関数は、安全なハッシュ関数が満たすべき上記3つの性質(1)〜(3)を満たさない関数であり、安全性が低いため一般的に使い物にならない。
【0008】
原像計算困難性が破られたランダムオラクルモデル(FPT−RO:First Preimage Tractable − Random Oracle)は、前述のランダムオラクル(RO)と以下の原像計算オラクル(FPO)との2つのオラクル(関数)から構成される。
【0009】
原像計算オラクル(FPO)とは、特定の一つの値zに対して「z=RO(M)」を満たす全ての入力値M(i=1、2、・・・)の中から入力値Mをランダムに1つ選び、選んだ入力値Mを出力する関数(オラクル)である。
【0010】
一般的に、暗号アルゴリズムは、ランダムオラクルモデル(上記性質(1)〜(3)を満たすRO)では安全であっても、(3)原像計算困難性がないランダムオラクルモデルでは安全でない。
【0011】
非特許文献1では、ハッシュ関数をランダムオラクルと仮定し、原像計算困難性が破られたランダムオラクルモデルで安全な電子署名方式を提案している。但し、使用する暗号方式がRSA−FDHである場合にしか適用できない。
非特許文献2では、原像計算困難性が破られたランダムオラクルモデルでOAEP(Optimal Asymmetric Encryption Padding)が安全であることを示している。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】A. Numayama, T. Isshiki, and K. Tanaka, Security o加工関数f Digital Signature Schemes in Weakened Random Oracle Models. PKC 2008. pp268−287.
【非特許文献2】Akinori Kawachi, Akira Numayama,Keisuke Tanaka,and Keita Xagaw, Security o加工関数f the OAEP Encryption Scheme in the Weakened Random Oracle Models. SCIS 2009. 3D1−2.
【発明の概要】
【発明が解決しようとする課題】
【0013】
本発明は、例えば、上記のような課題を解決するためになされたものであり、ランダムオラクルモデルで安全な任意の暗号アルゴリズム(RSA−FDH、OAEPに限らない)を、原像計算困難性がないランダムオラクルモデルで安全な暗号アルゴリズムへ変換することを目的とする。
【課題を解決するための手段】
【0014】
本発明の暗号処理装置は、
対象データに付加データを付加した対象加工データを暗号アルゴリズムCPUを用いて生成する対象加工データ生成部と、
前記対象加工データ生成部により生成された対象加工データをハッシュ関数の入力としてハッシュ値を暗号アルゴリズムCPUを用いて算出するハッシュ値算出部と、
前記ハッシュ値算出部により算出されたハッシュ値に基づいて前記対象データに対する暗号処理を暗号アルゴリズムCPUを用いて実行する暗号処理部とを備える。
【発明の効果】
【0015】
本発明によれば、例えば、ランダムオラクルモデルで安全な任意の暗号アルゴリズムを、原像計算困難性がないランダムオラクルモデルで安全な暗号アルゴリズムへ変換することができる。すなわち、理想モデル(ランダムオラクルモデル)で一方向性(原像計算困難性)が破られた場合でも安全性が保証される暗号アルゴリズムを作ることができる。
【図面の簡単な説明】
【0016】
【図1】実施の形態1における暗号アルゴリズムを示すフローチャート。
【図2】実施の形態1における暗号アルゴリズムの概要図。
【図3】実施の形態1における暗号アルゴリズムの概要図。
【図4】実施の形態1における暗号アルゴリズムの概要図。
【図5】実施の形態1における暗号アルゴリズムの概要図。
【図6】実施の形態1における暗号アルゴリズムの概要図。
【図7】実施の形態1における暗号アルゴリズムの概要図。
【図8】実施の形態1における暗号アルゴリズム強化装置100の機能構成図。
【図9】実施の形態1における暗号アルゴリズム強化装置100のハードウェア資源の一例を示す図。
【図10】実施の形態1における電子署名装置の電子署名生成方法を示すフローチャート。
【図11】実施の形態2における暗号アルゴリズムを示すフローチャート。
【図12】実施の形態2における暗号アルゴリズムの概要図。
【図13】実施の形態2における暗号アルゴリズムの概要図。
【図14】実施の形態2における暗号アルゴリズムの概要図。
【図15】実施の形態2における暗号アルゴリズムの概要図。
【図16】実施の形態2における暗号アルゴリズムの概要図。
【図17】実施の形態2における暗号アルゴリズムの概要図。
【発明を実施するための形態】
【0017】
実施の形態1.
ハッシュ関数を用いる暗号アルゴリズムでハッシュ関数の入力データに特定のデータを付加することにより、暗号アルゴリズムの安全性を強化する暗号アルゴリズム強化装置、方法およびプログラムについて説明する。
暗号アルゴリズムとは、データの暗号化、データの復号、電子署名の生成、電子署名の検証などの暗号処理を実行するための手順、方法またはプログラムである。
【0018】
図1は、実施の形態1における暗号アルゴリズムを示すフローチャートである。
実施の形態1における暗号アルゴリズムについて、図1に基づいて以下に説明する。
【0019】
実施の形態1における暗号アルゴリズムは、ハッシュ関数の従来の入力データに特定の付加データを付加する処理(S120参照)が含まれるという特徴を有する。
【0020】
S110において、ハッシュ関数が呼び出されるまでの処理を実行する。
S120において、ハッシュ値を求める対象のデータ(以下、「対象データ」という)に特定の付加データを付加する。対象データは、従来の暗号アルゴリズムにおいてハッシュ関数の入力となるデータである。以下、対象データに付加データを付加したデータを「対象加工データ」という。対象加工データは、実施の形態1においてハッシュ関数の入力となるデータである。
S130において、対象加工データをハッシュ関数に入力し、対象加工データのハッシュ値、つまり、対象データに対応するハッシュ値を算出する。
S140において、ハッシュ関数の呼び出しが残っている場合(YES)、S110に戻り、ハッシュ関数の呼び出しが残っていない場合(NO)、S150に進む。
S150において、残りの処理を実行し、暗号アルゴリズムの結果データを出力する。S130で算出されたハッシュ値は、S150において残りの処理で使用される。
【0021】
付加データを付加した対象データ(対象加工データ)をハッシュ関数の入力データにすることにより、暗号アルゴリズムの安全性を高めることができる。
【0022】
例えば、原像計算困難性がないランダムオラクルモデルにおいて、対象データがハッシュ値に基づいて特定される可能性を従来の「1/2」程度にすることができる。「k」(後述するセキュリティパラメータ)は付加データのビット数である。例えば、対象データに1ビット(「0」または「1」)の付加データを付加した場合(「k=1」の場合)、対象加工データからビット「0」を除去したデータと対象加工データからビット「1」を除去したデータとの2つのデータそれぞれに対象データである可能性が生じる。
【0023】
原像計算困難性がないランダムオラクルモデルとは、原像計算困難性がないランダムオラクルをハッシュ関数として使用するシステムを意味する。
【0024】
ランダムオラクルとは、同じ値が入力される度に同じ値を出力する関数であって、各入力値に対応する出力値が所定の値域内で一様に分布する関数である。
【0025】
原像計算困難性がないランダムオラクルモデルでは、算出されたハッシュ値に対応する複数の入力データ(ハッシュ値対応データ群)のうち一つの入力データが対象加工データの候補として特定される。ハッシュ値対応データ群には対象加工データが含まれる。
【0026】
例えば、ハッシュ値対応データ群に含まれる入力データの数が「i」である場合、特定入力データ(対象加工データの候補として特定された入力データ)が対象加工データである可能性は「1/i」である。
さらに、付加データのビット数が「k」である場合、特定入力データから求められる対象データの候補数は「2」である。
したがって、特定入力データが対象データである可能性は「1/(i×2)」である。
【0027】
ハッシュ関数の入力(対象データ)に付加データを付加することを条件として、「ランダムオラクルモデルで安全な暗号アルゴリズムは原像計算困難性がないランダムオラクルモデルで安全な暗号アルゴリズムである」と言える。このことは、強識別不可能性に基づいて証明される。
強識別不可能性とは、使用されている関数がランダムオラクルとハッシュ関数とのいずれであるか識別できないという性質をいう。
【0028】
つまり、実施の形態1における暗号アルゴリズムは、原像計算困難性があるランダムオラクルモデルにおいて安全であれば、原像計算困難性が破られたランダムオラクルモデルにおいても安全である。
【0029】
RSA、Rabin関数およびPaillier関数は、原像計算困難性を通常有する一方向性関数の一例である。
RSA−OAEP、RSA−PSS、RSA−KEMなどの暗号アルゴリズムやRSAの代わりにRabin関数またはPaillier関数を用いた暗号アルゴリズムは、原像計算困難性があるランダムオラクルモデルで安全な暗号アルゴリズムの一例であり、実施の形態1を適用する暗号アルゴリズムとして適している。
【0030】
次に、対象データに付加する付加データおよび付加データの付加方法について説明する。
【0031】
まず、付加データについて説明する。
付加データのサイズは、セキュリティパラメータとして予め定められた固定長「k」ビットである。付加データのサイズはkビット以上であってもよい。
付加データの値は、所定の固定値または対象データに含まれる部分データの値である。
つまり、kビットの固定値、対象データの先頭kビットまたは対象データの末尾kビットが付加データとなる。対象データの中間kビット(x+1ビット目からx+kビット目まで)を付加データとしてもよい。
【0032】
次に、付加データの付加方法について説明する。
付加データは、対象データの前または後ろに結合される。付加データを対象データ中に挿入してもよい。
【0033】
図2〜図7は、実施の形態1における暗号アルゴリズムの概要図である。
実施の形態1における暗号アルゴリズムの概要について、図2〜図7に基づいて以下に説明する。
【0034】
図2〜図7において、暗号アルゴリズムを「C(大文字)」、ハッシュ関数を「Hx(x:1、2、・・・、i)」、対象データに付加データを付加する加工関数を「f」とする。
ハッシュ関数Hxの従来の入力値(対象データ)を「Mx」、kビットの固定値を「c(小文字)」、入力値Mxの先頭kビットを「Mx[k]」、入力値Mxの末尾kビットを「Mx(k)」とする。
ビット列の結合を「||」で表す。「a||b」は、aの後ろにbを結合すること、またはbの前にaを結合することを意味する。
ハッシュ関数Hxにより求められる「y」のハッシュ値を「Hx(y)」とする。
【0035】
図2は、暗号アルゴリズムCにおいてi個のハッシュ関数Hxが呼び出され、加工関数fが各ハッシュ関数Hxの入力値Mxを「c||Mx」に変更し、各ハッシュ関数Hxが変更後の入力値「c||Mx」のハッシュ値Hx(c||Mx)を出力することを示している。暗号アルゴリズムCでは入力値Mxに対する暗号処理(例えば、電子署名の作成または検証)として、従来のハッシュ値Hx(Mx)の代わりにハッシュ値Hx(c||Mx)を用いた処理が行われる。
【0036】
図3〜図7は、同様に、加工関数fがハッシュ関数Hxの入力値Mxを「Mx||c」(図3)、「Mx[k]||Mx」(図4)、「Mx||Mx[k]」(図5)、「Mx(k)||Mx」(図6)、「Mx||Mx(k)」(図7)に変更することを示している。
【0037】
図2において、ハッシュ関数Hx毎に固定値cが異なっても構わない。
図2において、ハッシュ関数Hx毎に付加データおよび付加方法が異なっても構わない。例えば、「M1」が「c||M1」に変更され、「M2」が「M2||c」に変更され、「M3」が「Mx[k]||M3」に変更されてもよい。
図2〜図7それぞれにおいて、i個のハッシュ関数Hxは同じハッシュ関数であっても構わない。つまり、ハッシュ関数は一種類であっても構わない。
図2〜図7それぞれにおいて、ハッシュ関数の呼び出し回数が1回であっても構わない。つまり、暗号アルゴリズムCで呼び出されるハッシュ関数が一つであり、呼び出される回数が一回であっても構わない。
【0038】
図2〜図7それぞれにおいて、全体を装置(暗号処理装置の一例)とし、暗号アルゴリズムC(暗号処理部の一例)、加工関数f(対象加工データ生成部の一例)およびハッシュ関数Hx(ハッシュ値算出部の一例)をCPU(Central Processing Unit)により動作する処理部としてもよい。
【0039】
実施の形態1における暗号アルゴリズムは、例えば、携帯電話機のデジタル署名や本人確認方式に利用することができる。
【0040】
図8は、実施の形態1における暗号アルゴリズム強化装置100の機能構成図である。
実施の形態1における暗号アルゴリズム強化装置100の機能構成について、図8に基づいて以下に説明する。以下に説明する暗号アルゴリズム強化装置100は、実施の形態1における暗号アルゴリズムに基づいた暗号処理を実行する装置である。
【0041】
暗号アルゴリズム強化装置100(暗号処理装置)は、ハッシュ前処理部110、ハッシュ入力加工部120(対象加工データ生成部の一例)、ハッシュ処理部130(ハッシュ値算出部の一例)、ハッシュ後処理部140(暗号処理部の一例)およびデータ記憶部190を備える。
【0042】
ハッシュ前処理部110は、ハッシュ関数を実行するまでの前処理をCPUを用いて実行する。
例えば、ハッシュ前処理部110は、前処理として、電子署名を付ける文書データや暗号化する文書データを生成する。
【0043】
ハッシュ入力加工部120は、ハッシュ値を算出する対象データ(ハッシュ関数の従来の入力データ)に付加データを付加した対象加工データをCPUを用いて生成する。
【0044】
例えば、ハッシュ入力加工部120は、以下の(1)〜(7)いずれかの方法で対象加工データを生成する。ただし、以下の(1)〜(7)の各方法を複数組み合わせて対象加工データを生成してもよい。
(1)付加データとして固定データを対象データに付加する。
(2)付加データとして対象データに含まれる部分データを対象データに付加する。
(3)部分データとして対象データの先頭に位置する先頭データ(例えば、対象データの先頭kビット)を対象データに付加する。
(4)部分データとして対象データの末尾に位置する末尾データ(例えば、対象データの末尾kビット)を対象データに付加する。
(5)付加データを対象データの前に付加する。
(6)付加データを対象データの後ろに付加する。
(7)入力データに付加データが含まれる場合、入力データを対象加工データとして扱い、入力データに付加データが含まれない場合、入力データを対象データとして扱う。
【0045】
例えば、ハッシュ入力加工部120は、ハッシュ前処理部110により生成された文書データ(対象データの一例)に付加データを付加して文書加工データ(対象加工データの一例)を生成する。
【0046】
ハッシュ処理部130は、ハッシュ入力加工部120により生成された対象加工データをハッシュ関数の入力としてハッシュ値をCPUを用いて算出する。
例えば、ハッシュ処理部130は、ハッシュ入力加工部120により生成された文書加工データを入力としてハッシュ関数を実行してハッシュ値を算出する。
【0047】
ハッシュ後処理部140は、ハッシュ処理部130により算出されたハッシュ値に基づいて、対象データに対する暗号処理をCPUを用いて実行する。
例えば、ハッシュ後処理部140は、ハッシュ処理部130により算出されたハッシュ値を暗号化し、暗号化したハッシュ値を文書データの電子署名として文書データと共に所定の端末装置に送信する。
【0048】
データ記憶部190は、暗号アルゴリズム強化装置100で使用されるデータを記憶する。
対象データ、付加データおよび対象加工データはデータ記憶部190に記憶されるデータの一例である。
【0049】
図9は、実施の形態1における暗号アルゴリズム強化装置100のハードウェア資源の一例を示す図である。
図9において、暗号アルゴリズム強化装置100は、CPU911(マイクロプロセッサ、マイクロコンピュータともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、ドライブ装置904、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。ドライブ装置904は、FD(Flexible・Disk・Drive)、CD(Compact Disc)、DVD(Digital・Versatile・Disc)などの記憶媒体を読み書きする装置である。
【0050】
通信ボード915は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
【0051】
磁気ディスク装置920には、OS921(オペレーティングシステム)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
【0052】
プログラム群923には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU911により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【0053】
ファイル群924には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
【0054】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【0055】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【0056】
次に、電子署名を生成する電子署名装置を暗号アルゴリズム強化装置100の具体例として、電子署名装置の処理内容を説明する。
【0057】
図10は、実施の形態1における電子署名装置の電子署名生成方法を示すフローチャートである。
実施の形態1における電子署名装置の電子署名生成方法について、図10に基づいて以下に説明する。電子署名生成方法は、実施の形態1における暗号アルゴリズムに基づいた暗号処理方法の一例である。
【0058】
電子署名装置(暗号アルゴリズム強化装置100)の各「〜部」は、以下に説明する処理をCPUを用いて実行する。
【0059】
<S210>
ハッシュ前処理部110は、電子署名を付ける対象の文書データ(対象データの一例)を生成する。この文書データは、従来の暗号アルゴリズムにおいてハッシュ関数に入力されるデータである。
S210は、暗号アルゴリズム(図1参照)のS110に相当する。
S210の後、処理はS220に進む。
【0060】
<S220>
ハッシュ入力加工部120は、S210で生成された文書データに付加データを付加する。以下、付加データが付加された文書データを「文書加工データ(対象加工データの一例)」という。
S220は、暗号アルゴリズムのS120に相当する。
S220の後、処理はS230に進む。
【0061】
<S230>
ハッシュ処理部130は、S220で得られた文書加工データをハッシュ関数の入力としてハッシュ関数を実行する。ハッシュ関数の実行により、文書加工データのハッシュ値、つまり、文書データに対応するハッシュ値が算出される。
S230は、暗号アルゴリズムのS130に相当する。
S230の後、処理はS240に進む。
【0062】
<S240>
ハッシュ後処理部140は、S230で算出されたハッシュ値を秘密鍵で暗号化する。暗号化されたハッシュ値が文書データの電子署名となる。
S240は、暗号アルゴリズムのS110またはS150に相当する。
S240の後、処理はS250に進む。
【0063】
<S250>
ハッシュ後処理部140は、S210で生成された文書データとS240で生成された電子署名とを所定の端末装置に送信する。
S250は、暗号アルゴリズムのS110またはS150に相当する。
S250により、電子署名付き文書データの生成処理は終了する。
【0064】
端末装置は、電子署名を検証し、文書データが改ざんされていないか確認する。電子署名を検証する端末装置は暗号アルゴリズム強化装置100の一例である。
端末装置は、電子署名の一般の検証方法と同様に、文書データに対応するハッシュ値と電子署名を復号して得られるハッシュ値とが同じであれば文書データが改ざんされていないと判定する。
但し、端末装置は、電子署名装置と同じく、文書データに付加データを付加した文書加工データをハッシュ関数の入力として文書データに対応するハッシュ値を得る。端末装置が使用する付加データおよびハッシュ関数は電子署名装置が使用するものと同じである。
【0065】
実施の形態1における暗号アルゴリズム、つまり、ハッシュ関数の入力データに付加データを付加するという方法は、上記のような電子署名の生成処理または検証処理以外の暗号処理に適用しても構わない。
例えば、文書データを暗号化する処理または暗号化された文書データを復号する処理において、付加データを付加した文書データをハッシュ関数の入力にしても構わない。
【0066】
実施の形態1において、ランダムオラクルモデルで安全な任意の暗号アルゴリズムを原像計算困難性がないランダムオラクルモデルで安全な暗号アルゴリズムに変換する暗号アルゴリズム強化装置について説明した。
暗号アルゴリズム強化装置は、暗号アルゴリズムに利用されるハッシュ関数への入力を加工する。
【0067】
実施の形態1において、例えば、以下のような暗号アルゴリズムについて説明した。
【0068】
ハッシュ関数を用いた任意の暗号アルゴリズムに対して、ハッシュ関数の入力に特定ビット長の固定値を付加し、その値をハッシュ関数の入力とする入力加工処理を加えた暗号アルゴリズム。
【0069】
ハッシュ関数を用いた任意の暗号アルゴリズムで用いるハッシュ関数への入力に対して、その入力の先頭kビット分をその入力の先頭に付加し、その値をハッシュ関数の入力とする入力加工処理を加えた暗号アルゴリズム。
【0070】
ハッシュ関数を用いた任意の暗号アルゴリズムで用いるハッシュ関数への入力に対して、その入力の先頭kビット分をその入力の後ろに付加し、その値をハッシュ関数の入力とする入力加工処理を加えた暗号アルゴリズム。
【0071】
ハッシュ関数を用いた任意の暗号アルゴリズムで用いるハッシュ関数への入力に対して、その入力の後ろkビット分をその入力の後ろに付加し、その値をハッシュ関数の入力とする入力加工処理を加えた暗号アルゴリズム。
【0072】
任意の暗号アルゴリズムのうちランダムオラクルを用いたときに安全な暗号アルゴリズムであって、一方向性が破られたランダムオラクルを用いたときに安全であるかどうか証明されていない暗号アルゴリズム(例えば、RSA−PSS、RSA−KEM)に対して、入力加工処理を加えた暗号アルゴリズム。
【0073】
ハッシュ関数を用いた暗号アルゴリズムは、必ず、ハッシュ関数にある入力を与え、その出力を暗号アルゴリズムの計算で用いる。
このハッシュ関数の入力Mを変換fでf(M)に変換し、f(M)をハッシュ関数の入力とし、その出力を暗号アルゴリズムの計算で用いる。
以下は、fの具体例である。
(1)f(M)=M||c
(2)f(M)=c||M
(3)f(M)=M[k]||M
(4)f(M)=M||M[k]
(5)f(M)=M||M(k)
「c」は固定値、「M[k]」はMの先頭kビット、「M(k)」はMの後ろkビットである。また、cの長さおよびkの値は、セキュリティパラメータがsビットを示す場合、s以上の値となる。
【0074】
実施の形態2.
ハッシュ関数の入力データに付加データが含まれている場合、入力データをそのままハッシュ関数に入力し、ハッシュ関数の入力データに付加データが含まれていない場合、入力データに付加データを付加した加工データをハッシュ関数に入力する形態について説明する。
以下、実施の形態1と異なる事項について説明する。説明を省略する事項は実施の形態1と同様である。
【0075】
図11は、実施の形態2における暗号アルゴリズムを示すフローチャートである。
実施の形態2における暗号アルゴリズムについて、図11に基づいて以下に説明する。
【0076】
実施の形態2において暗号アルゴリズムは、実施の形態1(図1参照)のS120をS121およびS122に変更したものである。その他(S110、S130〜S150)は実施の形態1と同じである。
以下、S121とS122とについて説明する。
【0077】
S121において、ハッシュ関数が呼び出されたときの入力データ(対象データまたは対象加工データ)に付加データが含まれるか、つまり、入力データが対象加工データであるか判定する。
入力データに付加データが含まれる場合(YES)、S130に進む。
入力データに付加データが含まれない場合(NO)、S122に進む。
【0078】
S122において、S120と同様、入力データ(対象データ)に付加データを付加して対象加工データを生成する。入力データに付加データ(例えば、「11001」)の一部(「110」)が含まれる場合、付加データの残り(「01」)を入力データに付加して対象加工データを生成してもよい。つまり、入力データに含まれる付加データのビット数が所定のビット数kより小さい場合、kビットに足りない分を入力データに付加してもよい。
【0079】
S130では、対象加工データ(入力データまたは入力データ+付加データ)がハッシュ関数に入力される。
【0080】
図12〜図17は、実施の形態2における暗号アルゴリズムの概要図である。
図12〜図17は、それぞれ実施の形態1における図2〜図7に対応している。
【0081】
図12は、加工関数fが入力値Mxまたは「c||Mx」をハッシュ関数Hxの入力にすることを示している。
加工関数fは、複数のハッシュ関数の入力値Mxに対し、固定値cを含む入力値Mxをそのままハッシュ関数Hxに入力し、固定値cを含まない入力値Mxを「c||Mx」に変更してハッシュ関数Hxに入力する。
図13〜図17も同様である。付加データ(c、Mx[k]またはMx(k))と付加方法(Mxの前に付加または後ろに付加)との少なくともいずれかが図12とは異なる。
【0082】
入力データ(入力値Mx)に付加データが含まれるか否かは、例えば以下のように判定される。
(1)入力データの先頭kビットが付加データか(図12、14、16)。
(2)入力データの末尾kビットが付加データか(図13、15、17)。
(3)入力データの先頭部分が付加データ(または、同じkビット)の繰り返しか(図14)。
(4)入力データの先頭kビットと最終kビットが同じか(図15、16)。
(5)入力データの末尾部分が付加データ(または、同じkビット)の繰り返しか(図17)。
また、暗号アルゴリズムCの仕様(例えば、ハッシュ関数の入力フォーマット)に基づいて判定されてもよい。
【0083】
実施の形態2により、入力データに付加データを不要に付加することを防ぐことができる。
【0084】
実施の形態1において、例えば、以下のような暗号アルゴリズムについて説明した。
【0085】
ハッシュ関数を用いた任意の暗号アルゴリズムで、特定のビット長以上の長さを持つ固定値が付加されていないハッシュ関数への入力に特定のビット長の固定値を付加し、その値をハッシュ関数の入力とする処理を加えた暗号アルゴリズム。
【0086】
ハッシュ関数を用いた任意の暗号アルゴリズムで、ハッシュ関数への入力のフォーマットとして、あるビット長k以上の特定ビットパタンが入力の先頭で2回以上現れない場合、ハッシュ関数への入力に対して、その入力の先頭kビット分をその入力の先頭に付加し、その値をハッシュ関数の入力とする処理を加えた暗号アルゴリズム。
【0087】
ハッシュ関数を用いた任意の暗号アルゴリズムで、ハッシュ関数への入力のフォーマットとして、あるビット長k以上の特定ビットパタンが入力の先頭と後ろに現れない場合、ハッシュ関数への入力に対して、その入力の先頭kビット分をその入力の後ろに付加し、その値をハッシュ関数の入力とする処理を加えた暗号アルゴリズム。
【0088】
ハッシュ関数を用いた任意の暗号アルゴリズムで、ハッシュ関数への入力のフォーマットとして、あるビット長kビット以上の特定ビットパタンが入力の後ろで2回以上現れない場合、ハッシュ関数への入力に対して、その入力の後ろkビット分をその入力の後ろに付加し、その値をハッシュ関数の入力とする処理を加えた暗号アルゴリズム。
【符号の説明】
【0089】
100 暗号アルゴリズム強化装置、110 ハッシュ前処理部、120 ハッシュ入力加工部、130 ハッシュ処理部、140 ハッシュ後処理部、190 データ記憶部、C 暗号アルゴリズム、f 加工関数、H ハッシュ関数、901 表示装置、902 キーボード、903 マウス、904 ドライブ装置、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

【特許請求の範囲】
【請求項1】
対象データに付加データを付加した対象加工データを暗号アルゴリズムCPUを用いて生成する対象加工データ生成部と、
前記対象加工データ生成部により生成された対象加工データをハッシュ関数の入力としてハッシュ値を暗号アルゴリズムCPUを用いて算出するハッシュ値算出部と、
前記ハッシュ値算出部により算出されたハッシュ値に基づいて前記対象データに対する暗号処理を暗号アルゴリズムCPUを用いて実行する暗号処理部と
を備えたことを特徴とする暗号処理装置。
【請求項2】
前記対象加工データ生成部は、前記付加データとして固定データを前記対象データに付加して前記対象加工データを生成する
ことを特徴とする請求項1記載の暗号処理装置。
【請求項3】
前記対象加工データ生成部は、前記付加データとして前記対象データに含まれる部分データを前記対象データに付加して前記対象加工データを生成する
ことを特徴とする請求項1記載の暗号処理装置。
【請求項4】
前記対象加工データ生成部は、前記部分データとして前記対象データの先頭に位置する先頭データを前記対象データに付加して前記対象加工データを生成する
ことを特徴とする請求項3記載の暗号処理装置。
【請求項5】
前記対象加工データ生成部は、前記部分データとして前記対象データの末尾に位置する末尾データを前記対象データに付加して前記対象加工データを生成する
ことを特徴とする請求項3記載の暗号処理装置。
【請求項6】
前記対象加工データ生成部は、前記付加データを前記対象データの前に付加して前記対象加工データを生成する
ことを特徴とする請求項1〜請求項5いずれかに記載の暗号処理装置。
【請求項7】
前記対象加工データ生成部は、前記付加データを前記対象データの後ろに付加して前記対象加工データを生成する
ことを特徴とする請求項1〜請求項5いずれかに記載の暗号処理装置。
【請求項8】
前記対象加工データ生成部は、入力データに前記付加データが含まれる場合、前記入力データを前記対象加工データとし、入力データに前記付加データが含まれない場合、前記入力データを前記対象データとして前記対象加工データを生成する
ことを特徴とする請求項1〜請求項7いずれかに記載の暗号処理装置。
【請求項9】
対象加工データ生成部が、対象データに付加データを付加した対象加工データを暗号アルゴリズムCPUを用いて生成し、
ハッシュ値算出部が、前記対象加工データ生成部により生成された対象加工データをハッシュ関数の入力としてハッシュ値を暗号アルゴリズムCPUを用いて算出し、
暗号処理部が、前記ハッシュ値算出部により算出されたハッシュ値に基づいて前記対象データに対する暗号処理を暗号アルゴリズムCPUを用いて実行する
ことを特徴とする暗号処理装置の暗号処理方法。
【請求項10】
請求項9記載の暗号処理方法をコンピュータに実行させる暗号処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate