JP5901783B2 - ハッシュ値計算装置及びハッシュ値計算方法 - Google Patents
ハッシュ値計算装置及びハッシュ値計算方法 Download PDFInfo
- Publication number
- JP5901783B2 JP5901783B2 JP2014536822A JP2014536822A JP5901783B2 JP 5901783 B2 JP5901783 B2 JP 5901783B2 JP 2014536822 A JP2014536822 A JP 2014536822A JP 2014536822 A JP2014536822 A JP 2014536822A JP 5901783 B2 JP5901783 B2 JP 5901783B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- function
- hash
- bit
- input
- 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.)
- Expired - Fee Related
Links
- 238000004364 calculation method Methods 0.000 title claims description 86
- 230000006835 compression Effects 0.000 claims description 50
- 238000007906 compression Methods 0.000 claims description 50
- 230000001174 ascending effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 252
- 238000010586 diagram Methods 0.000 description 22
- 238000000034 method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
このハッシュ関数は、ブロック暗号の平文長がnビットの場合、ハッシュ値の長さが2nビットとなるハッシュ関数である。
理想化されたブロック暗号とは、平文長(ブロック長)がnビット、鍵長がkビットの全てのブロック暗号の集合から、ランダムに選ばれたブロック暗号のことである。
出力長がwビットのハッシュ関数Hが、衝突困難性を満たすとは、H(M)=H(M’)となる異なる2つの入力値M,M’を見つけることが困難なことである。厳密には、2w/2回以下のハッシュ値の計算ではこのような入力値を見つけることができなければ、衝突困難性を満たすとされる。
平文長がnビットであり、鍵長がkビット(k>n)であるブロック暗号の暗号化関数を用いてハッシュ値を計算するハッシュ値計算装置であり、
k−nビットのL個(Lは2以上の整数)の値M[1],...,値M[L]を入力する既定長値入力部と、
i=1,...,Lの各整数iについて昇順に、前記既定長値入力部が入力した値M[i]と、nビットの値y1[i−1](値y1[0]は所定値IV1)と、nビットの値y2[i−1](値y2[0]は所定値IV2)とを入力として、nビットの値x1[i]及び値x2[i]と、kビットの値k1[i]及び値k2[i]とを出力する関数f[i]を計算し、前記値x1[i]を平文とし、前記値k1[i]を鍵として、前記暗号化関数によりnビットの値y1[i]を計算し、前記値x2[i]を平文とし、前記値k2[i]を鍵として、前記暗号化関数によりnビットの値y2[i]を計算する圧縮関数計算部と、
前記圧縮関数計算部が計算した値y1[L]と値y2[L]とを入力として、全単射関数gによりハッシュ値を計算するハッシュ値計算部と
を備えることを特徴とする。
図1は、実施の形態1に係るハッシュ関数で利用される圧縮関数cの構造図である。
圧縮関数cは、関数fと、平文長がnビットで鍵長がkビットである2つのブロック暗号の暗号化関数e1,e2とを用いて構成される。
関数fは、以下の(1)から(3)の3つの条件を満たす。(1)全単射である。(2)値Mを固定値とした場合、値w1及び値w2と、値x1及び値x2とは、全単射である。(3)値x1と値x2とが等しくない、又は、値k1と値k2とが等しくない。
暗号化関数e2は、関数fの出力である値x2を平文とし、関数fの出力である値k2を鍵として、nビットの値y2を出力する。
暗号化関数e1,e2は同じ暗号化関数であってもよい。
ハッシュ関数の演算部では、k−nビットのL個(Lは2以上の整数)の入力値M[1],...,M[L]を入力として、ハッシュ値hが計算される。
具体的には、まず、値M[1]、固定値IV1、固定値IV2の3つの値を入力として、関数f[1]により、値x1[1]、値x2[1]、値k1[1]、値k2[1]の4つの値が出力される。次に、値x1[1]を平文とし、値k1[1]を鍵として、暗号化関数e1[1]により、値y1[1]が出力される。また、値x2[1]を平文とし、値k2[1]を鍵として、暗号化関数e2[1]により、値y2[1]が出力される。
具体的には、まず、値M[i]、値y1[i−1]、値y2[i−1]の3つの値を入力として、関数f[i]により、値x1[i]、値x2[i]、値k1[i]、値k2[i]の4つの値が出力される。次に、値x1[i]を平文とし、値k1[i]を鍵として、暗号化関数e1[i]により、値y1[i]が出力される。また、値x2[i]を平文とし、値k2[i]を鍵として、暗号化関数e2[i]により、値y2[i]が出力される。
例えば、関数gは、値y1[L]の各ビット後に、値y2[L]の各ビットを付加する。もちろん、関数gは、値y2[L]の各ビット後に、値y1[L]の各ビットを付加してもよいし、値y1[L]の各ビットと値y2[L]の各ビットとを任意の順に組み合わせてもよい。
ハッシュ関数の入力部では、演算部へ入力するL個の入力値M[1],...,M[L]が計算される。
関数padは、任意の2つの値a,bが入力された場合、一方が他方のサフィックスになっていない(k−n)のL倍の長さの2つの値a*,b*を出力する。サフィックスになっていないとは、2つの値a*,b*のうち一方の値が、他方の値の下位の一部のビットと等しくないということである。
例えば、関数padは、値Mの後に1を付加し、その後に0を必要なビット数付加して、その後に値<M>を付加して値M*とする。ここで、値<M>は、値Mのビット長をjビットでビット表現した値である。例えば、j=64とする。例えば、値Mのビット長が8ビットである場合、値<M>は、0・・・0100である。
ハッシュ値計算装置10は、上述したハッシュ関数を実現する。
ハッシュ値計算装置10は、任意長値入力部11、パディング部12、分割部13、既定長値入力部14、圧縮関数計算部15、ハッシュ値計算部16を備える。
任意長値入力部11、パディング部12、分割部13は、ハッシュ関数の入力部を計算し、既定長値入力部14、圧縮関数計算部15、ハッシュ値計算部16は、ハッシュ関数の演算部を計算する。
パディング部12は、任意長値入力部11が入力した値Mを入力として、処理装置により関数padを計算して、値M*を出力する。
分割部13は、値M*を入力として、処理装置により分割関数dを計算して、値M[1],...,M[L]を出力する。
圧縮関数計算部15は、既定長値入力部14が入力した値M[1],...,M[L]を入力として、処理装置により圧縮関数c[1],...,c[L]を計算して、値y1[L]及び値y2[L]を出力する。圧縮関数計算部15は、関数f計算部151、暗号化関数計算部152を備える。関数f計算部151は、圧縮関数を構成する関数f[1],...,f[L]を処理装置により計算する。暗号化関数計算部152は、圧縮関数を構成する暗号化関数e1[1],...,e1[L]及び暗号化関数e2[1],...,e2[L]を処理装置により計算する。
ハッシュ値計算部16は、圧縮関数計算部15が出力した値y1[L]及び値y2[L]を入力として、処理装置により関数gを計算して、ハッシュ値hを出力装置へ出力する。
(S1:任意長値入力ステップ)
任意長値入力部11は、任意ビット長の値Mを入力する。
パディング部12は、(S1)で入力された値Mを入力として、関数padを計算して、(k−n)×Lビットの値M*を出力する。
分割部13は、(S2)で出力された値M*を入力として、処理装置により分割関数dを計算して、(k−n)ビットの値M[1],...,M[L]を出力する。
既定長値入力部14は、(S3)で出力された値M[1],...,M[L]を入力装置により入力する。
関数計算ステップは、(S51)から(S54)までの4つのステップを備える。
(S51:関数f計算ステップ(1))
関数f計算部151は、値M[1]、固定値IV1、固定値IV2の3つの値を入力として、関数f[1]を計算して、値x1[1]、値x2[1]、値k1[1]、値k2[1]の4つの値を出力する。
(S52:暗号化関数計算ステップ(1))
暗号化関数計算部152は、値x1[1]を平文とし、値k1[1]を鍵として、暗号化関数e1[1]を計算して、値y1[1]を出力する。また、暗号化関数計算部152は、値x2[1]を平文とし、値k2[1]を鍵として、暗号化関数e2[1]を計算して、値y2[1]を出力する。
(S53:関数f計算ステップ(2))
関数f計算部151は、値M[i]、値y1[i−1]、値y2[i−1]の3つの値を入力として、関数f[i]を計算して、値x1[i]、値x2[i]、値k1[i]、値k2[i]の4つの値を出力する。
(S54:暗号化関数計算ステップ(2))
暗号化関数計算部152は、値x1[i]を平文とし、値k1[i]を鍵として、暗号化関数e1[i]を計算して、値y1[i]を出力する。また、暗号化関数計算部152は、値x2[i]を平文とし、値k2[i]を鍵として、暗号化関数e2[i]を計算して、値y2[i]を出力する。
ハッシュ値計算部16は、(S5)で出力された値y1[L]及び値y2[L]を入力として、関数gを計算して、ハッシュ値hを出力する。
また、実施の形態1に係るハッシュ値計算装置10は、ブロック暗号の暗号化関数の平文成分を、前の暗号化関数の暗号文成分としている。これにより、ブロック暗号の暗号化関数が理想化されたブロック暗号である場合、衝突困難性を満たすハッシュ関数を実現できる。
実施の形態1では、3つの条件を満たす関数f[1],...,f[L]を用いて圧縮関数を構成したハッシュ関数について説明した。実施の形態2では、関数f[1],...,f[L]をより具体化したハッシュ関数について説明する。
実施の形態2では、関数f以外は実施の形態1と同じである。
圧縮関数cは、関数fと、平文長がnビットで鍵長がkビットである2つのブロック暗号の暗号化関数e1,e2とを用いて構成される。暗号化関数e1,e2は、実施の形態1に係る暗号化関数e1,e2と同じである。
関数fは、値w1を値x1とし、値w1を置換関数pで変換した値を値x2とし、値Mと値w2とを組み合わせた値を値k1及び値k2とする。
関数fは、値Mの各ビットと値w2の各ビットとを任意の順に並べて値k1及び値k2とすればよい。例えば、関数fは、値Mの各ビットの後に値w2の各ビットを付加して値k1及び値k2とする。
置換関数pは、nビットの置換関数であり、任意のnビットの値xに対してp(x)≠xとなる関数である。例えば、置換関数pは、nビットの入力値xとnビットの固定値cとの排他的論理和を計算する関数や、nビットの入力値xにnビットの固定値cを加算して下位nビットの値を出力する関数である。
先頭の圧縮関数c[1]では、まず、値M[1]、固定値IV1、固定値IV2の3つの値を入力として、関数f[1]により、値x1[1]、値x2[1]、値k1[1]、値k2[1]の4つの値が出力される。ここで、関数f[1]では、固定値IV1が値x1[1]とされ、固定値IV1を置換関数pで変換した値が値x2[1]とされ、値M[1]と固定値IV2とを組み合わせた値が値k1[1]及び値k2[1]とされる。次に、値x1[1]を平文とし、値k1[1]を鍵として、暗号化関数e1[1]により、値y1[1]が出力される。また、値x2[1]を平文とし、値k2[1]を鍵として、暗号化関数e2[1]により、値y2[1]が出力される。
i=2,...,Lの各iについての圧縮関数c[i]では、まず、値M[i]、値y1[i−1]、値y2[i−1]の3つの値を入力として、関数f[i]により、値x1[i]、値x2[i]、値k1[i]、値k2[i]の4つの値が出力される。ここで、関数f[i]では、値y1[i−1]が値x1[i]とされ、値y1[i−1]を置換関数pで変換した値が値x2[i]とされ、値M[i]と値y2[i−1]とを組み合わせた値が値k1[i]及び値k2[i]とされる。次に、値x1[i]を平文とし、値k1[i]を鍵として、暗号化関数e1[i]により、値y1[i]が出力される。また、値x2[i]を平文とし、値k2[i]を鍵として、暗号化関数e2[i]により、値y2[i]が出力される。
実施の形態3では、実施の形態2と同様に、関数f[1],...,f[L]をより具体化したハッシュ関数について説明する。
実施の形態3では、関数f以外は実施の形態1と同じである。
圧縮関数cは、関数fと、平文長がnビットで鍵長がkビットである2つのブロック暗号の暗号化関数e1,e2とを用いて構成される。暗号化関数e1,e2は、実施の形態1に係る暗号化関数e1,e2と同じである。
関数fは、値w1を値x1とし、値w2の各ビットを反転させた値を値x2とし、値Mと値w2とを組み合わせた値を値k1とし、値Mと値w1とを組み合わせた値を値k2とする。
関数fは、値Mの各ビットと値w2の各ビットとを任意の順に並べて値k1とし、値Mの各ビットと値w1の各ビットとを任意の順に並べて値k2とすればよい。例えば、関数fは、値w2の各ビットの後に値Mの各ビットを付加して値k1とし、値Mの各ビットの後に値w1の各ビットを付加して値k2とする。
先頭の圧縮関数c[1]では、まず、値M[1]、固定値IV1、固定値IV2の3つの値を入力として、関数f[1]により、値x1[1]、値x2[1]、値k1[1]、値k2[1]の4つの値が出力される。ここで、関数f[1]では、固定値IV1が値x1[1]とされ、固定値IV2の各ビットを反転させた値が値x2[1]とされ、値M[1]と固定値IV2とを組み合わせた値が値k1[1]とされ、値M[1]と固定値IV1とを組み合わせた値が値k2[1]とされる。次に、値x1[1]を平文とし、値k1[1]を鍵として、暗号化関数e1[1]により、値y1[1]が出力される。また、値x2[1]を平文とし、値k2[1]を鍵として、暗号化関数e2[1]により、値y2[1]が出力される。
i=2,...,Lの各iについての圧縮関数c[i]では、まず、値M[i]、値y1[i−1]、値y2[i−1]の3つの値を入力として、関数f[i]により、値x1[i]、値x2[i]、値k1[i]、値k2[i]の4つの値が出力される。ここで、関数f[i]では、値y1[i−1]が値x1[i]とされ、値y2[i−1]の各ビットを反転させた値が値x2[i]とされ、値M[i]と値y2[i−1]とを組み合わせた値が値k1[i]とされ、値M[i]と値y1[i−1]とを組み合わせた値が値k2[i]とされる。次に、値x1[i]を平文とし、値k1[i]を鍵として、暗号化関数e1[i]により、値y1[i]が出力される。また、値x2[i]を平文とし、値k2[i]を鍵として、暗号化関数e2[i]により、値y2[i]が出力される。
実施の形態1では、実施の形態4では、実施の形態2,3と同様に、関数f[1],...,f[L]をより具体化したハッシュ関数について説明する。
実施の形態4では、関数f以外は実施の形態1と同じである。
圧縮関数cは、関数fと、平文長がnビットで鍵長がkビットである2つのブロック暗号の暗号化関数e1,e2とを用いて構成される。暗号化関数e1,e2は、実施の形態1に係る暗号化関数e1,e2と同じである。
関数fは、値w1を値x1とし、値w2を値x2とし、値Mと値w2とを組み合わせた値を値k1とし、値x1を平文とし値k1を鍵として暗号化関数e3が出力した値と値Mとを組み合わせた値を値k2とする。
関数fは、値Mの各ビットと値w2の各ビットとを任意の順に並べて値k1とし、値Mの各ビットと暗号化関数e3が出力した値の各ビットとを任意の順に並べて値k2とすればよい。例えば、関数fは、値w2の各ビットの後に値Mの各ビットを付加して値k1とし、値Mの各ビットの後に暗号化関数e3が出力した値の各ビットを付加して値k2とする。
関数fで用いられる暗号化関数e3は、nビットの値を平文とし、kビットの値を鍵として、nビットの値を出力するブロック暗号の暗号化関数である。暗号化関数e3は、暗号化関数e1と同じであってもよい。
先頭の圧縮関数c[1]では、まず、値M[1]、固定値IV1、固定値IV2の3つの値を入力として、関数f[1]により、値x1[1]、値x2[1]、値k1[1]、値k2[1]の4つの値が出力される。ここで、関数f[1]では、固定値IV1が値x1[1]とされ、固定値IV2が値x2[1]とされ、値M[1]と固定値IV2とを組み合わせた値が値k1[1]とされ、値x1[1]を平文とし値k1[1]を鍵として暗号化関数e1[1]を計算した値y1[1]と値M[1]とを組み合わせた値が値k2[1]とされる。次に、値x2[1]を平文とし、値k2[1]を鍵として、暗号化関数e2[1]により、値y2[1]が出力される。
i=2,...,Lの各iについての圧縮関数c[i]では、まず、値M[i]、値y1[i−1]、値y2[i−1]の3つの値を入力として、関数f[i]により、値x1[i]、値x2[i]、値k1[i]、値k2[i]の4つの値が出力される。ここで、関数f[i]では、値y1[i−1]が値x1[i]とされ、値y2[i−1]が値x2[i]とされ、値M[i]と値y2[i−1]とを組み合わせた値が値k1[i]とされ、値x1[i]を平文とし値k1[i]を鍵として暗号化関数e1[i]を計算した値y1[i]と値M[i]とを組み合わせた値が値k2[i]とされる。次に、値x2[i]を平文とし、値k2[i]を鍵として、暗号化関数e2[i]により、値y2[i]が出力される。
なお、ハッシュ値計算装置10を回路で構成する場合、上述した「〜部」を「〜回路」と読み変えてもよい。また、上述した「〜部」は、「〜処理」、「〜装置」、「〜機器」、「〜手段」、「〜手順」、「〜機能」と読み替えてもよい。つまり、「〜部」として説明するものは、ROM(Read Only Memory)に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されても構わない。
Claims (7)
- 平文長がnビットであり、鍵長がkビット(k>n)であるブロック暗号の暗号化関数を用いてハッシュ値を計算するハッシュ値計算装置であり、
k−nビットのL個(Lは2以上の整数)の値M[1],...,値M[L]を入力する既定長値入力部と、
i=1,...,Lの各整数iについて昇順に、前記既定長値入力部が入力した値M[i]と、nビットの値y1[i−1](値y1[0]は所定値IV1)と、nビットの値y2[i−1](値y2[0]は所定値IV2)とを入力として、nビットの値x1[i]及び値x2[i]と、kビットの値k1[i]及び値k2[i]とを出力する関数f[i]を計算し、前記値x1[i]を平文とし、前記値k1[i]を鍵として、前記暗号化関数によりnビットの値y1[i]を計算し、前記値x2[i]を平文とし、前記値k2[i]を鍵として、前記暗号化関数によりnビットの値y2[i]を計算する圧縮関数計算部と、
前記圧縮関数計算部が計算した値y1[L]と値y2[L]とを入力として、全単射関数gによりハッシュ値を計算するハッシュ値計算部と
を備えることを特徴とするハッシュ値計算装置。 - i=1,...,Lの各整数iについて、前記関数f[i]は、全単射であり、かつ、前記値M[i]を固定値とした場合に前記値y1[i]及び前記値y2[i]と前記値x1[i]及び前記値x2[i]とは全単射の関係であり、かつ、前記値x1[i]と前記値x2[i]と、又は、前記値k1[i]と前記値k2[i]とは同一とならない関数である
ことを特徴とする請求項1に記載のハッシュ値計算装置。 - i=1,...,Lの各整数iについて、前記関数f[i]は、前記値y1[i−1]を前記値x1[i]とし、前記値y1[i−1]を置換関数pで変換した値を前記値x2[i]とし、前記値y2[i−1]と前記値M[i]とを組み合わせた値を前記値k1[i]及び前記値k2[i]とする関数である
ことを特徴とする請求項1に記載のハッシュ値計算装置。 - i=1,...,Lの各整数iについて、前記関数f[i]は、前記値y1[i−1]を前記値x1[i]とし、前記値y2[i−1]の各ビットを反転させた値を前記値x2[i]とし、前記値M[i]と前記値y2[i−1]とを組み合わせた値を前記値k1[i]とし、前記値M[i]と前記値y1[i−1]とを組み合わせた値を前記値k2[i]とする関数である
ことを特徴とする請求項1に記載のハッシュ値計算装置。 - i=1,...,Lの各整数iについて、前記関数f[i]は、前記値y1[i−1]を前記値x1[i]とし、前記値y2[i−1]を前記値x2[i]とし、前記値M[i]と前記値y2[i−1]とを組み合わせた値を前記値k1[i]とし、前記値x1[i]と前記値k1[i]とを入力として前記暗号化関数により計算した前記値y1[i]と前記値M[i]とを組み合わせた値を前記値k2[i]とする関数である
ことを特徴とする請求項1に記載のハッシュ値計算装置。 - 前記ハッシュ値計算装置は、さらに、
任意ビット長の値Mを入力する任意長値入力部と、
前記任意長値入力部が入力した値Mに対して、所定の値を付加して(k−n)ビットのL倍のビット長の値M*を出力するパディング部と、
前記パディング部が生成した値M*をL個に分割して、k−nビットの値M[1],.
..,値M[L]を出力する分割部と
を備え、
前記既定長値入力部は、前記分割部が出力した値M[1],...,値M[L]を入力する
ことを特徴とする請求項1から5までのいずれかに記載のハッシュ値計算装置。 - 平文長がnビットであり、鍵長がkビット(k>n)であるブロック暗号の暗号化関数を用いてハッシュ値を計算するハッシュ値計算方法であり、
入力装置が、k−nビットのL個(Lは2以上の整数)の値M[1],...,値M[L]を入力する既定長値入力ステップと、
処理装置が、i=1,...,Lの各整数iについて昇順に、前記既定長値入力ステップで入力した値M[i]と、nビットの値y1[i−1](値y1[0]は所定値IV1)と、nビットの値y2[i−1](値y2[0]は所定値IV2)とを入力として、nビットの値x1[i]及び値x2[i]と、kビットの値k1[i]及び値k2[i]とを出力する関数f[i]を計算し、前記値x1[i]を平文とし、前記値k1[i]を鍵として、前記暗号化関数によりnビットの値y1[i]を計算し、前記値x2[i]を平文とし、前記値k2[i]を鍵として、前記暗号化関数によりnビットの値y2[i]を計算する圧縮関数計算ステップと、
処理装置が、前記圧縮関数計算ステップで計算した値y1[L]と値y2[L]とを入力として、全単射関数gによりハッシュ値を計算するハッシュ値計算ステップと
を備えることを特徴とするハッシュ値計算方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012207712 | 2012-09-21 | ||
JP2012207712 | 2012-09-21 | ||
PCT/JP2013/074801 WO2014046024A1 (ja) | 2012-09-21 | 2013-09-13 | ハッシュ値計算装置、ハッシュ値計算方法及びハッシュ値計算プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5901783B2 true JP5901783B2 (ja) | 2016-04-13 |
JPWO2014046024A1 JPWO2014046024A1 (ja) | 2016-08-18 |
Family
ID=50341337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014536822A Expired - Fee Related JP5901783B2 (ja) | 2012-09-21 | 2013-09-13 | ハッシュ値計算装置及びハッシュ値計算方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9419791B2 (ja) |
EP (1) | EP2899713B1 (ja) |
JP (1) | JP5901783B2 (ja) |
WO (1) | WO2014046024A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10256970B2 (en) * | 2013-12-20 | 2019-04-09 | Konnklijke Philips N.V. | Secure data transformations |
US11695541B2 (en) * | 2020-12-07 | 2023-07-04 | International Business Machines Corporation | Implementing resilient deterministic encryption |
WO2023053458A1 (ja) * | 2021-10-01 | 2023-04-06 | 三菱電機株式会社 | ハッシュ値計算装置、ハッシュ値計算方法及びハッシュ値計算プログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049127A (ja) * | 2008-08-25 | 2010-03-04 | Sony Corp | データ変換装置、およびデータ変換方法、並びにプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8238549B2 (en) * | 2008-12-05 | 2012-08-07 | Smith Micro Software, Inc. | Efficient full or partial duplicate fork detection and archiving |
JP5354994B2 (ja) * | 2008-08-25 | 2013-11-27 | 株式会社東芝 | 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム |
KR101210607B1 (ko) * | 2008-12-08 | 2012-12-11 | 한국전자통신연구원 | 해시 암호 장치 및 방법 |
JP5528281B2 (ja) | 2010-09-24 | 2014-06-25 | 三菱電機株式会社 | ハッシュ値演算装置 |
-
2013
- 2013-09-13 EP EP13839043.0A patent/EP2899713B1/en active Active
- 2013-09-13 WO PCT/JP2013/074801 patent/WO2014046024A1/ja active Application Filing
- 2013-09-13 US US14/420,022 patent/US9419791B2/en not_active Expired - Fee Related
- 2013-09-13 JP JP2014536822A patent/JP5901783B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010049127A (ja) * | 2008-08-25 | 2010-03-04 | Sony Corp | データ変換装置、およびデータ変換方法、並びにプログラム |
Non-Patent Citations (3)
Title |
---|
JPN6015049342; 廣瀬 勝一: '"並列型・直列型Davies-Meyerに基づく安全な倍ブロック長ハッシュ関数"' 電子情報通信学会技術研究報告 Vol.104、No.199, 20040713, p.21-26, 社団法人電子情報通信学会 * |
JPN6015049344; Yusuke NAITO: '"Blockciper-Based Double-Length Hash Functions for Pseudorandom Oracles"' Cryptology ePrint Archive: Report 2010/566 Version: 20110511:021845, 20100511, p.1-18, [オンライン] * |
JPN6015049346; Yevgeniy Dodis, Thomas Ristenpart, Thomas Shrimpton: '"Salvaging Merkle-Damgard for Practical Applications"' Cryptology ePrint Archive: Report 2009/177 Version: 20100614:211401, 20100614, p.1-37, [オンライン] * |
Also Published As
Publication number | Publication date |
---|---|
US9419791B2 (en) | 2016-08-16 |
WO2014046024A1 (ja) | 2014-03-27 |
US20150215113A1 (en) | 2015-07-30 |
EP2899713A4 (en) | 2016-06-29 |
EP2899713A1 (en) | 2015-07-29 |
JPWO2014046024A1 (ja) | 2016-08-18 |
EP2899713B1 (en) | 2019-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4127472B2 (ja) | データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体 | |
JP7031580B2 (ja) | 暗号化装置、暗号化方法、復号化装置、及び復号化方法 | |
Anees et al. | Designing secure substitution boxes based on permutation of symmetric group | |
JP5000365B2 (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
JPWO2015015702A1 (ja) | 認証暗号装置、認証暗号方法および認証暗号用プログラム | |
JP2007041620A5 (ja) | ||
JP6575532B2 (ja) | 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム | |
TW201044334A (en) | Encryption device, encryption method, and computer program | |
JPWO2013065241A1 (ja) | インクリメンタルmacタグ生成装置、方法及びプログラム並びにメッセージ認証装置 | |
JP5901783B2 (ja) | ハッシュ値計算装置及びハッシュ値計算方法 | |
JP5528281B2 (ja) | ハッシュ値演算装置 | |
JP6028798B2 (ja) | 暗号化装置、暗号化方法およびプログラム | |
JP6052166B2 (ja) | 暗号化方法、暗号化装置および暗号化プログラム | |
JP2010044251A (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
JP6194136B2 (ja) | 疑似乱数生成装置及び疑似乱数生成プログラム | |
JP6305658B1 (ja) | メッセージ認証子生成装置 | |
JP4857230B2 (ja) | 疑似乱数生成装置及びそれを用いた暗号化処理装置 | |
JP2016503195A5 (ja) | ||
JP6033504B1 (ja) | メッセージ認証子生成装置 | |
JP2018092010A (ja) | 暗号化装置と暗号化方法、暗号化プログラム及び鍵生成装置と鍵生成方法、鍵生成プログラム | |
JP2012014077A (ja) | ハッシュ値演算装置、ハッシュ値演算方法及びハッシュ値演算プログラム | |
JP2013205437A (ja) | 非線形関数S−boxの計算方法及び装置 | |
JP5449063B2 (ja) | Rijndael型192bitブロック暗号化装置、方法、及びそのプログラム | |
JP6371197B2 (ja) | 暗号処理装置 | |
JP2014116897A (ja) | 暗号化装置、暗号化方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160108 |
|
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: 20160209 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160308 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5901783 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |