JP3709760B2 - Hash device - Google Patents

Hash device Download PDF

Info

Publication number
JP3709760B2
JP3709760B2 JP2000089518A JP2000089518A JP3709760B2 JP 3709760 B2 JP3709760 B2 JP 3709760B2 JP 2000089518 A JP2000089518 A JP 2000089518A JP 2000089518 A JP2000089518 A JP 2000089518A JP 3709760 B2 JP3709760 B2 JP 3709760B2
Authority
JP
Japan
Prior art keywords
stage
adder
register
circuit block
original data
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
Application number
JP2000089518A
Other languages
Japanese (ja)
Other versions
JP2001282106A (en
Inventor
聡 兵頭
信諭 門脇
浩茂 中谷
靖一 宮崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Electric Works Co Ltd
Original Assignee
Matsushita Electric Works Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Works Ltd filed Critical Matsushita Electric Works Ltd
Priority to JP2000089518A priority Critical patent/JP3709760B2/en
Publication of JP2001282106A publication Critical patent/JP2001282106A/en
Application granted granted Critical
Publication of JP3709760B2 publication Critical patent/JP3709760B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明はネットワークセキュリティを確保する技術に関し、特に元のデータを不可逆なハッシュ値に変換するハッシュ関数SHAをハードウェアで実現するハッシュ装置に関する。
【0002】
【従来の技術】
従来、ハッシュ関数の一つであるSHAアルゴリズムに関してはソフトウェアにより実現されている。以下、SHAアルゴリズムについて説明する。32bit長の変数A,B,C,D,Eの初期値Ainit,Binit,Cinit,Dinit,Dinit,Einitを16進数で次のとおり設定する。
Ainit=0x67452301
Binit=0xEFCDAB89
Cinit=0x98BADCFE
Dinit=0x10325476
Einit=0xC3D2E1F0
【0003】
512bitずつn個に分割された元データをM1,M2,…,Mnとする。i=1〜nについて以下の処理を繰り返す。
(イ)元データMiを32bitずつ16に分割し、左からW1,W2,…,W16とおく。
(ロ)A=Ainit、B=Binit、C=Cinit、D=Dinit、E=Einitとおく。
【0004】
(ハ)t=1,2,…,79,80について以下の処理を繰り返す。
TEMP=S(5,A)+f(B,C,D)+E+W+K
ここで、TEMPは一時変数、S(m,x)は32bit変数xの上位mbitを下位側へ巡回シフトしたものであり、f(B,C,D)、Kは次式で与えられる。
・1≦t≦20のとき、
f(B,C,D)=(B AND C)OR((NOT B)AND D)
K=0x5A827999
・21≦t≦40のとき、
f(B,C,D)=B XOR C XOR D
K=0x6ED9EBA1
・41≦t≦60のとき、
f(B,C,D)=(B AND C)OR(B AND D)OR(C AND D)
K=0x8F1BBCDC
・61≦t≦80のとき、
f(B,C,D)=B XOR C XOR D
K=0xCA62C1D6
【0005】
また、元データWは次式で与えられる。
・1≦t≦16のとき、
W=Wt
・17≦t≦80では、
W=S(1,Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16)とする。
上式により一時変数TEMPを求めた後、E=D、D=C、C=S(30,B)、B=A、A=TEMPとする。
【0006】
(ニ)最後に、各変数A,B,C,D,Eに初期値を加算する。すなわち、
A=Ainit+A
B=Binit+B
C=Cinit+C
D=Dinit+D
E=Einit+E
とする。これによりハッシュ関数の値(32×5=160bit)が演算される。この160bitのデータは元のメッセージを要約したメッセージダイジェスト(要約関数)として利用される。
【0007】
【発明が解決しようとする課題】
ハッシュ関数を用いるユーザは、ソフトウェアで実現されるハッシュ関数SHAよりもハードウェアで実現されるハッシュ関数SHAに、より大きな信頼を持っており、ハードウェアによる高速かつ小面積のハッシュ装置の早期実現が望まれている。
【0008】
【課題を解決するための手段】
請求項1の発明によれば、構造的に周期性のあるSHAアルゴリズムの1周期分の処理について、同時に用いる加算器の最大数を2個に制限することで、小さい回路面積で高速にハッシュ値を生成できる。すなわち、請求項1の発明は、元のデータからSHAアルゴリズムを用いて160bitのハッシュ値を求めるための第1ないし第5レジスタA〜Eを備えるハッシュ装置であって、図1に示すように、第1レジスタAの上位5ビットを下位側へ巡回シフトする第1のローテーション処理部4と、第2、第3、第4レジスタB,C,Dに基づく論理演算f(B,C,D)を実行する論理演算処理部5と、第1のローテーション処理部4の出力と第5レジスタEの値を加算する第1加算器6と、ハッシュ値を求める元のデータを分割または演算処理したデータWを設定する元データ設定処理部7と、所定の定数Kを設定する定数設定処理部8とを含んで構成される第1ステージと、第1ステージの論理演算処理部5と第1加算器6と元データ設定処理部7と定数設定処理部8の出力のうちいずれか2つを加算する第2加算器9と、残りの2つを加算する第3加算器10とを含んで構成される第2ステージと、第2ステージの第2加算器9と第3加算器10の出力を加算する第4加算器11を含んで構成される第3ステージと、第5、第4レジスタE,Dに第4、第3レジスタD,Cの値を代入し、第2レジスタBの上位30ビットを下位側へ巡回シフトする第2のローテーション処理部12の出力を第3レジスタCに代入し、第2レジスタBに第1レジスタAの値を代入し、第3ステージの第4加算器11の出力を第1レジスタAに代入する処理を含む第4ステージとを含む回路ブロックを図2に示すように80段縦続接続し、1段目の回路ブロックの第1ないし第5レジスタA〜Eに第1ないし第5の初期値Ainit〜Einitを設定すると共に、最終段の回路ブロックの第1ないし第5レジスタA〜Eの出力に前記第1ないし第5の初期値Ainit〜Einitをそれぞれ加算する加算器を接続して成ることを特徴とするものである。なお、図2の構成では、最終段の回路ブロックの第1ないし第5レジスタA〜Eの出力に第1ないし第5の初期値Ainit〜Einitをそれぞれ加算する加算器についても、同時に用いる加算器の最大数を2個に制限しており、A=Ainit+A、B=Binit+Bを1ステージ、C=Cinit+C、D=Dinit+Dを次の1ステージ、E=Einit+Eをさらに次の1ステージで実行している。したがって、後述のように、本発明のハッシュ装置に具備すべき加算器の数は2個であり、回路面積を小さくできるものである。
【0009】
請求項2の発明によれば、構造的に周期性のあるSHAアルゴリズムのうち唯一周期性が乱れる最終段の処理についても構造的な周期性を維持するために、請求項1において、80段目の回路を図4に示すような回路に置換することで、最小の回路面積でかつ高速にハッシュ値を生成できる。すなわち、請求項2の発明では、図4に示すように、請求項1の発明における79段目の回路ブロックの第4ステージに第4レジスタDの値と第5の初期値Einitを加算する第5加算器13を設け、80段目の回路ブロックの第1ステージに第3レジスタCの値と第4の初期値Dinitを加算する第6加算器14を設け、80段目の回路ブロックの第3ステージに第1レジスタAの値と第2の初期値Binitを加算する第7加算器15を設け、80段目の回路ブロックの第4ステージは第2レジスタBの上位30ビットを下位側へ巡回シフトする第2のローテーション処理部12の出力と第3の初期値Cinitを加算する第8加算器16と、80段目の回路ブロックの第3ステージの第4加算器11の出力と第1の初期値Ainitを加算する第9加算器17とを含むステージとし、80段目の回路ブロックにさらに第5ステージを設けて、該第5ステージでは、第5加算器13の出力を第5レジスタEに、第6加算器14の出力を第4レジスタDに、第8加算器16の出力を第3レジスタCに、第7加算器15の出力を第2レジスタBに、第9加算器17の出力を第1レジスタAにそれぞれ代入することにより、最終段の回路ブロックの第1ないし第5レジスタA〜Eの出力に第1ないし第5の初期値Ainit〜Einitをそれぞれ加算する処理を前記第5ないし第9加算器13〜17で行うことを特徴とするものである。このようにすれば、図5に示すように、最終段の回路ブロックの出力に図2に示すような5つの加算器を付加する必要がなくなる。
【0010】
請求項3の発明によれば、請求項1または2において、1段目から80段目の回路ブロックに対し、図6及び図7に示すように、1から80までカウントできるカウンタ1を割り当て、1段目から79段目の回路ブロックの各ステージに対しては1から4までカウントでき、80段目の回路ブロックの各ステージに対しては1から5までカウントできるカウンタ2を割り当て、さらに、図8に示すように、カウンタ1の1〜20、21〜39、41〜59、61〜80の値に対して1から4までカウントできるカウンタ3を割り当てたものであり、これにより、図1に示す回路ブロックの使い回しが可能となり、最小の回路面積でかつ高速にハッシュ値を生成できる。すなわち、請求項3の発明では、図2または図5に示される1段目から80段目の回路ブロックの全部または一部は、少なくとも2個の加算器を含む1ステージ分の演算回路を複数回反復して使用することにより構成され、前記演算回路が何段目の回路ブロックの処理をしているかをカウントする第1カウンタ1と、各回路ブロックを複数のステージに分割する第2カウンタ2と、第1カウンタの値から1ないし20段目、21ないし40段目、41ないし60段目、61ないし80段目を区別する第3カウンタ3を備え、各カウンタ1〜3の値により前記演算回路の処理内容を各段の回路ブロックの各ステージに応じて変更することを特徴とするものである。
【0011】
請求項4の発明によれば、SHAアルゴリズムで用いる80種類の代入値を16個のレジスタで生成、供給することで、小面積でハッシュ値を生成できる回路を実現できる。すなわち、請求項4の発明では、請求項1ないし3のいずれかにおいて、ハッシュ値を求める元のデータを分割または演算処理したデータWを設定する元データ設定処理部7は、図9に示すように、元の512bitのデータを16分割して格納して1ないし16段目の回路ブロックの元データとして出力する第1ないし第16の元データレジスタW1〜W16と、17ないし80段目の回路ブロックの元データとして第1、第3、第9及び第14の元データレジスタの値の排他的論理和を求めて出力する演算回路と、前記演算回路による演算後に第2ないし第16の元データレジスタW2〜W16の値を第1ないし第15の元データレジスタW1〜W15に順次代入すると共に、第16の元データレジスタW16には前記演算回路の出力の最上位1bitを下位側に巡回シフトしたデータを代入する手段を含んで構成されることを特徴とするものである。
【0012】
【発明の実施の形態】
上述のように、SHAアルゴリズムは類似した処理を80回繰り返す。このようなアルゴリズムの構造的な周期性に着目し、最小の面積で高速処理が可能なハッシュ関数SHAを実現するために、請求項1の発明では、図3に示すような回路ブロックを1ブロックとし、その中で1つのステージ内に加算器が2個以下になるように4つのステージに分割する。上記の回路ブロックを回路ブロックKとする。回路ブロックKの第1ステージでは、A,B,C,D,Eレジスタに格納されている初期値A,B,C,D,E(1段目のブロックではAinit,Binit,Cinit,Dinit,Einit、2段目のブロック以降は前ブロックで導出された値)により演算f(B,C,D)の実行およびそれにより得られた値(a)の保持、値Aの上位5bitを巡回シフトしたものと値Eとの加算の実行およびそれにより得られた値(b)の保持、あらかじめ与えられた16個の値(W1〜W16)をもとに行われる演算W[t]の実行およびそれにより得られた値(c)の保持、そしてブロックの番号により選択、入力される値K(その値を(d)とする)の保持を行う。
【0013】
回路ブロックKの第2ステージでは第1ステージで得られた結果から(a)+(b)の実行およびそれにより得られた値(e)の保持、(c)+(d)の実行およびそれにより得られた値(f)の保持を行う。
回路ブロックKの第3ステージでは第2ステージで得られた結果から(e)+(f)の実行およびそれにより得られた値(g)の保持を行う。
【0014】
回路ブロックKの第4ステージでは第3ステージで得られた結果(g)をAレジスタに、もとあったAレジスタの値をBレジスタに、もとあったBレジスタの値の上位30bitを下位側に巡回シフトしてCレジスタに、もとあったCレジスタの値をDレジスタに、もとあったDレジスタの値をEレジスタにそれぞれ格納する。これによりA,B,C,D,Eレジスタの値の更新が完了する。
【0015】
この回路ブロックKを80個直列に接続し、80段目のブロックにより出力されたA,B,C,D,Eに対して、A=Ainit+A,B=Binit+B,C=Cinit+C,D=Dinit+D,E=Einit+Eの演算を行う。以上の処理を行う回路全体の構成は図2のようになる。
【0016】
請求項2の発明では、図4に示すような回路ブロックを1ブロックとし、その中で1つのステージ内に加算器が2個以下になるように5つのステージに分割する。上記の回路ブロックを回路ブロックZとし、図5に示すように79段目の回路ブロックKの後に接続する。回路ブロックZでは1ステージに含まれる加算器の最大数を2個にするために、回路ブロックKの79段目のブロックの第4ステージにEinitと79段目のブロックの第4ステージのDレジスタを加算する加算器13を設け、80段目のブロックの第1ステージにDinitと79段目のブロックの第4ステージのCレジスタを加算する加算器14を設け、80段目のブロックの第3ステージにBinitと79段目のブロックの第4ステージのAレジスタを加算する加算器15を設け、80段目のブロックの第4ステージにCinitと79段目のブロックの第4ステージのBレジスタの上位30bitを下位側に巡回シフトしたものを加算する加算器16と、Ainitと80段目のブロックの第3ステージの加算器11の出力を加算する加算器17を設ける。
【0017】
これにより回路ブロックZは回路ブロックKをもとに第1ステージと第3ステージにそれぞれ1個、第4ステージに2個の加算器を追加した構造となるが、その他に1ブロック内で行われる値の導出や巡回シフト等の処理は他ブロックと同一のステージで実行されるため、回路ブロックZの構造について回路ブロックKとの類似性が保たれる。
【0018】
請求項3の発明によれば、図5の回路に対し、1から80までカウントできるカウンタ1、1から5までカウントできるカウンタ2、1から4までカウントできるカウンタ3を付加する。カウンタ1の1から79は回路ブロックKを、カウンタ1の80は回路ブロックZを示す。カウンタ1により必要な回路ブロックを選択する。カウンタ2の1から4は回路ブロックK、回路ブロックZのステージ1から4を示す。また、カウンタ2の5は回路ブロックZの第5ステージを示す。回路ブロックK、回路ブロックZにおいて、各ステージに現れる加算器の数は2個以下であり、カウンタ2を用いて処理中のステージを判定し、加算器の入出力端子の接続を変更することにより加算器の再利用が可能となり、これによりハッシュ装置に具備する加算器を2個にまで低減することができる。カウンタ3の1はカウンタ1の1〜20、2はカウンタ1の21〜40、3はカウンタ1の41〜60、4はカウンタ1の61〜80に対応する。
【0019】
回路ブロックK、回路ブロックZについて、回路構成は類似しているが、各ステージで代入する値、式はカウンタ3の1から4で異なる。したがって、カウンタ3を用いて、代入する値、式を選択する。これら3種類のカウンタを組み合わせることにより、現時点でSHAアルゴリズムのうち、どのブロックのどのステージの処理を行っているのかを判断し、代入値、代入式、加算器の入出力選択を行う。なお、回路ブロックKについて、カウンタ1とカウンタ2の関係を図7に示す。回路ブロックZについて、カウンタ1とカウンタ2の関係を図8に示す。また、カウンタ1とカウンタ3の関係を図9に示す。
【0020】
請求項4の発明によれば、上記の回路において用いる代入値Wを、カウンタ1が示す全ての回路ブロック(1〜80段目)のそれぞれに対応して出力する。ハッシュ関数SHAでは80種類の元データWが必要となるが、これら全てを生成するために、16個のレジスタ(W1〜W16)を具備し、カウンタ1の値が1〜16のときはカウンタ1の値tに対応するWtをそのまま出力し、カウンタ1の値tが17〜80のときはW=Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16の演算を行い、その後、最上位bitを下位側へ巡回シフトし、W16に格納する。このときW2〜W16に元々格納されていた値は、それぞれ1つ下位のレジスタW1〜W15にシフト(Wn→Wn−1;n=2,3,…,16)され、W1に格納されていた値は消去される。この様子を図10に示す。これにより16個のレジスタW1〜W16のみでハッシュ値の生成に必要な80種類の元データW[1]〜W[80]を全て生成することができる。
【0021】
【発明の効果】
請求項1の発明によれば、1ステージに2個以内の加算器を用いてハッシュ関数SHAを求めることができるから、小さな回路面積で高速なハッシュ装置を提供できる。
請求項2の発明によれば、最終段およびその前段の回路ブロックで加算器が余っているステージを利用して最終段で必要となる初期値の加算を行うようにしたので、ハッシュ値の演算速度をより一層向上できる。
【0022】
請求項3の発明によれば、何段目の回路ブロックかを判定する第1カウンタ、どのステージかを判定する第2カウンタ、論理演算処理部で用いる論理式や定数設定処理部で設定すべき定数を選択する第3カウンタを設けたので、1ステージに2個以内の加算器を含む共通の回路ブロックを複数回反復して使用する動作が容易に実現できる。
請求項4の発明によれば、80段の回路ブロックでそれぞれ必要となる80種類の元データを16個のレジスタで設定できるから、ハッシュ装置の回路面積を小さくできる。
【図面の簡単な説明】
【図1】本発明のハッシュ装置における基本回路ブロックを示す回路図である。
【図2】請求項1の一実施形態に係るハッシュ装置の全体構成を示す回路図である。
【図3】請求項1の一実施形態に係るハッシュ装置の各段の回路ブロックを示す回路図である。
【図4】請求項2の一実施形態に係るハッシュ装置の最終段の回路ブロックを示す回路図である。
【図5】請求項2の一実施形態に係るハッシュ装置の全体構成を示す回路図である。
【図6】請求項3の1ないし79段目の回路ブロックと第1、第2カウンタの関係を示す説明図である。
【図7】請求項3の80段目の回路ブロックと第1、第2カウンタの関係を示す説明図である。
【図8】請求項3の第1、第3カウンタの関係を示す説明図である。
【図9】請求項4の元データ設定処理部の構成および動作を示す説明図である。
【符号の説明】
4 第1のローテーション処理部
5 論理演算処理部
6 第1加算器
7 元データ設定処理部
8 定数設定処理部
9 第2加算器
10 第3加算器
11 第4加算器
12 第2のローテーション処理部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a technique for ensuring network security, and more particularly to a hash device that implements a hash function SHA that converts original data into an irreversible hash value by hardware.
[0002]
[Prior art]
Conventionally, the SHA algorithm, which is one of hash functions, is realized by software. Hereinafter, the SHA algorithm will be described. The initial values Ainit, Binit, Cinit, Dinit, Dinit, Einit of 32-bit variables A, B, C, D, E are set in hexadecimal as follows.
Ainit = 0x67452301
Binit = 0xEFCDAB89
Cinit = 0x98BADCFE
Dinit = 0x10325476
Einit = 0xC3D2E1F0
[0003]
The original data divided into n pieces of 512 bits is assumed to be M1, M2,. The following processing is repeated for i = 1 to n.
(A) The original data Mi is divided into 16 in 32 bits, and W1, W2,.
(B) A = Ainit, B = Binit, C = Cinit, D = Dinit, E = Einit.
[0004]
(C) The following processing is repeated for t = 1, 2,.
TEMP = S (5, A) + f (B, C, D) + E + W + K
Here, TEMP is a temporary variable, S (m, x) is a cyclic shift of the upper mbit of the 32-bit variable x to the lower side, and f (B, C, D) and K are given by the following equations.
・ When 1 ≦ t ≦ 20,
f (B, C, D) = (B AND C) OR ((NOT B) AND D)
K = 0x5A828999
・ When 21 ≦ t ≦ 40,
f (B, C, D) = B XOR C XOR D
K = 0x6ED9EBA1
・ When 41 ≦ t ≦ 60,
f (B, C, D) = (B AND C) OR (B AND D) OR (C AND D)
K = 0x8F1BBCDC
・ When 61 ≦ t ≦ 80,
f (B, C, D) = B XOR C XOR D
K = 0xCA62C1D6
[0005]
The original data W is given by the following equation.
・ When 1 ≦ t ≦ 16,
W = Wt
・ If 17 ≦ t ≦ 80,
Let W = S (1, W t−3 XOR W t−8 XOR W t−14 XOR W t−16 ).
After obtaining the temporary variable TEMP by the above equation, it is assumed that E = D, D = C, C = S (30, B), B = A, A = TEMP.
[0006]
(D) Finally, initial values are added to the variables A, B, C, D, and E. That is,
A = Ainit + A
B = Binit + B
C = Cinit + C
D = Dinit + D
E = Einit + E
And Thereby, the value of the hash function (32 × 5 = 160 bits) is calculated. The 160-bit data is used as a message digest (summary function) that summarizes the original message.
[0007]
[Problems to be solved by the invention]
A user who uses a hash function has a greater trust in a hash function SHA implemented in hardware than a hash function SHA implemented in software, so that a high-speed and small-area hash device can be realized early by hardware. It is desired.
[0008]
[Means for Solving the Problems]
According to the first aspect of the present invention, by limiting the maximum number of adders to be used at the same time to two for processing of one cycle of the SHA algorithm having a periodic structure, the hash value can be obtained at high speed with a small circuit area. Can be generated. That is, the invention of claim 1 is a hash device including first to fifth registers A to E for obtaining a 160-bit hash value from original data using a SHA algorithm, as shown in FIG. A first rotation processing unit 4 that cyclically shifts the upper 5 bits of the first register A to the lower side, and a logical operation f (B, C, D) based on the second, third, and fourth registers B, C, and D Data obtained by dividing or arithmetically processing the original data for obtaining the hash value, the logical operation processing unit 5 that executes the above, the first adder 6 that adds the output of the first rotation processing unit 4 and the value of the fifth register E A first stage including an original data setting processing unit 7 for setting W and a constant setting processing unit 8 for setting a predetermined constant K; a first stage logic operation processing unit 5; and a first adder 6 and original data setting A second stage including a second adder 9 for adding any two of the outputs of the processing unit 7 and the constant setting processing unit 8 and a third adder 10 for adding the remaining two; , A third stage including a fourth adder 11 for adding the outputs of the second adder 9 and the third adder 10 of the second stage, and fourth, fifth, and fourth registers E and D, The values of the third registers D and C are substituted, and the output of the second rotation processing unit 12 that cyclically shifts the upper 30 bits of the second register B to the lower side is substituted into the third register C. A circuit block including a fourth stage including a process of substituting the value of the first register A and substituting the output of the fourth adder 11 of the third stage into the first register A as shown in FIG. Connected, first to fifth registers A to E of the first stage circuit block First to fifth initial values Ainit to Einit are set, and the first to fifth initial values Ainit to Einit are added to the outputs of the first to fifth registers A to E of the final stage circuit block, respectively. It is characterized by connecting an adder. In the configuration of FIG. 2, an adder that simultaneously adds the first to fifth initial values Ainit to Einit to the outputs of the first to fifth registers A to E of the circuit block in the final stage is also used simultaneously. The maximum number is limited to two, A = Ainit + A, B = Binit + B is executed in one stage, C = Cinit + C, D = Dinit + D is executed in the next one stage, and E = Einit + E is executed in the next one stage. . Therefore, as will be described later, the number of adders to be provided in the hash device of the present invention is two, and the circuit area can be reduced.
[0009]
According to the second aspect of the present invention, in order to maintain the structural periodicity even in the final stage processing in which the periodicity is only disordered among the structurally periodic SHA algorithms, By replacing this circuit with a circuit as shown in FIG. 4, a hash value can be generated at a high speed with a minimum circuit area. That is, in the second aspect of the present invention, as shown in FIG. 4, the value of the fourth register D and the fifth initial value Einit are added to the fourth stage of the 79th stage circuit block of the first aspect of the present invention. The fifth adder 13 is provided, the sixth adder 14 for adding the value of the third register C and the fourth initial value Dinit is provided to the first stage of the 80th stage circuit block, and the 80th stage circuit block A seventh adder 15 for adding the value of the first register A and the second initial value Binit is provided in three stages, and the upper 30 bits of the second register B are moved to the lower side in the fourth stage of the 80th stage circuit block. The output of the second adder 11 that adds the output of the second rotation processing unit 12 that performs cyclic shift and the third initial value Cinit, the output of the fourth adder 11 of the third stage of the 80th stage circuit block, and the first Initial value of Aini The fifth adder is further provided in the 80th stage circuit block, and in the fifth stage, the output of the fifth adder 13 is sent to the fifth register E. The output of the sixth adder 14 is in the fourth register D, the output of the eighth adder 16 is in the third register C, the output of the seventh adder 15 is in the second register B, and the output of the ninth adder 17 is in the The first to fifth initial values Ainit to Einit are added to the outputs of the first to fifth registers A to E of the circuit block at the final stage by substituting each into the first register A, respectively. 9 adders 13 to 17 are used. This eliminates the need to add five adders as shown in FIG. 2 to the output of the final stage circuit block as shown in FIG.
[0010]
According to the invention of claim 3, in claim 1 or 2, the counter 1 that can count from 1 to 80 is allocated to the circuit blocks of the first stage to the 80th stage as shown in FIGS. 6 and 7. A counter 2 that can count from 1 to 4 for each stage of the first to 79th circuit blocks, and can count from 1 to 5 for each stage of the 80th circuit block, As shown in FIG. 8, a counter 3 that can count from 1 to 4 is assigned to the values of 1 to 20, 21 to 39, 41 to 59, and 61 to 80 of the counter 1, so that FIG. The circuit block shown in FIG. 5 can be reused, and a hash value can be generated at a high speed with a minimum circuit area. That is, in the invention of claim 3, all or part of the first to 80th circuit blocks shown in FIG. 2 or FIG. 5 includes a plurality of arithmetic circuits for one stage including at least two adders. A first counter 1 that counts how many circuit blocks the arithmetic circuit is processing, and a second counter 2 that divides each circuit block into a plurality of stages. And a third counter 3 for distinguishing the 1st to 20th stages, the 21st to 40th stages, the 41st to 60th stages, and the 61st to 80th stages from the value of the first counter. The processing content of the arithmetic circuit is changed according to each stage of the circuit block of each stage.
[0011]
According to the fourth aspect of the present invention, a circuit capable of generating a hash value with a small area can be realized by generating and supplying 80 types of substitution values used in the SHA algorithm with 16 registers. That is, in the invention of claim 4, in any one of claims 1 to 3, the original data setting processing unit 7 for setting the data W obtained by dividing or calculating the original data for obtaining the hash value is as shown in FIG. The first to sixteenth original data registers W1 to W16 that store the original 512-bit data divided into 16 parts and output the original data as the original data of the first to sixteenth stage circuit blocks, and the 17th to 80th stage circuits. An arithmetic circuit that obtains and outputs an exclusive OR of the values of the first, third, ninth, and fourteenth original data registers as the original data of the block, and the second to sixteenth original data after the calculation by the arithmetic circuit The values of the registers W2 to W16 are sequentially substituted into the first to fifteenth original data registers W1 to W15, and the sixteenth original data register W16 receives the output of the arithmetic circuit. It is characterized in being configured to include a means for substituting the data obtained by cyclically shifting the upper 1bit the lower side.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
As described above, the SHA algorithm repeats a similar process 80 times. Paying attention to the structural periodicity of such an algorithm, in order to realize a hash function SHA capable of high-speed processing with a minimum area, in the invention of claim 1, the circuit block as shown in FIG. In such a case, it is divided into four stages so that there are two or less adders in one stage. The above circuit block is referred to as a circuit block K. In the first stage of the circuit block K, the initial values A, B, C, D, and E stored in the A, B, C, D, and E registers (Ainit, Binit, Cinit, Dinit, Einit, execution of operation f (B, C, D) and retention of value (a) obtained by execution f (B, C, D) by the value derived from the previous block after the second stage block, and cyclic shift of the upper 5 bits of value A Execution of addition of the value E and the value E, retention of the value (b) obtained thereby, execution of an operation W [t] performed based on 16 values (W1 to W16) given in advance, and The value (c) obtained thereby is held, and the value K selected and inputted by the block number (the value is assumed to be (d)) is held.
[0013]
In the second stage of the circuit block K, execution of (a) + (b) and retention of the value (e) obtained from the result obtained in the first stage, execution of (c) + (d), and that The value (f) obtained by the above is held.
In the third stage of the circuit block K, (e) + (f) is executed from the result obtained in the second stage and the value (g) obtained thereby is held.
[0014]
In the fourth stage of the circuit block K, the result (g) obtained in the third stage is stored in the A register, the original A register value is stored in the B register, and the upper 30 bits of the original B register value is stored in the lower order. The original C register value is stored in the D register, and the original D register value is stored in the E register. Thereby, the update of the values of the A, B, C, D, and E registers is completed.
[0015]
80 circuit blocks K are connected in series, and A = Ainit + A, B = Binit + B, C = Cinit + C, D = Dinit + D, with respect to A, B, C, D, E output by the 80th block. E = Einit + E is calculated. The overall circuit configuration for performing the above processing is as shown in FIG.
[0016]
According to the second aspect of the present invention, the circuit block as shown in FIG. 4 is formed as one block, and is divided into five stages so that the number of adders in one stage is two or less. The above circuit block is referred to as a circuit block Z, and is connected after the 79th stage circuit block K as shown in FIG. In the circuit block Z, in order to make the maximum number of adders included in one stage two, Einit and the fourth stage D register of the 79th stage block are added to the fourth stage of the 79th stage block of the circuit block K. Is added to the first stage of the 80th block, and the adder 14 is added to add the fourth stage C register of the 79th block to the third stage of the 80th block. The stage is provided with an adder 15 for adding Binit and the A register of the fourth stage of the 79th stage block, and Cinit and the B register of the fourth stage of the 79th stage block are added to the fourth stage of the 80th stage block. Add the output of the adder 16 that adds the cyclic shift of the upper 30 bits to the lower side, and the output of the adder 11 of the third stage of the Ainit and 80th block. An adder 17 to be provided.
[0017]
Thus, the circuit block Z has a structure in which one adder is added to each of the first stage and the third stage and two adders are added to the fourth stage based on the circuit block K. In addition, the circuit block Z is performed in one block. Since processing such as value derivation and cyclic shift is executed at the same stage as other blocks, the structure of the circuit block Z is kept similar to the circuit block K.
[0018]
According to the invention of claim 3, a counter 1 capable of counting from 1 to 80, a counter 2 capable of counting from 1 to 5, and a counter 3 capable of counting from 1 to 4 are added to the circuit of FIG. 1 to 79 of the counter 1 indicate the circuit block K, and 80 of the counter 1 indicates the circuit block Z. A necessary circuit block is selected by the counter 1. The counters 1 to 4 indicate the stages 1 to 4 of the circuit block K and the circuit block Z, respectively. Further, 5 of the counter 2 indicates the fifth stage of the circuit block Z. In the circuit block K and the circuit block Z, the number of adders appearing in each stage is two or less, and by determining the stage being processed using the counter 2 and changing the connection of the input / output terminals of the adder The adder can be reused, and thus the number of adders provided in the hash device can be reduced to two. 1 of the counter 3 corresponds to 1 to 20 of the counter 1, 2 corresponds to 21 to 40 of the counter 1, 3 corresponds to 41 to 60 of the counter 1, and 4 corresponds to 61 to 80 of the counter 1.
[0019]
The circuit block K and the circuit block Z have similar circuit configurations, but the values and expressions to be substituted at each stage are different from 1 to 4 of the counter 3. Therefore, the value and expression to be substituted are selected using the counter 3. By combining these three types of counters, it is determined which stage of which block of the SHA algorithm is currently processed, and an assignment value, an assignment expression, and input / output selection of an adder are performed. For the circuit block K, the relationship between the counter 1 and the counter 2 is shown in FIG. FIG. 8 shows the relationship between the counter 1 and the counter 2 for the circuit block Z. The relationship between the counter 1 and the counter 3 is shown in FIG.
[0020]
According to the invention of claim 4, the substitution value W used in the above circuit is output corresponding to each of all circuit blocks (1st to 80th stages) indicated by the counter 1. The hash function SHA requires 80 types of original data W. In order to generate all of them, 16 registers (W1 to W16) are provided, and when the value of the counter 1 is 1 to 16, the counter 1 Wt corresponding to the value t is output as it is, and when the value t of the counter 1 is 17 to 80, W = W t-3 XOR W t-8 XOR W t-14 XOR W t-16 is calculated, Thereafter, the most significant bit is cyclically shifted to the lower side and stored in W16. At this time, the values originally stored in W2 to W16 were respectively shifted to the lower registers W1 to W15 (Wn → Wn−1; n = 2, 3,..., 16) and stored in W1. The value is erased. This is shown in FIG. As a result, all of the 80 types of original data W [1] to W [80] necessary for generating the hash value can be generated with only the 16 registers W1 to W16.
[0021]
【The invention's effect】
According to the first aspect of the present invention, since the hash function SHA can be obtained using two or less adders in one stage, a high-speed hash device can be provided with a small circuit area.
According to the second aspect of the present invention, the initial value required in the final stage is added using the stage in which the adder is left in the final stage and the preceding circuit block. The speed can be further improved.
[0022]
According to the third aspect of the present invention, the first counter for determining the number of circuit blocks, the second counter for determining which stage, and the logical expression used in the logical operation processing unit and the constant setting processing unit should be set. Since the third counter for selecting a constant is provided, an operation of repeatedly using a common circuit block including two or less adders in one stage can be easily realized.
According to the fourth aspect of the present invention, since 80 types of original data required in each of the 80-stage circuit blocks can be set by 16 registers, the circuit area of the hash device can be reduced.
[Brief description of the drawings]
FIG. 1 is a circuit diagram showing a basic circuit block in a hash device of the present invention.
FIG. 2 is a circuit diagram showing an overall configuration of a hash device according to an embodiment of claim 1;
FIG. 3 is a circuit diagram showing a circuit block of each stage of the hash device according to an embodiment of the first aspect of the present invention.
FIG. 4 is a circuit diagram showing a circuit block at the final stage of the hash device according to one embodiment of the present invention;
FIG. 5 is a circuit diagram showing an overall configuration of a hash device according to an embodiment of claim 2;
FIG. 6 is an explanatory diagram showing the relationship between the circuit blocks in the first to 79th stages and the first and second counters according to claim 3;
FIG. 7 is an explanatory diagram showing the relationship between the 80th stage circuit block of claim 3 and first and second counters;
FIG. 8 is an explanatory diagram showing a relationship between first and third counters according to claim 3;
FIG. 9 is an explanatory diagram showing a configuration and operation of an original data setting processing unit according to claim 4;
[Explanation of symbols]
4 First Rotation Processing Unit 5 Logical Operation Processing Unit 6 First Adder 7 Original Data Setting Processing Unit 8 Constant Setting Processing Unit 9 Second Adder 10 Third Adder 11 Fourth Adder 12 Second Rotation Processing Unit

Claims (4)

元のデータからSHAアルゴリズムを用いて160bitのハッシュ値を求めるための第1ないし第5レジスタを備えるハッシュ装置であって、第1レジスタの上位5ビットを下位側へ巡回シフトする第1のローテーション処理部と、第2、第3、第4レジスタに基づく論理演算を実行する論理演算処理部と、第1のローテーション処理部の出力と第5レジスタの値を加算する第1加算器と、ハッシュ値を求める元のデータを分割または演算処理したデータを設定する元データ設定処理部と、所定の定数を設定する定数設定処理部とを含んで構成される第1ステージと、第1ステージの論理演算処理部と第1加算器と元データ設定処理部と定数設定処理部の出力のうちいずれか2つを加算する第2加算器と、残りの2つを加算する第3加算器とを含んで構成される第2ステージと、第2ステージの第2加算器と第3加算器の出力を加算する第4加算器を含んで構成される第3ステージと、第5、第4レジスタに第4、第3レジスタの値を代入し、第2レジスタの上位30ビットを下位側へ巡回シフトする第2のローテーション処理部の出力を第3レジスタに代入し、第2レジスタに第1レジスタの値を代入し、第3ステージの第4加算器の出力を第1レジスタに代入する処理を含む第4ステージとを含む回路ブロックを80段縦続接続し、1段目の回路ブロックの第1ないし第5レジスタに第1ないし第5の初期値を設定すると共に、最終段の回路ブロックの第1ないし第5レジスタの出力に前記第1ないし第5の初期値をそれぞれ加算する加算器を接続して成ることを特徴とするハッシュ装置。A hash device including first to fifth registers for obtaining a 160-bit hash value from original data using a SHA algorithm, wherein the first rotation process for cyclically shifting the upper 5 bits of the first register to the lower side , A logical operation processing unit that performs logical operations based on the second, third, and fourth registers, a first adder that adds the output of the first rotation processing unit and the value of the fifth register, and a hash value A first stage including an original data setting processing unit for setting data obtained by dividing or calculating original data to be obtained, a constant setting processing unit for setting a predetermined constant, and a logical operation of the first stage A second adder that adds any two of the outputs of the processing unit, the first adder, the original data setting processing unit, and the constant setting processing unit, and a third adder that adds the remaining two A third stage including a second adder that adds the outputs of the second adder and the third adder of the second stage, and fifth and fourth registers. The values of the fourth and third registers are substituted into the second register, the output of the second rotation processing unit that cyclically shifts the upper 30 bits of the second register to the lower side is substituted into the third register, and the first register is assigned to the second register. And a circuit block including a fourth stage including a process of substituting the output of the fourth adder of the third stage into the first register is cascade-connected to 80 stages of the first stage circuit block. The first to fifth initial values are set in the fifth to fifth registers, and adders for adding the first to fifth initial values to the outputs of the first to fifth registers of the final stage circuit block are connected. It is characterized by Mesh devices. 請求項1において、79段目の回路ブロックの第4ステージに第4レジスタの値と第5の初期値を加算する第5加算器を設け、80段目の回路ブロックの第1ステージに第3レジスタの値と第4の初期値を加算する第6加算器を設け、80段目の回路ブロックの第3ステージに第1レジスタの値と第2の初期値を加算する第7加算器を設け、80段目の回路ブロックの第4ステージは第2レジスタの上位30ビットを下位側へ巡回シフトする第2のローテーション処理部の出力と第3の初期値を加算する第8加算器と、80段目の回路ブロックの第3ステージの第4加算器の出力と第1の初期値を加算する第9加算器とを含むステージとし、80段目の回路ブロックにさらに第5ステージを設けて、該第5ステージでは、第5加算器の出力を第5レジスタに、第6加算器の出力を第4レジスタに、第8加算器の出力を第3レジスタに、第7加算器の出力を第2レジスタに、第9加算器の出力を第1レジスタにそれぞれ代入することにより、最終段の回路ブロックの第1ないし第5レジスタの出力に第1ないし第5の初期値をそれぞれ加算する処理を前記第5ないし第9加算器で行うことを特徴とするハッシュ装置。5. The fifth adder for adding the value of the fourth register and the fifth initial value is provided in the fourth stage of the 79th stage circuit block according to claim 1, and the third stage is provided in the first stage of the 80th stage circuit block. A sixth adder for adding the register value and the fourth initial value is provided, and a seventh adder for adding the first register value and the second initial value is provided in the third stage of the 80th stage circuit block. , The fourth stage of the 80th stage circuit block is an eighth adder that adds the output of the second rotation processing unit that cyclically shifts the upper 30 bits of the second register to the lower side and the third initial value; A stage including the output of the fourth adder of the third stage of the circuit block of the stage and a ninth adder for adding the first initial value, and further providing a fifth stage in the circuit block of the 80th stage, In the fifth stage, the output of the fifth adder is 5 register, 6th adder output to 4th register, 8th adder output to 3rd register, 7th adder output to 2nd register, 9th adder output to 1st register And the fifth to ninth adders perform the process of adding the first to fifth initial values to the outputs of the first to fifth registers of the final stage circuit block, respectively. Hash device to perform. 請求項1または2において、1段目から80段目の回路ブロックの全部または一部は、少なくとも2個の加算器を含む1ステージ分の演算回路を複数回反復して使用することにより構成され、前記演算回路が何段目の回路ブロックの処理をしているかをカウントする第1カウンタと、各回路ブロックを複数のステージに分割する第2カウンタと、第1カウンタの値から1ないし20段目、21ないし40段目、41ないし60段目、61ないし80段目を区別する第3カウンタを備え、各カウンタの値により前記演算回路の処理内容を各段の回路ブロックの各ステージに応じて変更することを特徴とするハッシュ装置。3. The circuit block according to claim 1, wherein all or part of the first to 80th stage circuit blocks are configured by repeatedly using an arithmetic circuit for one stage including at least two adders. A first counter that counts which stage of the circuit block the arithmetic circuit is processing; a second counter that divides each circuit block into a plurality of stages; and 1 to 20 stages from the value of the first counter A third counter for distinguishing the first, 21st to 40th stages, the 41st to 60th stages, and the 61st to 80th stages, and depending on the value of each counter, the processing contents of the arithmetic circuit correspond to each stage of each stage circuit block Hashing device characterized by being changed. 請求項1ないし3のいずれかにおいて、ハッシュ値を求める元のデータを分割または演算処理したデータを設定する元データ設定処理部は、元の512bitのデータを16分割して格納して1ないし16段目の回路ブロックの元データとして出力する第1ないし第16の元データレジスタと、17ないし80段目の回路ブロックの元データとして第1、第3、第9及び第14の元データレジスタの値の排他的論理和を求めて出力する演算回路と、前記演算回路による演算後に第2ないし第16の元データレジスタの値を第1ないし第15の元データレジスタに順次代入すると共に、第16の元データレジスタには前記演算回路の出力の最上位1bitを下位側に巡回シフトしたデータを代入する手段を含んで構成されることを特徴とするハッシュ装置。4. The original data setting processing unit for setting data obtained by dividing or computing the original data for obtaining the hash value according to claim 1, wherein the original 512-bit data is divided into 16 parts and stored. First to sixteenth original data registers to be output as original data of the stage circuit block, and first, third, ninth and fourteenth original data registers as original data of the 17th to 80th stage circuit blocks. An arithmetic circuit that obtains and outputs an exclusive OR of the values; sequentially substitutes the values of the second to sixteenth original data registers into the first to fifteenth original data registers after the calculation by the arithmetic circuit; The original data register includes means for substituting data obtained by cyclically shifting the most significant 1 bit of the output of the arithmetic circuit to the lower side. Gerhard apparatus.
JP2000089518A 2000-03-28 2000-03-28 Hash device Expired - Fee Related JP3709760B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000089518A JP3709760B2 (en) 2000-03-28 2000-03-28 Hash device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000089518A JP3709760B2 (en) 2000-03-28 2000-03-28 Hash device

Publications (2)

Publication Number Publication Date
JP2001282106A JP2001282106A (en) 2001-10-12
JP3709760B2 true JP3709760B2 (en) 2005-10-26

Family

ID=18605264

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000089518A Expired - Fee Related JP3709760B2 (en) 2000-03-28 2000-03-28 Hash device

Country Status (1)

Country Link
JP (1) JP3709760B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014051751A1 (en) * 2012-09-28 2014-04-03 Intel Corporation Instruction set for sha1 round processing on 128-bit data paths

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050065976A (en) 2003-12-26 2005-06-30 한국전자통신연구원 Apparatus and method for computing sha-1 hash function
JP2005208400A (en) * 2004-01-23 2005-08-04 Mitsubishi Electric Corp Hash value calculation apparatus and arithmetic unit
KR100656375B1 (en) 2005-12-10 2006-12-11 한국전자통신연구원 Low power hash function encryption device
EP2348499A4 (en) 2008-10-07 2015-01-21 Fujitsu Ltd Encrypting apparatus
JP5269137B2 (en) * 2011-04-07 2013-08-21 三菱電機株式会社 Arithmetic unit
CN109905228B (en) * 2017-12-07 2023-07-25 北京智云芯科技有限公司 Special computing circuit for realizing hash operation

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014051751A1 (en) * 2012-09-28 2014-04-03 Intel Corporation Instruction set for sha1 round processing on 128-bit data paths
CN104641346A (en) * 2012-09-28 2015-05-20 英特尔公司 Instruction set for SHA1 round processing on 128-bit data paths
GB2520859A (en) * 2012-09-28 2015-06-03 Intel Corp Instruction set for SHA1 round processing on 128-BIT data paths
CN104641346B (en) * 2012-09-28 2018-06-08 英特尔公司 For the instruction set of the SHA1 wheel processing in 128 bit datapaths
GB2520859B (en) * 2012-09-28 2020-04-29 Intel Corp Instruction set for SHA1 round processing on 128-BIT data paths
GB2581038A (en) * 2012-09-28 2020-08-05 Intel Corp Instruction set for SHA1 round processing on 128-bit data paths
GB2581038B (en) * 2012-09-28 2021-01-27 Intel Corp Instruction set for SHA1 round processing on 128-bit data paths
GB2586000A (en) * 2012-09-28 2021-01-27 Intel Corp Instruction set for SHA1 round processing on 128-bit data paths
GB2586000B (en) * 2012-09-28 2021-05-19 Intel Corp Instruction set for SHA1 round processing on 128-bit data paths

Also Published As

Publication number Publication date
JP2001282106A (en) 2001-10-12

Similar Documents

Publication Publication Date Title
US7158638B2 (en) Encryption circuit
Eastlake 3rd et al. US secure hash algorithms (SHA and SHA-based HMAC and HKDF)
JP3724399B2 (en) Pseudorandom number generator or encryption / decryption processing device using the same
JP2007316614A (en) Hash value generating device, program, and hash value generating method
CN107395371B (en) Data encryption in wireless sensor networks
US7489779B2 (en) Hardware implementation of the secure hash standard
JP3709760B2 (en) Hash device
CN116318660B (en) Message expansion and compression method and related device
CN107835071B (en) Method and device for improving operation speed of key-in-hash method
JP2950485B2 (en) Stream cipher processor
Eastlake 3rd et al. RFC 6234: US secure hash algorithms (SHA and SHA-based HMAC and HKDF)
CN112019352A (en) SM9 quick signature method and system and electronic equipment
San Jose et al. Enhanced SHA-1 on Parsing Method and Message Digest Formula
JP4541485B2 (en) Exponentiation arithmetic unit, exponentiation remainder arithmetic unit, elliptic power multiple arithmetic unit, arrangement of those methods, and recording medium
JPH1152850A (en) Device and method for cipher conversion
JP3277894B2 (en) Information processing apparatus and code generation method
De Meulenaer et al. Hardware Implementations of a Variant of the Zémor-Tillich Hash Function: Can a Provably Secure Hash Function be very efficient?
JP4745598B2 (en) Cryptographic circuit
Ali et al. Optimal datapath design for a cryptographic processor: the Blowfish algorithm
CN103748986B (en) A kind of one-way cipher Hash Value generates method and apparatus
JPH06102820A (en) Cyphering device
JP3795315B2 (en) Encryption / decryption circuit
WO2004063842A2 (en) Flexible hardware implementation of hash functions
JP2004240298A (en) Hash function processor
JP2000151579A (en) Cryptography generation device and method therefor

Legal Events

Date Code Title Description
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: 20050719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050801

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090819

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100819

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110819

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120819

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130819

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees