JPWO2010041307A1 - 暗号化装置 - Google Patents

暗号化装置 Download PDF

Info

Publication number
JPWO2010041307A1
JPWO2010041307A1 JP2010532726A JP2010532726A JPWO2010041307A1 JP WO2010041307 A1 JPWO2010041307 A1 JP WO2010041307A1 JP 2010532726 A JP2010532726 A JP 2010532726A JP 2010532726 A JP2010532726 A JP 2010532726A JP WO2010041307 A1 JPWO2010041307 A1 JP WO2010041307A1
Authority
JP
Japan
Prior art keywords
data
circuit
bit
bits
output
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
JP2010532726A
Other languages
English (en)
Other versions
JP5198572B2 (ja
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.)
Fujitsu Ltd
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Ltd
Fujitsu Semiconductor 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 Fujitsu Ltd, Fujitsu Semiconductor Ltd filed Critical Fujitsu Ltd
Publication of JPWO2010041307A1 publication Critical patent/JPWO2010041307A1/ja
Application granted granted Critical
Publication of JP5198572B2 publication Critical patent/JP5198572B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本発明の一実施例における暗号化装置は、32*Y(Y=1又は2)ビットを基本演算単位とするSHA−2アルゴリズムを用いた、複数のレジスタが直列に配置されるシフトレジスタと、シフトレジスタに格納されるデータに基づき加算演算を行う所定個の加算器A11〜A18とを有するダイジェスト部10を有する。シフトレジスタは、(32*Y)/X(X=2。Y=1のとき1≦k≦4、Y=2のとき1≦k≦5。kは整数。)ビットのレジスタa,a.b,・・・,hを有する。各加算器A11〜A18は(32*Y)/Xビットのデータ幅を有し、シフトレジスタに格納されるデータが(32*Y)/Xビットのデータ幅でレジスタ間をシフトする1サイクルごとに加算演算を行う。

Description

本発明は、SHA−2アルゴリズムを用いた、複数のレジスタが直列に配置されるシフトレジスタと、該シフトレジスタに格納されるデータに基づき加算演算を行う所定個の加算器とを有するダイジェスト部を有する暗号化装置に関する。
セキュリティシステムの基盤技術として、暗号技術が利用されている。暗号技術の一つとして、ハッシュ関数という技術が知られている。ハッシュ関数は、任意長のデータを一定長のデータに圧縮するものである。これは、今日の情報セキュリティに不可欠であるデジタル署名などに用いられている。
主に、ハッシュ関数として、MD4、MD5、Whirlpool、SHA−2などの様々なアルゴリズムが知られている。
これらのハッシュ関数アルゴリズムは、ソフトウェア又はハードウェアのいずれによっても実装され得る。しかし、一般にハッシュ関数処理は、ソフトウェアによる実装よりもハードウェアによる実装の方が、回路規模当たりの処理効率が高いことが知られている。ここで、ハードウェアはソフトウェアと異なり、その回路規模が製造コストに直結するという面を持っている。そのため、ハードウェアによってハッシュ関数を実装する場合、コストを極小化するために、回路規模をできるだけ小さくすることが産業上重要な課題となる。
以下、一般的なハッシュ関数アルゴリズムに関して、SHA−2を例として説明する。
SHA−2は、4つのハッシュ関数アルゴリズム(SHA−224、SHA−256、SHA−384、SHA−512)の総称である。これら4つのハッシュ関数アルゴリズムは、米国標準技術研修所(National Institute of Standards and Technology;NIST)が公開している標準FIPS180−2、SECURE HASH STANDARD CHANGE NOTICE 1に記載されている。これら4つのハッシュ関数は、アルゴリズム全体の流れは同じであるが、そのデータ幅などが若干異なる。
図1は、SHA−2アルゴリズムの基本構成を示す。図示されるように、SHA−2は、ダイジェスト部(以下、"DP"と呼ぶ。)100と、メッセージ部(以下、"MP"と呼ぶ。)110とを有する。MP110及びDP100の一般的な回路構成を、夫々、図2及び図3に示す。これらの図から、MP110及びDP100はいずれも、その大部分がレジスタ及び各種演算器によって構成されていることが分かる。
SHA−256又はSHA−224の場合には、MP110は、512ビットの入力データを格納するために16個の32ビットレジスタを有する。64サイクルの間、MP110は、データWiをDP100に出力し続ける。一方、DP100は、8個の32ビットレジスタの2つの組を有する。DP110は、MP110からデータWiを受け取る64サイクルの間、シフトレジスタ構造により、第1の組の8個の32ビットレジスタa〜hを更新し続ける。つまり、DP100及びMP110は、データWiによる同期を取りながら、並列動作を行っている。DP100は、最初にデータWiを受け取ってから64サイクル後に、8サイクルにわたって終了処理を行う。具体的には、DP100は、第2の組の8個の32ビットレジスタH〜Hの値を、第1の組のレジスタa〜hを用いて更新する。SHA−256では、第2の組のレジスタH〜Hに格納される256ビットのデータが最終的な出力(ハッシュ値)となり、SHA−224では、第2の組のレジスタH〜Hに格納される224ビットのデータがハッシュ値となる。
一方、SHA−512又はSHA−384の場合には、メインループは64サイクルではなく80サイクルであり、演算単位は32ビットではなく64ビットである。他の点に関しては、上記のSHA−256又はSHA−224の場合と同じである。SHA−512では、第2の組のレジスタH〜Hに格納される512ビットのデータがハッシュ値となり、SHA−384では、第2の組のレジスタH〜Hに格納される384ビットのデータがハッシュ値となる。
上述されたように、ハッシュ関数を含めた暗号のハードウェア実装では、コスト面から回路規模の削減が重要な課題となっている。そして、ハッシュ関数の一つであるSHA−2では、その仕様からMP110よりもDP100の方がハードウェア全体の回路規模に占める割合が大きい。従って、ハードウェア実装の回路規模削減のために、DP100の回路規模の削減を図ることは必須である。図3に図示されるように、DP100は、主に、データを格納する複数のレジスタを含むレジスタ部と、加算器などの各種演算器を含む演算部とを有する。ここで、レジスタ部に関しては、先に説明されたようなSHA−2のアルゴリズム仕様上、削除することは困難である。よって、DP100の回路規模削減を図る場合には、演算部の回路規模を削減するアプローチが考えられる。一般的には、時分割又はビット分割のいずれかによって加算器を削減する方法が知られている。時分割による加算器削減は、加算器の個数を減らすことによって実現される(例えば、特開2001−282106号公報(特許文献1)参照。)。例えば、従来は2個の32ビット加算器を用いて1サイクルで演算していたものを、1個の32ビット加算器を用いて2サイクルで演算することが考えられている。一方、ビット分割による加算器削減は、加算器のデータ幅を減らすことによって実現される。例えば、従来は2個の32ビット加算器を用いて1サイクルで演算していたものを、2個の16ビット加算器を用いて2サイクルかけて演算することが考えられている。
図4は、上記の加算器削減による回路規模削減の各アプローチに従うDP100の加算器周辺の回路構成を示す。図4において、(a)は、SHA−2のアルゴリズム仕様に従った回路構成を示し、(b)は、時分割による加算器削減アプローチに従う回路構成を示し、(c)は、ビット分割による加算器削減アプローチに従う回路構成を示す。(a)に図示されるように、SHA−2のアルゴリズム仕様に従った回路構成では、8個の32*Yビット加算器(ここで、SHA−224/256の場合にY=1、SHA−384/512の場合にY=2。)を用いて1サイクルで加算演算が行われる。一方、時分割による加算器削減アプローチでは、(b)に図示されるように、同じ加算演算を2サイクルかけて行うことで、加算器の数を半減させることができる。また、ビット分割による加算器削減アプローチでは、(c)に図示されるように、32*Yビット加算データを上位16*Yビット及び下位16*Yビットに分割する。そして、1サイクル目では下位ビット加算演算を行い、2サイクル目では上位ビット加算演算を行うことで、データ幅を半減させることができる。
特開2001−282106号公報
しかし、上記の回路規模削減アプローチにおいて、時分割による加算器削減アプローチでは、異なるサイクル間で加算器を共有することとなるため、加算器の入力及び出力にセレクタを設ける必要がある。また、ビット分割による加算器削減アプローチでも同様に、異なるサイクル間で加算器を共有することとなるため、加算器の入力及び出力にセレクタを設ける必要がある。つまり、SHA−2ハードウェアの回路規模削減のための従来のアプローチはセレクタによる回路規模の増加という問題を伴う。よって、実際には、SHA−2ハードウェア全体として回路規模の削減を実現することはできない。
本発明は、上記問題を鑑み、ハッシュ関数の一つであるSHA−2のハードウェア全体として回路規模を削減することが可能な暗号化装置を提供することを目的とする。
上記目的を達成するために、本発明の一実施例における暗号化装置は、32*Y(Y=1又は2)ビットを基本演算単位とするSHA−2アルゴリズムを用いた、複数のレジスタが直列に配置されるシフトレジスタと、該シフトレジスタに格納されるデータに基づき加算演算を行う所定個の加算器とを有するダイジェスト部を有する暗号化装置であって、前記シフトレジスタは、(32*Y)/X(X=2。Y=1のとき1≦k≦4、Y=2のとき1≦k≦5。kは整数。)ビットのレジスタを有し、前記所定個の加算器は、夫々、(32*Y)/Xビットのデータ幅を有し、前記シフトレジスタに格納されるデータが(32*Y)/Xビットのデータ幅で前記レジスタ間をシフトする1サイクルごとに、前記加算演算を行うことができる。
図1乃至4を参照して記載されたように、SHA−2アルゴリズムを用いた暗号化装置では、メッセージ部よりもダイジェスト部の方が装置全体の回路規模に占める割合が大きい。よって、本発明はダイジェスト部の回路規模の削減を対象とする。また、SHA−2アルゴリズムのダイジェスト部の基本演算単位は(32*Y)ビットである。本発明の一実施例における暗号化装置では、ダイジェスト部のシフトレジスタに着目し、シフトレジスタとして(32*Y)/Xビットのレジスタを用いることとした。これにより、ダイジェスト部で用いられる加算器のデータ幅を、余分のセレクタを設けることなく、従来の1/Xにできる。
本開示の暗号化装置により、ハッシュ関数の一つであるSHA−2のハードウェア全体として回路規模を削減することが可能となる。
SHA−2アルゴリズムの基本構成を示す。 SHA−2のMPの一般的な回路構成を示す。 SHA−2のDPの一般的な回路構成を示す。 様々な回路規模削減アプローチに従うDPの加算器周辺の回路構成を示す。 本発明の一実施例におけるSHA−2のDPの回路構成を示す。 従来及び本発明の一実施例の夫々に関して加算器周辺回路を示す。 図5のΣ周辺回路の第1の構成を示す。 図5のΣ周辺回路の第2の構成を示す。 Xサイクル処理時のシフトレジスタの構成を示す。 Xサイクル処理時のΣ周辺回路の構成を示す。 図10に図示されるΣ回路の周辺回路のデータ入出力に関する説明図である。 Xサイクル処理時のMaj回路の構成を示す。 Xサイクル処理時のCh回路の構成を示す。
符号の説明
10,100 ダイジェスト部
110 メッセージ部
20 レジスタ部
30 演算部
40 シフトレジスタ
a〜h レジスタ
A11〜A18 加算器
C11 Σ0回路
C12 Maj回路
C13 Σ1回路
C14 Ch回路
S11〜S14,S21,S22 インターフェース部
以下、本発明を実施するための最良の形態について、添付の図面に関連して記載される具体的な実施例を参照して説明する。
図5は、本発明の一実施例に従うSHA−2のDPの回路構成を示す。図5のDP10は、レジスタ部20及び演算部30を有する。レジスタ部20は、16個の16*Yビットレジスタa,a.b,・・・,hを有するレジスタの組を有する。DP10は、このレジスタの組を用いて、最終的な出力(ハッシュ値)を格納するH〜Hの値を更新する。具体的には、H0←H0+{a1‖a2}, H1←H1+{b1‖b2}, …, H7←H7+{h1‖h2} に従って更新を行う。ここで、Yは、SHA−224/256の場合には"1"をとり、SHA−384/512の場合には"2"をとる。すなわち、これは、SHA−2アルゴリズムのDPの基本演算単位が、SHA−224/256では32ビットであり、SHA−384/512では64ビットであることを意味する。また、演算部30は、8個の16*Yビット加算器A11〜A18を有する。
先に図3を参照して記載されたように、従来のDPの回路構成では、レジスタの組は8個の32*Yビットのレジスタa〜hを有する。これに対し、本実施例に従うDPの回路構成では、レジスタの組は16個の16*Yビットのレジスタa,a.b,・・・,hを有する16*Yビットシフトレジスタ構造をとる。この構造により、従来の回路規模削減アプローチで問題であったDPの加算器A11〜A18周辺のセレクタ増加が抑制される。16*Yビットシフトレジスタ構造をとることによる効果を、図6を参照して、より詳細に記載する。
図6は、従来及び本発明の一実施例の夫々に関して加算器周辺回路を示す。本発明の一実施例における加算器A11〜A18の動作の理解を容易にするため、図6には、シフトレジスタの一部のレジスタ及び演算部に含まれる1個の加算器が示され、他の構成要素は示されない。
図6において、(a)は、従来のビット分割による加算器削減アプローチに従う回路構成を示す。図示されるように、この従来のアプローチでは、本発明の一実施例で用いられる2個の16*Yビットレジスタの組に対応する32*YビットレジスタA、Bを用いる。この回路構成は、SHA−2アルゴリズムの本来の仕様に従い、32*Yビット単位のシフト処理を行う。よって、演算単位が32*Yビットとなるので、ビット分割による16*2ビットの加算を実現するために、32*Yビットデータの上位16*Yビットと下位16*Yビットを順次加算しなければならない。ゆえに、上位ビット又は下位ビットを選択するセレクタを必要とする。
一方、図6において、(b)は本発明の一実施例に従う回路構成を示す。図示されるように、本実施例では、シフトレジスタは16*Yビットのレジスタa,a,b及びbを有する。シフト演算のビット単位もSHA−2アルゴリズム本来の仕様である32*Yビットから16*Yビット単位となるように変更されている。これにより、シフト演算がセレクタの機能を代替的に果たすこととなる。すなわち、32*Yビットデータの上位16*Yビットと下位16*Yビットを順次加算しようとする場合に、従来のアプローチで必要とされたようなセレクタは不要となる。このように、シフトレジスタとして16*Yビットのレジスタを用いることにより、ダイジェスト部で用いられる加算器のデータ幅を、余分のセレクタを設けることなく、従来の半分である16*Yビットにすることができる。
具体的に、r=a+bの演算を行う状況を例として、各回路構成の動作を説明する。ここで、r、a及びbの各変数は32*Yビットとする。また、各変数の上位16*YビットをXとし、下位16*YビットをXとする(X=r、a又はb)。更に、16*Yビットデータの1回の加算演算を1サイクルと定義する。
図6(a)の従来のビット分割アプローチに従う回路構成では、レジスタA、Bの夫々に32*Yビットデータ{a‖a}、{b‖b}が格納されている。1サイクル目として、32*Yビットデータの下位16*Yビットについて演算を行う場合には、各レジスタから下位ビットa及びbを取り出し、加算器に入力するセレクタが必要となる。一方、同様の場合について、図6(b)の本発明の一実施例に従う回路構成では、各32*Yビットデータの上位16*Yビット及び下位16*Yビットが別個のレジスタに格納されるので、セレクタは不要である。いずれの回路構成においても、このとき、加算器は、下位16*Yビットの加算演算、すなわち、carry‖r=a+bの演算を行う。ここで、carryは桁上がり信号であり、そのデータ幅は1ビットである。
次に、2サイクル目として、32*Yビットデータの上位ビットについて演算が行われる。図6(a)の従来のビット分割アプローチに従う回路構成では、セレクタによって各レジスタから上位ビットa及びbが取り出される。一方、同様の場合について、図6(b)の本発明の一実施例に従う回路構成では、各レジスタに格納される16*Yビットデータは隣のレジスタに移動する。すなわち、1サイクル目で下位ビットが格納されていたレジスタに上位ビットが格納される。いずれの回路構成においても、このとき、加算器は、上位16*Yビットの加算演算、すなわち、r=a+b+carryの演算を行う。
加算器の演算結果は、従来のビット分割アプローチに従う回路構成では、32*Yビットシフトレジスタを用いるために、32*Yビットデータとして出力されることを要する。従って、図6(a)に図示されるように、加算器の出力段にはデマルチプレクサが設けられる。このデマルチプレクサは、加算結果を格納する32*Yビットレジスタにおいて、1サイクル目では下位ビットrを選択し、2サイクル目では上位ビットrを選択する。一方、本発明の一実施例に従う回路構成では、16*Yビットシフトレジスタを用いることから、加算器の演算結果を結合するためのデマルチプレクサは不要である。
このように、本発明の実施例では、16*Yビット幅のシフトレジスタ構造をとることで、加算器の入力線を固定したとしても、1サイクル毎にデータがシフトするので、下位ビットから上位ビット(又はその逆)の順番で加算器にデータを入力することが可能となる。つまり、セレクタを用いない固定結線による回路構造が実現され得る。このとき、加算器は16*Yビットのデータ幅を有し、1サイクルごとに加算演算を行う。
再び図5を参照すると、演算部30は、インターフェース部S11〜S14と、Σ回路C11と、Maj回路C12と、Σ回路C13と、Ch回路C14とを更に有する。Σ回路C11及びΣ回路C13はいずれも、シフトレジスタの一部のレジスタに格納されたデータについて巡回シフト演算を行う3個の巡回シフト演算器と、それらの出力についてXOR演算を行うXOR演算器とを有してΣ関数を演算する論理演算回路である。Maj回路C12は、シフトレジスタの一部のレジスタに格納されたデータについてAND演算を行う3個のAND演算器と、それらの出力についてXOR演算を行うXOR演算器とを有してMaj関数を演算する論理演算回路である。Ch回路C14は、シフトレジスタの一部のレジスタに格納されたデータについてAND演算を行う2個のAND演算器と、それらの出力についてXOR演算を行うXOR演算器とを有してCh関数を演算する論理演算回路である。各関数については、SHA−2の一般的なアルゴリズムにおいて知られており、ここでは詳述しない。
図3に図示される従来のDPの回路構成と比較すると、インターフェース部S11〜S14が挿入されている点を除いて、原則的には、その回路構成は同じである。しかし、Σ回路C11及びΣ回路C13を除く、加算器A11〜A18、Maj回路C12及びCh回路C14は、32*Yビットの半分である16*Yビットのデータ幅を扱う。Σ回路C11及びΣ回路C13は、Σ関数演算のために巡回シフト演算器を有する。この巡回シフト演算器には32*Yビットのデータ幅でデータが入力される必要があるため、Σ回路C11及びΣ回路C13の夫々の入力段には、16*Yビットのデータ幅を32*Yビットと整合させるインターフェース部S11、S13が設けられている。また、Σ回路C11及びΣ回路C13から出力されるデータのデータ幅は32*Yビットであるため、Σ回路C11及びΣ回路C13の夫々の出力段には、32*Yビットのデータ幅を16*Yビットと整合させるインターフェース部S12、S14が設けられている。
第1のインターフェース部S11は、レジスタ部20とΣ回路C11との間に設けられる。第1のインターフェース部S11は、図5に図示される実施例では、レジスタ部20のレジスタa、a及びbに格納されている16*Yビットデータから適切な2つのデータを選択して、32*YビットデータとしてΣ回路C11へ入力する。第2のインターフェース部S12は、Σ回路C11と、レジスタ部20の先頭レジスタaへ結線された第1の加算器A11との間に設けられる。第2のインターフェース部S12は、Σ回路C11から出力される32*Yビットデータの上位16*Yビットデータ又は下位16*Yビットデータのいずれかを選択して、第1の加算器A11へ入力する。第3のインターフェース部S13は、レジスタ部20とΣ回路C13との間に設けられる。第3のインターフェース部S13は、レジスタ部20のレジスタe、e及びfに格納されている16*Yビットデータから適切な2つのデータを選択して、32*YビットデータとしてΣ回路C13へ入力する。第4のインターフェース部S14は、Σ回路C13と、第4の加算器A14との間に設けられる。第4のインターフェース部S14は、Σ回路C13から出力される32*Yビットデータの上位16*Yビットデータ又は下位16*Yビットデータのいずれかを選択して、第4の加算器A14へ入力する。
第1のインターフェース部S11は2個のセレクタM11及びM12を有する。第1のセレクタM11は2入力1出力マルチプレクサであって、レジスタaに接続された第1の入力と、レジスタaに接続された第2の入力と、Σ回路C11の入力に接続された出力とを有する。第2のセレクタM12は、レジスタaに接続された第1の入力と、レジスタbに入力された第2の入力と、Σ回路C11の入力に接続された出力とを有する。このような構成をとることで、第1のインターフェース部S11は、処理の1サイクル目及び2サイクル目ともに、{上位ビット‖下位ビット}という結合順序で32*YビットデータをΣ回路C11へ入力する。第3のインターフェース部S13もこれと同様の構成及び動作を有する。ここで、1サイクルは、16*Yビットデータの1回の加算演算によって、すなわち、シフトレジスタにおいて16*Yビットデータが現在のレジスタから隣のレジスタへ移動する周期によって定義される。
Σ回路C11は、第1のインターフェース部S11から入力されたデータに対して巡回シフト演算を行った後、XOR演算を行う。これにより、Σ回路C11は、処理の1サイクル目及び2サイクル目ともに、{上位ビット‖下位ビット}の結合順序で32*Yビットデータを出力する。やはり、Σ回路C13もこれと同様の構成及び動作を有する。
第2のインターフェース部S12は1個のセレクタM21を有する。セレクタM21は2入力1出力マルチプレクサであって、Σ回路C11の出力に接続された2つの入力と、第1の加算器A11に接続された出力とを有する。Σ回路C11が上記のような結合順序で32*Yビットデータを出力する場合に、セレクタM21は、1サイクル目では下位16*Yビットデータを選択し、2サイクル目では上位16*Yビットデータを選択するよう構成される。やはり、第4のインターフェース部S14もこれと同様の構成及び動作を有する。
このように、図5に図示される本発明の一実施例に従うSHA−2のDPの回路構成は、加算器A11〜A18周辺のセレクタ増加を伴わずに回路全体の演算ビットを従来の半分とすることができる。一方、演算ビットが半分となったことで演算時間も従来の半分に短縮されるので、回路の動作周波数を2倍にすることが可能であり、よって、演算ビットが従来の半分にされたとしても、スループットは従来と同等である。
ここで、図5のインターフェース部S11〜S14は、図7に図示されるような構成をとることも可能である。図7には、Σ回路C11の周辺回路しか示されていないが、Σ回路C13の周辺回路も同様の構成を有する。
図7において、第1のインターフェース部S21は1個のセレクタM11しか有さない。セレクタM11は2入力1出力マルチプレクサであって、レジスタaに接続された第1の入力と、レジスタbに接続された第2の入力と、Σ回路C11の入力に接続された出力とを有する。セレクタM11は、1サイクル目では、レジスタaに格納されている16*Yビットデータを選択し、2サイクル目では、レジスタbに格納されている16*Yビットデータを選択する。第1のインターフェース部S21は、セレクタM11によって選択された16*Yビットデータを、レジスタaに格納されている16*Yビットデータと結合する。そして、第1のインターフェース部S21は、1サイクル目では{上位ビット‖下位ビット}の結合順序で、2サイクル目では{下位ビット‖上位ビット}の結合順序で、32*YビットデータをΣ回路C1へ入力する。
Σ回路C11は、第1のインターフェース部S21から入力された32*Yビットデータに対して巡回シフト演算を行った後、XOR演算を行う。これにより、Σ回路C11は、1サイクル目では{上位ビット‖下位ビット}の結合順序で、2サイクル目では{下位ビット‖上位ビット}の結合順序で32*Yビットデータを出力する。
Σ回路C11からこのような結合順序で32*Yビットデータが出力されることにより、第2のインターフェース部S22はセレクタを有する必要がない。第2のインターフェース部S22は、Σ回路C11から出力される32*Yビットデータの下側16*Yビットを無条件に出力することで、1サイクル目では下位16*Yビットデータを、2サイクル目では上位16*Yビットデータを取り出すことができる。具体的には、例えば、Σ0回路C11から延びる32本のデータ線のうち、下側16*Yビットに相当するデータを伝送するデータ線を取り出して後段の加算器に接続する構成が考えられる。よって、セレクタは不要となる。
代替的に、第1のインターフェース部S21は、1サイクル目では{下位ビット‖上位ビット}の結合順序で、2サイクル目では{上位ビット‖下位ビット}の結合順序で、32*YビットデータをΣ回路C11へ入力することも可能である。この場合には、Σ回路C11からは、1サイクル目では{下位ビット‖上位ビット}の結合順序で、2サイクル目では{上位ビット‖下位ビット}の結合順序で、データが出力される。そして、第2のインターフェース部S22は、Σ回路C11から出力される32*Yビットデータの上側16*Yビットを無条件に出力すれば良い。
各インターフェース部が図7に図示されるように構成されることで、図5に図示される回路構成に比べ、使用するセレクタの個数が減り、結果としてDPの回路規模はより小さくなる。
また、図7に図示されるΣ回路C11の周辺回路は、図8に図示されるように変形され得る。図8のΣ回路C21は、巡回シフト演算をされた32*Yビットデータの下側(又は上側)16*YビットのみについてXOR演算を行うよう構成される。具体的には、例えば、各巡回シフト演算器から延びる32本のデータ線のうち、下側(又は上側)16*Yビットに相当するデータを伝送するデータ線を取り出してXOR演算器に接続する構成が考えられる。これにより、第1のインターフェース部S21が図7に図示されるような構成をとる場合に、第2のインターフェース部は不要となる。よって、図7に図示される構成をとる場合よりも、DPの回路規模はより一層小さくなる。
以上、SHA−2アルゴリズム仕様において1サイクルで実行していた演算処理を2サイクルにわたって行うことで加算器のデータ幅を半分(1/2)にすること可能な本発明の一実施例に従う構成を記載してきた。次に、SHA−2アルゴリズム仕様において1サイクルで実行する処理をX(=2(Y=1の場合、2≦k≦4。Y=2の場合、2≦k≦5。kは整数。))サイクルにわたって行うことで加算器のデータ幅を1/Xにする構成について記載する。
図9は、Xサイクル処理時のシフトレジスタの構成を示す。図9のシフトレジスタ40は、MPから出力されるデータWiによって更新される第1のレジスタの組であって、8*X個の(32*Y)/Xビットレジスタa,a,・・・,a,b,・・・hを有する。すなわち、シフトレジスタ40はa〜a,b〜b,・・・,h〜hの8つのレジスタの組を有し、各組はX個の(32*Y)/Xビットレジスタを有して、組ごとに32*Yビットデータを扱う。
このような構成によって、図6を参照して説明したように、ダイジェスト部に含まれる所定個(通常は8個)の加算器の夫々は(32*Y)/Xビットのデータ幅を有することができる。すなわち、加算器は、シフトレジスタに格納されるデータが(32*Y)/Xビットのデータ幅でレジスタ間をシフトする1サイクルごとに、入力される(32*Y)/Xビットデータについて加算演算を行うことができる。
図10は、Xサイクル処理時のΣ回路の周辺回路の構成を示す。図10において、(a)は、2サイクル処理に関して図5を参照して記載された構成をXサイクル処理に対応するよう拡張した構成を示し、(b)は、同様に2サイクル処理に関して図8を参照して記載された構成をXサイクル処理に対応するよう拡張した構成を示す。(a)の構成では、Σ回路の入力段にX個のX入力1出力マルチプレクサ(MUX)が設けられ、Σ回路の出力段に1個のX入力1出力MUXが設けられている。一方、(b)の構成では、Σ回路の入力段にのみ(X−1)個の2入力1出力MUXが設けられている。
なお、Σ回路の周辺回路は、Σ回路の入力段に設けられたマルチプレクサへ、レジスタ"a"及び"b"の値ではなく、レジスタ"e"及び"f"の値が入力される点を除いて、図10に図示されるΣ回路の周辺回路と同じ構成を有する。
図11は、図10に図示されるΣ回路の周辺回路のデータ入出力に関する説明図である。説明を簡単にするため、図11では、X=4サイクル処理時を例とする。図11において、(a)は、図10(a)に図示されるような構成を有するΣ回路の周辺回路のデータ入出力を表し、(b)は、図10(b)に図示されるような構成を有するΣ回路の周辺回路のデータ入出力を表す。ここで、1サイクル目に入力される32*Yビットデータを8*Yビットずつ4つに分割したとき、上位から8*Yビットずつを夫々I、I、I及びIとする。また、それらのデータが実際に格納されているレジスタをa、a、a、a、b、b、b及びbで表すこととする。また、Σ回路から出力されるデータのうち下位からi(i=1,2,3,4)番目の8*YビットデータをΣ(I)で表すこととする。
図11(a)に表されるデータ入出力では、Σ回路へ入力されるデータIは、全てのサイクルを通して{I‖I‖I‖I}の固定された結合順序を有する。この回路構成では、データIを格納する4つのレジスタは、1サイクル目のa〜aを基準として、その後1サイクル毎に右へシフトする。Σ回路は、入力データI={I‖I‖I‖I}に対して巡回シフト演算を行った後、XOR演算を行う。その結果、図示されるように、Σ回路から出力される32*Yビットデータの中から選択されるべき8*Yビットデータは、出力データにおいてサイクル毎に異なるビット範囲に存在することとなる。よって、所望の8*Yビットデータを選択するために、Σ回路の出力段にセレクタ(すなわち、1個のX入力1出力MUX)を設ける必要がある。
このときのサイクル毎の巡回シフトの様子を数式で表すと、以下のようになる:
1サイクル:Σ(I)‖Σ(I)‖Σ(I)‖Σ(I)=Σ(I)
2サイクル:Σ(I)‖Σ(I)‖Σ(I)‖Σ(I)=Σ(I)>>>8*Y
3サイクル:Σ(I)‖Σ(I)‖Σ(I)‖Σ(I)=Σ(I)>>>16*Y
4サイクル:Σ(I)‖Σ(I)‖Σ(I)‖Σ(I)=Σ(I)>>>32*Y
上記の数式から、Σ回路の出力データを右巡回シフトさせる必要があることが分かる。ここで、Σ回路により実現されるΣ関数の性質として、Σ(a)>>>b=Σ(a>>>b)というものが知られている。この性質により、Σ回路の出力データを右巡回シフトさせるためには、入力データを同じビット数だけ右巡回シフトすれば良い。よって、入力データIを1サイクル毎に8*Yビットだけ右巡回シフトさせながらΣ回路へ入力すれば良い。ここで、入力データが格納されているレジスタa、a、a、a、b、b及びbでは、1サイクル毎に8*Yビットだけデータが右へシフトする。このシフトレジスタ構造を利用することで、入力データIの1サイクル毎の8*Yビット右巡回シフトが可能となる。
シフトレジスタ構造を利用して、全てのサイクルを通して、そのサイクルに関して所望の8*YビットデータがΣ回路から出力されるよう、入力データIを1サイクルごとに8*Yビット右巡回シフトを行う様子が、図11(b)に表される。図11(b)に表されるデータ入出力では、入力データIは、所望の8*Yビットデータが、全てのサイクルを通して常に、Σ回路での巡回シフト演算により得られる32*Yビットデータの下側8*Yビットに存在するように制御される。このようなデータ入出力の方法により、Σ回路の入力段に設けられるセレクタも、図10(b)に図示されるように、削減することが可能となる。また、Σ回路の出力側での8*Yビットデータの選択は、図10(b)に図示されるように、巡回シフト演算をされた32*Yビットデータの下側8*YビットのみについてXOR演算を行うようΣ回路を構成することで実現される。あるいは、それは、2サイクル処理時に関して図7に図示されたように、Σ回路の後段に、Σ回路から出力される32*Yビットデータの下側8*Yビットを(セレクタを用いずに)無条件に出力する構成を設けることでも実現され得る。
このように、図10(b)に図示される回路構成は、図11(b)に表されるように出力データの最下位データが所望のデータとなるようにするためのものであった。なお、下位からi番目のビット範囲又は上側8*Yビットに所望のデータが存在するように、図10(b)と同等の回路を構成することも可能である。
図10及び図11を参照して明らかであるように、図10(b)に図示される回路構成の方が、図10(a)に図示される回路構成に比べて、使用するセレクタの個数が少ない分、回路規模が小さい。よって、処理サイクル数(X)が大きくなるほど、効果的に回路規模の削減を図るために、シフトレジスタ構造を利用した図10(b)のような回路構成を用いることが望ましい。
図12は、Xサイクル処理時のMaj回路の構成を示す。図12のMaj回路C22は、3つのAND演算器L21、L22、L23及び1つのXOR演算器L24を有する。第1のAND演算器L21は、先頭から第1及び第2のレジスタの組の最後尾のレジスタa及びbの夫々に接続された2つの入力と、XOR演算器L24の入力の1つに接続された1つの出力とを有する。第2のAND演算器L22は、先頭から第2及び第3のレジスタの組の最後尾のレジスタb及びcの夫々に接続された2つの入力と、XOR演算器L24の入力の1つに接続された1つの出力とを有する。第3のAND演算器L23は、先頭から第1及び第3のレジスタの組の最後尾のレジスタa及びcの夫々に接続された2つの入力と、XOR演算器L24の入力の1つに接続された1つの出力とを有する。XOR演算器L24の出力は加算器の1つ(図示せず。)に接続される。このようにMaj回路C22は原則的には従来と同じ構成を有するが、DPが図9に図示されるようなシフトレジスタを用いることで、扱うビット幅が(32*Y)/Xとなり、結果的に回路規模が従来よりも削減され得る。
図13は、Xサイクル処理時のCh回路の構成を示す。図13のCh回路C24は、2つのAND演算器L41、L42及び1つのXOR演算器L43を有する。第1のAND演算器L41は、先頭から第5及び第6のレジスタの組の最後尾のレジスタe及びfの夫々に接続された2つの入力と、XOR演算器L43の入力の1つに接続された1つの出力とを有する。第2のAND演算器L42は、第5のレジスタの組の最後尾のレジスタeに格納されているデータが反転されて入力される第1の入力と、第7のレジスタの組の最後尾のレジスタgに接続された第2の入力とを有する。また、第2のAND演算器L42は、XOR演算器L43の入力の1つに接続された1つの出力を有する。XOR演算器L43の出力は加算器の1つ(図示せず。)に接続される。このようにCh回路C24は原則的には従来と同じ構成を有するが、DPが図9に図示されるようなシフトレジスタを用いることで、扱うビット幅が(32*Y)/Xとなり、結果的に回路規模が従来よりも削減され得る。
以上、発明を実施するための最良の形態について説明を行ったが、本発明は、この最良の形態で述べた実施の形態に限定されるものではない。本発明の主旨を損なわない範囲で変更することが可能である。

Claims (7)

  1. 32*Y(Y=1又は2)ビットを基本演算単位とするSHA−2アルゴリズムを用いた、複数のレジスタが直列に配置されるシフトレジスタと、該シフトレジスタに格納されるデータに基づき加算演算を行う所定個の加算器とを有するダイジェスト部を有する暗号化装置であって、
    前記シフトレジスタは、(32*Y)/X(X=2。Y=1のとき1≦k≦4、Y=2のとき1≦k≦5。kは整数。)ビットのレジスタを有し、
    前記所定個の加算器は、夫々、(32*Y)/Xビットのデータ幅を有し、前記シフトレジスタに格納されるデータが(32*Y)/Xビットのデータ幅で前記レジスタ間をシフトする1サイクルごとに、前記加算演算を行う、暗号化装置。
  2. 32*Yビットのデータ幅で入力されたデータに対しΣ関数演算を行う論理演算回路を更に有し、
    前記論理演算回路の入力側に、(32*Y)/Xビットのデータ幅を32*Yビットと整合させる第1のインターフェース部を設ける、請求項1記載の暗号化装置。
  3. 前記第1のインターフェース部は、所定の連続するX個のレジスタ及び該X個のレジスタに続く(X−1)個のレジスタの間を1サイクルごとに(32*Y)/Xビットのデータ幅でシフトする32*Yビットデータを前記シフトレジスタから取り出して出力する、請求項2記載の暗号化装置。
  4. 前記論理演算回路の出力側に、前記論理演算回路から出力される32*Yビットデータのビット幅を(32*Y)/Xビットと整合させる第2のインターフェース部を設け、
    前記第2のインターフェース部は、前記論理演算回路から出力される32*Yビットデータから1サイクルごとに該サイクルに応じた所定の(32*Y)/Xビットデータを取り出し、前記加算器の1つへ出力する、請求項3記載の暗号化装置。
  5. 前記第1のインターフェース部は、所定の連続するX個のレジスタ及び該X個のレジスタに続く(X−1)個のレジスタの間を1サイクルごとに(32*Y)/Xビットのデータ幅でシフトする32*Yビットデータを前記シフトレジスタから取り出し、1サイクルごとに(32*Y)/Xビットのデータ幅で巡回シフトさせながら前記加算器の1つへ出力する、請求項2記載の暗号化装置。
  6. 前記論理演算回路の出力側に、前記論理演算回路から出力される32*Yビットデータのビット幅を(32*Y)/Xビットと整合させる第2のインターフェース部を設け、
    前記第2のインターフェース部は、前記論理演算回路の所定の出力端子から出力される(32*Y)/Xビットデータを前記加算器の1つへ出力する、請求項5記載の暗号化装置。
  7. 前記論理演算回路は、前記Σ関数演算を行うために3個の巡回シフト演算器及びXOR演算器を有し、前記巡回シフト演算器の夫々の所定の出力端子から出力される(32*Y)/Xビットデータを前記XOR演算器に入力し、該XOR演算器から出力される(32*Y)/Xビットデータを前記加算器の1つへ出力する、請求項5記載の暗号化装置。
JP2010532726A 2008-10-07 2008-10-07 暗号化装置 Expired - Fee Related JP5198572B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/068217 WO2010041307A1 (ja) 2008-10-07 2008-10-07 暗号化装置

Publications (2)

Publication Number Publication Date
JPWO2010041307A1 true JPWO2010041307A1 (ja) 2012-03-01
JP5198572B2 JP5198572B2 (ja) 2013-05-15

Family

ID=42100272

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010532726A Expired - Fee Related JP5198572B2 (ja) 2008-10-07 2008-10-07 暗号化装置

Country Status (4)

Country Link
US (1) US20110176673A1 (ja)
EP (1) EP2348499A4 (ja)
JP (1) JP5198572B2 (ja)
WO (1) WO2010041307A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164725B2 (en) * 2010-11-19 2015-10-20 International Business Machines Corporation Apparatus and method for calculating an SHA-2 hash function in a general purpose processor
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
CN109104274A (zh) * 2018-07-06 2018-12-28 四川斐讯信息技术有限公司 一种基于人脸识别的人脸特征加密系统及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4447672A (en) * 1980-10-06 1984-05-08 Nippon Electric Co., Ltd. Device for encrypting each input data bit by at least one keying bit decided by a code pattern and a bit pattern of a predetermined number of preceding encrypted bits
US4876718A (en) * 1987-03-12 1989-10-24 Zenith Electronics Corporation Secure data packet transmission system and method
US4944006A (en) * 1987-03-12 1990-07-24 Zenith Electronics Corporation Secure data packet transmission system and method
US4771458A (en) * 1987-03-12 1988-09-13 Zenith Electronics Corporation Secure data packet transmission system and method
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5455860A (en) * 1992-04-17 1995-10-03 Matsushita Electric Industrial Co., Ltd. Scramble codec
GB9419246D0 (en) * 1994-09-23 1994-11-09 Cambridge Consultants Data processing circuits and interfaces
US5717760A (en) * 1994-11-09 1998-02-10 Channel One Communications, Inc. Message protection system and method
US5745522A (en) * 1995-11-09 1998-04-28 General Instrument Corporation Of Delaware Randomizer for byte-wise scrambling of data
WO2001029776A1 (en) * 1999-10-18 2001-04-26 Stamps.Com Cryptographic module for secure processing of value-bearing items
US6560528B1 (en) * 2000-03-24 2003-05-06 Internal Combustion Technologies, Inc. Programmable internal combustion engine controller
JP3709760B2 (ja) 2000-03-28 2005-10-26 松下電工株式会社 ハッシュ装置
US7151829B2 (en) * 2002-04-22 2006-12-19 International Business Machines Corporation System and method for implementing a hash algorithm
JP2004054128A (ja) * 2002-07-23 2004-02-19 Sony Corp 暗号化装置
JP2004078053A (ja) * 2002-08-22 2004-03-11 Sony Corp 暗号化装置
US20070113083A1 (en) * 2005-07-14 2007-05-17 Volkovs Nikolajs System and method of message authentication
JP4308840B2 (ja) * 2006-11-08 2009-08-05 Okiセミコンダクタ株式会社 Sha演算方法およびsha演算装置
US20090103726A1 (en) * 2007-10-18 2009-04-23 Nabeel Ahmed Dual-mode variable key length cryptography system
US8368517B2 (en) * 2008-08-22 2013-02-05 Hong Kong R&D Centre for Logistics and Supply Chain Management Enabling Technologies Limited RFID privacy-preserving authentication system and method

Also Published As

Publication number Publication date
US20110176673A1 (en) 2011-07-21
EP2348499A4 (en) 2015-01-21
JP5198572B2 (ja) 2013-05-15
EP2348499A1 (en) 2011-07-27
WO2010041307A1 (ja) 2010-04-15

Similar Documents

Publication Publication Date Title
US7299355B2 (en) Fast SHA1 implementation
Tillich et al. High-speed hardware implementations of blake, blue midnight wish, cubehash, echo, fugue, grøstl, hamsi, jh, keccak, luffa, shabal, shavite-3, simd, and skein
US7623660B1 (en) Method and system for pipelined decryption
JP2003015522A (ja) 暗号回路
Güneysu Utilizing hard cores of modern FPGA devices for high-performance cryptography
Wong et al. Circuit and system design for optimal lightweight AES encryption on FPGA
JP5198572B2 (ja) 暗号化装置
Abdellatif et al. AES-GCM and AEGIS: efficient and high speed hardware implementations
Chaves et al. Secure hashing: Sha-1, sha-2, and sha-3
Elkhatib et al. Accelerated RISC-V for post-quantum SIKE
JP3940714B2 (ja) 演算装置、および、暗号・復号演算装置
Li Efficient and flexible architecture for AES
Guilley et al. A fast pipelined multi-mode DES architecture operating in IP representation
Diehl et al. RTL implementations and FPGA benchmarking of selected CAESAR Round Two authenticated ciphers
CN114553424B (zh) Zuc-256流密码轻量级硬件系统
Standaert et al. Efficient FPGA implementations of block ciphers KHAZAD and MISTY1
Satoh ASIC hardware implementations for 512-bit hash function whirlpool
WO2009090689A1 (ja) 暗号化装置、暗号化方法及びプログラム
Canright et al. A more compact AES
Jahanbani et al. Lightweight implementation of SILC, CLOC, AES-JAMBU and COLM authenticated ciphers
Li et al. A new compact dual-core architecture for AES encryption and decryption
Ueno et al. High throughput/gate FN-based hardware architectures for AES-OTR
Mohanraj et al. High performance GCM architecture for the security of high speed network
Bittencourt et al. CLEFIA implementation with full key expansion
Li et al. A new compact architecture for AES with optimized ShiftRows operation

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130206

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

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees