JP2002287635A - Sha演算の高速演算回路 - Google Patents

Sha演算の高速演算回路

Info

Publication number
JP2002287635A
JP2002287635A JP2001086620A JP2001086620A JP2002287635A JP 2002287635 A JP2002287635 A JP 2002287635A JP 2001086620 A JP2001086620 A JP 2001086620A JP 2001086620 A JP2001086620 A JP 2001086620A JP 2002287635 A JP2002287635 A JP 2002287635A
Authority
JP
Japan
Prior art keywords
data
latch
circuit
arithmetic
arithmetic circuit
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.)
Granted
Application number
JP2001086620A
Other languages
English (en)
Other versions
JP4206205B2 (ja
Inventor
Fumio Sugano
文雄 菅野
Satoru Kokuni
哲 小國
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.)
Hitachi Ltd
Hitachi Information Technology Co Ltd
Original Assignee
Hitachi Ltd
Hitachi Information Technology Co 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 Hitachi Ltd, Hitachi Information Technology Co Ltd filed Critical Hitachi Ltd
Priority to JP2001086620A priority Critical patent/JP4206205B2/ja
Publication of JP2002287635A publication Critical patent/JP2002287635A/ja
Application granted granted Critical
Publication of JP4206205B2 publication Critical patent/JP4206205B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】要約関数SHA(The Secure Ha
sh Algorithm)演算全体の性能を向上させ
るデジタル回路を提供する。 【解決手段】SHA演算の内部処理のパイプライン化に
よる高速化。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、通信データや計算
機データの安全性を高めるための暗号システムで用いら
れる要約関数SHA(The Secure Hash
Algorithm)を処理するデジタル回路に関す
る。
【0002】
【従来の技術】ハッシュ演算SHAのアルゴリズムにつ
いては、フェデラル インフォメーション プロセッシ
ング スタンダード パブリケーションズ(Feder
alInformation Processing
Standards Publication)から公
開されているフィップス パブ 180−1、1995
エイプリル 17、セキュア ハッシュ スタンダー
ド(FIPS PUB180−1、1995 Apri
l 17、SECURE HASH STANDAR
D、U.S.DEPARTMENT OF COMME
RCE / National Institute
of Standards and Technolo
gy)で規定される。
【0003】この中では規格の内容に加え、計算アルゴ
リズムも紹介されており、そのアルゴリズムは、メモリ
効率や処理効率に優れている。紹介されているアルゴリ
ズムの一つを、以下に簡単に説明する。
【0004】まず、SHA演算を行なうメッセージを、
512bitの正数倍のデータへ変換するため、定めら
れたメッセージパディングを行なう。メッセージパディ
ングを行なったデータを、512bit毎に分割し、M
1、M2、…、Mnとする。メッセージパディングについ
ては、本発明の説明をする上で、特に重要ではないので
説明を省略する。次にH0、H1、…、H4を以下のよう
に初期化する。
【0005】
【数1】
【数2】
【数3】
【数4】
【数5】 1、M2、…、Mnの一つ毎に、以下の処理を行なう。 (a) Miを32bit毎に16分割し、W0、W1
…、W15とする。 (b) W0、W1、…、W15から、W16、W17、…、W
79を求めるため、t=16からt=79まで以下の処理
を繰り返す。
【0006】
【数6】 ただし、関数Sy(x)は、xをybit左へ回転シフ
トする関数を示す。 (c) 以下の処理を行なう。
【0007】
【数7】
【数8】
【数9】
【数10】
【数11】 (d) t=0からt=79まで以下の処理を繰り返
す。本発明の説明で使われるループ演算とは、この数1
2から数17の処理を指している。
【0008】
【数12】
【数13】
【数14】
【数15】
【数16】
【数17】 ただし、関数ftとKtは以下のとおりである。
【0009】tが0から19のとき、
【0010】
【数18】
【数19】 tが20から39のとき、
【0011】
【数20】
【数21】 tが40から59のとき、
【0012】
【数22】
【数23】 tが60から79のとき、
【0013】
【数24】
【数25】 (e) 以下の処理を行なう。
【0014】
【数26】
【数27】
【数28】
【数29】
【数30】 以上の(a)から(e)までの処理をMnまで繰り返
し、最終結果のH0、H1、…、H4を連結した160b
itが、SHA演算の結果となる。
【0015】
【発明が解決しようとする課題】上記に示す従来技術
は、ソフトウェアによる処理に最適化したアルゴリズム
である。アルゴリズムをハードウェアで実現した場合、
ソフトウェアと異なり複数の処理を並列に実行する事が
可能となる。そのため、SHA演算の並列化できる処理
部分において、ある特定の処理のみが複雑であるため、
演算器の性能がその処理のディレイによって決まる。
【0016】具体的には、数12から数17の処理を、
ソフトウェアによる処理では逐次処理するのに対し、ハ
ードウェアでは、TEMPへの代入を省略して、数31
から数35の処理を並行して行なうことができる。例え
ば、At、…、Etをt回目のA、…、Eの値とすると、
t=iにおけるループ演算では、以下に示す処理を行な
う。
【0017】
【数31】
【数32】
【数33】
【数34】
【数35】 この処理をハードウェアにより実現したとき、図1のよ
うになる。このとき数31から数34の処理がラッチか
らラッチへのデータの代入する。これらに比べ、数35
の処理は、TEMPを演算するために、関数ftによる
論理演算と、5つの項の加算演算を行ってから、ラッチ
へ代入する。このため、数31から数34の処理に比べ
数35の処理は複雑である。また、数31から数35の
処理はループ演算で80回も繰り返されるため、数35
の処理が演算性能のボトルネックとなる。
【0018】本発明の目的は、数35の処理を高速化
し、SHA演算全体の性能を向上させるデジタル回路を
提供することにある。
【0019】
【課題を解決するための手段】SHA−1演算の一連の
処理の中で、
【0020】
【数36】 の下線部の全体または一部を、前のサイクルまでに計算
して中間結果として記憶しておき、次のサイクルでB、
…、Eの処理と並行して、Aの残りの処理を行なう。ま
た、後のサイクルのAの処理のための中間値の計算も並
行して行なう。これにより数35は分割され、デジタル
回路においては並列処理が可能となるため、性能を向上
させることが出来る。
【0021】
【発明の実施の形態】以下、本発明を適用したデジタル
回路の実施形態の一例を、図面を参照しつつ説明する。
図では、制御回路とセレクタ論理への制御信号は省略し
ている。
【0022】図2は、本発明によるSHA演算器のデジ
タル回路の構成を示す図である。図2では、制御回路と
セレクタ論理への制御信号は省略している。
【0023】401から412は32bit分のラッチ
を、413は本発明による中間結果MIDの初期値を計
算する回路で、次の演算を行なう。
【0024】
【数37】 414は中間結果MIDを用いてTEMPの計算を行な
う回路で、次の演算を行なう。
【0025】
【数38】 415は次のループ演算で用いる中間結果MIDの計算
を行なう回路で、次の演算を行なう。
【0026】
【数39】 416はTEMPの計算を行なう回路で、次の演算を行
なう。
【0027】
【数40】 一度に2回分のループ演算を行なう場合においても、本
発明により回路パスを415と416のように、並列に
設計することが出来るため、ディレイの改善やマシンサ
イクルにあわせた回路設計を柔軟に行なえる。417は
2入力の加算器を、418、419は、左へ30bit
の回転シフターを示す。ここでV324は、信号線32
4経由で転送されるデータの値すなわち415の出力結
果である。
【0028】ここで本発明を適用した回路による、SH
A演算の実行手順を説明する。401から411のラッ
チは、それぞれ更新されない場合は、同じ値を保持し続
ける。まず、302から306の入力信号から、H0
らH4の初期値または、演算を途中から再開する場合に
は計算途中のH0からH4の値を、401から405のラ
ッチへ入力する。次に、301の入力信号からW0を入
力し、413にてMIDの初期値を計算して、411の
ラッチへ入力し、311から315の信号を406から
410のラッチへ入力し、307の固定信号を412の
ラッチへ入力する。以上が、TEMPを計算するループ
演算をする前の処理である。1回目と2回目のループ演
算は、300の信号からW1を、301の信号からW2
同時に入力したサイクルに行ない、406のラッチへ3
25の信号を、407のラッチへ324の信号を、40
8のラッチへ328の信号を、409のラッチへ329
の信号を、410のラッチへ318の信号を、411の
ラッチへ326の信号を入力し、それぞれのラッチを更
新して行く。3回目と4回目のループ演算は、300の
信号からW3を、301の信号からW4を同時に入力した
サイクルに行ない、1回目と2回目のループ演算と同様
に、406のラッチへ325の信号を、407のラッチ
へ324の信号を、408のラッチへ328の信号を、
409のラッチへ329の信号を、410のラッチへ3
18の信号を、411のラッチへ326の信号を入力
し、それぞれのラッチを更新して行く。以下、77回目
と78回目のループ演算まで、1回目と2回目のループ
演算や3回目と4回目のループ演算と同様に、300の
信号から奇数番目のWを、301の信号から偶数番目W
を小さい順番で同時に入力したサイクルに行ない、40
6のラッチへ325の信号を、407のラッチへ324
の信号を、408のラッチへ328の信号を、409の
ラッチへ329の信号を、410のラッチへ318の信
号を、411のラッチへ326の信号を入力し、それぞ
れのラッチを更新して行く。次に300の信号からW79
を、301の信号からは、任意のデータを入力し、40
6から410のラッチを更新しループ演算を終了する。
また、ループ演算の18、19回目の結果を演算すると
きから308の固定信号を、38、39回目の結果を演
算するときから309の固定信号を、58、59回目の
結果を演算するときから310の固定信号を、412の
ラッチへ入力する。ループ演算80回分が終了したとこ
ろで、418の加算器により401のAと406のH0
を足し、結果を401へ入力する。402から405と
407から410も同様にして加算した結果を402か
ら405へ入力する。以上により、新しいH0からH4
計算することが出来る。
【0029】図3は、図2と異なる実施形態の1つの例
であり、一度に1回のループ演算を行ない、回路パスを
短くすることでより高速なマシンサイクルでの動作に適
した、SHA演算器のデジタル回路の構成を示す図であ
る。
【0030】図3を構成する各部品は、図2とほぼ変わ
らないが、図2における前半TEMP演算器415は、
信号の結線の変更により601の回路となり、数41の
演算を行なう。図3の回路構成によれば、図2の回路に
比べ回路規模が小さく、演算パスが短いため、より早い
マシンサイクルに対応できる。
【0031】
【数41】 図3におけるSHA演算の手順を説明する。401から
411のラッチは、それぞれ更新されない場合は、同じ
値を保持し続ける。まず、302から306の入力信号
から、H0からH4の初期値または、演算を途中から再開
する場合には計算途中のH0からH4の値を、401から
405のラッチへ入力する。次に、300の入力信号か
らW0を入力し、413にてMIDの初期値を計算し
て、411のラッチへ入力し、311から315の信号
を406から410のラッチへ入力し、307の固定信
号を412のラッチへ入力する。以上が、TEMPを計
算するループ演算をする前の処理である。ループ演算
は、300の信号からW1、W2、…、W79を、番号の小
さい順に入力して、入力する毎に406のラッチへ32
4の信号を、407のラッチへ316の信号を、408
のラッチへ328の信号を、409のラッチへ319の
信号を、410のラッチへ320の信号を、411のラ
ッチへ501の信号を入力し、それぞれのラッチを更新
して行く。ループ演算中に、412のラッチへ、ループ
演算の19回目の結果を演算するときから108の固定
信号を、39回目の結果を演算するときから309の固
定信号を、59回目の結果を演算するときから310の
固定信号を入力する。ループ演算80回分が終了したと
ころで、418の加算器により401のAと406のH
0を足して結果を401へ入力する。402から405
と407から410も同様にして加算した結果を402
から405へ入力する。以上により、図3による回路で
の、新しいH0からH4を計算することが出来る。
【0032】
【発明の効果】本発明によれば、ハードウェアによるS
HA演算の
【0033】
【数42】 の処理において、この処理を分割することによって、演
算の後半と次の演算の前半とを並列に処理することがで
き、演算器のディレイを改善できるという利点が得られ
る。
【0034】また、ループ演算を多重化する場合におい
ても、実装するマシンサイクルに合わせた回路設計を柔
軟に行なうことが出来る。
【図面の簡単な説明】
【図1】規格で示されたアルゴリズムの一部をデジタル
回路で示した図である。
【図2】本発明によるSHA演算器の一例での回路構成
を示す図である。
【図3】本発明による図2と異なる実施形態のSHA演
算器の一例での回路構成を示す図である。
【符号の説明】
100−108…32bit信号線、200−206…
32bitラッチ、207…TEMP演算器、208…
左30bit回転32bitシフタ、300−306…
32bitデータ入力信号線、307−310…32b
it固定信号線、311−329…32bit信号線、
401−412…32bitラッチ、413…TEMP
初期中間値演算器、414…後半TEMP演算器、41
5…前半TEMP演算器、416…TEMP演算器、4
17…2入力32bit加算器、418、419…左3
0bit回転32bitシフタ、300、302−30
6…32bitデータ入力信号線、307−310…3
2bit固定信号線、311−324、327、328
…32bit信号線、401−412…32bitラッ
チ、413…TEMP初期中間値演算器、414…後半
TEMP演算器、417…2入力32bit加算器、4
18…左30bit回転32bitシフタ、501…3
2bit信号線、601…前半TEMP演算器。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小國 哲 神奈川県秦野市堀山下1番地 株式会社日 立製作所エンタープライズサーバ事業部内 Fターム(参考) 5J104 AA20 JA01 NA12

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 32ビットの第1から第5のラッチと、
    1つまたは2つ以上の中間値ラッチと、第1の演算回路
    と、第2の演算回路と、演算に使われるデータを入力す
    るデータ入力信号線と、演算に使われる定数を入力する
    固定信号線を備え、あるサイクルにおいて、該第1の演
    算回路において、少なくとも該第1のラッチのデータを
    左へ5ビット回転シフトした値と該中間値ラッチのデー
    タの加算を行ない演算結果を該第1のラッチへ入力し、
    該第2の演算回路において、後のサイクルのための中間
    値を演算し、該中間値ラッチへ入力することにより、該
    第1のラッチへ入力するデータを求める演算を該第1の
    演算回路と該第2の演算回路に分け並行して動作させ、
    演算回路のディレイを小さくし、SHA演算を高速に処
    理する特徴を持った高速演算回路。
  2. 【請求項2】 請求項1のデジタル回路であって、該第
    2の演算回路において、後のサイクルのための中間値
    を、該第1から該第3のラッチのデータによる演算結果
    と該第4のラッチのデータと該データ入力信号線のデー
    タとを加算し、該中間値ラッチへ入力することと、該第
    1の演算回路において、該第1のラッチと該中間値と該
    固定信号からのデータとを加算し、該第1のラッチへ入
    力することを特徴とする高速演算回路。
  3. 【請求項3】 32ビットの第1から第5のラッチと、
    1つまたは2つ以上の中間値ラッチと、第1の演算回路
    と、第2の演算回路と、第3の演算回路と、演算に使わ
    れるデータを入力するデータ入力信号線と、演算に使わ
    れる定数を入力する固定信号線を備え、あるサイクルに
    おいて、該第1の演算回路において、少なくとも該第1
    のラッチのデータを左へ5ビット回転シフトした値と該
    中間値ラッチのデータの加算を行ない演算結果を該第2
    のラッチへ入力し、該第2の演算回路において、少なく
    とも該第1の演算回路の演算データを用いて、後のサイ
    クルのための中間値を演算し、該中間値ラッチへ入力
    し、該第3の演算回路において、該第1の演算回路の演
    算データと、該第1から該第3のラッチのデータによる
    演算結果と、該第4のラッチのデータと、該データ入力
    信号線のデータと、該固定信号からのデータとを加算
    し、該第1のラッチへ入力することにより、該第2の演
    算回路と該第3の演算回路を並行して動作させ、演算回
    路のディレイを小さくし、SHA演算を高速に処理する
    特徴を持った高速演算回路。
  4. 【請求項4】 請求項3のデジタル回路であって、該第
    2の演算回路において、後のサイクルのための中間値
    を、該第1の演算回路の演算データと該第1および該第
    2のラッチのデータによる演算結果と、該第3のラッチ
    のデータと、該データ入力信号線のデータとを加算し、
    該中間値ラッチへ入力することと、該第1の演算回路に
    おいて、該第1のラッチと該中間値と該固定信号からの
    データとを加算し、該第1のラッチへ入力することを特
    徴とする高速演算回路。
JP2001086620A 2001-03-26 2001-03-26 Sha演算の高速演算回路 Expired - Fee Related JP4206205B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001086620A JP4206205B2 (ja) 2001-03-26 2001-03-26 Sha演算の高速演算回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001086620A JP4206205B2 (ja) 2001-03-26 2001-03-26 Sha演算の高速演算回路

Publications (2)

Publication Number Publication Date
JP2002287635A true JP2002287635A (ja) 2002-10-04
JP4206205B2 JP4206205B2 (ja) 2009-01-07

Family

ID=18941970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001086620A Expired - Fee Related JP4206205B2 (ja) 2001-03-26 2001-03-26 Sha演算の高速演算回路

Country Status (1)

Country Link
JP (1) JP4206205B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100417793B1 (ko) * 2001-07-06 2004-02-11 주홍정보통신주식회사 Sha-1에 사용되는 중간값 생성회로
JP2005208400A (ja) * 2004-01-23 2005-08-04 Mitsubishi Electric Corp ハッシュ値算出装置及び演算装置
US7962753B2 (en) 2006-11-08 2011-06-14 Oki Semiconductor Co., Ltd. Method and a circuit for SHA operation with power saved
JP2011133916A (ja) * 2011-04-07 2011-07-07 Mitsubishi Electric Corp 演算装置
US8086864B2 (en) 2007-07-09 2011-12-27 Electronics And Telecommunications Research Institute Low power HMAC encryption apparatus
US8275126B2 (en) 2008-12-08 2012-09-25 Electronics And Telecommunications Research Institute Apparatus and method for hash cryptography

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100417793B1 (ko) * 2001-07-06 2004-02-11 주홍정보통신주식회사 Sha-1에 사용되는 중간값 생성회로
JP2005208400A (ja) * 2004-01-23 2005-08-04 Mitsubishi Electric Corp ハッシュ値算出装置及び演算装置
US7962753B2 (en) 2006-11-08 2011-06-14 Oki Semiconductor Co., Ltd. Method and a circuit for SHA operation with power saved
US8086864B2 (en) 2007-07-09 2011-12-27 Electronics And Telecommunications Research Institute Low power HMAC encryption apparatus
US8275126B2 (en) 2008-12-08 2012-09-25 Electronics And Telecommunications Research Institute Apparatus and method for hash cryptography
JP2011133916A (ja) * 2011-04-07 2011-07-07 Mitsubishi Electric Corp 演算装置

Also Published As

Publication number Publication date
JP4206205B2 (ja) 2009-01-07

Similar Documents

Publication Publication Date Title
US4525796A (en) Pipelined operation unit for vector data
JP4612680B2 (ja) Md5ダイジェスティングを実行する装置および方法
CN115344237A (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
CN115525342A (zh) 一种sm3密码杂凑算法的加速方法及指令集处理器
US11922133B2 (en) Processor and method for processing mask data
US4757444A (en) Vector processor capable of performing iterative processing
CN109933304B (zh) 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法
JP2002287635A (ja) Sha演算の高速演算回路
US7376685B2 (en) Apparatus and method for computing SHA-1hash function
CN111079934B (zh) 应用于环域上误差学习加密算法的数论变换单元和方法
CN114615069B (zh) 一种Quartet轻量级加密算法的实现装置及方法
JP4567753B2 (ja) パリティ生成回路、計数回路および計数方法
US7181009B1 (en) Generating message digests according to multiple hashing procedures
CN113485751B (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JPH0346024A (ja) 浮動小数点演算器
Kieu-Do-Nguyen et al. A Power-efficient Implementation of SHA-256 Hash Function for Embedded Applications
CN112988235A (zh) 一种高效率第三代安全散列算法的硬件实现电路及方法
CN117406957B (zh) 一种模乘方法、模乘组件和半定制电路
CN115037485B (zh) 轻量级认证加密算法的实现方法、装置及设备
JP2991788B2 (ja) 復号器
CN213482935U (zh) 执行哈希算法的电路、计算芯片和加密货币矿机
US11954487B2 (en) Techniques, devices, and instruction set architecture for efficient modular division and inversion
JP2664750B2 (ja) 演算装置及び演算処理方法
JP2004240299A (ja) ハッシュ関数処理装置
CN116318670A (zh) 一种适用于后量子密码算法Kyber的指令集架构

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050921

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060512

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060512

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20070216

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: 20081007

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081020

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

Free format text: PAYMENT UNTIL: 20111024

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees