JP2012068436A - ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム - Google Patents
ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム Download PDFInfo
- Publication number
- JP2012068436A JP2012068436A JP2010213244A JP2010213244A JP2012068436A JP 2012068436 A JP2012068436 A JP 2012068436A JP 2010213244 A JP2010213244 A JP 2010213244A JP 2010213244 A JP2010213244 A JP 2010213244A JP 2012068436 A JP2012068436 A JP 2012068436A
- Authority
- JP
- Japan
- Prior art keywords
- value
- function
- bit length
- input
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 45
- 238000004364 calculation method Methods 0.000 claims description 225
- 230000006870 function Effects 0.000 description 509
- 238000010586 diagram Methods 0.000 description 15
- 238000000605 extraction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Images
Abstract
【解決手段】ハッシュ値演算装置は、任意ビット長の値Mを入力として関数Fを計算してtビット長(tは1以上の整数)の値wを求め、値wを入力として関数gを計算してdビット長(dはt以上の整数)の値kを求め、値kを鍵成分とし、nビット長の所定の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求め、値kを鍵成分とし、nビット長の所定の値c2を平文成分として、ブロック暗号の暗号化関数E2を計算してnビット長の値yyを求め、値yと値yyとを入力として関数hを計算してn’ビット長(n’は1以上2n以下の整数)の値zをハッシュ値として求める。
【選択図】図3
Description
ここで、非特許文献1〜3におけるハッシュ関数が衝突困難性の性質を満たすためには、用いる暗号化関数が理想化されたブロック暗号における暗号化関数である必要がある。
ここで、非特許文献4,5におけるハッシュ関数が擬似ランダムオラクルの性質を満たすためには、用いる暗号化関数が理想化されたブロック暗号における暗号化関数である必要がある。また、非特許文献4,5におけるハッシュ関数の安全性のセキュリティレベルはO(2s/2)以下である。なお、安全性のセキュリティレベルとは、擬似ランダムオラクルの性質を破るために必要となる計算量である。
ここで、非特許文献6におけるハッシュ関数が、擬似ランダムオラクルの性質を満たすためには、用いる暗号化関数が理想化されたブロック暗号における暗号化関数である必要がある。
非特許文献4,5に記載されたハッシュ関数は、ブロック暗号の暗号化関数を用いたハッシュ関数である。そして、このハッシュ関数は、用いる暗号化関数が理想化されたブロック暗号における暗号化関数で、その出力長がnビットの場合、擬似ランダムオラクルの性質を満たすものの、安全性のセキュリティレベルがO(2n/2)である。
非特許文献6に記載されたハッシュ関数は、入出力が固定長でありランダムオラクルの性質を満たす関数を使う必要がある。
この発明は、例えば、ランダムオラクルの性質を満たす関数を用いることなく、出力長がnビット長のブロック暗号の暗号化関数を用いて、擬似ランダムオラクルの性質を満たし、かつ、安全性のセキュリティレベルが少なくともO(2n)となるハッシュ関数を構成することを目的とする。
任意ビット長の値Mを入力する任意長値入力部と、
前記任意長値入力部が入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算部と、
前記関数計算部が求めた値wを入力として、関数gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算部と、
前記鍵成分計算部が生成した値kを鍵成分とし、nビット長の所定の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算部と、
前記鍵成分計算部が生成した値kを鍵成分とし、nビット長の所定の値c2を平文成分として、ブロック暗号の暗号化関数E2を計算してnビット長の値yyを求める暗号化関数E2計算部と、
前記暗号化関数E1計算部が求めた値yと、前記暗号化関数E2計算部が求めた値yyとを入力として、関数hを計算してn’ビット長(n’は1以上2n以下の整数)の値zをハッシュ値として求めるハッシュ値計算部と
を備えることを特徴とする。
まず、ハッシュ関数の安全性の概念について説明する。
ランダムオラクルの性質を満たすハッシュ関数Hとは、以下の1,2が与えられたハッシュ関数である。
1.(リスト):全ての入力値と、各入力値に対してランダムに選択した出力値とのペアを記録したリストを持つ。
2.(順方向の値を出力するオラクル):入力値xに対し、リストから入力値xに対する出力値zを検索して、値zを出力する。つまり、H(x)=zとなる値zを出力する。
(1)〜(3)の各性質の定義は以下の通りである。以下の定義において、「H」は、ハッシュ関数を示す。「M」「M’(≠M)」は、ハッシュ関数Hの入力値を示す。「H(x)」は、xを入力したハッシュ関数Hの出力(ハッシュ値)を示す。
(2)第二原像計算困難性を満たすハッシュ関数とは、ランダムな入力値Mが与えられたとき、「H(M)=H(M’)」を満たす入力値M’を見つけることが困難なハッシュ関数である。つまり、第二原像計算困難性とは、第1の入力値とハッシュ値が同じである第2の入力値を求めることが難しいという性質である。
(3)原像計算困難性を満たすハッシュ関数とは、ランダムな値zが与えられたとき、「z=H(M)」を満たすMを見つけることが困難なハッシュ関数である。つまり、原像計算困難性とは、ハッシュ値に対応する入力値を求めることが難しいという性質である。
また、(3)原像計算困難性が破られたハッシュ関数(原像計算困難性を満たさないハッシュ関数)は、(1)衝突困難性、及び、(2)第二原像計算困難性を満たさないという関係がある。つまり、原像計算困難性が破られたハッシュ関数は、安全なハッシュ関数が満たすべき(1)〜(3)の性質を満たさない関数であり、安全性が低いため一般的に使い物にならない。
しかし、ランダムオラクルの性質を満たすハッシュ関数を実現することは困難であることが知られている。そのため、これらの公開鍵暗号、電子署名アルゴリズムを実現する際は、ランダムオラクルの性質を満たすハッシュ関数に代え、SHA−256(Secure Hash Algorithm−256)などのハッシュ関数を用いて運用されている。
ここで、ハッシュ関数で用いる内部関数をP、Pを用いて構成したハッシュ関数をH[P]とする。H[P]が擬似ランダムオラクルの性質を満たすとは、どんな識別者でも、H[P]とランダムオラクルの性質を満たすハッシュ関数とを識別できないようなPをシミュレートするシミュレータSが存在することである。
ここで、H[P]が選択原像計算困難性を満たす場合とは、任意の攻撃者Aがハッシュ関数の出力値zを決め(但し、この時点では、Aはその入力値を知らない)、攻撃者Aはzの入力値を求めようとした場合に、求めることができない場合である。
kを固定し、順方向の置換計算するのが関数E(k,・)とすると、復号関数Dは逆方向の置換計算する関数E−1(k,・)である。
理想化されたブロック暗号とは、全てのブロック暗号の関数の集合からランダムに1つブロック暗号の関数を取ってきた場合におけるブロック暗号の関数のことである。
この場合、理想的なブロック暗号を用いていないため、得られたハッシュ関数は、擬似ランダムオラクルの性質を満たすハッシュ関数とはならない。しかし、ランダムオラクルの性質を満たす関数を用いた場合に安全であることが証明されているため、ある程度の安全性があるものと認められる。
しかし、以下で説明するハッシュ関数では、非特許文献4,5に記載されたハッシュ関数と同等の安全性を満たすのに必要なブロック暗号の暗号化関数の出力長が半分以下でよい。つまり、非特許文献4,5に記載されたハッシュ関数に比べ、用いる暗号化関数の出力長が小さくて済む。そのため、例えば、以下で説明するハッシュ関数を回路で実現した場合、回路規模を小さくすることができる。
図2は、図1に示す実施の形態1に係るハッシュ値演算装置10の動作を示すフローチャートである。
図3は、図1に示す実施の形態1に係るハッシュ値演算装置10により実現されるハッシュ関数の構造図である。なお、図3では、各値の下に括弧書でその値のビット長を示す。例えば、値Mは任意長であり、値wはtビット長である。
図1に示すハッシュ値演算装置10は、任意長値入力部11、関数計算部12、鍵成分計算部13、暗号化関数E1計算部14、暗号化関数E2計算部15、ハッシュ値計算部16を備える。
任意長値入力部11は、任意ビット長の値Mを入力装置により入力する。
関数計算部12は、(S1)で入力された値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを処理装置により求める。
鍵成分計算部13は、(S2)で求められた値wを入力として、関数gを計算してdビット長(dはt以上の整数)の値kを処理装置により求める。
暗号化関数E1計算部14は、(S3)で求められた値kを鍵成分とし、nビット長(nは1以上の整数)の固定値c1を平文成分として、暗号化関数E1を計算してnビット長の値yを処理装置により求める。
暗号化関数E2計算部15は、(S3)で求められた値kを鍵成分とし、nビット長の固定値c2を平文成分として、暗号化関数E2を計算してnビット長の値yyを処理装置により求める。
なお、(S4)と(S5)とは並列に実行してもよい。
ハッシュ値計算部16は、(S4)で求められた値yと、(S5)で求められた値yyとを入力として、関数hを計算してn’ビット長(ここでのn’は1以上2n以下の整数)の値zをハッシュ値として求める。
関数Fについては、後の実施の形態で詳しく説明する。
関数gは、例えば、(d−t)ビット長の固定値cを用いて、入力値wと値cとをビット結合する関数である。ビット結合の方法は、w||cでもよいし、c||wでもよいし、値cのビットと値wのビットとをそれぞれ決められたルールでシャッフルして任意の順に結合してもよい。なお、“||”という記号は、ビット列の結合を意味する。つまり、w||cであれば、値wの後に値cを付加するという意味であり、c||wであれば、値cの後に値wを付加するという意味である。
暗号化関数E1と暗号化関数E2とは同じ関数であってもよいし、異なる関数であってもよい。但し、暗号化関数E1と暗号化関数E2とが同じ関数である場合、値c1と値c2とを異なる値とする。
関数hは、例えば、2つの入力された値y、値yyをビット結合し、そのビットからn’ビット選んで出力する関数である。なお、値y、値yyをビット結合の方法は、関数gにおいて値wと値cとのビット結合の方法と同様に、値yと値yyとをそのまま結合してもよいし、ビットを混ぜて結合してもよい。
実施の形態2では、実施の形態1とは異なるハッシュ関数について説明する。
図5は、図4に示す実施の形態2に係るハッシュ値演算装置10の動作を示すフローチャートである。
図6は、図4に示す実施の形態2に係るハッシュ値演算装置10により実現されるハッシュ関数の構造図である。なお、図6では、図3と同様に、各値の下に括弧書でその値のビット長を示す。
図4に示すハッシュ値演算装置10は、暗号化関数E2計算部15を備えていない点で、図1に示すハッシュ値演算装置10と異なる。
鍵成分計算部13は、(S12)で求められた値wを入力として、関数Gを計算してdビット長の値kを処理装置により求める。
暗号化関数E1計算部14は、(S13)で求められた値kを鍵成分とし、nビット長の固定値c1を平文成分として、暗号化関数E1を計算してnビット長の値yを処理装置により求める。
ハッシュ値計算部16は、(S14)で求められた値yとを入力として、関数Hを計算してn’ビット長(ここでのn’は1以上n以下の整数)の値zをハッシュ値として求める。
関数Fについては、後の実施の形態で詳しく説明する。
関数Gは、例えば、(d−t)ビット長の固定値cを用いて、入力値wと値cとをビット結合する関数である。入力値wと値cとのビット結合の方法は、入力値wと値cとをそのまま結合してもよいし、ビットを混ぜて結合してもよい。
関数Hは、例えば、入力された値yからn’ビット選んで出力する関数である。
実施の形態3では、実施の形態1,2における関数Fの一例について説明する。
図8は、図7に示す実施の形態3に係る関数計算部12の動作を示すフローチャートである。
図9は、図7に示す実施の形態3に係る関数計算部12により実現される関数Fの構造図である。なお、図9では、図3と同様に、各値の下に括弧書でその値のビット長を示す。
関数計算部12は、パディング部21、分割部22、鍵成分k1計算部23、暗号化関数Ej,1計算部24、関数R計算部25、関数p計算部26、暗号化関数Ej,2計算部27、関数S計算部28、鍵成分kj計算部29、関数V計算部30、変数j制御部31を備える。
パディング部21は、任意長の値Mに対して、パディング関数padを用いて、所定の値を付加して(L’+L(i−1))ビット長(L’は1以上d以下の整数、ここでのLは1以上d−n以下の整数、iは1以上の整数)の値M’を処理装置により生成する。
分割部22は、(S21)で生成された値M’を先頭から、最初はL’ビット、以降Lビットづつに分割して、L’ビット長の値m[1]と、Lビット長の値m[2],...,値m[i]を処理装置により生成する。
変数j制御部31は、変数jを1に初期化する。
鍵成分k1計算部23は、(S22)で生成された値m[j](つまり、値m[1])を入力として、関数T[j](つまり、関数T[1])を計算してdビット長の値k[j](つまり、値k[1])を処理装置により求める。
暗号化関数Ej,1計算部24は、(S24)又は後述する(S32)で求めた値k[j]を鍵成分とし、nビット長の値y[j−1](値y[0]は固定値IV)を平文成分として、暗号化関数Ej,1を計算してnビット長の値x[j]を処理装置により求める。
関数R計算部25は、(S25)で求めた値x[j]と、nビット長の値y[j−1]とを入力として、関数R[j]を計算してnビット長の値y[j]を処理装置により求める。
関数p計算部26は、nビット長の値y[j−1]とを入力として、関数p[j]を計算してnビット長の値vv[j]を処理装置により求める。
暗号化関数Ej,2計算部27は、(S24)又は後述する(S32)で求めた値k[j]を鍵成分とし、(S27)で求めた値vv[j]を平文成分として、暗号化関数Ej,2を計算してnビット長の値xx[j]を処理装置により求める。
関数S計算部28は、(S28)で求めた値xx[j]と、(S27)で求めた値vv[j]とを入力として、関数S[j]を計算してnビット長の値yy[j]を求める。
なお、(S25)から(S26)までと、(S27)から(S29)までとは並列に実行してもよい。
変数j制御部31は、変数jの値が値iであるか否かを判定する。変数jの値が値iでなければ(S30でNO)、処理を(S31)へ進める。一方、変数jの値が値iであれば(S30でYES)、処理を(S33)へ進める。
変数j制御部31は、変数jに1を加算する。
鍵成分kj計算部29は、(S22)で生成された値m[j]と、(S29)で求めた値yy[j−1]とを入力として、関数T[j]を計算してdビット長の値k[j]を処理装置により求める。
そして、処理を(S25)及び(S27)へ戻す。
関数V計算部30は、(S26)で求めた値y[i]と、(S29)で求めた値yy[i]とを入力として、関数Vを計算してtビット長の値wを処理装置により求める。
つまり、パディング関数padは、先頭が“1”で、その後が複数の“0”で、最後に<M>となるビット列を生成して、値Mに付加して、値M’を生成する関数である。
なお、M’がL’+L(i−1)ビットとなるように0の個数が決定される。
関数T[1]は、例えば、const’をd−L’ビット長の固定値とした場合、L’ビット長の入力値mに対して、const’をビット結合したものを出力する関数である。なお、L’=dの場合には、入力値をそのまま出力するものとする。
値mと値const’とのビット結合の方法は、値mと値const’とをそのまま結合してもよいし、ビットを混ぜて結合してもよい。
関数T[2],...,関数T[i]は、値constを(d−L−n)ビットの固定値とした場合、Lビットの入力値mと、nビットの入力値xと、値constとをビット結合したものを出力する関数である。なお、L=d−nの場合は、値constは付加しない。
入力値mと入力値xと値constとビット結合の方法は、入力値mと入力値xと値constとをそのまま結合してもよいし、ビットを混ぜて結合してもよい。
暗号化関数E1,1,...,暗号化関数Ei,1、暗号化関数E1,2,...,暗号化関数Ei,2、暗号化関数E1,E2は、全て同じ暗号化関数であってもよい。
また、暗号化関数E1,1,...,暗号化関数Ei,1、暗号化関数E1,2,...,暗号化関数Ei,2は同じ暗号化関数であり、暗号化関数E1,E2は、暗号化関数E1,1,...,暗号化関数Ei,1、暗号化関数E1,2,...,暗号化関数Ei,2と異なる暗号化関数であってもよい。この場合、暗号化関数E1,E2は、同じ暗号化関数であってもよいし、異なる暗号化関数であってもよい。
関数R[1],...,関数R[i]と、関数S[1],...,関数S[i]とは、例えば、2つのnビット長の入力値x,yに対して、値xと値yとの排他的論理和を出力する関数である。
また、関数R[1],...,関数R[i]と、関数S[1],...,関数S[i]とは、2つのnビット長の入力値x,yに対して、値xと値yとを加算した値を出力する関数であってもよい。この場合、加算方法は、例えば、値xと値yとの先頭からLビットづつをそれぞれ加算していき、最後に加算したものをビット結合すればよい。
関数Vは、例えば、2つのnビット長の入力値x,yに対して、値xと値yとをビット結合し、そのうちtビットを所定の方法で抽出して出力する関数である。なお、t=2nの場合は、ビット結合した値をそのまま出力すればよい。
値xと値yとのビット結合の方法は、値xと値yとをそのまま結合してもよいし、ビットを混ぜて結合してもよい。また、ビットの抽出方法は、先頭から抽出してもよいし、後ろから抽出してもよく、それ以外の抽出方法でもよい。
つまり、ハッシュ関数の出力長を同じにした場合、実施の形態1に係るハッシュ関数の方が、実施の形態2に係るハッシュ関数よりも、用いる暗号化関数の出力長が短くてよい。そのため、例えば、ハッシュ関数を回路で実現した場合、回路規模を小さくできる。一方、実施の形態2に係るハッシュ関数の方が、実施の形態1に係るハッシュ関数よりも、安全性のセキュリティレベルが高い。
実施の形態4では、実施の形態1,2における関数Fの実施の形態3とは異なる例について説明する。
図11は、図10に示す実施の形態4に係る関数計算部12の動作を示すフローチャートである。
図12は、図10に示す実施の形態4に係る関数計算部12により実現されるハッシュ関数の構造図である。なお、図12では、図3と同様に、各値の下に括弧書でその値のビット長を示す。
図10に示す関数計算部12は、関数h計算部32、関数h’計算部33を備え、関数p計算部26、関数R計算部25、関数S計算部28を備えていない点が図7に示す関数計算部12と異なる。
鍵成分k1計算部23は、(S42)で生成された値m[j](値m[1])を入力として、関数g[j](関数g[1])を計算してdビット長の値k[j](値k[1])を処理装置により求める。
暗号化関数Ej,1計算部24は、(S44)又は後述する(S50)で求めた値k[j]を鍵成分とし、nビット長の所定の値cj,1を平文成分として、暗号化関数Ej,1を計算してnビット長の値y[j]を処理装置により求める。
暗号化関数Ej,2計算部27は、(S44)又は後述する(S50)で求めた値k[j]を鍵成分とし、nビット長の所定の値cj,2を平文成分として、暗号化関数Ej,2を計算してnビット長の値yy[j]を処理装置により求める。
なお、(S45)と(S46)とは並列に実行してもよい。
関数h計算部32は、(S45)で求めた値y[j]と、(S46)で求めた値yy[j]とを入力として、関数h[j]を計算して2nビット長の値w[j]を処理装置により求める。
関数計算部12は、変数jの値が値iであるか否かを判定する。変数jの値が値iでなければ(S48でNO)、処理を(S49)へ進める。一方、変数jの値が値iであれば(S48でYES)、処理を(S51)へ進める。
関数計算部12は、変数jに1を加算する。
鍵成分kj計算部29は、(S42)で生成された値m[j]と、(S47)で求めた値w[j−1]とを入力として、関数g[j]を計算してdビット長の値k[j]を処理装置により求める。
そして、処理を(S45)及び(S46)へ戻す。
関数h’計算部33は、(S47)で求めた値w[i]を入力として、関数h’を計算してtビット長の値wを処理装置により求める。
関数g[1]は、例えば、const’をd−L’ビット長の固定値とした場合、L’ビット長の入力値mに対して、const’をビット結合したものを出力する関数である。なお、L’=dの場合には、入力値をそのまま出力するものとする。
値mと値const’とのビット結合の方法は、値mと値const’とをそのまま結合してもよいし、ビットを混ぜて結合してもよい。
値constを(d−L−2n)ビットの固定値とした場合、Lビットの入力値mと、nビットの入力値xと、値constとをビット結合したものを出力する関数である。なお、L=d−2nの場合は、値constは付加しない。
入力値mと入力値xと値constとビット結合の方法は、入力値mと入力値xと値constとをそのまま結合してもよいし、ビットを混ぜて結合してもよい。
暗号化関数E1,1,...,暗号化関数Ei,1、暗号化関数E1,2,...,暗号化関数Ei,2、暗号化関数E1,E2は、全て同じ暗号化関数であってもよい。
また、暗号化関数E1,1,...,暗号化関数Ei,1、暗号化関数E1,2,...,暗号化関数Ei,2は同じ暗号化関数であり、暗号化関数E1,E2は、暗号化関数E1,1,...,暗号化関数Ei,1、暗号化関数E1,2,...,暗号化関数Ei,2と異なる暗号化関数であってもよい。この場合、暗号化関数E1,E2は、同じ暗号化関数であってもよいし、異なる暗号化関数であってもよい。
関数h[1],...,関数h[i]は、2つのnビット長の値をビット結合する関数である。2つのnビットの値のビット結合の方法は、2つのnビットの値をそのまま結合してもよいし、ビットを混ぜて結合してもよい。
関数h’は、例えば、2つのnビット長の入力値x,yに対して、値xと値yとをビット結合し、そのうちtビットを所定の方法で抽出して出力する関数である。
値xと値yとのビット結合の方法は、値xと値yとをそのまま結合してもよいし、ビットを混ぜて結合してもよい。また、ビットの抽出方法は、先頭から抽出してもよいし、後ろから抽出してもよく、それ以外の抽出方法でもよい。
つまり、ハッシュ関数の出力長を同じにした場合、実施の形態1に係るハッシュ関数の方が、実施の形態2に係るハッシュ関数よりも、用いる暗号化関数の出力長が短くてよい。そのため、例えば、ハッシュ関数を回路で実現した場合、回路規模を小さくできる。一方、実施の形態2に係るハッシュ関数の方が、実施の形態1に係るハッシュ関数よりも、安全性のセキュリティレベルが高い。
なお、ハッシュ値演算装置10を回路で構成する場合、上述した「〜部」を「〜回路」と読み変えてもよい。また、上述した「〜部」は、「〜処理」、「〜装置」、「〜機器」、「〜手段」、「〜手順」、「〜機能」と読み替えてもよい。つまり、「〜部」として説明するものは、ROM(Read Only Memory)に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されても構わない。
Claims (8)
- 任意ビット長の値Mを入力する任意長値入力部と、
前記任意長値入力部が入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算部と、
前記関数計算部が求めた値wを入力として、関数gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算部と、
前記鍵成分計算部が求めた値kを鍵成分とし、nビット長の所定の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算部と、
前記鍵成分計算部が求めた値kを鍵成分とし、nビット長の所定の値c2を平文成分として、ブロック暗号の暗号化関数E2を計算してnビット長の値yyを求める暗号化関数E2計算部と、
前記暗号化関数E1計算部が求めた値yと、前記暗号化関数E2計算部が求めた値yyとを入力として、関数hを計算してn’ビット長(n’は1以上2n以下の整数)の値zをハッシュ値として求めるハッシュ値計算部と
を備えることを特徴とするハッシュ値演算装置。 - 任意ビット長の値Mを入力する任意長値入力部と、
前記任意長値入力部が入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算部と、
前記関数計算部が求めた値wを入力として、関数Gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算部と、
前記鍵成分計算部が求めた値kを鍵成分とし、nビット長の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算部と、
前記暗号化関数E1計算部が求めた値yを入力として、関数Hを計算してn’ビット長(n’は1以上n以下の整数)の値zをハッシュ値として求めるハッシュ値計算部と
を備えることを特徴とするハッシュ値演算装置。 - 前記関数計算部は、
前記任意長値入力部が入力した値Mに対して、所定の値を付加して(L’+L(i−1))ビット長(L’は1以上d以下の整数、Lは1以上d−n以下の整数、iは1以上の整数)の値M’を生成するパディング部と、
前記パディング部が生成した値M’を分割して、L’ビット長の値m[1]と、Lビット長の値m[2],...,値m[i]を生成する分割部と、
前記分割部が生成した値m[1]を入力として、関数T[1]を計算してdビット長の値k[1]を求める鍵成分k1計算部と、
j=1からiまで順に、値k[j]を鍵成分とし、nビット長の値y[j−1](値y[0]は固定値IVとする)を平文成分として、ブロック暗号の暗号化関数Ej,1を計算してnビット長の値x[j]を求める暗号化関数Ej,1計算部と、
j=1からiまで順に、前記値y[j−1]と、前記暗号化関数Ej,1計算部が計算した値x[j]とを入力として、関数R[j]を計算してnビット長の値y[j]を求める関数R計算部と、
j=1からiまで順に、前記値y[j−1]を入力として、関数p[j]を計算してnビット長の値vv[j]を求める関数p計算部と、
j=1からiまで順に、前記値k[j]を鍵成分とし、前記関数p計算部が求めた値vv[j]を平文成分として、ブロック暗号の暗号化関数Ej,2を計算してnビット長の値xx[j]を求める暗号化関数Ej,2計算部と、
j=1からiまで順に、前記暗号化関数Ej,2計算部が求めた値xx[j]を入力として、関数S[j]を計算してnビット長の値yy[j]を求める関数S計算部と、
j=2からiまで順に、前記分割部が生成した値m[j]と、前記関数S計算部が計算した値yy[j−1]とを入力として、関数T[j]を計算してdビット長の値k[j]を求める鍵成分kj計算部と、
前記関数R計算部が求めた値y[i]と、前記関数S計算部が求めた値yy[i]とを入力として、関数Vを計算して2nビット長の前記値wを求める関数V計算部と
を備えることを特徴とする請求項1又は2に記載のハッシュ値演算装置。 - 前記関数計算部は、
前記任意長値入力部が入力した値Mに対して、所定の値を付加して(L’+L(i−1))ビット長(L’は1以上d以下の整数、Lは1以上d−2n以下の整数、iは1以上の整数)の値M’を生成するパディング部と、
前記パディング部が生成した値M’を分割して、L’ビット長の値m[1]と、Lビット長の値m[2],...,値m[i]を生成する分割部と、
前記分割部が生成した値m[1]を入力として、関数g[1]を計算してdビット長の値k[1]を求める鍵成分k1計算部と、
j=1からiまで順に、値k[j]を鍵成分とし、nビット長の所定の値cj,1を平文成分として、ブロック暗号の暗号化関数Ej,1を計算してnビット長の値y[j]を求める暗号化関数Ej,1計算部と、
j=1からiまで順に、前記値k[j]を鍵成分とし、nビット長の所定の値cj,2を平文成分として、ブロック暗号の暗号化関数Ej,2を計算してnビット長の値yy[j]を求める暗号化関数Ej,2計算部と、
j=1からiまで順に、前記暗号化関数Ej,1計算部が求めた値y[j]と、前記暗号化関数Ej,2計算部が求めた値yy[j]とを入力として、関数h[j]を計算して2nビット長の値w[j]を求める関数h計算部と、
j=2からiまで順に、前記分割部が生成した値m[j]と、前記関数h計算部が計算した値w[j−1]とを入力として、関数h[j]を計算してdビット長の値k[j]を求める鍵成分kj計算部と、
前記関数h計算部が求めた値w[i]を入力として、関数h’を計算してtビット長の前記値wを求める関数h’計算部と
を備えることを特徴とする請求項1又は2に記載のハッシュ値演算装置。 - 任意ビット長の値Mを入力する任意長値入力工程と、
前記任意長値入力工程で入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算工程と、
前記関数計算工程で求めた値wを入力として、関数gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算工程と、
前記鍵成分計算工程で求めた値kを鍵成分とし、nビット長の所定の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算工程と、
前記鍵成分計算工程で求めた値kを鍵成分とし、nビット長の所定の値c2を平文成分として、ブロック暗号の暗号化関数E2を計算してnビット長の値yyを求める暗号化関数E2計算工程と、
前記暗号化関数E1計算工程で求めた値yと、前記暗号化関数E2計算工程で求めた値yyとを入力として、関数hを計算してn’ビット長(n’は1以上2n以下の整数)の値zをハッシュ値として求めるハッシュ値計算工程と
を備えることを特徴とするハッシュ値演算方法。 - 任意ビット長の値Mを入力する任意長値入力処理と、
前記任意長値入力処理で入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算処理と、
前記関数計算処理で求めた値wを入力として、関数gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算処理と、
前記鍵成分計算処理で求めた値kを鍵成分とし、nビット長の所定の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算処理と、
前記鍵成分計算処理で求めた値kを鍵成分とし、nビット長の所定の値c2を平文成分として、ブロック暗号の暗号化関数E2を計算してnビット長の値yyを求める暗号化関数E2計算処理と、
前記暗号化関数E1計算処理で求めた値yと、前記暗号化関数E2計算処理で求めた値yyとを入力として、関数hを計算してn’ビット長(n’は1以上2n以下の整数)の値zをハッシュ値として求めるハッシュ値計算処理と
をコンピュータに実行させることを特徴とするハッシュ値演算プログラム。 - 任意ビット長の値Mを入力する任意長値入力工程と、
前記任意長値入力工程で入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算工程と、
前記関数計算工程で求めた値wを入力として、関数Gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算工程と、
前記鍵成分計算工程で求めた値kを鍵成分とし、nビット長の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算工程と、
前記暗号化関数E1計算工程で求めた値yを入力として、関数Hを計算してn’ビット長(n’は1以上n以下の整数)の値zをハッシュ値として求めるハッシュ値計算工程と
を備えることを特徴とするハッシュ値演算方法。 - 任意ビット長の値Mを入力する任意長値入力処理と、
前記任意長値入力処理で入力した値Mを入力として、関数Fを計算してtビット長(tは1以上の整数)の値wを求める関数計算処理と、
前記関数計算処理で求めた値wを入力として、関数Gを計算してdビット長(dはt以上の整数)の値kを求める鍵成分計算処理と、
前記鍵成分計算処理で求めた値kを鍵成分とし、nビット長の値c1を平文成分として、ブロック暗号の暗号化関数E1を計算してnビット長(nは1以上の整数)の値yを求める暗号化関数E1計算処理と、
前記暗号化関数E1計算処理で求めた値yを入力として、関数Hを計算してn’ビット長(n’は1以上n以下の整数)の値zをハッシュ値として求めるハッシュ値計算処理と
をコンピュータに実行させることを特徴とするハッシュ値演算プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010213244A JP5528281B2 (ja) | 2010-09-24 | 2010-09-24 | ハッシュ値演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010213244A JP5528281B2 (ja) | 2010-09-24 | 2010-09-24 | ハッシュ値演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012068436A true JP2012068436A (ja) | 2012-04-05 |
JP5528281B2 JP5528281B2 (ja) | 2014-06-25 |
Family
ID=46165797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010213244A Active JP5528281B2 (ja) | 2010-09-24 | 2010-09-24 | ハッシュ値演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5528281B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013175599A1 (ja) * | 2012-05-24 | 2013-11-28 | 三菱電機株式会社 | ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム |
EP2899713A4 (en) * | 2012-09-21 | 2016-06-29 | Mitsubishi Electric Corp | HALF-CALCULATION DEVICE, HASH-VALUE CALCULATION PROCEDURE AND HASH-VALUE CALCULATION PROGRAM |
KR20190024064A (ko) * | 2017-08-31 | 2019-03-08 | 동국대학교 산학협력단 | 재생 공격 방지가 가능한 부호 기반 암호화 장치 및 방법 |
JPWO2023053458A1 (ja) * | 2021-10-01 | 2023-04-06 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049127A (ja) * | 2008-08-25 | 2010-03-04 | Sony Corp | データ変換装置、およびデータ変換方法、並びにプログラム |
JP2010128154A (ja) * | 2008-11-27 | 2010-06-10 | Nippon Telegr & Teleph Corp <Ntt> | ハッシュ値生成装置、検証装置、ハッシュ値生成方法、検証方法、プログラム、および記録媒体 |
JP2010152468A (ja) * | 2008-12-24 | 2010-07-08 | Mitsubishi Electric Corp | ハッシュ値演算装置及びハッシュ値演算方法及びハッシュ値演算プログラム |
JP2012014077A (ja) * | 2010-07-02 | 2012-01-19 | Mitsubishi Electric Corp | ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム |
-
2010
- 2010-09-24 JP JP2010213244A patent/JP5528281B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049127A (ja) * | 2008-08-25 | 2010-03-04 | Sony Corp | データ変換装置、およびデータ変換方法、並びにプログラム |
JP2010128154A (ja) * | 2008-11-27 | 2010-06-10 | Nippon Telegr & Teleph Corp <Ntt> | ハッシュ値生成装置、検証装置、ハッシュ値生成方法、検証方法、プログラム、および記録媒体 |
JP2010152468A (ja) * | 2008-12-24 | 2010-07-08 | Mitsubishi Electric Corp | ハッシュ値演算装置及びハッシュ値演算方法及びハッシュ値演算プログラム |
JP2012014077A (ja) * | 2010-07-02 | 2012-01-19 | Mitsubishi Electric Corp | ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム |
Non-Patent Citations (4)
Title |
---|
THOMAS SHRIMPTON AND MARTIJN STAM: ""Building a Collision-Resistant Compression Function from Non-Compressing Primitives"", CRYPTOLOGY EPRINT ARCHIVE: REPORT 2007/409, vol. Version: 20080706:103157, JPN6013061888, 6 July 2008 (2008-07-06), ISSN: 0002769484 * |
内藤 祐介: ""擬似ランダムオラクルハッシュ関数の構成法"", 電子情報通信学会2010年基礎・境界ソサイエティ大会講演論文集, vol. AI−2−4, JPN6013061885, 31 August 2010 (2010-08-31), JP, pages 80 - 81, ISSN: 0002769482 * |
廣瀬 勝一: ""ブロック暗号に基づくハッシュ関数の構成法"", 電子情報通信学会2010年基礎・境界ソサイエティ大会講演論文集, vol. AI−2−3, JPN6013061883, 31 August 2010 (2010-08-31), JP, pages 78 - 79, ISSN: 0002769481 * |
廣瀬 勝一: ""並列型・直列型Davies−Meyerに基づく安全な倍ブロック長ハッシュ関数"", 情報処理学会研究報告, vol. 2004, no. 75, JPN6013061886, 21 July 2004 (2004-07-21), JP, pages 21 - 26, ISSN: 0002769483 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013175599A1 (ja) * | 2012-05-24 | 2013-11-28 | 三菱電機株式会社 | ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム |
EP2899713A4 (en) * | 2012-09-21 | 2016-06-29 | Mitsubishi Electric Corp | HALF-CALCULATION DEVICE, HASH-VALUE CALCULATION PROCEDURE AND HASH-VALUE CALCULATION PROGRAM |
US9419791B2 (en) | 2012-09-21 | 2016-08-16 | Mitsubishi Electric Corporation | Hash value calculation device, hash value calculation method, and non-transitory computer-readable storage medium including computer executable instruction |
KR20190024064A (ko) * | 2017-08-31 | 2019-03-08 | 동국대학교 산학협력단 | 재생 공격 방지가 가능한 부호 기반 암호화 장치 및 방법 |
KR101978684B1 (ko) | 2017-08-31 | 2019-05-15 | 동국대학교 산학협력단 | 재생 공격 방지가 가능한 부호 기반 암호화 장치 및 방법 |
JPWO2023053458A1 (ja) * | 2021-10-01 | 2023-04-06 | ||
WO2023053458A1 (ja) * | 2021-10-01 | 2023-04-06 | 三菱電機株式会社 | ハッシュ値計算装置、ハッシュ値計算方法及びハッシュ値計算プログラム |
JP7422953B2 (ja) | 2021-10-01 | 2024-01-26 | 三菱電機株式会社 | ハッシュ値計算装置、ハッシュ値計算方法及びハッシュ値計算プログラム |
DE112021008040T5 (de) | 2021-10-01 | 2024-05-23 | Mitsubishi Electric Corporation | Hashwert-berechnungsvorrichtung, hashwert-berechnungsverfahren und hashwert-berechnungsprogramm |
Also Published As
Publication number | Publication date |
---|---|
JP5528281B2 (ja) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5229315B2 (ja) | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 | |
JP7031580B2 (ja) | 暗号化装置、暗号化方法、復号化装置、及び復号化方法 | |
KR20190039850A (ko) | 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 | |
US20120314857A1 (en) | Block encryption device, block decryption device, block encryption method, block decryption method and program | |
TW201044334A (en) | Encryption device, encryption method, and computer program | |
US9565018B2 (en) | Protecting cryptographic operations using conjugacy class functions | |
WO2017056150A1 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
JPWO2013065241A1 (ja) | インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置 | |
Teh et al. | A Chaos‐Based Authenticated Cipher with Associated Data | |
US9515830B2 (en) | Universal hash function computing device, method and program | |
JP5528281B2 (ja) | ハッシュ値演算装置 | |
WO2019043921A1 (ja) | 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム | |
JP5188414B2 (ja) | 情報処理装置及び情報処理方法及びプログラム | |
JP2010044251A (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
JP5901783B2 (ja) | ハッシュ値計算装置及びハッシュ値計算方法 | |
JP6305658B1 (ja) | メッセージ認証子生成装置 | |
JP6033504B1 (ja) | メッセージ認証子生成装置 | |
Abdulwahed | Chaos-Based Advanced Encryption Standard | |
JP2018092010A (ja) | 暗号化装置と暗号化方法、暗号化プログラム及び鍵生成装置と鍵生成方法、鍵生成プログラム | |
KR101971001B1 (ko) | 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치 | |
JPWO2017056151A1 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
JP2009188794A (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体 | |
JP5488608B2 (ja) | ブロック暗号装置、ブロック暗号化方法およびプログラム | |
JP2012014077A (ja) | ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム | |
JP5500277B2 (ja) | 共通鍵暗号機能を搭載した暗号化装置及び組込装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131217 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140117 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140318 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140415 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5528281 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |