JP4206205B2 - Sha演算の高速演算回路 - Google Patents
Sha演算の高速演算回路 Download PDFInfo
- Publication number
- JP4206205B2 JP4206205B2 JP2001086620A JP2001086620A JP4206205B2 JP 4206205 B2 JP4206205 B2 JP 4206205B2 JP 2001086620 A JP2001086620 A JP 2001086620A JP 2001086620 A JP2001086620 A JP 2001086620A JP 4206205 B2 JP4206205 B2 JP 4206205B2
- Authority
- JP
- Japan
- Prior art keywords
- latch
- data
- arithmetic circuit
- intermediate value
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、通信データや計算機データの安全性を高めるための暗号システムで用いられる要約関数SHA(The Secure Hash Algorithm)を処理するデジタル回路に関する。
【0002】
【従来の技術】
ハッシュ演算SHAのアルゴリズムについては、フェデラル インフォメーション プロセッシング スタンダード パブリケーションズ(Federal Information Processing Standards Publication)から公開されているフィップス パブ 180−1、1995 エイプリル 17、セキュア ハッシュ スタンダード(FIPS PUB180−1、1995 April 17、SECURE HASH STANDARD、U.S.DEPARTMENT OF COMMERCE / National Institute of Standards and Technology)で規定される。
【0003】
この中では規格の内容に加え、計算アルゴリズムも紹介されており、そのアルゴリズムは、メモリ効率や処理効率に優れている。紹介されているアルゴリズムの一つを、以下に簡単に説明する。
【0004】
まず、SHA演算を行なうメッセージを、512bitの正数倍のデータへ変換するため、定められたメッセージパディングを行なう。メッセージパディングを行なったデータを、512bit毎に分割し、M1、M2、…、Mnとする。メッセージパディングについては、本発明の説明をする上で、特に重要ではないので説明を省略する。
次にH0、H1、…、H4を以下のように初期化する。
【0005】
【数1】
【数2】
【数3】
【数4】
【数5】
M1、M2、…、Mnの一つ毎に、以下の処理を行なう。
(a) Miを32bit毎に16分割し、W0、W1、…、W15とする。
(b) W0、W1、…、W15から、W16、W17、…、W79を求めるため、t=16からt=79まで以下の処理を繰り返す。
【0006】
【数6】
ただし、関数Sy(x)は、xをybit左へ回転シフトする関数を示す。
(c) 以下の処理を行なう。
【0007】
【数7】
【数8】
【数9】
【数10】
【数11】
(d) t=0からt=79まで以下の処理を繰り返す。本発明の説明で使われるループ演算とは、この数12から数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を連結した160bitが、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は、信号線324経由で転送されるデータの値すなわち415の出力結果である。
【0028】
ここで本発明を適用した回路による、SHA演算の実行手順を説明する。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のラッチへ325の信号を、407のラッチへ324の信号を、408のラッチへ328の信号を、409のラッチへ329の信号を、410のラッチへ318の信号を、411のラッチへ326の信号を入力し、それぞれのラッチを更新して行く。3回目と4回目のループ演算は、300の信号からW3を、301の信号からW4を同時に入力したサイクルに行ない、1回目と2回目のループ演算と同様に、406のラッチへ325の信号を、407のラッチへ324の信号を、408のラッチへ328の信号を、409のラッチへ329の信号を、410のラッチへ318の信号を、411のラッチへ326の信号を入力し、それぞれのラッチを更新して行く。以下、77回目と78回目のループ演算まで、1回目と2回目のループ演算や3回目と4回目のループ演算と同様に、300の信号から奇数番目のWを、301の信号から偶数番目Wを小さい順番で同時に入力したサイクルに行ない、406のラッチへ325の信号を、407のラッチへ324の信号を、408のラッチへ328の信号を、409のラッチへ329の信号を、410のラッチへ318の信号を、411のラッチへ326の信号を入力し、それぞれのラッチを更新して行く。次に300の信号からW79を、301の信号からは、任意のデータを入力し、406から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のラッチへ324の信号を、407のラッチへ316の信号を、408のラッチへ328の信号を、409のラッチへ319の信号を、410のラッチへ320の信号を、411のラッチへ501の信号を入力し、それぞれのラッチを更新して行く。ループ演算中に、412のラッチへ、ループ演算の19回目の結果を演算するときから108の固定信号を、39回目の結果を演算するときから309の固定信号を、59回目の結果を演算するときから310の固定信号を入力する。ループ演算80回分が終了したところで、418の加算器により401のAと406のH0を足して結果を401へ入力する。402から405と407から410も同様にして加算した結果を402から405へ入力する。以上により、図3による回路での、新しいH0からH4を計算することが出来る。
【0032】
【発明の効果】
本発明によれば、ハードウェアによるSHA演算の
【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…32bit固定信号線、311−329…32bit信号線、401−412…32bitラッチ、413…TEMP初期中間値演算器、414…後半TEMP演算器、415…前半TEMP演算器、416…TEMP演算器、417…2入力32bit加算器、418、419…左30bit回転32bitシフタ、300、302−306…32bitデータ入力信号線、307−310…32bit固定信号線、311−324、327、328…32bit信号線、401−412…32bitラッチ、413…TEMP初期中間値演算器、414…後半TEMP演算器、417…2入力32bit加算器、418…左30bit回転32bitシフタ、501…32bit信号線、601…前半TEMP演算器。
Claims (4)
- 32ビットの第1から第5のラッチと、1つまたは2つ以上の中間値ラッチと、第1の演算回路と、第2の演算回路と、演算に使われるデータを入力するデータ入力信号線と、演算に使われる定数を入力する固定信号線を備え、あるサイクルにおいて、該第1の演算回路において、少なくとも該第1のラッチのデータを左へ5ビット回転シフトした値と該中間値ラッチのデータの加算を行ない演算結果を該第1のラッチへ入力し、該第2の演算回路において、後のサイクルのための中間値を演算し、該中間値ラッチへ入力することにより、該第1のラッチへ入力するデータを求める演算を該第1の演算回路と該第2の演算回路に分け並行して動作させ、演算回路のディレイを小さくし、SHA演算を高速に処理する特徴を持った高速演算回路。
- 請求項1のデジタル回路であって、該第2の演算回路において、後のサイクルのための中間値を、該第1から該第3のラッチのデータによる演算結果と該第4のラッチのデータと該データ入力信号線のデータとを加算し、該中間値ラッチへ入力することと、該第1の演算回路において、該第1のラッチと該中間値と該固定信号からのデータとを加算し、該第1のラッチへ入力することを特徴とする高速演算回路。
- 32ビットの第1から第5のラッチと、1つまたは2つ以上の中間値ラッチと、第1の演算回路と、第2の演算回路と、第3の演算回路と、演算に使われるデータを入力するデータ入力信号線と、演算に使われる定数を入力する固定信号線を備え、あるサイクルにおいて、該第1の演算回路において、少なくとも該第1のラッチのデータを左へ5ビット回転シフトした値と該中間値ラッチのデータの加算を行ない演算結果を該第2のラッチへ入力し、該第2の演算回路において、少なくとも該第1の演算回路の演算データを用いて、後のサイクルのための中間値を演算し、該中間値ラッチへ入力し、該第3の演算回路において、該第1の演算回路の演算データと、該第1から該第3のラッチのデータによる演算結果と、該第4のラッチのデータと、該データ入力信号線のデータと、該固定信号からのデータとを加算し、該第1のラッチへ入力することにより、該第2の演算回路と該第3の演算回路を並行して動作させ、演算回路のディレイを小さくし、SHA演算を高速に処理する特徴を持った高速演算回路。
- 請求項3のデジタル回路であって、該第2の演算回路において、後のサイクルのための中間値を、該第1の演算回路の演算データと該第1および該第2のラッチのデータによる演算結果と、該第3のラッチのデータと、該データ入力信号線のデータとを加算し、該中間値ラッチへ入力することと、該第1の演算回路において、該第1のラッチと該中間値と該固定信号からのデータとを加算し、該第1のラッチへ入力することを特徴とする高速演算回路。
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 JP2002287635A (ja) | 2002-10-04 |
JP4206205B2 true 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) |
Families Citing this family (6)
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 | ハッシュ値算出装置及び演算装置 |
JP4308840B2 (ja) | 2006-11-08 | 2009-08-05 | Okiセミコンダクタ株式会社 | Sha演算方法およびsha演算装置 |
KR100901697B1 (ko) | 2007-07-09 | 2009-06-08 | 한국전자통신연구원 | 저전력 sha-1 해쉬 연산 장치 및 이를 이용한 저전력hmac 암호 장치 |
KR101210607B1 (ko) | 2008-12-08 | 2012-12-11 | 한국전자통신연구원 | 해시 암호 장치 및 방법 |
JP5269137B2 (ja) * | 2011-04-07 | 2013-08-21 | 三菱電機株式会社 | 演算装置 |
-
2001
- 2001-03-26 JP JP2001086620A patent/JP4206205B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002287635A (ja) | 2002-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3851115B2 (ja) | 暗号回路 | |
US4525796A (en) | Pipelined operation unit for vector data | |
US20020032551A1 (en) | Systems and methods for implementing hash algorithms | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
CN111600699A (zh) | 用于实现散列算法的电路和方法 | |
CN115525342A (zh) | 一种sm3密码杂凑算法的加速方法及指令集处理器 | |
JP4206205B2 (ja) | Sha演算の高速演算回路 | |
CN109933304B (zh) | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 | |
JP2000004169A (ja) | Crc演算方法及びcrc演算回路 | |
US20050144204A1 (en) | Apparatus and method for computing SHA-1hash function | |
US7181009B1 (en) | Generating message digests according to multiple hashing procedures | |
JP4567753B2 (ja) | パリティ生成回路、計数回路および計数方法 | |
CN112988235B (zh) | 一种高效率第三代安全散列算法的硬件实现电路及方法 | |
JP3709760B2 (ja) | ハッシュ装置 | |
JP2003098960A (ja) | 暗号復号回路 | |
CN114527956A (zh) | 抗spa攻击的国密sm2算法中非定点标量乘法的计算方法 | |
JP5113833B2 (ja) | 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置 | |
CN112463116A (zh) | 用于划分组合逻辑的方法和电路 | |
KR100473449B1 (ko) | 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법 | |
US11843689B2 (en) | Methods and systems for reducing propagation delays in hardware implementation of ZUC cryptographic algorithms | |
CN213482935U (zh) | 执行哈希算法的电路、计算芯片和加密货币矿机 | |
Júnior et al. | Application-Specific System Processor for the SHA-1 Hash Algorithm | |
CN112054889B (zh) | 消息认证码的生成方法及生成装置、计算机可读存储介质 | |
KR102282363B1 (ko) | 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램 | |
JP2664750B2 (ja) | 演算装置及び演算処理方法 |
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 |