JP6257464B2 - ハッシュ値計算装置 - Google Patents
ハッシュ値計算装置 Download PDFInfo
- Publication number
- JP6257464B2 JP6257464B2 JP2014137408A JP2014137408A JP6257464B2 JP 6257464 B2 JP6257464 B2 JP 6257464B2 JP 2014137408 A JP2014137408 A JP 2014137408A JP 2014137408 A JP2014137408 A JP 2014137408A JP 6257464 B2 JP6257464 B2 JP 6257464B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- padding
- hash value
- bit
- hash
- 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
Images
Description
非特許文献1,2に記載されたMerkle−Damgard構造を持つハッシュ関数では、n+mビット長の値を入力とし、mビット長の値を出力する圧縮関数hと、任意のビット長の値とを入力とし、(n×L)ビット長のパディング値を出力するパディング関数padとが用いられる。ここで、n,m,Lは1以上の整数である。
非特許文献1,2に記載されたMerkle−Damgard構造を持つハッシュ関数では、以下の(1)〜(5)が計算され、ハッシュ値が計算される。
(1)任意のビット長の入力値Mがパディング関数padに入力され、(n×L)ビット長のパディング値M’が出力される。つまり、M’=pad(M)である。
(2)パディング値M’が先頭から順にnビット毎にL個の値M[1],M[2],...,M[L]に分割される。つまり、M’=M[1]||M[2]||・・・||M[L]である。
(3)mビット長の固定値IVがcv[0]に設定される。
(4)i=1,...,Lの各整数iについて、cv[i]=h(cv[i−1],M[i])が計算される。
(5)cv[L]がハッシュ値として出力される。
(性質A)
長さが異なる任意の2つの値xと値yとに対して、X=pad(x),Y=pad(y)、X=X[1]||...||X[v]、Y=Y[1]||...||Y[w]とする。このとき、v≠wならば、X[v]≠Y[w]、v=wならば、あるjについてX[j]≠Y[j]である。ここで、i=1,...,vの各整数iについてのX[i]と、i=1,...,wの各整数iについてのY[i]とは、nビット長である。
非特許文献4のパディング方法は、パディングするビット列を非特許文献3のパディング方法よりも短くすることができる。
また、特許文献1では、b(M)のビット長を短くするために、次の方法が提案されている。b1(M)をパディング値M’のブロック長Lをt1(t1<t)ビット長でビット表現したものとする。入力値Mに対して、ブロック長Lがt1ビット以内で表現可能ならば、M’=M||1||0...0||b1(M)||0とし、ブロック長Lがt1ビット以内で表現不可能ならば、M’=M||1||0...0||b(M)||1とする。ここで、例えば、tは56ビット、t1はtの半分の28ビットである。
特許文献1のパディング方法は、パディングするビット列を非特許文献4のパディング方法より短くすることができる。
この発明は、パディングするビット列(バイト列)をより短くすることを目的とする。
入力値Mに値を付加して(n×L)ビット長のパディング値M’を生成するパディング部であって、前記入力値Mの後に値Lをビット表現したB(M)を付加し、さらに後にB(M)のビット長をビット表現したB1(B(M))を付加してパディング値M’を生成するパディング部と、
前記パディング部が生成したパディング値M’を先頭から順にnビット毎に分割したL個の値を入力としてハッシュ値を計算するハッシュ値計算部と
を備えることを特徴とする。
図1は、実施の形態1に係るハッシュ値計算装置10の構成図である。
ハッシュ値計算装置10は、任意長値受付部11、パディング部12、分割部13、ハッシュ値計算部14を備える。
(S1:任意長値受付処理)
任意長値受付部11は、入力装置から、任意のビット長の入力値Mの入力を受け付ける。
パディング部12は、処理装置により、S1で受け付けられた入力値Mに値を付加して(n×L)ビット長のパディング値M’を生成する。
具体的には、パディング部12は、入力値Mの後ろに1を付加し、その後ろに0ビット以上の0を付加し、その後ろにパディング値M’のブロック長Lをビット表現したB(M)を付加し、その後ろにB(M)のビット長をビット表現したB1(B(M))を付加して、パディング値M’を生成する。
つまり、M’=M||1||0...0||B(M)||B1(B(M))である。
また、B(M)は、パディング値M’のブロック長Lが、最上位ビットが1となるようにビット表現されたものである。そのため、B(M)は、2T−1ビット以下の可変長である。
また、0については、パディング値M’がnの倍数となる最少のビットだけ付加される。
パディング値M’のビット長は、入力値Mのビット長(pビットとする)と、付加される1のビット長(1ビット)と、付加される0のビット長(0ビット以上)と、B(M)のビット長(2T−1ビット以下の可変長)と、B1(B(M))のビット長(固定長T)との和である。入力値Mを受け付けた時点で、入力値Mのビット長(pビット)と、付加される1のビット長(1ビット)と、B1(B(M))のビット長(固定長T)とは決定している。残りの、付加される0のビット長は0ビット以上の任意長であり、B(M)のビット長はパディング値M’のブロック長Lにより定まる。そのため、入力値Mのビット長(pビット)と、付加される1のビット長(1ビット)と、B1(B(M))のビット長(固定長T)との和(p+1+Tビット)と、nとの関係から、パディング値M’のブロック長Lを定めることができる。つまり、パディング値M’のビット長はn×Lビットであるから、和(p+1+Tビット)にB(M)を付加した場合のビット長が、(n×L)ビット以下になる最小の値Lを計算すればよい。
分割部13は、処理装置により、S2で生成されたパディング値M’を、先頭から順にnビット毎にL個の値M[1],M[2],...,M[L]に分割する。つまり、M’=M[1]||M[2]||・・・||M[L]である。
ハッシュ値計算部14は、処理装置により、図3に示すように、n+mビット長の値を入力とし、mビット長の値を出力する圧縮関数hを用いて、i=1,...,Lの各整数iについて順に、cv[i]=h(cv[i−1],M[i])を計算する。つまり、ハッシュ値計算部14は、i=1,...,Lの各整数iについて順に、cv[i−1]及びM[i]を入力として圧縮関数hを計算する。ここで、cv[0]は、mビット長の固定値IVである。
そして、ハッシュ値計算部14は、cv[L]をハッシュ値として出力装置へ出力する。
そのため、パディング値M’のブロック長Lが短くなり、圧縮関数hの計算回数を減らすことができる場合がある。その結果、ハッシュ値を計算するための計算量を少なくすることができる場合がある。
また、安全性は低くなるかもしれないが、パディング部12は、入力値Mの後ろに1と0とからなる0ビット以上のビット列を付加し、その後ろにB(M)を付加し、その後ろにB1(B(M))を付加してパディング値M’を生成してもよい。
実施の形態1では、ビット単位に処理する場合の例を説明した。実施の形態2では、バイト単位に処理する場合に例を説明する。
実施の形態2では、実施の形態1と異なる部分を説明する。
但し、S1〜S4において、実施の形態1ではビット単位に処理が行われていたのに対して、実施の形態2ではバイト単位に処理が行われる点が異なる。
任意長値受付部11は、入力装置から、任意のバイト長の入力値Mの入力を受け付ける。
パディング部12は、処理装置により、S1で受け付けられた入力値Mに値を付加して(n×L)バイト長のパディング値M’を生成する。
具体的には、パディング部12は、入力値Mの後ろに1バイトの0x80を付加し、その後ろに0バイト以上の0x00を付加し、その後ろにパディング値M’のブロック長Lをバイト表現したB(M)を付加し、その後ろにB(M)のバイト長をバイト表現したB1(B(M))を付加して、パディング値M’を生成する。
つまり、M’=M||0x80||0x00...0x00||B(M)||B1(B(M))である。
また、B(M)は、パディング値M’のブロック長Lを、最上位バイトが0x00以外のバイト値となるようにバイト表現したものである。そのため、B(M)は、2T−1バイト以下の可変長である。
また、0x00については、パディング値M’がnの倍数となる最少のバイトだけ付加される。
分割部13は、処理装置により、S2で生成されたパディング値M’を、先頭から順にnバイト毎にL個の値M[1],M[2],...,M[L]に分割する。つまり、M’=M[1]||M[2]||・・・||M[L]である。
ハッシュ値計算部14は、処理装置により、n+mバイト長の値を入力とし、mバイト長の値を出力する圧縮関数hを用いて、i=1,...,Lの各整数iについて順に、cv[i]=h(cv[i−1],M[i])を計算する。つまり、ハッシュ値計算部14は、i=1,...,Lの各整数iについて順に、cv[i−1]及びM[i]を入力として圧縮関数hを計算する。ここで、cv[0]は、mバイト長の固定値IVである。
そして、ハッシュ値計算部14は、cv[L]をハッシュ値として出力装置へ出力する。
そのため、パディング値M’のブロック長Lが短くなり、圧縮関数hの計算回数を減らすことができる場合がある。その結果、ハッシュ値を計算するための計算量を少なくすることができる場合がある。
また、安全性は低くなるかもしれないが、パディング部12は、入力値Mの後ろに0バイト以上の何らかのバイト値の列を付加し、その後ろにB(M)を付加し、その後ろにB1(B(M))を付加してパディング値M’を生成してもよい。
なお、ハッシュ値計算装置10を回路で構成する場合、上述した「〜部」を「〜回路」と読み変えてもよい。また、上述した「〜部」は、「〜処理」、「〜装置」、「〜機器」、「〜手段」、「〜手順」、「〜機能」と読み替えてもよい。つまり、「〜部」として説明するものは、ROM(Read Only Memory)に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されても構わない。
Claims (11)
- 入力値Mに値を付加して(n×L)ビット長のパディング値M’を生成するパディング部であって、前記入力値Mの後に値Lをビット表現したB(M)を付加し、さらに後にB(M)のビット長をビット表現したB1(B(M))を付加してパディング値M’を生成するパディング部と、
前記パディング部が生成したパディング値M’を先頭から順にnビット毎に分割したL個の値を入力としてハッシュ値を計算するハッシュ値計算部と
を備えることを特徴とするハッシュ値計算装置。 - 前記パディング部は、前記入力値Mの後にビット値を1ビット付加し、さらに後に前記ビット値とは異なるビット値を0ビット以上付加し、さらに後に前記B(M)を付加し、さらに後に前記B1(B(M))を付加してパディング値M’を生成する
ことを特徴とする請求項1に記載のハッシュ値計算装置。 - 前記B(M)は、最上位ビットが1であり、
前記B1(B(M))は、固定長Tビットである
ことを特徴とする請求項1又は2に記載のハッシュ値計算装置。 - 前記ハッシュ値計算部は、Merkle−Damgard構造を持つハッシュ関数を用いてハッシュ値を計算する
ことを特徴とする請求項1から3までのいずれかに記載のハッシュ値計算装置。 - 前記ハッシュ値計算部は、SHA−256又はSHA−224を用いてハッシュ値を計算し、
前記固定長Tは、6ビットである
ことを特徴とする請求項3に記載のハッシュ値計算装置。 - 前記ハッシュ値計算部は、SHA−512又はSHA−384又はSHA512/224又はSHA−512/256を用いてハッシュ値を計算し、
前記固定長Tは、7ビットである
ことを特徴とする請求項3に記載のハッシュ値計算装置。 - 入力値Mに値を付加して(n×L)バイト長のパディング値M’を生成するパディング部であって、前記入力値Mの後に値Lをバイト表現したB(M)を付加し、さらに後にB(M)のバイト長をバイト表現したB1(B(M))を付加してパディング値M’を生成するパディング部と、
前記パディング部が生成したパディング値M’を先頭から順にnバイト毎に分割したL個の値を入力としてハッシュ値を計算するハッシュ値計算部と
を備えることを特徴とするハッシュ値計算装置。 - 前記パディング部は、前記入力値Mの後にバイト値を1バイト付加し、さらに後に前記バイト値と異なるバイト値を0バイト以上付加し、さらに後に前記B(M)を付加し、さらに後に前記B1(B(M))を付加してパディング値M’を生成する
ことを特徴とする請求項7に記載のハッシュ値計算装置。 - 前記B(M)は、最上位バイトが0x00以外の値であり、
前記B1(B(M))は、固定長Tバイトである
ことを特徴とする請求項7又は8に記載のハッシュ値計算装置。 - 前記ハッシュ値計算部は、Merkle−Damgard構造を持つハッシュ関数を用いてハッシュ値を計算する
ことを特徴とする請求項7から9までのいずれかに記載のハッシュ値計算装置。 - 前記ハッシュ値計算部は、SHA−256又はSHA−224又はSHA−512又はSHA−384又はSHA512/224又はSHA−512/256を用いてハッシュ値を計算し、
前記固定長Tは、1バイトである
ことを特徴とする請求項9に記載のハッシュ値計算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014137408A JP6257464B2 (ja) | 2014-07-03 | 2014-07-03 | ハッシュ値計算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014137408A JP6257464B2 (ja) | 2014-07-03 | 2014-07-03 | ハッシュ値計算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016014811A JP2016014811A (ja) | 2016-01-28 |
JP6257464B2 true JP6257464B2 (ja) | 2018-01-10 |
Family
ID=55231027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014137408A Expired - Fee Related JP6257464B2 (ja) | 2014-07-03 | 2014-07-03 | ハッシュ値計算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6257464B2 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8275125B2 (en) * | 2008-04-21 | 2012-09-25 | Tata Consultancy Services Ltd | Method for designing a secure hash function and a system thereof |
JP5241475B2 (ja) * | 2008-12-24 | 2013-07-17 | 三菱電機株式会社 | ハッシュ値演算装置及びハッシュ値演算方法及びハッシュ値演算プログラム |
-
2014
- 2014-07-03 JP JP2014137408A patent/JP6257464B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2016014811A (ja) | 2016-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11218320B2 (en) | Accelerators for post-quantum cryptography secure hash-based signing and verification | |
JP6305642B2 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
KR20190039850A (ko) | 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 | |
WO2022089014A1 (zh) | 数据加、解密方法、装置、设备及存储介质 | |
JPWO2016088453A1 (ja) | 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム | |
WO2019043921A1 (ja) | 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム | |
WO2014076911A1 (ja) | メッセージ認証システム、およびメッセージ認証方法 | |
KR101445339B1 (ko) | 기밀성과 무결성을 제공하는 통합 암호화 장치 및 그 방법 | |
JP5528281B2 (ja) | ハッシュ値演算装置 | |
JP6257464B2 (ja) | ハッシュ値計算装置 | |
WO2024007506A1 (zh) | 一种通用轻量哈希处理方法、系统及可储存介质 | |
US9419791B2 (en) | Hash value calculation device, hash value calculation method, and non-transitory computer-readable storage medium including computer executable instruction | |
JP2009169316A (ja) | ハッシュ関数演算装置及び署名装置及びプログラム及びハッシュ関数演算方法 | |
JP2010044251A (ja) | ハッシュ値生成装置、プログラム及びハッシュ値生成方法 | |
US10142099B2 (en) | Method and apparatus for a computable, large, variable and secure substitution box | |
JP6305643B2 (ja) | メッセージ認証子生成装置、メッセージ認証子生成方法及びメッセージ認証子生成プログラム | |
JP4914381B2 (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体 | |
WO2018154642A1 (ja) | メッセージ認証子生成装置 | |
JP2016503195A5 (ja) | ||
Sagar | Cryptographic Hashing Functions-MD5 | |
JP2010256749A (ja) | ハッシュ値生成装置、ハッシュ値生成方法およびプログラム | |
Soni et al. | Secure and efficient integrity algorithm based on existing SHA algorithms | |
JP6049589B2 (ja) | 秘匿性増強装置および秘匿性増強データ処理方法 | |
JP5006770B2 (ja) | メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体 | |
JP2014126562A (ja) | ハッシュ値計算装置、ハッシュ値計算方法及びハッシュ値計算プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170116 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171012 |
|
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: 20171107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171205 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6257464 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |