JP5458611B2 - 暗号処理装置 - Google Patents

暗号処理装置 Download PDF

Info

Publication number
JP5458611B2
JP5458611B2 JP2009061537A JP2009061537A JP5458611B2 JP 5458611 B2 JP5458611 B2 JP 5458611B2 JP 2009061537 A JP2009061537 A JP 2009061537A JP 2009061537 A JP2009061537 A JP 2009061537A JP 5458611 B2 JP5458611 B2 JP 5458611B2
Authority
JP
Japan
Prior art keywords
flag
unit
data
register
exor
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
JP2009061537A
Other languages
English (en)
Other versions
JP2010219666A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2009061537A priority Critical patent/JP5458611B2/ja
Priority to EP10250382A priority patent/EP2228941B1/en
Priority to US12/718,052 priority patent/US8213603B2/en
Priority to CN2010101290874A priority patent/CN101834720B/zh
Publication of JP2010219666A publication Critical patent/JP2010219666A/ja
Application granted granted Critical
Publication of JP5458611B2 publication Critical patent/JP5458611B2/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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Logic Circuits (AREA)

Description

本発明は、たとえばICカードに適用される暗号処理装置に関し、さらに詳細には、低消費電流で、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関するものである。
図1は、一般的な暗号機能を持つICカードの構成例を示す図である。
ICカード1は、図1に示すように、アンテナ2およびICチップ(LSI)3により形成される。ICチップ3には、整流回路4、平滑キャパシタ5、定電圧化回路6、CPU7、メモリ8、暗号回路9、周辺回路10、およびRFインタフェース(I/F)11を有する。また、CPU7、メモリ8、暗号回路9、周辺回路10、およびRFインタフェース(I/F)11は信号バス12を介してデータの受け渡しを行う。
暗号機能を持つICカード1は、図1に示すように、カードが読取機に近づけられた時、読取機から発生された微弱な磁気を受けて必要な信号を取り出し、アンテナ2で磁気を電力に変換して、ICを動作させて必要な処理を行う。
このようなシステムでは、ICカード1とホストコンピュータの間でのデータの受け渡しは暗号化してやり取りされる。そして、このICチップ3には、CPU7やメモリ8の他に、暗号回路9が配置され、受け取った信号を復号化して必要な情報を取り出して必要な処理を行い、その後、暗号化してホストコンピュータに送る。
この暗号化の方法として、現在最も多く用いられているのはDES(Data Encryption Standard)である。
DESでは、データの暗号化にはICカードの所有者とホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すことは困難である。
図2は、暗号回路の例としてDES演算回路の一般的な構成を示す図である。
このDES演算回路20は、図2に示すように、初期置換部[IP(Initial Permutation)]21、スイッチ22L,22R、左レジスタ(Lレジスタという)23、および右レジスタ(Rレジスタ)24を有する。さらに、DES演算回路20は、F関数部25、EXOR演算部26、逆置換部(IP-1)27、および暗号文出力部(Crypto)28を有する。
F関数部25は、図2に示すように、非線形処理を実行する複数(図2では8)のSボックス(Sbox)S〜Sを有する。前段からの入力値F−in、すなわち、R(n−1)は拡張部(EX)25−1によって48ビットに拡大され、さらに鍵スケジュール部から入力する鍵(48ビット)KnとEXOR演算部25−2でEXOR演算が実行される。EXOR演算部25−2の出力が6ビットずつ非線形変換処理を実行する複数のSboxS〜Sに入力される。各SboxS〜Sでは、変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
SboxS〜Sからの出力ビット4×8=32ビットは、置換部(P)25−3に入力されて、ビット位置の入れ替え処理がなされ、F関数出力32ビットを生成して出力する。
DES演算回路20では、回路内に1ラウンド分の演算回路とデータ幅分のレジスタが配置されて、この回路を所定回数動作させて暗号処理を実行する。
そして、ラウンド(Round)の切り替えでレジスタの値が更新され、それに伴ってレジスタにつながる信号配線の充放電および演算回路での演算が行われる。
演算に際し、信号配線の充放電電流で最も厳しいのが、信号配線が全て(All)“0”から全て“1”に変化する場合で、アンテナから電力を取り出す電源部では、この場合でもマージンを持って電力を供給できる必要がある。
また、暗号回路に対して、その消費電流を統計処理して鍵を取り出すという攻撃方法(DPA:Differential Power Analysis)が P.Kocher らにより報告された。
この攻撃は、低コストで攻撃の環境が構築でき、短時間で鍵の取出しが可能な攻撃方法で、セキュリティICではこの攻撃への対策が必須となる。
DPA攻撃方法は、非線形変換を行うSboxの出力や、レジスタに格納される演算の中間値の更新でその負荷配線が充放電される時、鍵に関係する微小な動作電流を、統計処理を用いて解析して鍵を取り出す攻撃方法である。
この攻撃に対する対策として、次の2つの方法が提案されている。
第1は、相補構成を採り、相補動作によりリーク電流の削減をする方法である。
第2は、データの乱数攪乱によりリーク電流も攪乱し、統計処理を困難にする方法である。
DPA攻撃に対抗する第1の方法としては、たとえば特許文献1に開示された技術が知られている。
この技術では、1ビットのデータをハミング重み(Hamming Weight)の等しい2ビットの数値に展開する。演算によるデータの遷移は、エバリュエーション相(Evaluation Phase)とプリチャージ相(Pre Charge Phase)の2相を設けてある。
そして、一旦、“0”でも“1”でもない状態に遷移してから演算後のデータに遷移する制御を行うことによって、演算値の遷移に伴う変化電流を検出できないようにしている。
具体的には、たとえばデータ“0”を “01”、データ“1”を“10”として暗号演算を実行する。そして、ラウンド(Round)演算によってデータが変化する場合、たとえば一旦“00”に遷移してから演算後のデータに遷移する。
すなわち、遷移を以下のように表わせば、演算に基づく各ビットの遷移は演算結果によらず全ての遷移で1ビットのみ変化するため、変化電流からの鍵の取り出しは困難となる。
“0”→“0”の遷移:“01”→“00”→“01”
“0”→“1”の遷移:“01”→“00”→“10”
“1”→“0”の遷移:“10”→“00”→“01”
“1”→“1”の遷移:“10”→“00”→“10”
DPA攻撃に対抗する第2の方法としては、たとえば特許文献2に開示された技術が知られている。
この技術では、Sboxの出力を乱数で攪乱することによって、鍵に起因する回路動作に伴う微小電流を攪乱し、消費電流の統計処理を困難にしている。
特開2004−347975号公報 USP6,295,606
しかし、上記第1の方法では、暗号演算を行う全ての回路で1ビットのデータに対して2ビット分の相補動作を行う構成を採る必要がある。その結果、回路規模は少なくとも2倍になり、拡張した2ビットのうちどちらかが必ず回路動作するため、消費電流も少なくとも2倍になる。
また、第2の方法を実現するためには、攪乱するデータ幅分の乱数を暗号演算に先立って生成しておく必要があり、乱数生成回路を搭載しておく必要がある。
本発明は、暗号化演算回路の消費電流を低く抑えることができ、電力解析に対する耐性を向上させることが可能な暗号処理装置を提供することにある。
本発明の観点の暗号処理装置は、第1データレジスタおよび第1フラグレジスタを含む第1レジスタ部と、第2データレジスタおよび第2フラグレジスタを含む第2レジスタ部と、入力平文の第1データおよび第2データで、所定ビットずつのフラグ演算を行う第1フラグ演算部と、上記第1データおよび第2データの各々に対して上記第1フラグ演算部によるフラグとの排他的論理和演算によるフラグ制御を行い、フラグ制御された第1データおよび第1フラグを上記第1レジスタ部に供給し、フラグ制御された第2データおよび第2フラグを上記第2レジスタ部に供給する第1演算部と、上記第2レジスタ部の第2データレジスタに格納されたデータと上記第2フラグレジスタのフラグとの排他的論理和演算を行う第2演算部と、上記第2演算部の出力データに対してラウンド演算を行うラウンド演算部と、上記ラウンド演算部の出力と上記第1レジスタ部の上記第1データレジスタの格納値および上記第1フラグレジスタのフラグとの排他的論理和演算を行う第3および第4演算部と、上記第3および第4演算部の出力データで、所定ビットずつの新たなフラグ演算を行う第2フラグ演算部と、上記第3および第4演算部の出力データに対して上記第2フラグ演算部によるフラグとの排他的論理和演算によりフラグ制御を行い、フラグ制御されたデータおよびフラグを上記第2レジスタ部に出力する第5演算部とを有する。
本発明によれば、暗号化演算回路の消費電流を低く抑えることができ、電力解析に対する耐性を向上させることができる。
一般的な暗号機能を持つICカードの構成例を示す図である。 暗号回路の例としてDES演算回路の一般的な構成を示す図である。 本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。 図3のDES演算回路の要部の具体的な構成例を示す回路図である。 第1の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。 第1の実施形態に係るDES演算回路における2ビットデータと制御データとの関係を示す図である。 本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。 図7のDES演算回路の要部の具体的な構成例を示す回路図である。 本第2の実施形態に係る第2フラグ演算部のフラグ演算回路の構成例を示す図である。 第2の実施形態に係るDES演算回路における4ビットデータと制御データとの関係を示す図である。 本第2の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。 本第2の実施形態に係る制御信号生成回路の構成例を示す回路図である。 図12の回路のタイミングチャートである。 EXOR−AND回路の回路図、回路記号、および真理値表を示す図である。 本第3の実施形態において、図10の制御結果をデータの攪乱という観点からみた結果を示す図である。 順番に4ビットずつ分けてフラグを計算して反転制御を行う場合、Sub・Sbox“S0”の4ビットがP置換によって並べ替えられ、各々別々のグループでフラグ演算およびそれに基づく反転制御が行われることを示す図である。 本第3の実施形態に係る第2フラグ演算部のフラグ演算回路の構成例を示す図である。 図17のフラグ演算回路の演算結果を示す図であって、第3の実施形態に係るDES演算回路における4ビットデータと制御データとの関係を示す図である。 本第4の実施形態に係る第2フラグ演算部のフラグ演算回路の構成例を示す図である。 図19のフラグ演算回路の演算結果を示す図であって、第4の実施形態に係るDES演算回路における4ビットデータと制御データとの関係を示す図である。 図20において、各ビットの“0”と“1”の制御の状態を示す図である。 d1,d2,d4,d7,d9,d10,d12,d15に対して反転制御を行う“6969”についてのデータ制御例と図19の回路とを対応させて示す図である。 一般的なAES演算回路の構成例を示す図である。 本第5の実施形態に係るAES演算回路の構成例を示す図である。 本発明の構成が適用可能な暗号処理実行デバイスとしてのICモジュールの構成例を示す図である。
以下、本発明の実施形態を図面に関連付けて詳細について説明する。
なお、説明は以下の順序で行う。
1.第1の実施形態(DES演算回路の第1の構成例)
2.第2の実施形態(DES演算回路の第2の構成例)
3.第3の実施形態(DES演算回路の第3の構成例)
4.第4の実施形態(DES演算回路の第4の構成例)
5.第5の実施形態(AES演算回路の構成例)
本実施形態の暗号処理装置は、少なくとも次の3つの目的が達成可能なように構成される。
<1>演算結果の中間値の“1”のビット数(ハミング重み:Hamming Weight、HW)を小さくすることにより、信号バスの充放電電流を削減する。
<2>演算結果の中間値のHWをほぼ一定にすることにより、DPA耐性の向上を図る。
<3>演算結果の中間値を、その値に応じて攪乱することにより、DPA耐性の向上を図る。
これらの目的を実現するために、本実施形態の暗号処理装置は、以下の特徴を持って構成される。
暗号回路には、信号バスの所定ビット毎にフラグレジスタおよびフラグ配線が配置される。
所定ビットのデータが所定の値のときにフラグを立て、このフラグで所定ビットの反転制御を行う。
所定ビットの選択は、暗号回路に配置された複数のSub・Sboxの出力信号の中で、少なくとも2つ以上のSub・Sboxの出力が含まれるように行う。
これらの構成で、上記目的<1>〜<3>を満たす構成として、以下を採る。
所定ビット内で、“1”のビット数(HW)が半分より大きい場合はフラグを立て、対応データを反転する。
上記目的<1>に対してフラグレジスタおよびフラグ配線を追加し、その結果に加えてHWが半数に達していない場合およびHWが4の場合に追加したフラグを立て、そのフラグ配線を充電する。
換言すれば、ハミング重みが0,1,4の場合に追加したフラグを立てる。
所定ビットのビットパターンに応じてフラグデータを生成し、そのフラグFLGでデータを反転制御する。
なお、以下に説明する第1から第5の実施形態とも、1ラウンド(Round)の演算サイクルはプリチャージ相(Pre-Charge Phase:休止相)とエバリュエーション相(Evaluation Phase:稼動相)により構成される。
また、DES暗号は16ラウンド(Round)の演算で形成される。
<1.第1の実施形態>
図3は、本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
図4は、図3のDES演算回路の要部の具体的な構成例を示す回路図である。
本DES演算回路100は、主として消費電流削減のため、後で詳述するように、信号バスを所定ビット単位でグループ分けし、各グループで“1”のビット数が所定ビットの半分より多い場合にフラグを立てる回路が配置されている。
そして、そのフラグでデータの反転制御を行う。これにより、所定ビット内で“1”のビット数が半分より多い場合にはデータは反転され、結果として所定ビット内の“1”のビット数は半分以下に制御される。
本DES演算回路100は、初期置換部[IP(Initial Permutation)部]101、第1フラグ演算部(Cal.FLG1)102、第1EXOR演算部103、スイッチ104L,104R、第1レジスタ部105、および第2レジスタ部106を有する。
DES演算回路100は、第1プリチャージ制御部(P.C.CTL1)107、第2プリチャージ制御部(P.C.CTL2)108、および第2EXOR演算部109を有する。
DES演算回路100は、ラウンド演算部としてのF関数部110、第3EXOR演算部111、第4EXOR演算部112、ANDゲート部113、第2フラグ演算部(Cal.FLG2)114、および第5EXOR演算部115を有する。
DES演算回路100は、フラグ解除部としての第6EXOR演算部116および第7EXOR演算部117、逆置換部(IP-1)118、および暗号文出力部119を有する。
なお、EXOR演算は排他的論理和演算を意味する。
本DES回路演算100では、以下の制御信号が使われている。
“/PC”はプリチャージ(Pre Charge)を制御する信号で、ロー(Low)レベルの時、レジスタの信号線(負荷配線)は全てローレベルとなり、ハイ(High)レベルの時、レジスタの格納値を信号線(負荷配線)を通し出力するように制御する信号である。
“/PCdly”は制御信号“/PC”の立ち上りだけをF関数部110の遅延時間分だけ遅らせた制御信号であり、制御の内容は制御信号“/PC”と同様である。
/PCdlyが第1制御信号に相当し、/PCが第2制御信号に相当する。
本実施形態のDES演算回路が、通常の回路構成と異なる点は、以下の点である。
第1レジスタ部105および第2レジスタ部106には、データのLレジスタ(LReg),Rレジスタ(RReg)の他にフラグレジスタが配置されている。
そして、第1レジスタ部105および第2レジスタ部106の出力は、第1プリチャージ制御部107および第2プリチャージ制御部108におけるプリチャージ制御信号“/PC”との論理を経て負荷配線に出力される。
Rレジスタデータとそのフラグデータは、F関数部110およびLレジスタLRegの入力に供給され、F関数部110への入力は、第2EXOR演算部109におけるフラグ値FRnとのEXOR演算(排他的論理和演算)でフラグを解除した値となる。
Lレジスタデータは、F関数部110の出力と第3EXOR演算部111でEXOR演算された後に、第4EXOR演算部112におけるフラグFLとのEXOR演算によってフラグが解除されて本来の中間値になる。
そして、この値から第2フラグ演算部114によって新たなフラグFLGnが生成され、このフラグFLGnとの第5のEXOR演算部115でEXOR演算した値が第2レジスタ部106のRレジスタRRegの入力に供給される。
このような特徴を有する図3のDES演算回路100の構成および機能ついて具体的に説明する。
IP置換部101は、メッセージを形成する平文に対してIP置換処理を施し、処理後の左データLDTと右データRDTを第1フラグ演算部102および第1EXOR演算部103に出力する。
なお、IP置換部101による左データLDTおよび右データRDTは32ビットである。
第1フラグ演算部102は、IP置換部101による左データLDTおよび右データRDTの各データで所定ビットずつ、本第1の実施形態では2ビットずつフラグを生成するための演算を行い、生成したフラグFL0、FR0を第1EXOR演算部103に出力する。
第1EXOR演算部103は、IP置換部101による左データLDTおよび右データRDTの各データとそれに対応するフラグFL0,FR0とのEXOR演算を行う。
第1EXOR演算部103は、フラグFL0で制御された左データを、スイッチ104Lを介して第1レジスタ部105に供給する。また、このときフラグFL0のデータもスイッチ104Lを介して第1レジスタ部105に供給される。
第1EXOR演算部103は、フラグFR0で制御された右データを、スイッチ104Rを介して第2レジスタ部106に供給する。また、このときフラグFR0のデータもスイッチ104Rを介して第2レジスタ部106に供給される。
スイッチ104Lの作動接点aは第1EXOR演算部103の出力に接続され、作動接点bは第2プリチャージ制御部108の出力に接続され、固定接点cが第1レジスタ部105の入力に接続されている。
スイッチ104Rの作動接点aは第1EXOR演算部103の出力に接続され、作動接点bは第5EXOR演算部115の出力に接続され、固定接点cが第2レジスタ部106の入力に接続されている。
第1レジスタ部105は、Lレジスタ(LReg)1051およびフラグレジスタ1052により形成されている。Lレジスタ1051が第1データレジスタに相当し、フラグレジスタ1052が第1フラグレジスタに相当する。
Lレジスタ1051は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Lを介して入力した、たとえば32ビットのデータをラッチ(格納)する。
フラグレジスタ1052は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Lを介して入力したフラグFL(0,n−1)をラッチ(格納)する。
第2レジスタ部106は、Rレジスタ(RReg)1061およびフラグレジスタ1062により形成されている。Rレジスタ1061が第2データレジスタに相当し、フラグレジスタ1062が第2フラグレジスタに相当する。
Rレジスタ1061は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Rを介して入力した、たとえば32ビットのデータをラッチ(格納)する。
フラグレジスタ1062は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Rを介して入力したフラグFR(0,n−1)をラッチ(格納)する。
第1プリチャージ制御部107は、Lレジスタ1051にラッチされたデータおよびフラグレジスタ1052にラッチされたフラグFLn-1と制御信号/PCdlyとの論理演算(本例では論理積)を行う。
第1プリチャージ制御部107は、論理演算を経たデータを第3EXOR演算部111の一方の入力に出力し、論理演算を経たフラグFLn-1を第4EXOR演算部115の一方の入力に供給する。
第1プリチャージ制御部107の具体的な構成例について図4に関連付けて説明する。
第1プリチャージ制御部107は、図4に示すように、データ用2入力ANDゲートADL00〜ADL031、およびフラグ用2入力ANDゲートAFL00〜AFL015を有する。
第1プリチャージ制御部107は、さらにデータ用負荷配線LDL00〜LDL031、およびフラグ用負荷配線LFL00〜LFL015を有する。
データ用ANDゲートADL00〜ADL031は、それぞれLレジスタ1051にラッチされた32ビットデータ(Ln-1 FLn-1)の各ビットデータb0〜b31と制御信号/PCdlyとの論理積をとる。なお、は排他的論理和演算を示す。
ANDゲートADL00〜ADL031は、演算結果をその出力に対応させて配線されたデータ用負荷配線LDL00〜LDL031に出力する。
フラグ用ANDゲートAFL00〜AFL015は、それぞれフラグレジスタ1052にラッチされた16のフラグFLn-1[0]〜FLn-1[15]と制御信号/PCdlyとの論理積をとる。
ANDゲートAFL00〜AFL015は、演算結果を各出力に対応させて配線されたフラグ用負荷配線LFL00〜LFL015に出力する。
第1プリチャージ制御部107は、制御信号/PCdlyがローレベルで供給されると、全ANDゲートADL00〜ADL031,AFL00〜AFL015の出力は全てローレベルとなる。
すなわち、制御信号/PCdlyがローレベルのときは、第1レジスタ部105のLレジスタ1051およびフラグレジスタ1052の格納値は出力されない。
第1プリチャージ制御部107は、制御信号/PCdlyがハイレベルで供給されると、全ANDゲートADL00〜ADL031,AFL00〜AFL015で論理積演算が行われ、Lレジスタ1051およびフラグレジスタ1052の格納値を出力する。
第2プリチャージ制御部108は、Rレジスタ1061にラッチされたデータおよびフラグレジスタ1062にラッチされたフラグFRn-1と制御信号/PCとの論理演算(本例では論理積)を行う。
第2プリチャージ制御部108は、論理演算を経たデータを第2EXOR演算部109の一方の入力に出力し、論理演算を経たフラグFRn-1を第2EXOR演算部109の他方の入力に供給する。
第2プリチャージ制御部108の具体的な構成例について図4に関連付けて説明する。
第2プリチャージ制御部108は、図4に示すように、データ用2入力ANDゲートADR00〜ADR031、およびフラグ用2入力ANDゲートAFR00〜AFR015を有する。
第2プリチャージ制御部108は、さらにデータ用負荷配線LDR00〜LDR031、およびフラグ用負荷配線LFR00〜LFR015を有する。
データ用ANDゲートADR00〜ADR031は、それぞれRレジスタ1061にラッチされた32ビットデータ(Rn-1 FRn-1)の各ビットデータb0〜b31と制御信号/PCとの論理積をとる。なお、は排他的論理和演算を示す。
ANDゲートADR00〜ADR031は、演算結果をその出力に対応させて配線されたデータ用負荷配線LDR00〜LDR031に出力する。
フラグ用ANDゲートAFR00〜AFR015は、それぞれフラグレジスタ1062にラッチされた16のフラグFRn-1[0]〜FRn-1[15]と制御信号/PCとの論理積をとる。
ANDゲートAFR00〜AFR015は、演算結果を各出力に対応させて配線されたフラグ用負荷配線LFR00〜LFR015に出力する。
第2プリチャージ制御部108は、制御信号/PCがローレベルで供給されると、全ANDゲートADR00〜ADR031,AFR00〜AFR015の出力は全てローレベルとなる。
すなわち、制御信号/PCがローレベルのときは、第2レジスタ部106のRレジスタ1061およびフラグレジスタ1062の格納値は出力されない。
第2プリチャージ制御部108は、制御信号/PCがハイレベルで供給されると、全ANDゲートADR00〜ADR031,AFR00〜AFR015で論理積演算が行われ、Rレジスタ1061およびフラグレジスタ1062の格納値を出力する。
第2EXOR演算部109は、第2プリチャージ制御部108から出力されるRレジスタ1061のラッチデータの各ビットデータb0〜b31と、フラグレジスタ1062のラッチフラグFRn-1[0]〜FRn-1[15]とのEXOR演算を行う。
第2EXOR演算部109は、このデータとフラグ値のEXOR演算で一旦フラグを解除し、その結果データをF関数部110に出力する。
第2EXOR演算部109の具体的な構成例について図4に関連付けて説明する。
第2EXOR演算部109は、図4に示すように、第2プリチャージ制御部108の出力に対して並列に配列された32個のEXOR演算器EOR20〜231を有する。
EXOR演算器EOR20の一方の入力がデータ用負荷配線LDR00に接続され、他方の入力がフラグ用負荷配線LFR00に接続されている。EXOR演算器EOR20は、ビットデータb0とフラグFRn-1[0]とのEXOR演算を行う。
EXOR演算器EOR21の一方の入力がデータ用負荷配線LDR01に接続され、他方の入力がフラグ用負荷配線LFR00に接続されている。EXOR演算器EOR21は、ビットデータb1とフラグFRn-1[0]とのEXOR演算を行う。
EXOR演算器EOR22の一方の入力がデータ用負荷配線LDR02に接続され、他方の入力がフラグ用負荷配線LFR01に接続されている。EXOR演算器EOR22は、ビットデータb2とフラグFRn-1[1]とのEXOR演算を行う。
EXOR演算器EOR23の一方の入力がデータ用負荷配線LDR03に接続され、他方の入力がフラグ用負荷配線LFR01に接続されている。EXOR演算器EOR23は、ビットデータb3とフラグFRn-1[1]とのEXOR演算を行う。
以下同様にして、EXOR演算器EOR230の一方の入力がデータ用負荷配線LDR030に接続され、他方の入力がフラグ用負荷配線LFR15に接続されている。EXOR演算器EOR230は、ビットデータb30とフラグFRn-1[15]とのEXOR演算を行う。
EXOR演算器EOR231の一方の入力がデータ用負荷配線LDR031に接続され、他方の入力がフラグ用負荷配線LFR15に接続されている。EXOR演算器EOR231は、ビットデータb31とフラグFRn-1[15]とのEXOR演算を行う。
このように、第2EXOR演算部109においては、連続する2ビットごとに同じフラグFRn-1[0〜15]を用いてEXOR演算が行われる。
F関数部110は、第2EXOR演算部109でフラグが解除されたデータに対して、鍵Knを用いたF関数の演算を行う。
F関数部110の構成を図3および図4に関連付けて説明する。
F関数部110は、図3および図4に示すように、拡張部1101、第8EXOR演算部1102、Sbox1103、およびP置換部1104を有する。
拡張部1101は、第2EXOR演算部109でフラグが解除された32ビットデータに対する拡張処理(ビット拡張処理)を行い、32ビットから48ビットに拡張処理後のデータを連続する6ビット単位でEXOR演算部1102に供給する。
第8EXOR演算部1102は、拡張部1101の出力データとラウンド鍵(拡張ビットと同じビット数)KnとのEXOR(排他的論理和)演算を行い、演算結果をSbox1103に出力する。
図4のEXOR演算部1102は、EXOR演算器EOR60〜EOR67を有する。
EXOR演算器EOR60は、拡張部1101による拡張データEPD0と鍵データk0〜k5とのEXOR演算を行い、その結果をSboxSに出力する。
EXOR演算器EOR61は、拡張部1101による拡張データEPD1と鍵データk6〜k11とのEXOR演算を行い、その結果をSboxSに出力する。
EXOR演算器EOR62は、拡張部1101による拡張データEPD2と鍵データk12〜k17とのEXOR演算を行い、その結果をSboxSに出力する。
同様にして、EXOR演算器EOR66は、拡張部1101による拡張データEPD6と鍵データk36〜k41とのEXOR演算を行い、その結果をSboxSに出力する。
EXOR演算器EOR67は、拡張部1101による拡張データEPD7と鍵データk42〜k47とのEXOR演算を行い、その結果をSboxSに出力する。
Sbox1103は、第8EXOR演算部1102の演算結果に対して非線形変換処理を行う。
Sbox1103は、たとえば変換テーブルを適用した48ビットから32ビットへの非線形処理を実行する。
Sbox1103は、非線形処理を実行する複数(図4では8)のSボックス(Sbox)S〜Sを有する。各SボックスS〜Sでは、変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
SボックスS〜Sからの出力ビット4×8=32ビットは、P置換部1104に入力される。
P置換部1104は、Sbox1103の出力データのビット位置の入れ替え処理を行い、その結果を32ビットのデータPD0〜PD31として第3EXOR演算部111に出力する。
第3EXOR演算部111は、F関数部110の出力データと第1プリチャージ制御部107から出力されるLレジスタ1051のラッチデータとのEXOR演算を行い、その結果を第4EXOR演算部112に出力する。
第3EXOR演算部111の具体的な構成例について図4に関連付けて説明する。
第3EXOR演算部111は、図4に示すように、第1プリチャージ制御部107の出力に対して並列に配列された32個のEXOR演算器EOR30〜331を有する。
EXOR演算器EOR30の一方の入力がデータ用負荷配線LDL00に接続され、他方の入力がF関数部110のデータPD0の供給ライン接続されている。EXOR演算器EOR30は、Lレジスタ1051のビットデータb0とデータPD0とのEXOR演算を行う。
EXOR演算器EOR31の一方の入力がデータ用負荷配線LDL01に接続され、他方の入力がF関数部110のデータPD1の供給ライン接続されている。EXOR演算器EOR31は、Lレジスタ1051のビットデータb1とデータPD1とのEXOR演算を行う。
以下同様に、EXOR演算器EOR330の一方の入力がデータ用負荷配線LDL030に接続され、他方の入力がF関数部110のデータPD30の供給ライン接続されている。EXOR演算器EOR330は、Lレジスタ1051のビットデータb30とデータPD30とのEXOR演算を行う。
EXOR演算器EOR331の一方の入力がデータ用負荷配線LDL031に接続され、他方の入力がF関数部110のデータPD31の供給ライン接続されている。EXOR演算器EOR331は、Lレジスタ1051のビットデータb31とデータPD31とのEXOR演算を行う。
第4EXOR演算部112は、第3EXOR演算部111のEXOR演算器EOR30〜EOR331の演算結果と、フラグレジスタ1052のラッチフラグFLn-1[0]〜FLn-1[15]とのEXOR演算を行う。
第4EXOR演算部112は、このデータとフラグ値のEXOR演算で一旦フラグを解除し、その結果データを中間値としてANDゲート部113に出力する。
第4EXOR演算部112の具体的な構成例について図4に関連付けて説明する。
第4EXOR演算部112は、図4に示すように、第3EXOR演算部111の出力に対して並列に配列された32個のEXOR演算器EOR40〜431を有する。
EXOR演算器EOR40の一方の入力が第3EXOR演算部111のEXOR演算器EOR30の出力に接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR40は、EXOR演算器EOR30の出力データとフラグFLn-1[0]とのEXOR演算を行う。
EXOR演算器EOR41の一方の入力が第3EXOR演算部111のEXOR演算器EOR31の出力に接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR41は、EXOR演算器EOR31の出力データとフラグFLn−1[0]とのEXOR演算を行う。
EXOR演算器EOR42の一方の入力が第3EXOR演算部111のEXOR演算器EOR32の出力に接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR42は、EXOR演算器EOR32の出力データとフラグFLn-1[1]とのEXOR演算を行う。
EXOR演算器EOR43の一方の入力が第3EXOR演算部111のEXOR演算器EOR33の出力に接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR43は、EXOR演算器EOR33の出力データとフラグFLn-1[1]とのEXOR演算を行う。
以下同様にして、EXOR演算器EOR430の一方の入力が第3EXOR演算部111のEXOR演算器EOR330の出力に接続され、他方の入力がフラグ用負荷配線LFL015に接続されている。EXOR演算器EOR430は、EXOR演算器EOR330の出力データとフラグFLn-1[15]とのEXOR演算を行う。
EXOR演算器EOR431の一方の入力が第3EXOR演算部111のEXOR演算器EOR331の出力に接続され、他方の入力がフラグ用負荷配線LFL015に接続されている。EXOR演算器EOR431は、EXOR演算器EOR331の出力データとフラグFLn-1[15]とのEXOR演算を行う。
このように、第4EXOR演算部112においては、連続する2ビットごとに同じフラグFLn-1[0〜15]を用いてEXOR演算が行われる。
ANDゲート部113は、第4EXOR演算部112の各EXOR演算器EOR40〜EOR431と制御信号/PCdlyとの論理積をとり、その結果を第2フラグ演算部114および第5EXOR演算部115に出力する。
ANDゲート部113の具体的な構成例について図4に関連付けて説明する。
ANDゲート部113は、32個のANDゲートAD00〜AD031を有する。
ANDゲートAD00は、第4EXOR演算部112のEXOR演算器EOR40の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD01は、第4EXOR演算部112のEXOR演算器EOR41の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD02は、第4EXOR演算部112のEXOR演算器EOR42の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD03は、第4EXOR演算部112のEXOR演算器EOR43の出力データと制御信号/PCdlyとの論理積をとる。
以下、同様にして、ANDゲートAD030は、第4EXOR演算部112のEXOR演算器EOR430の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD031は、第4EXOR演算部112のEXOR演算器EOR431の出力データと制御信号/PCdlyとの論理積をとる。
第2フラグ演算部114は、ANDゲート部113を介して供給される第4EXOR演算部112によるフラグが解除された中間値データから新たにフラグFRn[0]〜FRn[15]を生成し、第5EXOR演算部115に出力する。図3においては、第5EXOR演算部115に供給されるフラグを符号FLGnとして示している。
この第2フラグ演算部114で生成されるフラグFRn[0]〜FRn[15]は第2レジスタ部106のフラグレジスタ1062の更新値となる。
第2フラグ演算部114の具体的な構成例について図4に関連付けて説明する。
第2フラグ演算部114は、16個のANDゲートAD10〜AD115を有する。
ANDゲートAD10は、ANDゲート部113のANDゲートAD00の出力とANDゲートAD01の出力との論理積をとり、その結果をフラグFRn[0]として出力する。
ANDゲートAD11は、ANDゲート部113のANDゲートAD02の出力とANDゲートAD03の出力との論理積をとり、その結果をフラグFRn[1]として出力する。
以下同様にして、ANDゲートAD115は、ANDゲート部113のANDゲートAD030の出力とANDゲートAD031の出力との論理積をとり、その結果をフラグFRn[15]として出力する。
第5EXOR演算部115は、ANDゲート部113を介した第4EXOR演算部112のEXOR演算器EOR40〜EOR431の演算結果と、第2フラグ演算部114で生成されたフラグFRn[0]〜FRn[15]とのEXOR演算を行う。
この第5EXOR演算部115の演算結果データb0´〜b31´が、第2レジスタ部106のRレジスタ1061の更新データとなる。
第5EXOR演算部115の具体的な構成例について図4に関連付けて説明する。
第5EXOR演算部115は、図4に示すように、ANDゲート部113の出力に対して並列に配列された32個のEXOR演算器EOR50〜531を有する。
EXOR演算器EOR50の一方の入力がANDゲート部113のANDゲートAD00の出力に接続され、他方の入力がフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR50は、ANDゲートAD00を介したEXOR演算器EOR40の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR51の一方の入力がANDゲート部113のANDゲートAD01の出力に接続され、他方の入力がフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR51は、ANDゲートAD01を介したEXOR演算器EOR41の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR52の一方の入力がANDゲート部113のANDゲートAD02の出力に接続され、他方の入力がフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR52は、ANDゲートAD02を介したEXOR演算器EOR42の出力データとフラグFRn[1]とのEXOR演算を行う。
EXOR演算器EOR53の一方の入力がANDゲート部113のANDゲートAD03の出力に接続され、他方の入力がフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR53は、ANDゲートAD03を介したEXOR演算器EOR43の出力データとフラグFRn[1]とのEXOR演算を行う。
以下同様にして、EXOR演算器EOR530の一方の入力がANDゲート部113のANDゲートAD030の出力に接続され、他方の入力がフラグFRn[15]の出力ラインに接続されている。EXOR演算器EOR530は、ANDゲートAD030を介したEXOR演算器EOR430の出力データとフラグFRn[15]とのEXOR演算を行う。
EXOR演算器EOR531の一方の入力がANDゲート部113のANDゲートAD031の出力に接続され、他方の入力がフラグFRn[15]の出力ラインに接続されている。EXOR演算器EOR531は、ANDゲートAD031を介したEXOR演算器EOR431の出力データとフラグFRn[15]とのEXOR演算を行う。
このように、第5EXOR演算部115においては、連続する2ビットごとに同じフラグFRn[0〜15]を用いてEXOR演算が行われる。
第6EXOR演算部116は、ラウンド演算終了後のデータとフラグFL16とのEXOR演算を行って、フラグを解除したデータを逆置換部118に出力する。
第7EXOR演算部117は、ラウンド演算終了後のデータとフラグFR16とのEXOR演算を行って、フラグを解除したデータを逆置換部118に出力する。
逆置換部118では、フラグが解除されたデータの逆置換変換(IP-1)を実行し、暗号文出力部119を介して暗号文として出力する。
次に、第1の実施形態に係るDES演算回路の暗号化演算動作について、図5および図6に関連付けて説明する。
図5は、第1の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
図6は、第1の実施形態に係るDES演算回路における2ビットデータと制御データとの関係を示す図である。
入力データである平文は、IP部101においてIP置換後、左データLDTと右データRDTに分けられる。
そして、第1フラグ演算部102で各々のデータで所定ビットずつのフラグ演算が行われ、第1EXOR演算部103でフラグ制御を施されて、フラグデータと共に第1レジスタ部105および第2レジスタ部106に格納される。
この例の場合、第1フラグ演算部102において2ビット単位でフラグ演算される。
フラグ制御は、図6に示されるように、2ビットデータが(b0,b1)=(1,1)の場合のみフラグFLG(FRn)に“1”が立ち、このフラグ値でデータが反転される。
このとき、制御後のデータb0´、b1´は共に“0”となり、“1”のビット数であるHW(Hamming Weight)は、フラグも含めて1になっている。
他の3つの場合では、フラグFLG(FRn)は“0”となり、フラグを含めたHWは1以下になっている。これより、制御単位の2ビットの制御後のHWは、フラグも含めて1ビット以下に制御される。
したがって、左データおよび右データは各々32ビットであるが、Lレジスタ1051およびRレジスタ1061の格納値のHWは、フラグレジスタ1052,1062も含めて各々16ビット以下になっている。
暗号演算は、1ラウンドの演算をプリチャージ(Pre Charge)相とエバリュエーション(Evaluation)相の2サイクルで行う。
そして、制御信号としては、プリチャージ相でローレベル、エバリュエーション相でハイレベルとなる制御信号/PCと、制御信号/PCの立上りタイミングのみF関数部110の遅延時間分だけ遅らせた制御信号/PCdlyが用いられる。
ラウンド“n”での本来のデータを各々“Ln-1”,“Rn-1”、フラグ値を各々“FLn-1”, “FRn-1”としたとき、Lレジスタ1051およびRレジスタ1061の格納データは、“FLn-1 Ln-1”および“FRn-1 Rn-1”となる。
プリチャージ相では制御信号/PCおよび/PCdlyがローレベルとなって、レジスタ出力配線のデータおよびフラグ、第2フラグ演算部114への入力は全て“0”レベルとなっている。
そして、ラウンド鍵の生成回路からの出力“Kn”もこの期間は“0”レベルとなっているものとし、このときのF関数部110の出力も“0”レベルになっているものとする。
次のエバリュエーション相では、制御信号/PCはハイレベルとなって、ラウンド演算が実行される。
エバリュエーション相に移行したとき、制御信号/PCはハイレベルになり、Rレジスタ1061の格納値とフラグレジスタ1062のフラグ値は、F関数部110および第1レジスタ部105の入力に供給される。
このとき、フラグ値による制御により、Rレジスタ1061の出力信号の配線の中で“1”に遷移するビット数は16ビット以下に制御されている。
F関数部110の入力手前で、Rレジスタ1061の格納値はフラグ値とEXOR演算されてフラグが解除され、通常の値“Rn-1”に戻されてF関数に入力されてF関数演算が実行され、F関数部110の演算時間経過後に演算結果がF関数出力に現われる。
そして、ほぼ同じタイミングで制御信号/PCdlyがハイレベルに遷移する。
Lレジスタ1051側では、Lレジスタ1051の格納データは制御信号/PCdlyの立上りで信号配線に出力されるが、この時に“1”に遷移するビット数は16ビット以下になっている。
そして、Lレジスタ1051の格納データ“FLn-1 Ln-1”は第3EXOR演算部111に入力され、F関数部110の出力とEXOR演算される。
この演算の結果は、“FLn-1 Ln-1 F(Rn-1,Kn)=FLn-1 Rn”となるが、フラグ“FLn-1”はデータ“Rn”のフラグではないため、第3EXOR演算部111の出力配線で“1”になるビット数は必ずしも16本以下になっていない。
そして、その後、第4EXOR演算部112でフラグ“FLn-1”とEXOR演算してフラグが解除され、演算結果の“Rn”になるが、この値も制御された値でない。このため、第4EXOR演算部112の出力配線で“1”になるビット数は16本以下に制御されない。
この信号と制御信号/PCdlyとの論理積(AND)演算結果であるANDゲート部113の出力も同様である。このため、信号配線の充放電電流を削減するためには、第3EXOR演算部111から第5EXOR演算部115までのパスの演算素子を近接して配置することが望ましい。
制御信号/PCdlyの立上りでANDゲート部113の出力がアクティブになり、演算結果の“Rn”が第2フラグ演算部114に入力され、新しいフラグ値が生成される。
そのフラグ値で第5EXOR演算部115でデータが反転制御され、“1”のビット数が16本以下に制御されたデータが出力されて、Rレジスタ1061に供給される。
第2フラグ演算部114は、2ビット単位で制御する場合は、図4に示すように、AND回路であり、2ビットが共に“1”の場合のみ、フラグに“1”を立てて、データを共に“0”に反転させる。
それ以外のデータでは、フラグ値は“0”になるが、2ビットデータ中の“1”のビット数は、1ビット以下である。
これらにより、次のラウンドでのRレジスタの出力で、“1”のビット数はフラグも含めて16本以下に制御される。
そして、ラウンド演算終了後、最終データはフラグ値とEXOR演算され本来の値に戻され、IPの逆置換後に演算結果として出力される。
以上説明したように、本第1の実施形態によれば、2ビット制御の場合、フラグを含めた信号配線のHWは、バス幅の半分以下に制御され、省電力化が実現される。
<2.第2の実施形態>
次に、本発明の第2の実施形態について説明する。
図7は、本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
図8は、図7のDES演算回路の要部の具体的な構成例を示す回路図である。
なお、図7および図8においては、理解を容易にするために、図3および図4と同一構成、機能部分は同一符号をもって表している。
本第2の実施形態に係るDES演算回路100Aが、図3および図4に示す第1の実施形態に係るDES演算回路100と異なる点は、次の点にある。
すなわち、DES演算回路100Aは、2ビット単位ではなく、4ビット単位での反転制御によりバスの充放電電流の低電力化を実現する回路として構成されている。
DES演算回路100AとDES演算回路100の回路構成における具体的な差異は次の通りである。
図3および図4のDES演算回路100は、Lレジスタ1051の格納値とF関数の値のEXOR演算後にフラグレジスタ1052の値とEXOR演算を行っている。
これに対して、DES演算回路100Aでは、F関数部110の出力をフラグレジスタ1052の値と第4EXOR演算部112AでEXOR演算した後、第3EXOR演算部111AでLレジスタ1051の値とEXOR演算している。
これに伴って、DES演算回路100では第2フラグ演算部114の入力の直前に配置されていたANDゲート部113Aは、F関数部110の出力側に移動している。
本実施形態では、レジスタ格納値のHWを制御してこの信号パスでの充放電電流を小さくしているが、その後の他のデータとの論理回路を経たデータはその制御がなされていないため、これらの信号パスは最小になるようにレイアウトされることを前提としている。
このため、Lレジスタ1051側で信号配線の負荷が大きいのは、“HWが制御されている、Lレジスタの出力から最初のEXOR演算部までのパス”を想定し、その他のパスではデータのHWは制御されていない。
しかし、本実施形態においては、負荷配線の容量が小さくなるようにコンパクトにレイアウトされることを想定しているため、図3および図7のどちらの構成を採っても電流削減効果の差異は小さい。
この図7の構成の動作に関して、Rレジスタ1061側は、制御されるビット数の単位およびフラグの数が異なるだけで、動作は2ビット単位での制御と同じであり、制御データとフラグはF関数直前でEORされてフラグが解除される。
ラウンド“n”でのレジスタへの格納値は、IP置換後または直前の演算でフラグ値が演算され、その結果に基づいて反転制御されていて、4ビット単位でHWが2ビット以下になるように制御されている。この制御方法は後述する。
ここで、図8の要部の具体的な構成、機能について説明する。以下の説明においても、図4と同様の構成部分は同一符号をもって表す。
図8に示すように、本第2の実施形態に係る第1プリチャージ制御部107Aにおいて、フラグ用のANDゲートとしては、8つのANDゲートAFL00〜AFL07を有している。
第4EXOR演算部112Aは、F関数部110の出力データPD0〜PD31と、フラグレジスタ1052のラッチフラグFLn-1[0]〜FLn-1[7]とのEXOR演算を行う。
第4EXOR演算部112Aの具体的な構成例について図8に関連付けて説明する。
第4EXOR演算部112Aは、図8に示すように、F関数部110の出力に対して並列に配列された32個のEXOR演算器EOR40〜431を有する。
EXOR演算器EOR40の一方の入力がF関数部110のデータPD0の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR40は、F関数部110の出力データPD0とフラグFLn-1[0]とのEXOR演算を行う。
EXOR演算器EOR41の一方の入力がF関数部110のデータPD1の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR41は、F関数部110の出力データPD1とフラグFLn-1[0]とのEXOR演算を行う。
EXOR演算器EOR42の一方の入力がF関数部110のデータPD2の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR42は、F関数部110の出力データPD2とフラグFLn-1[0]とのEXOR演算を行う。
EXOR演算器EOR43の一方の入力がF関数部110のデータPD3の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR43は、F関数部110の出力データPD3とフラグFLn-1[0]とのEXOR演算を行う。
EXOR演算器EOR44の一方の入力がF関数部110のデータPD4の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR44は、F関数部110の出力データPD4とフラグFLn-1[1]とのEXOR演算を行う。
EXOR演算器EOR45の一方の入力がF関数部110のデータPD5の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR45は、F関数部110の出力データPD5とフラグFLn-1[1]とのEXOR演算を行う。
EXOR演算器EOR46の一方の入力がF関数部110のデータPD6の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR46は、F関数部110の出力データPD6とフラグFLn-1[1]とのEXOR演算を行う。
EXOR演算器EOR47の一方の入力がF関数部110のデータPD7の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR47は、F関数部110の出力データPD7とフラグFLn-1[1]とのEXOR演算を行う。
以下同様にして、EXOR演算器EOR428の一方の入力がF関数部110のデータPD28の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL07に接続されている。EXOR演算器EOR428は、F関数部110の出力データPD28とフラグFLn-1[7]とのEXOR演算を行う。
EXOR演算器EOR429の一方の入力がF関数部110のデータPD29の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL07に接続されている。EXOR演算器EOR429は、F関数部110の出力データPD29とフラグFLn-1[7]とのEXOR演算を行う。
EXOR演算器EOR430の一方の入力がF関数部110のデータPD30の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL030に接続されている。EXOR演算器EOR430は、F関数部110の出力データPD30とフラグFLn-1[7]とのEXOR演算を行う。
EXOR演算器EOR431の一方の入力がF関数部110のデータPD31の供給ラインに接続され、他方の入力がフラグ用負荷配線LFL031に接続されている。EXOR演算器EOR431は、F関数部110の出力データPD31とフラグFLn-1[7]とのEXOR演算を行う。
このように、第4EXOR演算部112Aにおいては、連続する4ビットごとに同じフラグFLn-1[0〜7]を用いてEXOR演算が行われる。
ANDゲート部113Aは、第4EXOR演算部112Aの各EXOR演算器EOR40〜EOR431と制御信号/PCdlyとの論理積をとり、その結果を第3EXOR演算部111Aに出力する。
ANDゲート部113Aの具体的な構成例について図8に関連付けて説明する。
ANDゲート部113Aは、32個のANDゲートAD00〜AD031を有する。
ANDゲートAD00は、第4EXOR演算部112AのEXOR演算器EOR40の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD01は、第4EXOR演算部112AのEXOR演算器EOR41の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD02は、第4EXOR演算部112AのEXOR演算器EOR42の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD03は、第4EXOR演算部112AのEXOR演算器EOR43の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD04は、第4EXOR演算部112AのEXOR演算器EOR44の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD05は、第4EXOR演算部112AのEXOR演算器EOR45の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD06は、第4EXOR演算部112AのEXOR演算器EOR46の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD07は、第4EXOR演算部112AのEXOR演算器EOR47の出力データと制御信号/PCdlyとの論理積をとる。
以下、同様にして、ANDゲートAD028は、第4EXOR演算部112AのEXOR演算器EOR428の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD029は、第4EXOR演算部112AのEXOR演算器EOR429の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD030は、第4EXOR演算部112AのEXOR演算器EOR430の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD031は、第4EXOR演算部112AのEXOR演算器EOR431の出力データと制御信号/PCdlyとの論理積をとる。
第3EXOR演算部111Aは、ANDゲート部113Aの出力データと第1プリチャージ制御部107から出力されるLレジスタ1051のデータとのEXOR演算を行い、その結果を第4フラグ演算部114Aおよび第5EXOR演算部115Aに出力する。
第3EXOR演算部111Aの具体的な構成例について図8に関連付けて説明する。
第3EXOR演算部111Aは、図8に示すように、第1プリチャージ制御部107の出力に対して並列に配列された32個のEXOR演算器EOR30〜331を有する。
EXOR演算器EOR30の一方の入力がデータ用負荷配線LDL00に接続され、他方の入力がANDゲート部113AのANDゲートAD00の出力に接続されている。EXOR演算器EOR30は、Lレジスタ1051のビットデータb0とデータb0のフラグでEXOR演算されたデータPD0とのEXOR演算を行う。
EXOR演算器EOR31の一方の入力がデータ用負荷配線LDL01に接続され、他方の入力がANDゲート部113AのANDゲートAD01の出力に接続されている。EXOR演算器EOR31は、Lレジスタ1051のビットデータb1とデータb1のフラグでEXOR演算されたデータPD1とのEXOR演算を行う。
EXOR演算器EOR32の一方の入力がデータ用負荷配線LDL02に接続され、他方の入力がANDゲート部113AのANDゲートAD02の出力に接続されている。EXOR演算器EOR32は、Lレジスタ1051のビットデータb2とデータb2のフラグでEXOR演算されたデータPD2とのEXOR演算を行う。
EXOR演算器EOR33の一方の入力がデータ用負荷配線LDL03に接続され、他方の入力がANDゲート部113AのANDゲートAD03の出力に接続されている。EXOR演算器EOR33は、Lレジスタ1051のビットデータb3とデータb3のフラグでEXOR演算されたデータPD3とのEXOR演算を行う。
EXOR演算器EOR34の一方の入力がデータ用負荷配線LDL04に接続され、他方の入力がANDゲート部113AのANDゲートAD04の出力に接続されている。EXOR演算器EOR34は、Lレジスタ1051のビットデータb4とデータb4のフラグでEXOR演算されたデータPD4とのEXOR演算を行う。
EXOR演算器EOR35の一方の入力がデータ用負荷配線LDL05に接続され、他方の入力がANDゲート部113AのANDゲートAD05の出力に接続されている。EXOR演算器EOR35は、Lレジスタ1051のビットデータb5とデータb5のフラグでEXOR演算されたデータPD5とのEXOR演算を行う。
EXOR演算器EOR36の一方の入力がデータ用負荷配線LDL06に接続され、他方の入力がANDゲート部113AのANDゲートAD06の出力に接続されている。EXOR演算器EOR36は、Lレジスタ1051のビットデータb6とデータb6のフラグでEXOR演算されたデータPD6とのEXOR演算を行う。
EXOR演算器EOR37の一方の入力がデータ用負荷配線LDL07に接続され、他方の入力がANDゲート部113AのANDゲートAD07の出力に接続されている。EXOR演算器EOR37は、Lレジスタ1051のビットデータb7とデータb7のフラグでEXOR演算されたデータPD7とのEXOR演算を行う。
以下同様に、EXOR演算器EOR328の一方の入力がデータ用負荷配線LDL028に接続され、他方の入力がANDゲート部113AのANDゲートAD28の出力に接続されている。EXOR演算器EOR328は、Lレジスタ1051のビットデータb28とデータb28のフラグでEXOR演算されたデータPD28とのEXOR演算を行う。
EXOR演算器EOR329の一方の入力がデータ用負荷配線LDL029に接続され、他方の入力がANDゲート部113AのANDゲートAD29の出力に接続されている。EXOR演算器EOR329は、Lレジスタ1051のビットデータb29とデータb29のフラグでEXOR演算されたデータPD29とのEXOR演算を行う。
EXOR演算器EOR330の一方の入力がデータ用負荷配線LDL030に接続され、他方の入力がANDゲート部113AのANDゲートAD30の出力に接続されている。EXOR演算器EOR330は、Lレジスタ1051のビットデータb30とデータb30のフラグでEXOR演算されたデータPD30とのEXOR演算を行う。
EXOR演算器EOR331の一方の入力がデータ用負荷配線LDL031に接続され、他方の入力がANDゲート部113AのANDゲートAD31の出力に接続されている。EXOR演算器EOR331は、Lレジスタ1051のビットデータb31とデータb31のフラグでEXOR演算されたデータPD31とのEXOR演算を行う。
第2フラグ演算部114Aは、第3EXOR演算部111Aにより供給されるフラグが解除された中間値データから新たにフラグFRn[0]〜FRn[7]を生成し、第5EXOR演算部115Aに出力する。図7においては、第5EXOR演算部115Aに供給されるフラグを符号FLGnとして示している。
この第2フラグ演算部114Aで生成されるフラグFRn[0]〜FRn[7]は第2レジスタ部106のフラグレジスタ1062の更新値となる。
第2フラグ演算部114Aは、8つのフラグ演算回路114A−0〜114A−7を有する。
図9は、本第2の実施形態に係る第2フラグ演算部114Aのフラグ演算回路の構成例を示す図である。
なお、ここでは、各フラグ演算回路を符号200を用いて表す。
フラグ演算回路200は、データラインLD200〜LD203、AND−NORゲートANR200〜ANR202、および3入力NORゲートNR200を有する。
AND−NORゲートANR200の第1入力端子がデータラインLD200に接続され、第2入力端子がデータラインLD201に接続されている。AND−NORゲートANR200の第3入力端子がデータラインLD202に接続され、第4入力端子がデータラインLD203に接続されている。
AND−NORゲートANR201の第1入力端子がデータラインLD200に接続され、第2入力端子がデータラインLD202に接続されている。AND−NORゲートANR201の第3入力端子がデータラインLD201に接続され、第4入力端子がデータラインLD203に接続されている。
AND−NORゲートANR202の第1入力端子がデータラインLD200に接続され、第2入力端子がデータラインLD203に接続されている。AND−NORゲートANR202の第3入力端子がデータラインLD201に接続され、第4入力端子がデータラインLD202に接続されている。
NORゲートNR200の第1入力端子がAND−NORゲートANR200の出力に接続され、第2入力端子がAND−NORゲートANR201の出力に接続され、第3入力端子がAND−NORゲートANR202の出力に接続されている。
このように、図9のフラグ演算回路200は、ビットデータに対して3個のAND−NORゲートAND−NORゲートANR200〜ANR202と3入力NORゲートNR200により構成される。
このフラグ演算回路200は、4ビット入力中に3ビット以上の“1”があれば3入力NORゲートはハイレベルのフラグを出力し、このフラグ値でデータを反転させる。
図10(A),(B)は、このフラグ演算回路200の演算結果を示す図であって、第2の実施形態に係るDES演算回路における4ビットデータと制御データとの関係を示す図である。
図10(A)は制御前の入力データとハミング値の本来の値を示し、図10(B)が制御後のフラグ値とこれによって制御されたデータおよび制御後のデータのフラグ値も含めたハミング値の実際の値を示している。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,0,0)の場合、HWは“0”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,0)で、HW´は“0”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,0,1)の場合、HWは“1”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,1)で、HW´は“1”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,1,0)の場合、HWは“1”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,0)で、HW´は“1”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,1,1)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,0,0)の場合、HWは“1”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,0)で、HW´は“1”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,0,1)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,1,0)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,1,1)の場合、HWは“3”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,0,0)の場合、HWは“1”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,0)で、HW´は“1”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,0,1)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,1,0)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,1,1)の場合、HWは“3”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,0,0)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,1,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,0,1)の場合、HWは“3”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,1,0)の場合、HWは“3”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,1,1)の場合、HWは“4”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,0)で、HW´は“1”となる。
図10に示すように、いずれのデータの場合もHWは2ビット以下に抑えられ、DESの場合、信号は32本であるが、HWは16ビット以下に抑えられ、最大の消費電力を抑えることができる。
第5EXOR演算部115Aは、第3EXOR演算部111AのEXOR演算器EOR30〜EOR331の演算結果と、第2フラグ演算部114Aで生成されたフラグFRn[0]〜FRn[7]とのEXOR演算を行う。
この第5EXOR演算部115Aの演算結果データb0´〜b31´が、第2レジスタ部106のRレジスタ1061の更新データとなる。
第5EXOR演算部115Aの具体的な構成例について図8に関連付けて説明する。
第5EXOR演算部115Aは、図8に示すように、EOR演算部111Aの出力に対して並列に配列された32個のEXOR演算器EOR50〜531を有する。
EXOR演算器EOR50の一方の入力が第3EXOR演算部111AのEXOR演算器EOR30の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR50は、EXOR演算器EOR30の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR51の一方の入力が第3EXOR演算部111AのEXOR演算器EOR31の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR51は、EXOR演算器EOR31の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR52の一方の入力が第3EXOR演算部111AのEXOR演算器EOR32の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR52は、EXOR演算器EOR32の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR53の一方の入力が第3EXOR演算部111AのEXOR演算器EOR33の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR53は、EXOR演算器EOR33の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR54の一方の入力が第3EXOR演算部111AのEXOR演算器EOR34の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR54は、EXOR演算器EOR34の出力データとフラグFRn[1]とのEXOR演算を行う。
EXOR演算器EOR55の一方の入力が第3EXOR演算部111AのEXOR演算器EOR35の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR55は、EXOR演算器EOR35の出力データとフラグFRn[1]とのEXOR演算を行う。
EXOR演算器EOR56の一方の入力が第3EXOR演算部111AのEXOR演算器EOR36の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR56は、EXOR演算器EOR36の出力データとフラグFRn[1]とのEXOR演算を行う。
EXOR演算器EOR57の一方の入力が第3EXOR演算部111AのEXOR演算器EOR37の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR57は、EXOR演算器EOR37の出力データとフラグFRn[1]とのEXOR演算を行う。
以下同様にして、EXOR演算器EOR528の一方の入力が第3EXOR演算部111AのEXOR演算器EOR328の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[7]の出力ラインに接続されている。EXOR演算器EOR528は、EXOR演算器EOR328の出力データとフラグFRn[7]とのEXOR演算を行う。
EXOR演算器EOR529の一方の入力が第3EXOR演算部111AのEXOR演算器EOR329の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[7]の出力ラインに接続されている。EXOR演算器EOR529は、EXOR演算器EOR329の出力データとフラグFRn[7]とのEXOR演算を行う。
EXOR演算器EOR530の一方の入力が第3EXOR演算部111AのEXOR演算器EOR330の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[7]の出力ラインに接続されている。EXOR演算器EOR530は、EXOR演算器EOR330の出力データとフラグFRn[7]とのEXOR演算を行う。
EXOR演算器EOR531の一方の入力が第3EXOR演算部111AのEXOR演算器EOR331の出力に接続され、他方の入力が第2フラグ演算部114AのフラグFRn[7]の出力ラインに接続されている。EXOR演算器EOR531は、EXOR演算器EOR331の出力データとフラグFRn[7]とのEXOR演算を行う。
このように、第5EXOR演算部115Aにおいては、連続する4ビットごとに同じフラグFRn[0〜7]を用いてEXOR演算が行われる。
ここで、本第2の実施形態に係るDES演算回路100Aの動作、好適な制御信号生成回路の構成例等について、図11〜図14に関連付けて詳述する。
図11は、本第2の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
図12は、本第2の実施形態に係る制御信号生成回路の構成例を示す回路図である。
図13は、図12の回路のタイミングチャートである。
図14は、EXOR−AND回路の回路図、回路記号、および真理値表を示す図である。
DES演算回路100Aの動作は、図11に示すように、プリチャージ相とエバリュエーション相で1ラウンドが制御される。
制御信号/PCおよび/PCdlyがローレベルの期間はレジスタの出力配線の信号は全て“0”に制御される。
制御信号/PCまたは/PCdlyがハイレベルに変化した時には、レジスタの格納データが出力配線に出力される。この場合、フラグ制御により“1”のビット数は4ビット単位で2ビット以下に制御され、結果的に“1”に遷移するビット数はバス幅の半分以下になっている。
第2レジスタ部106側では、制御信号/PCがローレベルの期間はその出力は全てローレベルに制御されている。
制御信号/PCの立ち上がりで、Rレジスタ1061に格納されているデータ“FRn-1 Rn-1”とフラグレジスタ1062に格納されたフラグ“FRn-1”がF関数部110と第1レジスタ部105の入力に供給される。
F関数部110へは第2EXOR演算部109のEXOR演算を経て通常の値“Rn-1”が入力され、F関数演算が開始される。
そして、一定時間経過後にF関数の演算結果“F(Rn-1,Kn)”が出力される。
これとほぼ同じタイミングで制御信号/PCdlyは立ち上り(詳細は後述)、第1レジスタ部105に格納されているフラグレジスタ値“FLn-1”が出力されて第4EXOR演算部112AでF関数部110の出力とEXOR演算される。このEXOR演算結果は、ANDゲート113Aに入力される。
ANDゲート部113Aの各ANDゲートの他方の入力信号は、F関数出力の確定とほぼ同じタイミングで立ち上がるように制御された制御信号/PCdly”である。したがって、この立ち上りで第4EXOR演算部112Aの出力“FLn-1 F(Rn-1,Kn)”は第3EXOR演算部111Aに供給される。
一方、第1レジスタ部105の出力は、制御信号/PCdlyがローレベルの期間はローレベルに保持され、ハイレベルに遷移すると同時にLレジスタ1051の格納値“FLn-1 Ln-1”に遷移する。そして、ほぼ同じタイミングで遷移したANDゲート部113Aの出力“FLn-1 F(Rn-1,Kn)”と第3EXOR演算部111AでEXOR演算される。
この演算で、フラグ値“FLn-1”は解除され、演算結果“F(Rn-1,Kn) Ln-1=Rn”が第2フラグ演算部114Aに入力される。
そして、フラグ演算部114Aによって各4ビットデータのフラグ値“FRn”が演算され、第5EXOR演算部115Aでラウンド演算結果“Rn”の各4ビットを反転制御し、次のラウンドのR側の格納データ“FRn Rn”を生成する。
第2フラグ演算部114Aのフラグ演算回路は、図9に示されるように、4ビットデータに対して3個のAND−NORゲートと3入力NORゲートにより構成される。この回路は、4ビット入力中に3ビット以上の“1”があれば3入力NORは High を出力し、このフラグ値でデータを反転させる。
この回路の演算結果は、図10に示されるように、いずれのデータの場合もHWは2ビット以下に抑えられ、DESの場合、信号は32本であるが、HWは16ビット以下に抑えられ、最大の消費電力を抑えられる。
EOR演算回路は、2つの入力のデータ確定のタイミングに差異があると、その出力は、先に確定したデータに一旦遷移した後、本来の出力に遷移し、余分な充放電電流が消費される。
したがって、2つの入力がほぼ同時に遷移すれば、余分な信号の充放電電流の発生を抑えられる。
本実施形態では、EXOR演算部の入力データのタイミングを制御する制御信号/PCdlyを図12に示す回路で生成することにより、一時的なデータへの遷移を抑えることが可能となる。
前述したように、図12は、本第2の実施形態に係る制御信号生成回路の構成例を示す回路図である。
また図13に、図12の回路のタイミングチャートを示す。
この制御信号生成回路300は、遅延回路301、2入力NORゲートNR300、NR301、インバータIV300、およびF関数部110の出力のモニタ回路302を有する。
モニタ回路302は、F関数部110の出力データPD0〜PD31の連続する4ビットを入力する4入力NORゲートNR302−0〜NR302−7およびNORゲートNR302−0〜NR302−7出力を入力とするNANDゲートNA300を有する。
制御信号生成回路300は、制御信号/PCを遅延回路301で遅延させた信号とF関数出力のモニタ信号S302とのNOR信号と、制御信号/PCの反転信号PCとのNORで制御信号/PCdlyを生成する。
この制御信号生成回路300の遅延回路301で使われている遅延時間は、F関数の演算遅延時間より長く設定されている。
図13に示すように、プリチャージ相では、制御信号/PCによって、F関数部110の入力は全て“0”に制御され、F関数部110の出力も全て“0”で出力される。
そして、制御信号/PCが立ち上がって、F関数部110にデータが入力されて演算が実行されると、F関数部110は演算を実行する。
そして、F関数部110の出力が1ビットでも“1”に遷移するとモニタ回路302の出力はハイレベルに遷移し、制御信号/PCdlyはハイレベルに遷移する。
ここで、F関数部110の出力は全て“0”も採りうるが、その場合にはF関数部110の出力のモニタ回路302の出力は変化しない。
この場合は、制御信号/PCの遅延信号の立ち上がりで制御信号/PCdlyはハイレベルに遷移する。
ここで生成された制御信号/PCdlyは、F関数部110の出力とEXOR演算されるデータの遷移のタイミングを両方とも制御する。このため、F関数部110の出力の確定とほぼ同じタイミングで第4EXOR演算部112Aの入力値が遷移し、EXOR演算部の出力の一時的なデータへの遷移を抑える。
また、図8の回路で、第4EXOR演算部112AとANDゲート部113Aの間のパスの充電でも遅延が発生し、第3EXOR演算部111AでLレジスタ格納値との間の遅延差による余分な電流が発生する。
これを抑えるため、図14(A)に示すようなEXOR−AND回路400に置き換えれば、第2EXOR演算部112AとANDゲート部113A間の遅延は無くなり、第3EXOR演算部111Aで遅延差による充電電流を抑えられる。
本第2の実施形態によれば、その他の構成は第1の実施形態と同様であり、第1の実施形態と同様の効果を得ることができる。
以上により、所定ビット単位でフラグ演算して、そのフラグ値に基づいてデータを反転制御する構成を採ることにより、レジスタの出力バスの変化ビットを半分以下に制御する構成が実現でき、信号バスの充放電による動作電流を低減する構成が実現できる。
<3.第3の実施形態>
次に、本発明の第3の実施形態について説明する。
本第3の実施形態においては、演算結果の中間値を、HWをほぼ一定にすることにより信号バスの充放電電流の定電流化という観点からDPA耐性を向上させる構成について詳述する。
図15は、本第3の実施形態において、図10の制御結果をデータの攪乱という観点からみた結果を示す図である。
図15は、本来のデータとフラグ制御後のデータの関係を示したものである。
たとえば、ビットデータ“b0”のデータの8個の“0”のデータは、7個が“0”のままで、1個だけが“1”に反転されている。
一方、8個の“1”のデータは、4個が“0”に反転され、4個が“1”のままである。“0”のデータに関しては、攪乱効果は十分ではないが、“1”に関しては十分な攪乱効果が得られている。
DPA攻撃は、Sub・Sboxの6ビット鍵を推定して多数の平文のシミュレーション(simulation)をし、着目ノードが“0”か“1”かによって電流波形をグループ分けし、各グループの平均の波形の差分を採る。DPA攻撃は、このとき、ピークの有無によって推定した6ビット鍵の妥当性を判断していく攻撃方法である。
本実施形態の構成の場合、正しい鍵を推定していても、
“0”と推定したグループのうち 1/8 は“1”に反転している。
“1”と推定したグループのうち、半分は“0”に反転している。
となり、未対策の構成に比べてDPA耐性は向上している。
しかも、反転制御を行う所定ビットを、F関数部110でのP置換によるビット並べ替え後のビットの並びを単位にして順番に4ビットずつ分けてフラグを計算して反転制御を行う場合、図16に示すようになる。
すなわち、順番に4ビットずつ分けてフラグを計算して反転制御を行う場合、図16に示すように、たとえばSub・Sbox“S0”の4ビットは、P置換によって並べ替えられ、各々別々のグループでフラグ演算およびそれに基づく反転制御がなされる。
すなわち、“S0”の出力の4ビットは別々のフラグ演算結果によって独立に反転制御がなされていることになり、未対策の構成に比べてDPA耐性は向上している。
所定ビット単位でフラグを2ビット追加して3ビットとし、図9のフラグ演算回路に対してもう2ビット分のフラグ演算回路を追加した図17に示すような構成を用いることも可能である。
図17は、本第3の実施形態に係る第2フラグ演算部のフラグ演算回路の構成例を示す図である。
図17のフラグ演算回路200Aは、図9のフラグ演算回路200の構成に加えて、4入力NORゲートNR201、4入力NANDゲートNA200,NA201、2入力NANDゲートNA202,NA203、およびインバータIV200を有する。
NORゲートNR201の4入力はそれぞれデータラインLD200〜LD203に接続されている。
同様に、NANDゲートNA200の4入力はそれぞれデータラインLD200〜LD203に接続されている。
NANDゲートNA201は、第1入力端子が制御信号/PCdlyの供給ラインに接続されている。NANDゲートNA201は、第2入力端子がAND−NORゲートANR200に接続され、第3入力端子がAND−NORゲートANR201に接続され、第4入力端子がAND−NORゲートANR202に接続されている。
NANDゲートNA201の出力がインバータIV200の入力端子に接続され、インバータIV200の出力端子からフラグ信号FLGn1が出力される。
NANDゲートNA202は、第1入力端子が制御信号/PCdlyの供給ラインに接続され、第2入力端子がNORゲートNR201の出力端子に接続されている。
NANDゲートNA203は、第1入力端子がNANDゲートNA200の出力端子に接続され、第2入力端子がNANDゲートNA202の出力端子に接続されている。NANDゲートNA203の出力端子からフラグ信号FLGn2が出力される。
図18(A),(B)は、図17のフラグ演算回路200Aの演算結果を示す図であって、第3の実施形態に係るDES演算回路における4ビットデータと制御データとの関係を示す図である。
図18(A)は制御前の入力データとハミング値の本来の値を示し、図18(B)が制御後のフラグ値とこれによって制御されたデータおよび制御後のデータのフラグ値も含めたハミング値の実際の値を示している。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,0,0)の場合、HWは“0”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,1,1)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,0,1)の場合、HWは“1”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,1,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,1,0)の場合、HWは“1”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,1,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,1,1)の場合、HWは“2”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,0,0)の場合、HWは“1”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,1,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,0,1)の場合、HWは“2”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,1,0)の場合、HWは“2”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,1,1)の場合、HWは“3”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(1,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,0,0)の場合、HWは“1”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,1,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,0,1)の場合、HWは“2”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,1,0)の場合、HWは“2”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,1,1)の場合、HWは“3”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(1,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,0,0)の場合、HWは“2”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(0,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,1,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,0,1)の場合、HWは“3”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(1,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,1,0)の場合、HWは“3”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(1,0,0)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,1,1)の場合、HWは“4”である。制御後は、フラグFLGn0,FLGn1,FLGn2は(1,0,1)で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,0)で、HW´は“2”となる。
図17の構成を用いた場合、フラグを含めたHWは、図18に示されるように、データに関係なく全てのデータに対して2ビットとなり、相補構成を採ったのと同様の効果が得られ、DPA耐性は更に向上する。
図17のフラグ演算回路200Aで、出力信号“FLGn0”は、第2の実施形態の図9のフラグ演算回路200の出力信号と同じで、4ビット中3ビット以上“1”がある場合にハイレベルとなる信号である。
出力信号“FLGn1”は、4ビット中1ビット以下の “1”の場合にハイレベルとなる信号、そして、出力信号“FLGn2”は、4ビットが全て“0”または全て“1”の場合にハイレベルとなる。
これらの制御信号と制御データの組合せでは、全てのデータに対してHWは2になる。
なお、図17で追加された制御信号“FLGn1”,“FLGn2”は、データ制御には用いられていない。
これらの制御信号は、レジスタおよびその負荷配線の充放電電流とデータとの相関を隠すために用いられるダミーのレジスタおよび負荷配線であり、制御信号“FLGn0”と同じだけの信号の引き回しおよびその値を格納するためのレジスタを配置する必要がある。
この構成は、信号バスの充放電電流の観点から見た場合、データに関わらず一定となる。
この効果を得るDPA対策として、相補構成があるが、相補構成の場合、各ビットで必ず1ビットの信号変化が生じ、信号線分の充電電流が流れるのに対して、本実施形態の場合はその半分である。しかもデータは、不十分なレベルではあるが反転制御もされている。
<4.第4の実施形態>
次に、本発明の第4の実施形態について説明する。
本第4の実施形態においては、演算結果の中間値を、その値に応じて攪乱することによりDPA耐性を向上させる構成について詳述する。
ここでの説明は、4ビット単位でフラグ演算を行って、その結果で反転制御する場合について行う。これは、図8の構成において、フラグ演算回路114Aの部分に、たとえば図19に示すようなフラグ演算回路を配置する事により実現される。
図19は、本第4の実施形態に係る第2フラグ演算部のフラグ演算回路の構成例を示す図である。
図19のフラグ演算回路200Bは、図9のフラグ演算回路200のAND−NORゲートANR200〜ANR202およびNORゲートNR200に代えて、EXORゲートEXOR200,EXOR201が配置されている。
EXOR200は、第1入力端子がデータラインLD203に接続され、第2入力端子がデータラインLD202に接続されている。
EXOR201は、第1入力端子がEXOR200の出力端子に接続され、第2入力端子がデータラインLD201に接続されている。
図20(A),(B)は、図19のフラグ演算回路200Bの演算結果を示す図であって、第4の実施形態に係るDES演算回路における4ビットデータと制御データとの関係を示す図である。
図20(A)は制御前の入力データとハミング値の本来の値を示し、図20(B)が制御後のフラグ値とこれによって制御されたデータおよび制御後のデータのフラグ値も含めたハミング値の実際の値を示している。
また、図21は、図20において、各ビットの“0”と“1”の制御の状態を示す図である。
図20(A),(B)は次のような関係を示している。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,0,0)の場合、HWは“0”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,0)で、HW´は“0”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,0,1)の場合、HWは“1”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,1,1,0)で、HW´は“4”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,1,0)の場合、HWは“1”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,1,0,1)で、HW´は“4”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,0,1,1)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,0,0)の場合、HWは“1”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,1,1)で、HW´は“4”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,0,1)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,1)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,1,0)の場合、HWは“2”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,1,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(0,1,1,1)の場合、HWは“3”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,0)で、HW´は“2”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,0,0)の場合、HWは“1”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,0,0)で、HW´は“1”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,0,1)の場合、HWは“2”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,1,0)で、HW´は“3”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,1,0)の場合、HWは“2”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,1,0,1)で、HW´は“3”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,0,1,1)の場合、HWは“3”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,0,1,1)で、HW´は“3”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,0,0)の場合、HWは“2”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,1,1)で、HW´は“3”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,0,1)の場合、HWは“3”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,1,0,1)で、HW´は“3”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,1,0)の場合、HWは“3”である。制御後は、フラグFLGnは“0”で4ビット制御データ(b0´,b1´,b2´,b3´)が(1,1,1,0)で、HW´は“3”となる。
制御前においては、4ビットデータ(b0,b1,b2,b3)が(1,1,1,1)の場合、HWは“4”である。制御後は、フラグFLGnは“1”で4ビット制御データ(b0´,b1´,b2´,b3´)が(0,0,0,0)で、HW´は“1”となる。
図21は、本来の値“b0”〜“b3”に対して、制御後の値“b0’”〜“b3’”の関係を示していて、各ビットとも“0”の半分は“1”に反転し、“1”の半分は“0”に反転している。
図21においては、異なるビット間での関係も調べている。
フラグの制御により、たとえば“b0”とその制御後のデータ“b0’”が十分攪乱されている関係(“0”と“1”各々の半分が反転されている状態)になる。
ところが、この制御によってたとえば“b1’”が“b0”と相関が強くなれば、“b1’”のリークから鍵が取り出されてしまうおそれがある。
このため、制御単位でフラグ制御を行う全ての組み合わせに対して調べている。
その結果、どの組み合わせにおいても8個の“0”のうち4個は“0”のままだが4個は“1”に反転される。そして、8個の“1”のうち4個は“1”のままだが4個は“0”に反転され、データが“0”と“1”のどちらの場合でも50%の確率でデータの反転がなされる。
図19のフラグ演算回路は一例であり、図21を満たす他の構成でも同じ効果が得られる。
4ビットのデータ16個(“d0”〜“d15”)に対して、全ての組合せで50%の確率でデータ反転がなされるものは、反転するビットに“1”を設定して、それを16進数で表わすと、次の10個となる。
すなわち、(d0,d1, ・・・,d14, d15)= 3cc3, 5aa5, 6699, 6969, 6996, 9669, 9696, 9966, a55a, c33c、の10個である。
この中でd1,d2,d4,d7,d9,d10,d12,d15に対して反転制御を行う“6969”についての回路構成を例として図19に示してある。
また、図22にはd1,d2,d4,d7,d9,d10,d12,d15に対して反転制御を行う“6969”についてのデータ制御例と図19の回路とを対応させて示してある。
次に、フラグ演算されるデータの関係について説明する。
フラグ演算されるデータの組合せは、たとえばF関数のP置換後の出力の、ビット番号の小さい順に4ビットずつを単位としていくものとする。
このとき、フラグ演算単位とDPA攻撃の対象となるSub・Sboxとの関係は図16に示すようになる。
この中で、P置換後の点線で囲まれているのがフラグ演算単位の4ビットである。たとえば、Sub・Sbox“S0”に対して攻撃を行う場合について考える。
“S0”の出力の4ビットは、P置換によって異なるフラグ演算単位に振り分けられ、各々のフラグ演算回路では異なるSub・Sboxからの出力信号同士でフラグ演算されて反転制御される。
たとえば“S0”の bit0 は、“S3”の bit2, “S5”の bit2, “S6”の bit1とフラグ演算されて、その結果に基づいて反転制御される。
“S0”の他のビットも同様に、異なるSub・Sboxのビットとのフラグ演算で反転制御が行われる。DPA攻撃では、鍵を推定するのは1個のSub・Sbox単位であり、他のSub・Sboxに関しては推定せず、これらの動作電流はノイズ電流として統計処理を行う。
1個のSub・Sboxのみの6ビット鍵の推定だと、26=64回の電流波形の統計処理で1個のDPA波形が得られるが、本特許の構成の場合、出力の各4ビットは各々異なる Sub・Sboxのビットとの演算によって反転制御されている。
これにより、乱数攪乱と同じ効果が得られ、2nd以降の高次のDPA攻撃が必要となる。着目したビットの反転制御のグループの各ビットが含まれる残り3個のSub・Sboxの鍵も推定する場合、26×4=224=1.7×107回の電流波形の統計処理が必要となり、DPA攻撃は非常に困難になる。
既存の1個のSub・Sboxの鍵を推定してのDPA攻撃では、本実施形態を用いた場合、次の攻撃が必要となる。
すなわち、データはフラグ値によって反転制御されていて、乱数攪乱されたのと同じ効果を示し、少なくも 1st order のDPA攻撃での鍵の取り出しは不可能であり、鍵の取出しには 2nd order 以上の攻撃が必要となる。しかも、本実施形態では、乱数発生回路を用いること無くこの攪乱は実現される。
<5.第5の実施形態>
第1、第2、第3、および第4の実施形態においては、本発明をDESに適用した場合について述べてきた。
本第5の実施形態においては、この概念をAES(Advanced Encryption Standard)に適用した場合について説明する。
図23は、一般的なAES演算回路の構成例を示す図である。
図24は、本第5の実施形態に係るAES演算回路の構成例を示す図である。
AESは、データが128ビットであるが、鍵は128ビット、192ビット、256ビットのものが定義され、各々AES−128,AES192,AES256が仕様としてFIPSに登録されている。演算のラウンド数も鍵長によって10,12,14と異なっている。
ここでは、AES−128の場合について説明する。
図23のAES演算回路150は、サブバイト(Sub Bytes)変換部151、シフトロウ(Shift Rows)変換部152、ミックスカラム(Mix Columns)変換部153、スイッチ154、EXOR演算部155、および128ビットのレジスタ156を有する。
サブバイト変換部151は、Sub_Bytes() 関数を実行し、Sboxによる換字変換を行う。
シフトロウ変換部152は、Shift_Row() 関数を実行し、サブバイト変換部151によるバイトデータをシフトする。
ミックスカラム変換部153は、Mix_Column() 関数を実行し、GF(2)での行列演算を実行する機能を有する。
この例の場合は、レジスタ156をサブバイト変換部( Sub_Bytes() 関数)151の直前に配置しているが、別の位置でも構わない。
暗号演算時、平文はまずラウンド0の鍵とEXOR演算した後、レジスタ156に取り込まれる。
そして、レジスタ156の出力が変化することによって Sub_Bytes() 関数および Shift_Row() 関数が実行され、ラウンド9までは Mix_Column() 関数が続けて実行されて、その演算結果がラウンド鍵とEXORされる。
ラウンド10ではMix_Column() 関数がスキップされてShift_Rows() 関数後の演算結果がラウンド鍵とEXORされてレジスタ156に取り込まれる。
以上がAES演算回路150の基本的な処理である。
本第5の実施形態に係るAES演算回路150Aは、EXOR演算部155の出力側にフラグ演算部161およびEXOR演算部162が配置されている。
AES演算回路150Aは、EXOR演算部162の出力側に(128+32)ビットレジスタ156Aが配置されている。
さらに、AES演算部150Aは、サブバイト変換部151の入力側および暗号文の出力側に、フラグ解除のためのEXOR演算部163,164が配置されている。
図24のAES演算回路150Aは、4ビット単位でフラグ演算する制御を導入し、ラウンド鍵とのEXOR演算後に、フラグ演算および反転制御を実行し、サブバイト変換部151の直前でフラグ解除を行う構成が採用されている。
これにより、この間のバスの充放電電流を削減できる。また、DPA耐性を向上する構成に関しても、DESで説明してきたような方法を転用すれば、DPA耐性の向上は実現できる。
このように、本第5の実施形態によれば、上述した第1〜第4の実施形態と同様の効果を得ることができる。
以上説明したように、本実施形態によれば、バスの充放電電流を削減し、暗号回路の消費電流を削減することができる。
また、バスの充放電電流をデータに関係なく一定とし、DPA耐性を向上させることができる。この場合、信号バスの充放電電流は相補構成の半分に抑えることが可能となる。
また、乱数攪乱と同じ効果が実現され、DPA耐性が向上する。この場合、乱数発生回路は必要としない。
ここで、上述の暗号処理を実行するデバイスとしてのICモジュール500の構成例を図25に関連付けて説明する。
上述の処理は、たとえばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図25に示すICモジュール500は、これら様々な機器に採用することが可能である。
図25において、CPU(Central processing Unit)501は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。
メモリ502は、CPU501が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)を含む。
また、メモリ502は、CPU501の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。
また、メモリ502は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
暗号処理部503は、たとえば上述したDESアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置である。
すなわち、暗号処理部503には、第1〜第4の実施形態に係るDES演算回路、および第5の実施形態に係るAES演算回路が適用される。
送受信部504は、外部とのデータ通信を実行するデータ通信処理部であり、たとえばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
なお、暗号処理部503において適用される各種の制御信号、たとえば前述したスイッチの切り替え制御信号は、クロック生成回路505からのクロック信号をトリガにして動作するタイミング発生回路506において生成する。そして、生成した信号を暗号処理部03に供給することが可能である。

以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
100,100A・・・DES演算回路、101・・・初期置換部[IP(Initial Permutation)部]、102・・・第1フラグ演算部(Cal.FLG1)、103・・・第1EXOR演算部、104L,104R・・・スイッチ、105・・・第1レジスタ部、1051・・・Lレジスタ、1052・・・フラグレジスタ、106・・・第2レジスタ部、1061・・・Rレジスタ、1062・・・フラグレジスタ、107・・・第1プリチャージ制御部(P.C.CTL1)、108・・・第2プリチャージ制御部(P.C.CTL2)、109・・・第2EXOR演算部、110・・・F関数部、111,111A・・・第3EXOR演算部、112,112A・・・第4EXOR演算部、113,113A・・・ANDゲート部、114,114A・・・第2フラグ演算部(Cal.FLG2)、115,115A・・・第5EXOR演算部、116・・・第6EXOR演算部、117・・・第7EXOR演算部、118・・・逆置換部(IP-1)、119・・・暗号文出力部、200,200A,200B・・・フラグ演算回路、300・・・制御信号生成回路。

Claims (13)

  1. 第1データレジスタおよび第1フラグレジスタを含む第1レジスタ部と、
    第2データレジスタおよび第2フラグレジスタを含む第2レジスタ部と、
    入力平文の第1データおよび第2データで、所定ビットずつのフラグ演算を行う第1フラグ演算部と、
    上記第1データおよび第2データの各々に対して上記第1フラグ演算部によるフラグとの排他的論理和演算によるフラグ制御を行い、フラグ制御された第1データおよび第1フラグを上記第1レジスタ部に供給し、フラグ制御された第2データおよび第2フラグを上記第2レジスタ部に供給する第1演算部と、
    上記第2レジスタ部の第2データレジスタに格納されたデータと上記第2フラグレジスタのフラグとの排他的論理和演算を行う第2演算部と、
    上記第2演算部の出力データに対してラウンド演算を行うラウンド演算部と、
    上記ラウンド演算部の出力と上記第1レジスタ部の上記第1データレジスタの格納値および上記第1フラグレジスタのフラグとの排他的論理和演算を行う第3および第4演算部と、
    上記第3および第4演算部の出力データで、所定ビットずつの新たなフラグ演算を行う第2フラグ演算部と、
    上記第3および第4演算部の出力データに対して上記第2フラグ演算部によるフラグとの排他的論理和演算によりフラグ制御を行い、フラグ制御されたデータおよびフラグを上記第2レジスタ部に出力する第5演算部と
    を有する暗号処理装置。
  2. 上記第1フラグ演算部および上記第2フラグ演算部のうちの少なくとも当該第2フラグ演算部は、
    所定ビット内で、“1”のビット数が半分より大きい場合はフラグをたてて、対応データを反転させる
    請求項1記載の暗号処理装置。
  3. 上記第1および第2フラグレジスタのフラグ配線を有し、
    所定ビット内で、ハミング重みが0,1,4の場合に追加したフラグを立て、上記フラグ配線を充電する
    請求項2記載の暗号処理装置。
  4. 上記第1フラグ演算部および上記第2フラグ演算部のうちの少なくとも当該第2フラグ演算部は、
    所定ビットのビットパターンに応じてフラグデータを生成し、当該フラグでデータを反転制御させる
    請求項1記載の暗号処理装置。
  5. 上記第3および第4演算部は、
    上記第3演算部が、上記ラウンド演算部の出力と上記第1レジスタ部の上記第1データレジスタの格納値との排他的論理和演算を行い、
    上記第4演算部が、上記第3演算部の出力と上記第1レジスタ部の上記第1フラグレジスタのフラグとの排他的論理和演算を行い、上記第2フラグ演算部および上記第5演算部に出力する
    請求項1から4のいずれか一に記載の暗号処理装置。
  6. 上記第3および第4演算部は、
    上記第4演算部が、上記ラウンド演算部の出力と上記第1レジスタ部の上記第1フラグレジスタのフラグとの排他的論理和演算を行い、
    上記第3演算部が、上記第4演算部の出力と上記第1レジスタ部の上記第1データレジスタの格納値との排他的論理和演算を行い、上記第2フラグ演算部および上記第5演算部に出力する
    請求項1から4のいずれか一に記載の暗号処理装置。
  7. 上記第1レジスタ部の出力を制御する第1制御部と、
    上記第2レジスタ部の出力を制御する第2制御部と、を含み、
    上記第1制御部は、
    上記第2制御部の出力タイミングに上記ラウンド演算部の遅延部を加味したタイミングで上記第1データレジスタおよび上記第1フラグレジスタの格納値を出力制御する
    請求項1から6のいずれか一に記載の暗号処理装置。
  8. ラウンドはプリチャージ相とエバリュエーション相により形成され、
    上記第1制御部および上記第2制御部は、
    プリチャージ相時には、上記第1レジスタ部および上記第2レジスタ部の負荷配線を所定電位に設定し、
    エバリュエーション相時に、上記第1レジスタ部および上記第2レジスタ部の格納値を出力する
    請求項7記載の暗号処理装置。
  9. 上記第1制御部は、
    第1制御信号との論理演算により上記第1レジスタ部の出力を制御し、
    上記第2制御部は、
    第2制御信号との論理演算により上記第2レジスタ部の出力を制御し、
    上記第1制御信号は、
    上記ラウンド演算部の出力のモニタ信号と上記第2制御信号の遅延信号との論理演算により生成される
    請求項7または8記載の暗号処理装置。
  10. 上記ラウンド演算部は、
    複数のサブSboxを含み、非線形変換処理を行うSboxを有し、
    上記所定ビットは、上記複数のサブSboxの出力信号の中で少なくも2つ以上のサブSboxが含まれるように選択される
    請求項1から9のいずれか一に記載の暗号処理装置。
  11. 上記ラウンド演算部は、
    上記第2レジスタ部の格納値データのビットを拡張する拡張部と、
    上記拡張部の拡張データと鍵との排他的論理演算を行い、当該演算結果を上記Sboxに供給する排他的論理演算部と、
    上記Sboxの非線形変換結果のビット位置の入れ替え処理を行う置換部と、を含む
    請求項10記載の暗号処理装置。
  12. 出力する演算結果と所定のフラグとの排他的論理和演算を行ってフラグを解除するフラグ解除部を有する
    請求項1から10のいずれか一に記載の暗号処理装置。
  13. 前記暗号処理装置は、DES(Data Encryption Standard)アルゴリズムまたはAES(Advanced Encryption Standard)に従った暗号処理演算を実行する
    請求項1から12のいずれか一に記載の暗号処理装置。
JP2009061537A 2009-03-13 2009-03-13 暗号処理装置 Expired - Fee Related JP5458611B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2009061537A JP5458611B2 (ja) 2009-03-13 2009-03-13 暗号処理装置
EP10250382A EP2228941B1 (en) 2009-03-13 2010-03-03 Encryption processing apparatus
US12/718,052 US8213603B2 (en) 2009-03-13 2010-03-05 Encryption processing apparatus
CN2010101290874A CN101834720B (zh) 2009-03-13 2010-03-08 加密处理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009061537A JP5458611B2 (ja) 2009-03-13 2009-03-13 暗号処理装置

Publications (2)

Publication Number Publication Date
JP2010219666A JP2010219666A (ja) 2010-09-30
JP5458611B2 true JP5458611B2 (ja) 2014-04-02

Family

ID=42174643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009061537A Expired - Fee Related JP5458611B2 (ja) 2009-03-13 2009-03-13 暗号処理装置

Country Status (4)

Country Link
US (1) US8213603B2 (ja)
EP (1) EP2228941B1 (ja)
JP (1) JP5458611B2 (ja)
CN (1) CN101834720B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170138934A (ko) * 2016-06-08 2017-12-18 (주)레드스톤소프트 로그 데이터 관리 디바이스 및 로그 관리 시스템

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646705B1 (ko) * 2009-12-01 2016-08-09 삼성전자주식회사 에스-박스를 구현한 암호화 장치
US9135834B2 (en) * 2013-04-30 2015-09-15 The United Sates of America as represented by the Secretary of the Air Force Apparatus and method to prevent side channel power attacks in advanced encryption standard using floating point operation
US9160523B2 (en) * 2013-04-30 2015-10-13 The United States Of America As Represented By The Secretary Of The Air Force Apparatus and method to prevent side channel power attacks in advanced encryption standard
CN103593627B (zh) * 2013-11-06 2016-08-17 中国科学院信息工程研究所 一种双层复合寄存器系统及抵抗能量分析攻击的方法
US20150222421A1 (en) * 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms
CN103916236B (zh) * 2014-04-25 2017-02-15 东南大学 面向aes算法的抗功耗攻击方法及电路实现
CN103905182B (zh) * 2014-04-25 2017-02-15 东南大学 基于动态改变中间数据存储位置的抗攻击方法及电路实现
KR102327076B1 (ko) * 2014-12-18 2021-11-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6400736B2 (ja) * 2015-01-16 2018-10-03 日本電信電話株式会社 漏洩防止装置、漏洩防止方法、およびプログラム
DE102015209123A1 (de) * 2015-05-19 2016-11-24 Robert Bosch Gmbh Recheneinrichtung und Betriebsverfahren hierfür
CN105897399B (zh) * 2016-06-14 2019-01-29 东南大学 一种基于寄存器掩码的面向des算法的抗功耗攻击方法
CN105897408B (zh) * 2016-06-14 2019-01-29 东南大学 一种基于随机延时的面向des算法的抗功耗攻击方法
CN108123792B (zh) * 2017-12-19 2021-05-18 武汉瑞纳捷电子技术有限公司 一种sm4算法电路的功耗加扰方法
US10878133B2 (en) * 2018-11-18 2020-12-29 Nuvoton Technology Corporation Mitigation of side-channel attacks using small-overhead random pre-charging
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
US12021969B2 (en) * 2019-04-02 2024-06-25 Cryptography Research, Inc. Functions with a pre-charge operation and an evaluation operation
US10826536B1 (en) * 2019-10-03 2020-11-03 International Business Machines Corporation Inter-chip data transmission system using single-ended transceivers

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6031911A (en) * 1996-07-18 2000-02-29 Entrust Technologies, Ltd. Practical S box design
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
US7162031B1 (en) * 1998-12-30 2007-01-09 Nokia Corporation Method and device for cryptographically processing data
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
JP3819872B2 (ja) 2003-05-23 2006-09-13 株式会社東芝 論理演算装置
JP2005031471A (ja) * 2003-07-07 2005-02-03 Sony Corp 暗号処理装置、および暗号処理方法
US7924057B2 (en) * 2004-02-13 2011-04-12 The Regents Of The University Of California Logic system for DPA resistance and/or side channel attack resistance
JP2006025366A (ja) * 2004-07-09 2006-01-26 Sony Corp 暗号化装置及び半導体集積回路
KR100855958B1 (ko) * 2004-11-24 2008-09-02 삼성전자주식회사 해밍거리를 이용한 부가 채널 공격에 안전한 암호화시스템 및 방법
AT502230A2 (de) * 2005-07-26 2007-02-15 Univ Graz Tech Verfahren und schaltung zur durchführung von rechenoperationen
JP5203594B2 (ja) * 2006-11-07 2013-06-05 株式会社東芝 暗号処理回路及び暗号処理方法
JP4851947B2 (ja) * 2007-01-29 2012-01-11 株式会社東芝 論理回路

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170138934A (ko) * 2016-06-08 2017-12-18 (주)레드스톤소프트 로그 데이터 관리 디바이스 및 로그 관리 시스템
KR101909500B1 (ko) * 2016-06-08 2018-10-18 (주)레드스톤소프트 로그 데이터 관리 디바이스 및 로그 관리 시스템

Also Published As

Publication number Publication date
US8213603B2 (en) 2012-07-03
CN101834720A (zh) 2010-09-15
CN101834720B (zh) 2012-12-12
EP2228941A1 (en) 2010-09-15
EP2228941B1 (en) 2012-12-05
US20100232602A1 (en) 2010-09-16
JP2010219666A (ja) 2010-09-30

Similar Documents

Publication Publication Date Title
JP5458611B2 (ja) 暗号処理装置
JP4687775B2 (ja) 暗号処理装置
US10567162B2 (en) Mask S-box, block ciphers algorithm device and corresponding construction process
JP4453697B2 (ja) 演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラム
Groß et al. Domain-oriented masking: Compact masked hardware implementations with arbitrary protection order
KR101680918B1 (ko) 특히 고차의 관측 공격에 대해 보호되는 암호화 회로
Karpovsky et al. Differential fault analysis attack resistant architectures for the advanced encryption standard
JP5198526B2 (ja) 暗号化装置および復号装置
US9325494B2 (en) Method for generating a bit vector
US20140351603A1 (en) Encryption process protected against side channel attacks
JP2008131108A (ja) 共通鍵暗号のための暗号化装置
Gross et al. First-order masking with only two random bits
CN103636159B (zh) 用于产生随机的输出位序列的方法
CN104301096A (zh) Aes轮运算方法和电路
CN108123792B (zh) 一种sm4算法电路的功耗加扰方法
JP4935229B2 (ja) 演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラム
Wei et al. A small first-order DPA resistant AES implementation with no fresh randomness
Wang et al. A new zero value attack combined fault sensitivity analysis on masked AES
JP2011002790A (ja) 暗号処理装置
JP4849140B2 (ja) データ変換装置、演算処理装置、および演算処理制御方法、並びにコンピュータ・プログラム
Resende et al. Mask Scrambling Against SCA on Reconfigurable TBOX-Based AES
Jahanbani et al. CPA on hardware implementation of COLM authenticated cipher and protect it with DOM masking scheme
Matsuoka et al. Reduction of power consumption in key-specific AES circuits
Benhadjyoussef et al. Power-based Side Channel Analysis and Fault Injection: Hacking Techniques and Combined Countermeasure
Menicocci et al. A logic level countermeasure against CPA side channel attacks on AES

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130723

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131230

LAPS Cancellation because of no payment of annual fees