説明

演算装置

【課題】複数のデータに対してハッシュ処理のパイプライン処理が可能なハッシュ値算出装置の提供を目的とする。
【解決手段】ハッシュ値算出装置100は、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部を備える。第1処理部はハッシュ値算出のためのデータを入力して処理し、処理した結果を第1処理データとして出力する。第2処理部は第1処理部の出力した、第i処理部は第i−1処理部の出力した第i−1処理データを入力して処理し、第1処理データを入力して処理し、処理した結果を第2処理データとして出力する。順次処理した結果を第i処理データとして出力する。第p処理部は第p−1処理部の出力した第p−1処理データを入力し、入力した第p−1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハッシュ値を算出するハッシュ値算出装置に係り、特に、複数のデータに対してハッシュ処理が必要な場合に、高速かつ低面積実装を可能とするハッシュ値算出関数装置に関する。
【背景技術】
【0002】
従来のハードウェアによるハッシュ関数処理装置は、図24に示すように、アルゴリズム全体の部分的な処理を行う部分処理回路610を実装し、レジスタ620と部分処理回路610に対して、処理対象のデータを、図24に示すように繰り返し往復させ、アルゴリズム全体の処理を行う。この場合、部分処理回路610分の面積で装置を構成することが可能なため、回路面積は小さく構成することが可能である。
【0003】
しかし、一方で繰り返し処理中は次の後続データに対してハッシュ処理を行うことができず、高速な処理が期待できないという問題点がある。
【0004】
また、複数のデータに対して処理ができるように、前記繰り返し処理による回路を複数実装した場合には、例えば、前記回路をp個のデータに対して処理可能とするためにp個の回路を実装した場合は、p倍の回路面積となり、各データに対する処理速度の向上はない。
【0005】
図25は、SHA(The Secure Hash Algorithm)−1アルゴリズムに対する従来のハードウェア実装例を示す。また、以下にSHA―1アルゴリズムを示す。
【0006】
まず、以下に示すSHA―1アルゴリズムについてW〜W15の意味を説明する。W〜W15はW(512ビット)を格納するレジスタを左から順に32ビット毎に分割したものである。一番左(最上位ワード)がWで,一番右(最下位ワード)がW15である。A,B,C,D,Eのデータと演算するのは、どのサイクルにおいても,一番左のWのみである。必ずA,B,C,D,Eとの演算に用いるデータが一番左のWに格納されている。
[SHA−1アルゴリズム]
input Ain,Bin,Cin,Din,Ein,Win〜W15in(それぞれ32bit),
output Aout,Bout,Cout,Dotu,Eout,Wout〜W15out(それぞれ32bit),
[step function]
out=(Ain<<<5)+f(Bin,Cin,Din)+Ein+Win+K
out=Ain
out=Bin <<<30,
out=Cin
out=Din
if(0≦t≦15){
out=W(i+1)in (0≦i≦14)
15out=Win
else if (16≦t≦79) {
out=(Win^Win^Win^W14in) <<<1
out=W(i+1)in(1≦i≦14)
15out=Win
ここで,tはステップ数を表し,
0≦t≦19のとき、
(Bin,Cin,Din)=(Bin&Cin)|(〜Bin&Din),
=0x5A827999
20≦t≦39のとき、
(Bin,Cin,Din)=(Bin^Cin^Din),
=0x6ED9EBA1
40≦t≦59のとき
(Bin,Cin,Din)=(Bin&Cin)|(Bin&Din)|(Cin&Din),
=0x8F1BBCDC
60≦t≦79のとき、
(Bin,Cin,Din)=(Bin^Cin^Din),
=0xCA62C1D6
と定義される。最後に、各変数A,B,C,D,Eに初期値を加算する。
【0007】
上記アルゴリズムにおいて、回路の処理性能を決定するのはAoutを出力するまでのパスである。加算の順序や並列処理を行っても、少なくとも3回の2値加算処理が必要となる。つまり、上記step functionを部分処理回路として実装した場合、少なくとも連続した3回の2値加算処理による回路遅延が処理に必要となる。
【0008】
特開2001−282106では、各演算(ft,+,4入力XOR)の出力に対してレジスタを使用し、レジスタ間の遅延を最大で2値加算1回分としている。しかし、上記step functionの処理を行うために4サイクル必要であり、結果的に2値加算4回分の処理時間が必要であることに等しい。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2001−282106号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
本発明は、複数のデータに対してハッシュ処理を並列に可能であり、かつ前記例で挙げたp個の並列実装と比較して回路面積が小さく、かつ各データに対する処理速度が向上するハッシュ値算出装置の提供を目的とする。また、ハードウェア実装におけるレジスタ間の回路遅延を短縮し、かつ処理に必要なサイクルの増加を抑制したハッシュ値算出装置の提供を目的とする。また、繰り返し処理においても高速に動作するハッシュ値算出装置の提供を目的とする。
【課題を解決するための手段】
【0011】
本発明のハッシュ値算出装置は、
所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、
入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部(ただし、p≧2)を備えたことを特徴とする。
【発明の効果】
【0012】
本発明により、複数のデータに対してハッシュ処理の並列処理を行うことができ、かつ、回路の実装面積の小さいハッシュ値算出装置を提供することができる。
【図面の簡単な説明】
【0013】
【図1】実施の形態1に係るハッシュ値算出装置100の構成を示す図である。
【図2】実施の形態1に係る、SHA−1によりハッシュ値を算出する回路の構成例である。
【図3】実施の形態1に係るハッシュ値算出装置100が、第1処理部から第4処理部で構成されている場合を想定した図である。
【図4】実施の形態1に係る入力データD1〜D4を示す図である。
【図5】実施の形態1において、入力データD1〜D4を順次入力した場合のパイプライン処理を示す図である。
【図6】実施の形態2において、ハッシュ値算出装置200に入力される入力データの一例である。
【図7】実施の形態2に係るハッシュ値算出装置200の構成を示す図である。
【図8】実施の形態2において、入力データ201を示す図である。
【図9】実施の形態2に係るハッシュ値算出装置100のフィードバックを説明する図である。
【図10】実施の形態2に係る入力データ202を示す図である。
【図11】実施の形態2において、フィードバック用ビット付与部210によるフィードバック用ビットの付与を説明する図である。
【図12】実施の形態3に係るハッシュ値算出装置300の構成を示す図である。
【図13】実施の形態3に係るハッシュ値算出装置300を第1処理部と第2処理部とからなる簡略した構成にした場合を示す図である。
【図14】実施の形態3において、ラッチを説明するための図である。
【図15】実施の形態3において、メモリを説明するための図である。
【図16】実施の形態3において、Wレジスタに格納されたデータの移行を示す図である。
【図17】実施の形態3において、ステップ15よりも後のステップにおける、Wレジスタに格納されたデータの移行を示す図である。
【図18】実施の形態4に係る処理部を示す図である。
【図19】実施の形態4に係るハッシュ値算出装置400の構成を示す図である。
【図20】実施の形態4に係るハッシュ値算出装置500の構成を示す図である。
【図21】実施の形態4に係る処理部を示す図である。
【図22】実施の形態4に係るハッシュ値算出装置600の構成を示す図である。
【図23】実施の形態4に係るハッシュ値算出装置700の構成を示す図である。
【図24】従来のハッシュ装置を示す図である。
【図25】従来のハッシュ装置の回路構成を示す図である。
【発明を実施するための形態】
【0014】
実施の形態1.
図1〜図6を用いて実施の形態1に係るハッシュ値算出装置100ついて説明する。実施の形態1に係るハッシュ値算出装置100は、所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置である。ハッシュ値算出装置100は、入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部(ただし、p≧4)を備える。これら第1処理部から第p処理部により、複数の入力データに対してパイプライン処理を行うことで、各入力データのハッシュ値を算出することを特徴とする。本実施の形態1では、ハッシュ値算出装置100は、所定のハッシュアルゴリズムとして、前記従来の技術で説明したSHA−1を用いることを想定する。
【0015】
図1は、実施の形態1に係るハッシュ値算出装置100の構成を示す図である。ハッシュ値算出装置100は、SHA−1のステップ0〜ステップ79及び初期値の加算処理に対応した処理部として、第1処理部から、第p処理部までを備える。一つのステップに一つの処理部が対応する場合、初期値との加算処理はステップ79に含めるとpは80となり(初期値との加算処理はステップ79に含める)、第80処理部まで備える。また、一つのステップに2つの処理を対応させてもよく、その場合は、pは160となる。一つのステップにn個の処理を対応させる場合は、pは80×n(個)となり、80n個の処理部を備える。
【0016】
ハッシュ値算出装置100の第1処理部は、第1レジスタと第1分割処理単位部を備える。同様に、第1処理部以降の各処理部は、レジスタと分割処理単位部を備える。第1レジスタは、入力データを保持して第1分割処理単位部に入力データを渡す。第1分割処理単位部は、入力データを処理し、処理結果を第1処理データとして第2処理部に出力する。
【0017】
第2処理部より以降は、第i処理部は、一つ前の処理部である第i−1処理部の出力した第i−1処理データを入力して処理し、処理した結果を第i処理データとして出力する。最終の処理部である第p処理部は、一つ前の処理部である第p−1処理部の出力した第p−1処理データを入力し、入力した第p−1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力する。
【0018】
次に、図1に対応する回路の構成例を説明する。図2は、図1に対応するSHA−1によりハッシュ値を算出する回路の構成例である。図2は、従来例を示す図25の部分処理回路610を、分割処理単位部として使用した例である。したがって、第t+1処理部は、部分処理回路610と構成が同様である。図25の場合は、処理結果が繰り返しサイクルとして処理されるのに対して、図2の回路では、処理結果が次の処理部に出力される。これにより、後述のようにパイプライン処理を行うことができる。
【0019】
第t+1処理部は、図1の一つの処理部に対応する。第t+1処理部における「t+1」は、SHA−1の「tステップ」に対応する処理を行う処理部であることを示す。SHA−1では、入力データからハッシュ値を算出する場合、0〜79(最初のステップを「0」とおいた。)の80ステップの処理を行う。SHA−1の80のステップについては最初のステップを「0ステップ」としているが、処理部については最初の処理部を「第1処理部」としているため、「tステップ」には「t+1処理部」が対応する。
【0020】
次に、図3〜図5を用いて、ハッシュ値算出装置100によるパイプライン処理について簡単に説明する。
【0021】
図3は、説明を簡単にするために、ハッシュ値算出装置100が第1処理部から第4処理部で構成されている場合(p=4の場合)を想定した図である。図示していなが、第1処理部は、第1レジスタと第1分割処理単位部を備える。第2処理部〜第4処理部についても同様である。図4は、第1処理部から第4処理部で構成された場合のハッシュ値算出装置100によりハッシュ値を求める入力データD〜Dを示す図である。入力データD〜Dは、それぞれ512ビットである。図5は、入力データD〜Dを順次入力した場合のパイプライン処理を示す図である。表の数字はデータを表す。例えば、「1」はD、「2」はDを表す。また(1)はDのハッシュ値H(D)を表す。各列は、図3のハッシュ値算出装置100を示している。1列目は、ハッシュ値算出装置100にDを入力した状態を示している。2列目は、ハッシュ値算出装置100にDを入力後、さらに、Dを入力した状態を示している。3列目以降も同様である。このように、各列は、順次データを入力した場合のハッシュ値算出装置100による処理を時系列で表している。
【0022】
1つ目の入力データDは、第1レジスタ(図示していない)に格納される。次のステップ(2列目)で、2つ目の入力データDが第1レジスタに格納されると同時に、Dに対して第1分割処理単位部にて処理された第1処理データが、第2レジスタ(図示していない)に格納される。以下これを繰り返し、4個目の入力データDが第1レジスタに格納されると同時に、Dのデータに対する第3分割処理単位部より処理されたデータが第4レジスタ(図示していない)に格納される。次のステップ(5列目)で、Dのデータに対するハッシュ値H(D)が出力される。以下連続してDからDのハッシュ値が出力される。このように、ハッシュ値H(D)〜ハッシュ値H(D)が各ステップの処理毎に出力されるので、従来の複数サイクルの処理でハッシュ値を算出する場合に対して、従来の1サイクルでハッシュ値を算出することと等価な処理が可能となる。
【0023】
実施の形態1に係るハッシュ値算出装置100は、第1処理部から第p処理部を備えたので、複数のデータを並列にパイプライン処理を行うことができる。
【0024】
実施の形態2.
次に、図6〜図11を用いて実施の形態2に係るハッシュ値算出装置200ついて説明する。実施の形態1のハッシュ値算出装置100に対し、実施の形態2に係るハッシュ値算出装置200は、最終の処理部である第p処理部の算出したハッシュ値を第1処理部にフィードバック(出力)する。そして、第1処理部は、第p処理部のフィードバックによるハッシュ値と後続データを入力するとともに、フィードバックによるハッシュ値に基づいて後続データを処理し、処理した結果を第1処理データとして出力することを特徴とする。
【0025】
ハッシュ値算出装置200も、ハッシュ値算出装置100と同様に、SHA−1を用いる。
【0026】
図6は、ハッシュ値算出装置200に入力される入力データの一例である。
はD1,1〜D1,80の80個のデータからなっている。本実施の形態2では、Dは512×80ビットとする。また、D1,1〜D1,80は、それぞれ、512ビットとする。DからD80についてもデータの構成はDと同様とする。
【0027】
SHA−1においては、例えば、512×80ビットのデータであるDのハッシュ値を求める場合、D1,1のハッシュ値H(D1,1)を求め、H(D1,1)を入力にフィードバックするとともに、後続データとしてD1,2を入力し、H(D1,1)を用いてD1,2を処理する必要がある。ハッシュ値算出装置200は、第p処理部の出力するハッシュ値を第1処理部にフィードバックすることにより後続データを処理可能とし、5
12×80ビットのデータの処理を可能とする。
【0028】
図7は、実施の形態2に係るハッシュ値算出装置200の構成を示す図である。図1に示したハッシュ値算出装置100に対して、フィードバック用ビット付与部210、フィードバック回路220を新たに備えた構成である。
【0029】
図8は、ハッシュ値算出装置200によるフィードバックを説明するための入力データ201を示す図である。ハッシュ値算出装置200は、図6に示したデータの入力を想定しているが、説明の簡略ため、図8のデータを用いて説明する。Dは512×2ビットのデータである。D1,1とD1,2とは、512ビットのデータである。D〜Dについてもデータ構成はDと同様である。
【0030】
図9は、ハッシュ値算出装置100のフィードバックを説明する図である。図9は、実施の形態1の図5に対応する。表の数字はデータを示す。例えば、「11」はD1,1を示す。また、(11)はD1,1のハッシュ値H(D1,1)を示す。図9において、5列目では、D1,1のハッシュ値H(D1,1)が出力されるとともに、D1,2が第1処理部に入力される。この場合、D1,2の処理にはハッシュ値H(D1,1)が必要であるため、フィードバック回路220は、ハッシュ値H(D1,1)を第1処理部にフィードバックする。フィードバック回路220は、同様に、D2,2、D3,2、D4,2、が第1処理部に入力される場合につても、これらの入力データに対応するハッシュ値H(D2,2)、H(D3,2)、H(D4,2)を第1処理部にフィードバックする。
【0031】
次に、図10、図11を用いて、フィードバックを必要とするかどうかのビットを後続データに付与する場合について説明する。図10は入力データ202を示す。入力データ202の特徴は、D1〜Dのビット数が異なることである。すなわち、D=512×3ビット,D=512×2ビット,D=512×4ビット,D=512×2ビット,である。D1,1、D2,1等は、512ビットである。
【0032】
図11は、フィードバック用ビット付与部210がフィードバック用のビットを付与する場合を説明する図である。表の数字は、図9の場合と同様である。フィードバック用ビット付与部210は、後続の入力データに対して、フィードバックが不要の場合、「0」を付与する。一方、フィードバックが必要な場合は、「1」を付与する。
【0033】
図11において、1列〜4列の第1処理部には、フィードバックがされていない。これは、フィードバック用ビット付与部210が、D1,1、D2,1、D3,1、D4,1の各データについて、1ビットのデータ「0」を付与したからである。一方、5列目〜9列目、11列、及び15列の第1処理部には、出力したハッシュ値がフィードバックされている。これは、フィードバック用ビット付与部210が、D1,2、D2,2、D3,2、D4,2及び、D3,3、D3,4の各データに、1ビットのデータ「1」を付与したからである。なお、図11において、ハッチングのかけられた10列目、及び12列〜14列の第1処理部分には所定の数値が入力される。
【0034】
実施の形態2に係るハッシュ値算出装置200は、m×qビットの入力データに対しては、p個のレジスタを通過後の処理値を1段目のレジスタにフィードバックし、同時に次のmビットのデータを入力して処理することでm×qビットに対しても処理可能なことを特徴とする。
【0035】
実施の形態2に係るハッシュ値算出装置200は、p個の異なる長さのデータにそれぞれに、フィードバックの可否を示す1ビットのデータを追加し、p個の分割処理終了後に前記1ビットのデータにより、フィードバックするもしくは、そのまま出力するという判定を行う制御方式により、p個の異なる長さのデータに対して並列処理を行うことを特徴とする。
【0036】
実施の形態2に係るハッシュ値算出装置200においては、第p処理部の出力するハッシュ値を第1処理部にフィードバックするので、このハッシュ値を用いて後続の入力データをハッシュ処理することができる。
【0037】
実施の形態2に係るハッシュ値算出装置200においては、フィードバック用ビット付与部210は、第1処理部への入力データに対して、第p処理部からのハッシュ値のフィードバックが必要かどうかを示すビットを付与するので、それぞれことなる長さからなる複数のデータのハッシュ値を算出することができる。
【0038】
実施の形態3.
図12〜図17を用いて実施の形態3に係るハッシュ値算出装置300ついて説明する。実施の形態1のハッシュ値算出装置100に対し、ハッシュ値算出装置300は、第p処理部の出力したハッシュ値を記憶し、第1処理部への後続データの入力に合わせて、記憶したハッシュ値を第1処理部に出力するハッシュ値記憶部を備えたことを特徴とする。SHA−1は、512ビットのデータを入力データとして入力しハッシュ値を算出する場合、図1においてp=80であれば、入力するデータは、図6に示すようにD〜D80の80個の入力データが必要になる。すなわち、実施の形態1、実施の形態2では、フィードバックの必要性から、処理部の数(pの数)と同じデータ数(D〜D)に対して並列処理が可能である。一方、実際の装置では、分割処理数pと並列に処理したいデータ数xが異なる場合がある。特に分割処理数pに対して並列処理を行うデータ数xがp<xの場合、そのままでは処理ができない。そこで、図12の構成とすることにより、わずかな回路面積の増加で対応可能となる。次に詳しく説明する。
【0039】
図12は、図7のハッシュ値算出装置200に対して、ハッシュ値を記憶するメモリ310(ハッシュ値記憶部)を備えた構成である。ハッシュ処理の出力を深さk(=x−p)のメモリ310にいったん格納し、格納したデータをフィードバックデータとして参照する場合には、メモリ310から読み出して用いる。格納されたデータを参照するタイミングは格納されてからkサイクル後であり、参照を必要としない場合は、kサイクル後に上書きされる。このような構成をとることで、使用できるメモリサイズが許す限り、任意のx(=p+k)個からなるデータに対して並列処理が可能となる。
【0040】
次に、図13を用いて具体的に説明する。図13はハッシュ値算出装置300を第1処理部と第2処理部とからなる簡略した構成である。表の数字は図9と同様である。図13のハッシュ値算出装置300には図8の入力データ201が入力されるとする。図13に示すハッシュ値算出装置300には、メモリ310を備えることにより、第2処理部からのハッシュ値の出力を格納することにより、後続データのためにフィードバックを行うことが可能となる。すなわち、例えば、D1,2についてみると、D1,2の処理にはD1,1のハッシュ値H(D1,1)が必要である。そのため、2ステップに相当する深さk=2のメモリ310を備えることで、D1,2の入力に合わせてハッシュ値H(D1,1)をフィードバックすることが可能となる。他のD2,2、D3,2、D4,2についても同様である。
【0041】
次に、図14〜図17を用いてWレジスタをラッチとメモリとを併用した構成の回路について説明する。図14、図15はラッチとメモリとのデータの読み出しの違いを説明するための図である。図14は、DATA1、DATA2、DATA3、DATA4をラッチに格納している。ラッチの場合は、これら4つのデータを同時に読み出すことができる。一方図15に示すように、図14の構成に対して、全体をメモリで構成する場合、メモリでは同時に読み出すことができるのは一つのデータに限られる。メモリで構成する場合は実装面積を低減することができるが、このように読み出せるデータが一つである。これを考慮して次のようなメモリ構成が考えられる。
【0042】
ハッシュアルゴリズムSHA−1、SHA−256、SHA−384、SHA−512では、内部状態を保持するレジスタ(A,B,C,D,E,{F,G,H})({ }はSHA−256,SHA−384,SHA−512の場合)と、入力データ及び入力データ同士の処理による中間値を保持するWレジスタの2系統に分けることができる。SHA−1のアルゴリズムにおいて、図16に示すように、Wレジスタについては、0〜14ステップまでの15ステップは、Wレジスタの一部、図中左端のデータのみを参照し、他のデータは参照の必要がない。よって、同じ番号で示すW、W14、W15、W等のブロック全体をメモリに実装し、データを読み出す時間を参照が必要となるタイミングに合わせることで、ラッチによるシフトレジスタと等価な実装が可能である。
【0043】
同一の記憶容量を実現するために、ラッチと比較して、SRAM(Static Random Access Memory)もしくはDRAM(Dynamic Random Access Memory)等のメモリは1/5以下の面積で構成することが可能となる。また、各第1〜第pの各処理部の備えるWレジスタに対する読み出しに必要な配線数はラッチによる構成の場合、各レジスタから読み出すため、16本(W〜W15)必要であったが、上記の構成とすることで1クロックあたり1アドレスのみの読み出しであるため1本となり、配線コストは1/16になる。同様の構成を16ステップ以降にも適用可能である。図17に示すように、SHA−1のステップ毎にレジスタWから4つのデータを参照し、処理する必要がある。その他のデータについては参照が行われないため、参照が必要となるまでのブロックをまとめてメモリとして実装する。
【0044】
実施の形態3に係るハッシュ値算出装置300は、メモリ310を備えたので、ハッシュ値を求めようとする入力データの数が装置のステップ数よりも多い場合でも、入力データのハッシュ値を求めることができる。
【0045】
実施の形態4.
次に、図18〜図23を用いて実施の形態4に係るハッシュ値算出装置ついて説明する。実施の形態4は、各処理部の分割処理単位部に対応するSHA−1アルゴリズムのstep functionを等価変形し、回路遅延の削減を図る構成である。この等価変形に対応するハッシュ値算出装置としてハッシュ値算出装置400、500、600、700について説明する。
【0046】
まず、分割処理単位部について説明する。分割処理単位部は、
(1)レジスタ間の遅延がほぼ等しくなる。
(2)バス幅ができるだけ狭い処理時にステージを切る。
の2つの条件を満たすことが好ましい。(1)は図1の構成の場合、各分割処理単位部の回路遅延の最大値がハッシュ値算出装置全体の処理性能を決定するため、無駄のない処理を行うための条件になる。(2)は回路全体に必要なレジスタ量に影響するためである。よって、理想的な分割処理単位の1つとしてハッシュアルゴリズムのstep function毎の分割がある。図18は、SHA−1アルゴリズムに対するstep function毎の分割よる分割回路の構成を備えたハッシュ値算出装置400の構成図である。図18の構成は後述するが、この構成は、step functionを以下のように等価変形し、回路遅延の削減を図っている。
【0047】
まず、以下に説明するstep functionにおける、W〜W15の意味を説明する。W〜W15は、W(512ビット)を格納するWレジスタを左から順に32ビット毎に分割したものを示す。一番左(最上位ワード)がWで,一番右(最下位ワード)がW15である。図14、あるいは図15で示したように、A,B,C,D,Eのデータと演算するのは、どのステップの分割処理単位部においても,一番左のWのみである。逆にいうと必ずA,B,C,D,Eとの演算に用いるデータが一番左のWに格納されている。例えば,15ステップ目にはW=W15がWの位置に格納されている。
つまり、
:tステップ目にA,B,C,D,Eとの演算に用いるWの値(32bit)、
:i番目の位置に格納されているWの値を示す。
【0048】
input Ain,Bin,Cin,Din,Ein,Win〜W15in,Wftin(それぞれ32bit)
output
out,Bout,Cout,Dotu,Eout,Wout〜W15out,Wftout(それぞれ32bit)
[step function]
out=(Ain <<<5)+Ein+Wftin+K
out=Ain
out=Bin <<<30
out=Cin
out=Din
if(0≦t≦15) {
out=W(i+1)in (0≦i≦14)
15out=Win
else if (16≦t≦79) {
out=(Win^Win^Win^W14in) <<<1
out=W(i+1)in (1≦i≦14)
15out=Win
Wftout=f(Ain,Bin<<<30,Cin)+Wout
ここで,tはステップ数を表し、
0≦t≦19のとき、
(Ain,Bin<<<30,Cin)=(Ain&Bin<<<30)|(〜Ain&Cin),
=0x5A827999、
20≦t≦39のとき、
(Ain,Bin<<<30,Cin)=(Ain^Bin<<<30^Cin),K=0x6ED9EBA1、
40≦t≦59のとき、
(Ain,Bin<<<30,Cin)=(Ain&Bin<<<30)|(Ain&Cin)|(Bin<<<30&Cin),
=0x8F1BBCDC、
60≦t≦79のとき、
(Ain,Bin<<<30,Cin)=(Ain^Bin<<<30^Cin),K=0xCA62C1D6、
と定義される。最後に、各変数A,B,C,D,Eに初期値を加算する。
【0049】
図18におけるハッシュ値算出装置400の第t+1処理部505は、第t+1レジスタ520と第t+1分割処理単位部510とを備えている。第t+1処理部505は、図1の第1処理部から第p処理部の一つを示しており、第t+1レジスタ520、及び第t+1分割処理単位部510は、図1のいずれかの処理部のレジスタとその分割処理単位部に該当する。
【0050】
第t+1レジスタ520は、上記等価変形したstep functionにおけるA、B、C、D、Eのデータを格納するABCDEレジスタ、所定のパラメータであるK値を記憶するKレジスタ(パラメータレジスタ)、後述するWfレジスタ(前算出データレジスタ)、及び512ビットの入力データを16分割した32ビットずつのデータをW〜W15のレジスタに格納する全体で512ビットのWレジスタ(分割レジスタ)を備える。
【0051】
第t+1分割処理単位部510は、加算器11(第1加算器)、加算器12(第2加算器)、加算器13、加算器14、XOR演算器516(第1演算器)及び前算出f演算器515(第2演算器)を備える。
【0052】
図19は、上記等価変形したstep functionの特徴を説明するための図である。簡単のため、t=1のステップ、t=2のステップにおける各処理部(すなわち、第2処理部と第3処理部)を図示して説明する。SHA−1では、Aに格納されるデータは、

=A(<<<5)+f(B,C,D)+E+K+W
=A(<<<5)+E+K+f(A,B(<<<30),C)+W
=A(<<<5)+E+K+Wf
したがって、
=A(<<<5)+E+K+Wf (式1)
ここで、Wf=f(A,B(<<<30),C)+W (式2)
とおいた。
【0053】
Wfは、図19において、次の処理を示している。
(1)t=1のステップにおいて、A,B(<<<30),及びCを用いて前算出f演算器515で演算を行う。
(2)t=1のステップにおいて、加算器512は、Wレジスタ523のWに格納されるデータと、前記(1)における前算出f演算器515の演算結果とを加算して、レジスタWfに格納する。
(3)t=2のステップにおいて、加算器513は、A(<<<5)とEを加算して、加算器514に出力する。また、加算器511は、KとWfとを加算して、加算器514に出力する。
(4)t=2のステップにおいて、加算器514は、加算器513の出力と、加算器511の出力とを加算して、Aに格納する。
(5)t=2のステップにおいて、前算出f演算器515と、XOR演算器516と、加算器512とは、t=3のステップで使用するためのWf=f(A,B(<<<30),C)+Wを、t=3のステップで使用する前算出データとして算出する。すなわち、t=2のステップにおいて前算出f演算器515は、A,B(<<<30),及びCを入力して演算処理を行い加算器512に出力する。また、t=2のステップにおいて、XOR演算器516はWとして格納されるべきデータを演算処理して生成し加算器512に出力する。加算器512は、前算出f演算器515からの出力と、XOR演算器516からの出力を加算して、Wf=f(A,B(<<<30),C)+Wを算出して、Wfレジスタに格納する。
【0054】
図19で説明したように、予め前のステップで前算出データWfを計算しておくことにより、そのステップにおける加算回数が、従来のSHA−1アルゴリズムより1回減っている。すなわち、t=2のステップについてみれば、第3レジスタから第4レジスタへのデータの流れを考える場合、図19においては、加算器を経る回数は最大2回である。例えば、加算器513から加算器514を経て第4レジスタに到達し、あるいは、加算器511から加算器513を経て第4レジスタに到達する。ところが、従来のSHA−1アルゴリズムによる図25の回路では最大で3つの加算器を経ることになる。図25では、データは加算器12、加算器13、加算器14を経てレジスタ20にフィードバックされる。
【0055】
このように、前記従来の技術で述べた[SHA―1アルゴリズム]と比較すると、図19では、Aout出力に必要な加算回数が1回減少する。一方、Wft(tはステップを示す)というパラメータが新たに追加されており、これは分割処理単位部毎に32ビット分のレジスタが増加することを意味する。Wft出力のパスは1回の論理演算と1回の整数加算分の回路遅延となる。前記の論理演算は[SHA−1アルゴリズム]に規定されている式からわかるように、加算に必要な回路遅延と比較すると、それ以下である。よって、図19の最大回路遅延は2回の整数加算分であることがわかる。これは、図24の回路構成と比較すると、加算処理1回分の回路遅延が減少するため、全体の処理性能が向上する。
【0056】
次に、上記図18、図19で示した処理単位を、図24に示した繰り返しのサイクルによりハッシュ値を求める装置に適用した場合のハッシュ値算出装置500を示す図である。回路の動作は、前記で説明した(1)〜(5)と同様である。ハッシュ値算出装置500は、複数のサイクルの演算を行いハッシュ値を算出する。上記図18、図19で示した処理単位を用いているため、従来の[SHA−1アルゴリズム]を実施する回路である図25に対して演算回数が一回減少している。
【0057】
図21は、図18に示した構成を、より高速化する回路構成の例である。また、図22は、構成をわかりやすくするため図21の分割処理単位部を2段に表した図である。
図18に示した分割処理単位部において、連続する演算間に中間レジスタ540を設けることで、最大回路遅延を加算1回分にしたものである。この場合、図18の構成と比較して、加算1回分の回路遅延が減少する。中間レジスタ540は、第t+1分割処理単位部の処理を前処理と後処理に分けることにより回路遅延を防止する。前処理として、加算器513による加算処理、前算出f演算器515による演算処理、加算器511による加算処理及びXOR演算器516による演算処理がある。また、後処理として、加算器514による加算処理、及び加算器512による加算処理がある。ただし、図18の構成と比較して、約2倍のレジスタ量が必要となる。回路規模より処理性能を優先させる場合に有利な構成である。
【0058】
図23は、図21で示した中間レジスタ540を備える処理部を、図24に示した繰り返し処理に適用したハッシュ値算出装置700を示す図である。ハッシュ値算出装置700は、図20に示したハッシュ値算出装置500に中間レジスタ540を備えた構成である。図22に示したハッシュ値算出装置600と同様に、中間レジスタ540により、処理を前処理と後処理に分けることで処理の高速化を図ることができる。
【0059】
以上実施の形態1から実施の形態4においては、ハッシュアルゴリズムをSHA−1を想定したが、これに限ることなく、ハッシュアルゴリズムとして、SHA−256、SHA−384、SHA−512等に用いても構わない。
【0060】
実施の形態4に係るハッシュ値算出装置400は、前算出f演算器515を備えたので、加算回数を低減し処理速度を向上することができる。
【0061】
実施の形態4に係るハッシュ値算出装置500は、前算出f演算器515を備えたので、加算回数を低減し処理速度を向上することができる。
【0062】
実施の形態4に係るハッシュ値算出装置600の分割処理単位部は、中間レジスタ540を備えたので、処理速度を向上することができる。
【0063】
実施の形態4に係るハッシュ値算出装置700の部分処理部は、中間レジスタ540を備えたので、処理速度を向上することができる。
【0064】
以上の実施の形態のハッシュ値算出装置は、
所定のハッシュアルゴリズムを用いることにより、入力したデータに対するハッシュ値を算出するハッシュ値算出装置において、
入力したデータからハッシュ値を算出するまでの処理をp個に分割したそれぞれぞれの処理を順次行う第1処理部から第p処理部(ただし、p≧2)を備えたことを特徴とする。
【0065】
前記第1処理部は、
ハッシュ値算出のためのデータを入力して処理し、処理した結果を第1処理データとして出力し、
第2処理部は、
第1処理部の出力した第1処理データを入力して処理し、処理した結果を第2処理データとして出力し、
順次、第i処理部(ただし、p≧i≧2)は、
第i−1処理部の出力した第i−1処理データを入力して処理し、処理した結果を第i処理データとして出力し、
第p処理部は、
第p−1処理部の出力した第p−1処理データを入力し、入力した第p−1処理データに基づいて、入力したデータに対応するハッシュ値を算出して出力することを特徴とする。
【0066】
前記第p処理部は、
算出したハッシュ値を第1処理部に出力し、
第1処理部は、
第p処理部の出力したハッシュ値と後続データを入力するとともに、入力したハッシュ値に基づいて後続データを処理し、処理した結果を第1処理データとして出力することを特徴とする。
【0067】
前記ハッシュ値算出装置は、さらに、
第1処理部にデータを入力する場合に第p処理部の算出したハッシュ値を第1処理部に出力する必要性があるかどうかを示すビットを付与するビット付与部を備え、
第p処理部は、
第1処理部に入力される入力データについてビット付与部により付与されたビットに基づいて、算出したハッシュ値を第1処理部に出力するかどうかを判断することを特徴とする。
【0068】
前記ハッシュ値算出装置は、さらに、
第p処理部の出力したハッシュ値を記憶し、第1処理部への後続データの入力に合わせて、記憶したハッシュ値を第1処理部に出力するハッシュ値記憶部を備えたことを特徴とする。
【0069】
前記ハッシュアルゴリズムとして、
SHA(The Secure Hash Algorithm)−1と、SHA−256と、SHA−384と、SHA−512とのうち、いずれかを用いることを特徴とする。
【0070】
以上の実施の形態の演算装置は、
入力したデータを出力データとして出力するまでの処理を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加算器と
を備えたことを特徴とする。
【0071】
以上の実施の形態の演算装置は、
複数のサイクルにより演算を行う演算装置において、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、
分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、
Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、
第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第2加算器と
を備えたことを特徴とする。
【0072】
以上の実施の形態の演算装置は、
入力したデータを出力データとして出力するまでの処理を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加算器と
を備えたことを特徴とする。
【0073】
以上の実施の形態の演算装置は、
データを格納する格納レジスタと、
格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、
データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備えた、複数のサイクルにより演算を行う演算装置において、
格納レジスタは、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
を備え、
データ処理部は、
前処理として、パラメータレジスタに記憶されたパラメータと前算出データレジスタに記憶された前算出データとを加算する第1加算器と、
前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、
前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、
後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする。
【符号の説明】
【0074】
11,12,13,14 加算器、15 f演算器、16 XOR演算器、20 第t+1レジスタ、20a 第t+2レジスタ、20b 第t+2レジスタ、21 ABCDEレジスタ、22 Kレジスタ、23 Wレジスタ、100 ハッシュ値算出装置、101 入力データ、102 入力データ、200 ハッシュ値算出装置、201,202 入力データ、210 フィードバック用ビット付与部、220 フィードバック回路、300 ハッシュ値算出装置、310 メモリ、505 第t+1処理部、510 第t+1分割処理単位部、511,512,513,514 加算器、515 前算出f演算器、516 XOR演算器、520 第t+1レジスタ、520a 第t+2レジスタ、521 ABCDEレジスタ、522 Kレジスタ、5201 Wfレジスタ、523 Wレジスタ、540 中間レジスタ、610 部分処理回路、620 レジスタ。

【特許請求の範囲】
【請求項1】
入力したデータを出力データとして出力するまでの処理をp個に分割したそれぞれの処理を順次行う第1処理部から第p処理部(p≧2)を備え、
第i処理部(p−1≧i≧1)は、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
第i−1処理部の算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、
Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、
第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを第i+1処理部のための前算出データとして第i+1処理部の前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。
【請求項2】
複数のサイクルにより演算を行う演算装置において、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
分割レジスタに格納されているn個のデータの少なくともいずれかに基づきmビットのデータを求める第1演算器と、
Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求める第2演算器と、
第1演算器によるmビットのデータと第2演算器によるmビットのデータとを加算して加算したデータを次のサイクルのための前算出データとして前算出レジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。
【請求項3】
入力したデータを出力データとして出力するまでの処理を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分割処理単位部は、
前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、
前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、
後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを第i+1処理部のための前算出データとして第i+1処理部の前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。
【請求項4】
データを格納する格納レジスタと、
格納レジスタが格納するデータを入力してデータ処理を行うデータ処理部と、
データ処理部の処理を前処理と後処理とに分割して前処理の結果を前処理データとして入力して格納し後処理のために出力する中間レジスタと
を備えた、複数のサイクルにより演算を行う演算装置において、
格納レジスタは、
それぞれmビットのデータを格納するAレジスタ、Bレジスタ、Cレジスタと、
m×nビットのデータをmビットずつに分割したn個のデータを格納する分割レジスタと、
所定のパラメータを記憶するパラメータレジスタと、
前のサイクルにおいて算出した所定のデータを前算出データとして記憶する前算出データレジスタと、
を備え、
データ処理部は、
前処理として、分割レジスタに記憶されたn個のデータの少なくともいずれかに基づきmビットのデータを求めて前処理データとして中間レジスタに出力する第1演算器と、
前処理として、Aレジスタのデータと、Bレジスタのデータと、Cレジスタのデータとに基づいて所定の論理演算を行ってmビットのデータを求めて前処理データとして中間レジスタに出力する第2演算器と、
後処理として、中間レジスタが格納した第1演算器によるmビットのデータと、第2演算器によるmビットのデータとを加算して、加算したデータを次のサイクルのための前算出データとして前記前算出データレジスタに記憶させる第2加算器と
を備えたことを特徴とする演算装置。

【図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

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2011−133916(P2011−133916A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2011−85195(P2011−85195)
【出願日】平成23年4月7日(2011.4.7)
【分割の表示】特願2004−15824(P2004−15824)の分割
【原出願日】平成16年1月23日(2004.1.23)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】