JP2005208400A - ハッシュ値算出装置及び演算装置 - Google Patents
ハッシュ値算出装置及び演算装置 Download PDFInfo
- Publication number
- JP2005208400A JP2005208400A JP2004015824A JP2004015824A JP2005208400A JP 2005208400 A JP2005208400 A JP 2005208400A JP 2004015824 A JP2004015824 A JP 2004015824A JP 2004015824 A JP2004015824 A JP 2004015824A JP 2005208400 A JP2005208400 A JP 2005208400A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- processing
- processing unit
- hash value
- 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.)
- Pending
Links
Images
Abstract
【解決手段】 ハッシュ値算出装置100は、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部を備える。第1処理部はハッシュ値算出のためのデータを入力して処理し、処理した結果を第1処理データとして出力する。第2処理部は第1処理部の出力した、第i処理部は第i−1処理部の出力した第i−1処理データを入力して処理し、第1処理データを入力して処理し、処理した結果を第2処理データとして出力する。順次処理した結果を第i処理データとして出力する。第p処理部は第p−1処理部の出力した第p−1処理データを入力し、入力した第p−1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力する。
【選択図】 図1
Description
[SHA−1アルゴリズム]
input Ain,Bin,Cin,Din,Ein,W0 in〜W15 in(それぞれ32bit),
output Aout,Bout,Cout,Dotu,Eout,W0 out〜W15 out(それぞれ32bit),
[step function]
Aout=(Ain<<<5)+ft(Bin,Cin,Din)+Ein+W0 in+Kt
Bout=Ain
Cout=Bin <<<30,
Dout=Cin
Eout=Din
if(0≦t≦15){
Wi out=W(i+1) in (0≦i≦14)
W15 out=W0 in}
else if (16≦t≦79) {
W0 out=(W1 in^W3 in^W9 in^W14 in) <<<1
Wi out=W(i+1) in(1≦i≦14)
W15 out=W0 in}
ここで,tはステップ数を表し,
0≦t≦19のとき、
ft(Bin,Cin,Din)=(Bin&Cin)|(〜Bin&Din),
Kt=0x5A827999
20≦t≦39のとき、
ft(Bin,Cin,Din)=(Bin^Cin^Din),
Kt=0x6ED9EBA1
40≦t≦59のとき
ft(Bin,Cin,Din)=(Bin&Cin)|(Bin&Din)|(Cin&Din),
Kt=0x8F1BBCDC
60≦t≦79のとき、
ft(Bin,Cin,Din)=(Bin^Cin^Din),
Kt=0xCA62C1D6
と定義される。最後に、各変数A,B,C,D,Eに初期値を加算する。
所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、
入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部(ただし、p≧2)を備えたことを特徴とする。
図1〜図6を用いて実施の形態1に係るハッシュ値算出装置100ついて説明する。実施の形態1に係るハッシュ値算出装置100は、所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置である。ハッシュ値算出装置100は、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部(ただし、p≧4)を備える。これら第1処理部から第p処理部により、複数の入力データに対してパイプライン処理を行うことで、各入力データのハッシュ値を算出することを特徴とする。本実施の形態1では、ハッシュ値算出装置100は、所定のハッシュアルゴリズムとして、前記従来の技術で説明したSHA−1を用いることを想定する。
次に、図6〜図11を用いて実施の形態2に係るハッシュ値算出装置200ついて説明する。実施の形態1のハッシュ値算出装置100に対し、実施の形態2に係るハッシュ値算出装置200は、最終の処理部である第p処理部の算出したハッシュ値を第1処理部にフィードバック(出力)する。そして、第1処理部は、第p処理部のフィードバックによるハッシュ値と後続データを入力するとともに、フィードバックによるハッシュ値に基づいて後続データを処理し、処理した結果を第1処理データとして出力することを特徴とする。
D1はD1,1〜D1,80の80個のデータからなっている。本実施の形態2では、D1は512×80ビットとする。また、D1,1〜D1,80は、それぞれ、512ビットとする。D2からD80についてもデータの構成はD1と同様とする。
図12〜図17を用いて実施の形態3に係るハッシュ値算出装置300ついて説明する。実施の形態1のハッシュ値算出装置100に対し、ハッシュ値算出装置300は、第p処理部の出力したハッシュ値を記憶し、第1処理部への後続データの入力に合わせて、記憶したハッシュ値を第1処理部に出力するハッシュ値記憶部を備えたことを特徴とする。SHA−1は、512ビットのデータを入力データとして入力しハッシュ値を算出する場合、図1においてp=80であれば、入力するデータは、図6に示すようにD1〜D80の80個の入力データが必要になる。すなわち、実施の形態1、実施の形態2では、フィードバックの必要性から、処理部の数(pの数)と同じデータ数(D1〜Dp)に対して並列処理が可能である。一方、実際の装置では、分割処理数pと並列に処理したいデータ数xが異なる場合がある。特に分割処理数pに対して並列処理を行うデータ数xがp<xの場合、そのままでは処理ができない。そこで、図12の構成とすることにより、わずかな回路面積の増加で対応可能となる。次に詳しく説明する。
次に、図18〜図23を用いて実施の形態4に係るハッシュ値算出装置ついて説明する。実施の形態4は、各処理部の分割処理単位部に対応するSHA−1アルゴリズムのstep functionを等価変形し、回路遅延の削減を図る構成である。この等価変形に対応するハッシュ値算出装置としてハッシュ値算出装置400、500、600、700について説明する。
(1)レジスタ間の遅延がほぼ等しくなる。
(2)バス幅ができるだけ狭い処理時にステージを切る。
の2つの条件を満たすことが好ましい。(1)は図1の構成の場合、各分割処理単位部の回路遅延の最大値がハッシュ値算出装置全体の処理性能を決定するため、無駄のない処理を行うための条件になる。(2)は回路全体に必要なレジスタ量に影響するためである。よって、理想的な分割処理単位の1つとしてハッシュアルゴリズムのstep function毎の分割がある。図18は、SHA−1アルゴリズムに対するstep function毎の分割よる分割回路の構成を備えたハッシュ値算出装置400の構成図である。図18の構成は後述するが、この構成は、step functionを以下のように等価変形し、回路遅延の削減を図っている。
つまり、
Wt:tステップ目にA,B,C,D,Eとの演算に用いるWの値(32bit)、
Wi:i番目の位置に格納されているWの値を示す。
output
Aout,Bout,Cout,Dotu,Eout,W0 out〜W15 out,Wftout(それぞれ32bit)
[step function]
Aout=(Ain <<<5)+Ein+Wftin+Kt
Bout=Ain
Cout=Bin <<<30
Dout=Cin
Eout=Din
if(0≦t≦15) {
Wi out=W(i+1) in (0≦i≦14)
W15 out=W0 in}
else if (16≦t≦79) {
W0 out=(W1 in^W3 in^W9 in^W14 in) <<<1
Wi out=W(i+1) in (1≦i≦14)
W15 out=W0 in}
Wftout=ft(Ain,Bin<<<30,Cin)+W0 out
ここで,tはステップ数を表し、
0≦t≦19のとき、
ft(Ain,Bin<<<30,Cin)=(Ain&Bin<<<30)|(〜Ain&Cin),
Kt=0x5A827999、
20≦t≦39のとき、
ft(Ain,Bin<<<30,Cin)=(Ain^Bin<<<30^Cin),
Kt=0x6ED9EBA1、
40≦t≦59のとき、
ft(Ain,Bin<<<30,Cin)=(Ain&Bin<<<30)|(Ain&Cin)|(Bin<<<30&Cin),
Kt=0x8F1BBCDC、
60≦t≦79のとき、
ft(Ain,Bin<<<30,Cin)=(Ain^Bin<<<30^Cin),
Kt=0xCA62C1D6、
と定義される。最後に、各変数A,B,C,D,Eに初期値を加算する。
A3
=A2(<<<5)+f2(B2,C2,D2)+E2+K2+W0 2
=A2(<<<5)+E2+K2+f1(A1,B1(<<<30),C1)+W0 2
=A2(<<<5)+E2+K2+Wf2
したがって、
A3=A2(<<<5)+E2+K2+Wf2 (式1)
ここで、Wf2=f1(A1,B1(<<<30),C1)+W0 2 (式2)
とおいた。
(1)t=1のステップにおいて、A1,B1(<<<30),及びC1を用いて前算出f演算器515で演算を行う。
(2)t=1のステップにおいて、加算器512は、Wレジスタ523のW0に格納されるデータと、前記(1)における前算出f演算器515の演算結果とを加算して、レジスタWf2に格納する。
(3)t=2のステップにおいて、加算器513は、A2(<<<5)とE2を加算して、加算器514に出力する。また、加算器511は、K2とWf2とを加算して、加算器514に出力する。
(4)t=2のステップにおいて、加算器514は、加算器513の出力と、加算器511の出力とを加算して、A3に格納する。
(5)t=2のステップにおいて、前算出f演算器515と、XOR演算器516と、加算器512とは、t=3のステップで使用するためのWf3=f2(A2,B2(<<<30),C2)+W0 3を、t=3のステップで使用する前算出データとして算出する。すなわち、t=2のステップにおいて前算出f演算器515は、A2,B2(<<<30),及びC2を入力して演算処理を行い加算器512に出力する。また、t=2のステップにおいて、XOR演算器516はW0 3として格納されるべきデータを演算処理して生成し加算器512に出力する。加算器512は、前算出f演算器515からの出力と、XOR演算器516からの出力を加算して、Wf3=f2(A2,B2(<<<30),C2)+W0 3を算出して、Wf3レジスタに格納する。
図18に示した分割処理単位部において、連続する演算間に中間レジスタ540を設けることで、最大回路遅延を加算1回分にしたものである。この場合、図18の構成と比較して、加算1回分の回路遅延が減少する。中間レジスタ540は、第t+1分割処理単位部の処理を前処理と後処理に分けることにより回路遅延を防止する。前処理として、加算器513による加算処理、前算出f演算器515による演算処理、加算器511による加算処理及びXOR演算器516による演算処理がある。また、後処理として、加算器514による加算処理、及び加算器512による加算処理がある。ただし、図18の構成と比較して、約2倍のレジスタ量が必要となる。回路規模より処理性能を優先させる場合に有利な構成である。
Claims (10)
- 所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、
入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部(ただし、p≧2)を備えたことを特徴とするハッシュ値算出装置。 - 第1処理部は、
ハッシュ値算出のためのデータを入力して処理し、処理した結果を第1処理データとして出力し、
第2処理部は、
第1処理部の出力した第1処理データを入力して処理し、処理した結果を第2処理データとして出力し、
順次、第i処理部(ただし、p≧i≧2)は、
第i−1処理部の出力した第i−1処理データを入力して処理し、処理した結果を第i処理データとして出力し、
第p処理部は、
第p−1処理部の出力した第p−1処理データを入力し、入力した第p−1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力することを特徴とする請求項1記載のハッシュ値算出装置。 - 第p処理部は、
算出したハッシュ値を第1処理部に出力し、
第1処理部は、
第p処理部の出力したハッシュ値と後続データを入力するとともに、入力したハッシュ値に基づいて後続データを処理し、処理した結果を第1処理データとして出力することを特徴とする請求項2記載のハッシュ値算出装置。 - 前記ハッシュ値算出装置は、さらに、
第1処理部にデータを入力する場合に第p処理部の算出したハッシュ値を第1処理部に出力する必要性があるかどうかを示すビットを付与するビット付与部を備え、
第p処理部は、
第1処理部に入力される入力データについてビット付与部により付与されたビットに基づいて、算出したハッシュ値を第1処理部に出力するかどうかを判断することを特徴とする請求項3記載のハッシュ値算出装置。 - 前記ハッシュ値算出装置は、さらに、
第p処理部の出力したハッシュ値を記憶し、第1処理部への後続データの入力に合わせて、記憶したハッシュ値を第1処理部に出力するハッシュ値記憶部を備えたことを特徴とする請求項2記載のハッシュ値算出装置。 - 前記ハッシュアルゴリズムとして、
SHA(The Secure Hash Algorithm)−1と、SHA−256と、SHA−384と、SHA−512とのうち、いずれかを用いることを特徴とする請求項1〜5のいずれかに記載のハッシュ値算出装置。 - 入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部(p≧2)を備え、
第i処理部(p−1≧i≧1)は、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第i−1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、
分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、
Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、
第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを第i+1処理部のための前算出データとして第i+1処理部の前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。 - 複数のサイクルにより演算を行う演算装置において、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、
分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、
Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、
第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。 - 入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部(p≧2)を備えるとともに、所定の処理部を示す第i処理部(ただし、p−1≧i≧1)は、
データを格納する第iレジスタと、
第iレジスタが格納するデータを入力してデータ処理を行う第i分割処理単位部と、
第i分割処理単位部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備える演算装置において、
第iレジスタは、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第i−1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと
を備え、
第i分割処理単位部は、
前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、
前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、
前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、
後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを第i+1処理部のための前算出データとして第i+1処理部の前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。 - データを格納する格納レジスタと、
格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、
データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備えた、複数のサイクルにより演算を行う演算装置において、
格納レジスタは、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
を備え、
データ処理部は、
前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、
前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、
前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、
後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004015824A JP2005208400A (ja) | 2004-01-23 | 2004-01-23 | ハッシュ値算出装置及び演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004015824A JP2005208400A (ja) | 2004-01-23 | 2004-01-23 | ハッシュ値算出装置及び演算装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011085195A Division JP5269137B2 (ja) | 2011-04-07 | 2011-04-07 | 演算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005208400A true JP2005208400A (ja) | 2005-08-04 |
Family
ID=34901178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004015824A Pending JP2005208400A (ja) | 2004-01-23 | 2004-01-23 | ハッシュ値算出装置及び演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005208400A (ja) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001282106A (ja) * | 2000-03-28 | 2001-10-12 | Matsushita Electric Works Ltd | ハッシュ装置 |
JP2002072879A (ja) * | 2000-08-28 | 2002-03-12 | Matsushita Electric Works Ltd | ハッシュ関数処理装置 |
JP2002287635A (ja) * | 2001-03-26 | 2002-10-04 | Hitachi Ltd | Sha演算の高速演算回路 |
US20020184498A1 (en) * | 2001-01-12 | 2002-12-05 | Broadcom Corporation | Fast SHA1 implementation |
JP2004240299A (ja) * | 2003-02-07 | 2004-08-26 | Matsushita Electric Ind Co Ltd | ハッシュ関数処理装置 |
-
2004
- 2004-01-23 JP JP2004015824A patent/JP2005208400A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001282106A (ja) * | 2000-03-28 | 2001-10-12 | Matsushita Electric Works Ltd | ハッシュ装置 |
JP2002072879A (ja) * | 2000-08-28 | 2002-03-12 | Matsushita Electric Works Ltd | ハッシュ関数処理装置 |
US20020184498A1 (en) * | 2001-01-12 | 2002-12-05 | Broadcom Corporation | Fast SHA1 implementation |
JP2002287635A (ja) * | 2001-03-26 | 2002-10-04 | Hitachi Ltd | Sha演算の高速演算回路 |
JP2004240299A (ja) * | 2003-02-07 | 2004-08-26 | Matsushita Electric Ind Co Ltd | ハッシュ関数処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5266354B2 (ja) | ガロア拡大体・積算/積算加算・積和演算装置 | |
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
Wang et al. | VLSI design of a large-number multiplier for fully homomorphic encryption | |
KR20210130196A (ko) | 양자-보안 사물 인터넷을 위한 설정가능한 래티스 암호 프로세서 및 관련된 기법들 | |
US7590917B2 (en) | Parameter generation for interleavers | |
JP5269137B2 (ja) | 演算装置 | |
JP3940714B2 (ja) | 演算装置、および、暗号・復号演算装置 | |
JP5549442B2 (ja) | Fft演算装置 | |
US20100138465A1 (en) | Digital Signal Processor With One Or More Non-Linear Functions Using Factorized Polynomial Interpolation | |
GB2352309A (en) | A system for performing modular multiplication | |
JP2006508464A (ja) | ルックアップテーブルを備える乗算器 | |
US6609142B1 (en) | Method of performing multiplication with accumulation in a Galois body | |
KR20080050226A (ko) | 모듈러 곱셈 장치 및 설계 방법 | |
JP2005208400A (ja) | ハッシュ値算出装置及び演算装置 | |
US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
JPH0795096A (ja) | プログラマブル並列crc生成装置 | |
US11281428B2 (en) | Conversion circuitry | |
US8117507B2 (en) | Decompressing method and device for matrices | |
JP4873546B2 (ja) | データ処理装置、データ処理方法 | |
JP3231713B2 (ja) | 巡回冗長検査計算方法および装置 | |
US20050240836A1 (en) | Correction parameter determination system | |
JP2003216411A5 (ja) | ||
US20230176819A1 (en) | Pipelined processing of polynomial computation | |
KR100761132B1 (ko) | Sha-1 연산 방법 및 장치 | |
CN109753629B (zh) | 多粒度并行fft计算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100420 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100616 |
|
A131 | Notification of reasons for refusal |
Effective date: 20110208 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A02 | Decision of refusal |
Effective date: 20110712 Free format text: JAPANESE INTERMEDIATE CODE: A02 |