JP5458611B2 - 暗号処理装置 - Google Patents
暗号処理装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details 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チップ3には、CPU7やメモリ8の他に、暗号回路9が配置され、受け取った信号を復号化して必要な情報を取り出して必要な処理を行い、その後、暗号化してホストコンピュータに送る。
DESでは、データの暗号化にはICカードの所有者とホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すことは困難である。
SboxS0〜S7からの出力ビット4×8=32ビットは、置換部(P)25−3に入力されて、ビット位置の入れ替え処理がなされ、F関数出力32ビットを生成して出力する。
そして、ラウンド(Round)の切り替えでレジスタの値が更新され、それに伴ってレジスタにつながる信号配線の充放電および演算回路での演算が行われる。
演算に際し、信号配線の充放電電流で最も厳しいのが、信号配線が全て(All)“0”から全て“1”に変化する場合で、アンテナから電力を取り出す電源部では、この場合でもマージンを持って電力を供給できる必要がある。
この攻撃は、低コストで攻撃の環境が構築でき、短時間で鍵の取出しが可能な攻撃方法で、セキュリティICではこの攻撃への対策が必須となる。
この攻撃に対する対策として、次の2つの方法が提案されている。
第1は、相補構成を採り、相補動作によりリーク電流の削減をする方法である。
第2は、データの乱数攪乱によりリーク電流も攪乱し、統計処理を困難にする方法である。
この技術では、1ビットのデータをハミング重み(Hamming Weight)の等しい2ビットの数値に展開する。演算によるデータの遷移は、エバリュエーション相(Evaluation Phase)とプリチャージ相(Pre Charge Phase)の2相を設けてある。
そして、一旦、“0”でも“1”でもない状態に遷移してから演算後のデータに遷移する制御を行うことによって、演算値の遷移に伴う変化電流を検出できないようにしている。
すなわち、遷移を以下のように表わせば、演算に基づく各ビットの遷移は演算結果によらず全ての遷移で1ビットのみ変化するため、変化電流からの鍵の取り出しは困難となる。
“0”→“1”の遷移:“01”→“00”→“10”
“1”→“0”の遷移:“10”→“00”→“01”
“1”→“1”の遷移:“10”→“00”→“10”
この技術では、Sboxの出力を乱数で攪乱することによって、鍵に起因する回路動作に伴う微小電流を攪乱し、消費電流の統計処理を困難にしている。
なお、説明は以下の順序で行う。
1.第1の実施形態(DES演算回路の第1の構成例)
2.第2の実施形態(DES演算回路の第2の構成例)
3.第3の実施形態(DES演算回路の第3の構成例)
4.第4の実施形態(DES演算回路の第4の構成例)
5.第5の実施形態(AES演算回路の構成例)
<1>演算結果の中間値の“1”のビット数(ハミング重み:Hamming Weight、HW)を小さくすることにより、信号バスの充放電電流を削減する。
<2>演算結果の中間値のHWをほぼ一定にすることにより、DPA耐性の向上を図る。
<3>演算結果の中間値を、その値に応じて攪乱することにより、DPA耐性の向上を図る。
暗号回路には、信号バスの所定ビット毎にフラグレジスタおよびフラグ配線が配置される。
所定ビットのデータが所定の値のときにフラグを立て、このフラグで所定ビットの反転制御を行う。
所定ビットの選択は、暗号回路に配置された複数のSub・Sboxの出力信号の中で、少なくとも2つ以上のSub・Sboxの出力が含まれるように行う。
所定ビット内で、“1”のビット数(HW)が半分より大きい場合はフラグを立て、対応データを反転する。
上記目的<1>に対してフラグレジスタおよびフラグ配線を追加し、その結果に加えてHWが半数に達していない場合およびHWが4の場合に追加したフラグを立て、そのフラグ配線を充電する。
換言すれば、ハミング重みが0,1,4の場合に追加したフラグを立てる。
所定ビットのビットパターンに応じてフラグデータを生成し、そのフラグFLGでデータを反転制御する。
なお、以下に説明する第1から第5の実施形態とも、1ラウンド(Round)の演算サイクルはプリチャージ相(Pre-Charge Phase:休止相)とエバリュエーション相(Evaluation Phase:稼動相)により構成される。
また、DES暗号は16ラウンド(Round)の演算で形成される。
図3は、本発明の第1の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
図4は、図3のDES演算回路の要部の具体的な構成例を示す回路図である。
そして、そのフラグでデータの反転制御を行う。これにより、所定ビット内で“1”のビット数が半分より多い場合にはデータは反転され、結果として所定ビット内の“1”のビット数は半分以下に制御される。
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演算は排他的論理和演算を意味する。
“/PC”はプリチャージ(Pre Charge)を制御する信号で、ロー(Low)レベルの時、レジスタの信号線(負荷配線)は全てローレベルとなり、ハイ(High)レベルの時、レジスタの格納値を信号線(負荷配線)を通し出力するように制御する信号である。
“/PCdly”は制御信号“/PC”の立ち上りだけをF関数部110の遅延時間分だけ遅らせた制御信号であり、制御の内容は制御信号“/PC”と同様である。
/PCdlyが第1制御信号に相当し、/PCが第2制御信号に相当する。
第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による左データLDTおよび右データRDTは32ビットである。
第1EXOR演算部103は、フラグFL0で制御された左データを、スイッチ104Lを介して第1レジスタ部105に供給する。また、このときフラグFL0のデータもスイッチ104Lを介して第1レジスタ部105に供給される。
第1EXOR演算部103は、フラグFR0で制御された右データを、スイッチ104Rを介して第2レジスタ部106に供給する。また、このときフラグFR0のデータもスイッチ104Rを介して第2レジスタ部106に供給される。
スイッチ104Rの作動接点aは第1EXOR演算部103の出力に接続され、作動接点bは第5EXOR演算部115の出力に接続され、固定接点cが第2レジスタ部106の入力に接続されている。
Lレジスタ1051は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Lを介して入力した、たとえば32ビットのデータをラッチ(格納)する。
フラグレジスタ1052は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Lを介して入力したフラグFL(0,n−1)をラッチ(格納)する。
Rレジスタ1061は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Rを介して入力した、たとえば32ビットのデータをラッチ(格納)する。
フラグレジスタ1062は、制御信号/PCの立ち下がりのタイミングで、スイッチ104Rを介して入力したフラグFR(0,n−1)をラッチ(格納)する。
第1プリチャージ制御部107は、論理演算を経たデータを第3EXOR演算部111の一方の入力に出力し、論理演算を経たフラグFLn-1を第4EXOR演算部115の一方の入力に供給する。
第1プリチャージ制御部107は、さらにデータ用負荷配線LDL00〜LDL031、およびフラグ用負荷配線LFL00〜LFL015を有する。
ANDゲートADL00〜ADL031は、演算結果をその出力に対応させて配線されたデータ用負荷配線LDL00〜LDL031に出力する。
フラグ用ANDゲートAFL00〜AFL015は、それぞれフラグレジスタ1052にラッチされた16のフラグFLn-1[0]〜FLn-1[15]と制御信号/PCdlyとの論理積をとる。
ANDゲートAFL00〜AFL015は、演算結果を各出力に対応させて配線されたフラグ用負荷配線LFL00〜LFL015に出力する。
すなわち、制御信号/PCdlyがローレベルのときは、第1レジスタ部105のLレジスタ1051およびフラグレジスタ1052の格納値は出力されない。
第1プリチャージ制御部107は、制御信号/PCdlyがハイレベルで供給されると、全ANDゲートADL00〜ADL031,AFL00〜AFL015で論理積演算が行われ、Lレジスタ1051およびフラグレジスタ1052の格納値を出力する。
第2プリチャージ制御部108は、論理演算を経たデータを第2EXOR演算部109の一方の入力に出力し、論理演算を経たフラグFRn-1を第2EXOR演算部109の他方の入力に供給する。
第2プリチャージ制御部108は、さらにデータ用負荷配線LDR00〜LDR031、およびフラグ用負荷配線LFR00〜LFR015を有する。
ANDゲートADR00〜ADR031は、演算結果をその出力に対応させて配線されたデータ用負荷配線LDR00〜LDR031に出力する。
フラグ用ANDゲートAFR00〜AFR015は、それぞれフラグレジスタ1062にラッチされた16のフラグFRn-1[0]〜FRn-1[15]と制御信号/PCとの論理積をとる。
ANDゲートAFR00〜AFR015は、演算結果を各出力に対応させて配線されたフラグ用負荷配線LFR00〜LFR015に出力する。
すなわち、制御信号/PCがローレベルのときは、第2レジスタ部106のRレジスタ1061およびフラグレジスタ1062の格納値は出力されない。
第2プリチャージ制御部108は、制御信号/PCがハイレベルで供給されると、全ANDゲートADR00〜ADR031,AFR00〜AFR015で論理積演算が行われ、Rレジスタ1061およびフラグレジスタ1062の格納値を出力する。
第2EXOR演算部109は、このデータとフラグ値のEXOR演算で一旦フラグを解除し、その結果データをF関数部110に出力する。
EXOR演算器EOR21の一方の入力がデータ用負荷配線LDR01に接続され、他方の入力がフラグ用負荷配線LFR00に接続されている。EXOR演算器EOR21は、ビットデータb1とフラグFRn-1[0]とのEXOR演算を行う。
EXOR演算器EOR23の一方の入力がデータ用負荷配線LDR03に接続され、他方の入力がフラグ用負荷配線LFR01に接続されている。EXOR演算器EOR23は、ビットデータb3とフラグFRn-1[1]とのEXOR演算を行う。
EXOR演算器EOR231の一方の入力がデータ用負荷配線LDR031に接続され、他方の入力がフラグ用負荷配線LFR15に接続されている。EXOR演算器EOR231は、ビットデータb31とフラグFRn-1[15]とのEXOR演算を行う。
EXOR演算器EOR60は、拡張部1101による拡張データEPD0と鍵データk0〜k5とのEXOR演算を行い、その結果をSboxS0に出力する。
EXOR演算器EOR61は、拡張部1101による拡張データEPD1と鍵データk6〜k11とのEXOR演算を行い、その結果をSboxS1に出力する。
EXOR演算器EOR62は、拡張部1101による拡張データEPD2と鍵データk12〜k17とのEXOR演算を行い、その結果をSboxS2に出力する。
同様にして、EXOR演算器EOR66は、拡張部1101による拡張データEPD6と鍵データk36〜k41とのEXOR演算を行い、その結果をSboxS6に出力する。
EXOR演算器EOR67は、拡張部1101による拡張データEPD7と鍵データk42〜k47とのEXOR演算を行い、その結果をSboxS7に出力する。
Sbox1103は、たとえば変換テーブルを適用した48ビットから32ビットへの非線形処理を実行する。
Sbox1103は、非線形処理を実行する複数(図4では8)のSボックス(Sbox)S0〜S7を有する。各SボックスS0〜S7では、変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
SボックスS0〜S7からの出力ビット4×8=32ビットは、P置換部1104に入力される。
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は、このデータとフラグ値のEXOR演算で一旦フラグを解除し、その結果データを中間値としてANDゲート部113に出力する。
EXOR演算器EOR41の一方の入力が第3EXOR演算部111のEXOR演算器EOR31の出力に接続され、他方の入力がフラグ用負荷配線LFL00に接続されている。EXOR演算器EOR41は、EXOR演算器EOR31の出力データとフラグFLn−1[0]とのEXOR演算を行う。
EXOR演算器EOR43の一方の入力が第3EXOR演算部111のEXOR演算器EOR33の出力に接続され、他方の入力がフラグ用負荷配線LFL01に接続されている。EXOR演算器EOR43は、EXOR演算器EOR33の出力データとフラグFLn-1[1]とのEXOR演算を行う。
EXOR演算器EOR431の一方の入力が第3EXOR演算部111のEXOR演算器EOR331の出力に接続され、他方の入力がフラグ用負荷配線LFL015に接続されている。EXOR演算器EOR431は、EXOR演算器EOR331の出力データとフラグFLn-1[15]とのEXOR演算を行う。
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で生成されるフラグFRn[0]〜FRn[15]は第2レジスタ部106のフラグレジスタ1062の更新値となる。
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の演算結果データb0´〜b31´が、第2レジスタ部106のRレジスタ1061の更新データとなる。
EXOR演算器EOR51の一方の入力がANDゲート部113のANDゲートAD01の出力に接続され、他方の入力がフラグFRn[0]の出力ラインに接続されている。EXOR演算器EOR51は、ANDゲートAD01を介したEXOR演算器EOR41の出力データとフラグFRn[0]とのEXOR演算を行う。
EXOR演算器EOR53の一方の入力がANDゲート部113のANDゲートAD03の出力に接続され、他方の入力がフラグFRn[1]の出力ラインに接続されている。EXOR演算器EOR53は、ANDゲートAD03を介したEXOR演算器EOR43の出力データとフラグFRn[1]とのEXOR演算を行う。
EXOR演算器EOR531の一方の入力がANDゲート部113のANDゲートAD031の出力に接続され、他方の入力がフラグFRn[15]の出力ラインに接続されている。EXOR演算器EOR531は、ANDゲートAD031を介したEXOR演算器EOR431の出力データとフラグFRn[15]とのEXOR演算を行う。
図5は、第1の実施形態に係るDES演算回路の動作を説明するためのタイミングチャートである。
図6は、第1の実施形態に係るDES演算回路における2ビットデータと制御データとの関係を示す図である。
そして、第1フラグ演算部102で各々のデータで所定ビットずつのフラグ演算が行われ、第1EXOR演算部103でフラグ制御を施されて、フラグデータと共に第1レジスタ部105および第2レジスタ部106に格納される。
この例の場合、第1フラグ演算部102において2ビット単位でフラグ演算される。
このとき、制御後のデータ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ビット以下になっている。
そして、制御信号としては、プリチャージ相でローレベル、エバリュエーション相でハイレベルとなる制御信号/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”となる。
そして、ラウンド鍵の生成回路からの出力“Kn”もこの期間は“0”レベルとなっているものとし、このときのF関数部110の出力も“0”レベルになっているものとする。
次のエバリュエーション相では、制御信号/PCはハイレベルとなって、ラウンド演算が実行される。
エバリュエーション相に移行したとき、制御信号/PCはハイレベルになり、Rレジスタ1061の格納値とフラグレジスタ1062のフラグ値は、F関数部110および第1レジスタ部105の入力に供給される。
F関数部110の入力手前で、Rレジスタ1061の格納値はフラグ値とEXOR演算されてフラグが解除され、通常の値“Rn-1”に戻されてF関数に入力されてF関数演算が実行され、F関数部110の演算時間経過後に演算結果がF関数出力に現われる。
そして、ほぼ同じタイミングで制御信号/PCdlyがハイレベルに遷移する。
そして、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本以下になっていない。
この信号と制御信号/PCdlyとの論理積(AND)演算結果であるANDゲート部113の出力も同様である。このため、信号配線の充放電電流を削減するためには、第3EXOR演算部111から第5EXOR演算部115までのパスの演算素子を近接して配置することが望ましい。
そのフラグ値で第5EXOR演算部115でデータが反転制御され、“1”のビット数が16本以下に制御されたデータが出力されて、Rレジスタ1061に供給される。
第2フラグ演算部114は、2ビット単位で制御する場合は、図4に示すように、AND回路であり、2ビットが共に“1”の場合のみ、フラグに“1”を立てて、データを共に“0”に反転させる。
それ以外のデータでは、フラグ値は“0”になるが、2ビットデータ中の“1”のビット数は、1ビット以下である。
これらにより、次のラウンドでのRレジスタの出力で、“1”のビット数はフラグも含めて16本以下に制御される。
そして、ラウンド演算終了後、最終データはフラグ値とEXOR演算され本来の値に戻され、IPの逆置換後に演算結果として出力される。
次に、本発明の第2の実施形態について説明する。
図7は、本発明の第2の実施形態に係る暗号処理装置としてのDES演算回路の構成例を示す図である。
図8は、図7のDES演算回路の要部の具体的な構成例を示す回路図である。
なお、図7および図8においては、理解を容易にするために、図3および図4と同一構成、機能部分は同一符号をもって表している。
すなわち、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の出力側に移動している。
このため、Lレジスタ1051側で信号配線の負荷が大きいのは、“HWが制御されている、Lレジスタの出力から最初のEXOR演算部までのパス”を想定し、その他のパスではデータのHWは制御されていない。
しかし、本実施形態においては、負荷配線の容量が小さくなるようにコンパクトにレイアウトされることを想定しているため、図3および図7のどちらの構成を採っても電流削減効果の差異は小さい。
ラウンド“n”でのレジスタへの格納値は、IP置換後または直前の演算でフラグ値が演算され、その結果に基づいて反転制御されていて、4ビット単位でHWが2ビット以下になるように制御されている。この制御方法は後述する。
図8に示すように、本第2の実施形態に係る第1プリチャージ制御部107Aにおいて、フラグ用のANDゲートとしては、8つのANDゲートAFL00〜AFL07を有している。
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演算器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演算器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演算を行う。
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ゲートAD05は、第4EXOR演算部112AのEXOR演算器EOR45の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD06は、第4EXOR演算部112AのEXOR演算器EOR46の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD07は、第4EXOR演算部112AのEXOR演算器EOR47の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD029は、第4EXOR演算部112AのEXOR演算器EOR429の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD030は、第4EXOR演算部112AのEXOR演算器EOR430の出力データと制御信号/PCdlyとの論理積をとる。
ANDゲートAD031は、第4EXOR演算部112AのEXOR演算器EOR431の出力データと制御信号/PCdlyとの論理積をとる。
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演算器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演算器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で生成されるフラグFRn[0]〜FRn[7]は第2レジスタ部106のフラグレジスタ1062の更新値となる。
第2フラグ演算部114Aは、8つのフラグ演算回路114A−0〜114A−7を有する。
なお、ここでは、各フラグ演算回路を符号200を用いて表す。
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の出力に接続されている。
このフラグ演算回路200は、4ビット入力中に3ビット以上の“1”があれば3入力NORゲートはハイレベルのフラグを出力し、このフラグ値でデータを反転させる。
図10(A)は制御前の入力データとハミング値の本来の値を示し、図10(B)が制御後のフラグ値とこれによって制御されたデータおよび制御後のデータのフラグ値も含めたハミング値の実際の値を示している。
制御前においては、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,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”となる。
この第5EXOR演算部115Aの演算結果データb0´〜b31´が、第2レジスタ部106のRレジスタ1061の更新データとなる。
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演算器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演算器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演算を行う。
図12は、本第2の実施形態に係る制御信号生成回路の構成例を示す回路図である。
図13は、図12の回路のタイミングチャートである。
図14は、EXOR−AND回路の回路図、回路記号、および真理値表を示す図である。
制御信号/PCおよび/PCdlyがローレベルの期間はレジスタの出力配線の信号は全て“0”に制御される。
制御信号/PCまたは/PCdlyがハイレベルに変化した時には、レジスタの格納データが出力配線に出力される。この場合、フラグ制御により“1”のビット数は4ビット単位で2ビット以下に制御され、結果的に“1”に遷移するビット数はバス幅の半分以下になっている。
第2レジスタ部106側では、制御信号/PCがローレベルの期間はその出力は全てローレベルに制御されている。
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に供給される。
この演算で、フラグ値“FLn-1”は解除され、演算結果“F(Rn-1,Kn) + Ln-1=Rn”が第2フラグ演算部114Aに入力される。
そして、フラグ演算部114Aによって各4ビットデータのフラグ値“FRn”が演算され、第5EXOR演算部115Aでラウンド演算結果“Rn”の各4ビットを反転制御し、次のラウンドのR側の格納データ“FRn + Rn”を生成する。
この回路の演算結果は、図10に示されるように、いずれのデータの場合もHWは2ビット以下に抑えられ、DESの場合、信号は32本であるが、HWは16ビット以下に抑えられ、最大の消費電力を抑えられる。
したがって、2つの入力がほぼ同時に遷移すれば、余分な信号の充放電電流の発生を抑えられる。
本実施形態では、EXOR演算部の入力データのタイミングを制御する制御信号/PCdlyを図12に示す回路で生成することにより、一時的なデータへの遷移を抑えることが可能となる。
また図13に、図12の回路のタイミングチャートを示す。
この制御信号生成回路300の遅延回路301で使われている遅延時間は、F関数の演算遅延時間より長く設定されている。
そして、制御信号/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演算部の出力の一時的なデータへの遷移を抑える。
これを抑えるため、図14(A)に示すようなEXOR−AND回路400に置き換えれば、第2EXOR演算部112AとANDゲート部113A間の遅延は無くなり、第3EXOR演算部111Aで遅延差による充電電流を抑えられる。
以上により、所定ビット単位でフラグ演算して、そのフラグ値に基づいてデータを反転制御する構成を採ることにより、レジスタの出力バスの変化ビットを半分以下に制御する構成が実現でき、信号バスの充放電による動作電流を低減する構成が実現できる。
次に、本発明の第3の実施形態について説明する。
本第3の実施形態においては、演算結果の中間値を、HWをほぼ一定にすることにより信号バスの充放電電流の定電流化という観点からDPA耐性を向上させる構成について詳述する。
図15は、本来のデータとフラグ制御後のデータの関係を示したものである。
たとえば、ビットデータ“b0”のデータの8個の“0”のデータは、7個が“0”のままで、1個だけが“1”に反転されている。
一方、8個の“1”のデータは、4個が“0”に反転され、4個が“1”のままである。“0”のデータに関しては、攪乱効果は十分ではないが、“1”に関しては十分な攪乱効果が得られている。
“0”と推定したグループのうち 1/8 は“1”に反転している。
“1”と推定したグループのうち、半分は“0”に反転している。
となり、未対策の構成に比べてDPA耐性は向上している。
すなわち、順番に4ビットずつ分けてフラグを計算して反転制御を行う場合、図16に示すように、たとえばSub・Sbox“S0”の4ビットは、P置換によって並べ替えられ、各々別々のグループでフラグ演算およびそれに基づく反転制御がなされる。
すなわち、“S0”の出力の4ビットは別々のフラグ演算結果によって独立に反転制御がなされていることになり、未対策の構成に比べてDPA耐性は向上している。
同様に、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)は制御前の入力データとハミング値の本来の値を示し、図18(B)が制御後のフラグ値とこれによって制御されたデータおよび制御後のデータのフラグ値も含めたハミング値の実際の値を示している。
制御前においては、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,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”となる。
出力信号“FLGn1”は、4ビット中1ビット以下の “1”の場合にハイレベルとなる信号、そして、出力信号“FLGn2”は、4ビットが全て“0”または全て“1”の場合にハイレベルとなる。
これらの制御信号と制御データの組合せでは、全てのデータに対してHWは2になる。
これらの制御信号は、レジスタおよびその負荷配線の充放電電流とデータとの相関を隠すために用いられるダミーのレジスタおよび負荷配線であり、制御信号“FLGn0”と同じだけの信号の引き回しおよびその値を格納するためのレジスタを配置する必要がある。
この構成は、信号バスの充放電電流の観点から見た場合、データに関わらず一定となる。
この効果を得るDPA対策として、相補構成があるが、相補構成の場合、各ビットで必ず1ビットの信号変化が生じ、信号線分の充電電流が流れるのに対して、本実施形態の場合はその半分である。しかもデータは、不十分なレベルではあるが反転制御もされている。
次に、本発明の第4の実施形態について説明する。
本第4の実施形態においては、演算結果の中間値を、その値に応じて攪乱することによりDPA耐性を向上させる構成について詳述する。
EXOR201は、第1入力端子がEXOR200の出力端子に接続され、第2入力端子がデータラインLD201に接続されている。
図20(A)は制御前の入力データとハミング値の本来の値を示し、図20(B)が制御後のフラグ値とこれによって制御されたデータおよび制御後のデータのフラグ値も含めたハミング値の実際の値を示している。
また、図21は、図20において、各ビットの“0”と“1”の制御の状態を示す図である。
制御前においては、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,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”とその制御後のデータ“b0’”が十分攪乱されている関係(“0”と“1”各々の半分が反転されている状態)になる。
ところが、この制御によってたとえば“b1’”が“b0”と相関が強くなれば、“b1’”のリークから鍵が取り出されてしまうおそれがある。
このため、制御単位でフラグ制御を行う全ての組み合わせに対して調べている。
その結果、どの組み合わせにおいても8個の“0”のうち4個は“0”のままだが4個は“1”に反転される。そして、8個の“1”のうち4個は“1”のままだが4個は“0”に反転され、データが“0”と“1”のどちらの場合でも50%の確率でデータの反転がなされる。
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”の他のビットも同様に、異なる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 以上の攻撃が必要となる。しかも、本実施形態では、乱数発生回路を用いること無くこの攪乱は実現される。
第1、第2、第3、および第4の実施形態においては、本発明をDESに適用した場合について述べてきた。
本第5の実施形態においては、この概念をAES(Advanced Encryption Standard)に適用した場合について説明する。
図24は、本第5の実施形態に係るAES演算回路の構成例を示す図である。
ここでは、AES−128の場合について説明する。
シフトロウ変換部152は、Shift_Row() 関数を実行し、サブバイト変換部151によるバイトデータをシフトする。
ミックスカラム変換部153は、Mix_Column() 関数を実行し、GF(28)での行列演算を実行する機能を有する。
そして、レジスタ156の出力が変化することによって Sub_Bytes() 関数および Shift_Row() 関数が実行され、ラウンド9までは Mix_Column() 関数が続けて実行されて、その演算結果がラウンド鍵とEXORされる。
ラウンド10ではMix_Column() 関数がスキップされてShift_Rows() 関数後の演算結果がラウンド鍵とEXORされてレジスタ156に取り込まれる。
以上がAES演算回路150の基本的な処理である。
AES演算回路150Aは、EXOR演算部162の出力側に(128+32)ビットレジスタ156Aが配置されている。
さらに、AES演算部150Aは、サブバイト変換部151の入力側および暗号文の出力側に、フラグ解除のためのEXOR演算部163,164が配置されている。
これにより、この間のバスの充放電電流を削減できる。また、DPA耐性を向上する構成に関しても、DESで説明してきたような方法を転用すれば、DPA耐性の向上は実現できる。
また、バスの充放電電流をデータに関係なく一定とし、DPA耐性を向上させることができる。この場合、信号バスの充放電電流は相補構成の半分に抑えることが可能となる。
また、乱数攪乱と同じ効果が実現され、DPA耐性が向上する。この場合、乱数発生回路は必要としない。
上述の処理は、たとえばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図25に示すICモジュール500は、これら様々な機器に採用することが可能である。
メモリ502は、CPU501が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)を含む。
また、メモリ502は、CPU501の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。
また、メモリ502は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
すなわち、暗号処理部503には、第1〜第4の実施形態に係るDES演算回路、および第5の実施形態に係るAES演算回路が適用される。
Claims (13)
- 第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演算部と
を有する暗号処理装置。 - 上記第1フラグ演算部および上記第2フラグ演算部のうちの少なくとも当該第2フラグ演算部は、
所定ビット内で、“1”のビット数が半分より大きい場合はフラグをたてて、対応データを反転させる
請求項1記載の暗号処理装置。 - 上記第1および第2フラグレジスタのフラグ配線を有し、
所定ビット内で、ハミング重みが0,1,4の場合に追加したフラグを立て、上記フラグ配線を充電する
請求項2記載の暗号処理装置。 - 上記第1フラグ演算部および上記第2フラグ演算部のうちの少なくとも当該第2フラグ演算部は、
所定ビットのビットパターンに応じてフラグデータを生成し、当該フラグでデータを反転制御させる
請求項1記載の暗号処理装置。 - 上記第3および第4演算部は、
上記第3演算部が、上記ラウンド演算部の出力と上記第1レジスタ部の上記第1データレジスタの格納値との排他的論理和演算を行い、
上記第4演算部が、上記第3演算部の出力と上記第1レジスタ部の上記第1フラグレジスタのフラグとの排他的論理和演算を行い、上記第2フラグ演算部および上記第5演算部に出力する
請求項1から4のいずれか一に記載の暗号処理装置。 - 上記第3および第4演算部は、
上記第4演算部が、上記ラウンド演算部の出力と上記第1レジスタ部の上記第1フラグレジスタのフラグとの排他的論理和演算を行い、
上記第3演算部が、上記第4演算部の出力と上記第1レジスタ部の上記第1データレジスタの格納値との排他的論理和演算を行い、上記第2フラグ演算部および上記第5演算部に出力する
請求項1から4のいずれか一に記載の暗号処理装置。 - 上記第1レジスタ部の出力を制御する第1制御部と、
上記第2レジスタ部の出力を制御する第2制御部と、を含み、
上記第1制御部は、
上記第2制御部の出力タイミングに上記ラウンド演算部の遅延部を加味したタイミングで上記第1データレジスタおよび上記第1フラグレジスタの格納値を出力制御する
請求項1から6のいずれか一に記載の暗号処理装置。 - 1ラウンドはプリチャージ相とエバリュエーション相により形成され、
上記第1制御部および上記第2制御部は、
プリチャージ相時には、上記第1レジスタ部および上記第2レジスタ部の負荷配線を所定電位に設定し、
エバリュエーション相時に、上記第1レジスタ部および上記第2レジスタ部の格納値を出力する
請求項7記載の暗号処理装置。 - 上記第1制御部は、
第1制御信号との論理演算により上記第1レジスタ部の出力を制御し、
上記第2制御部は、
第2制御信号との論理演算により上記第2レジスタ部の出力を制御し、
上記第1制御信号は、
上記ラウンド演算部の出力のモニタ信号と上記第2制御信号の遅延信号との論理演算により生成される
請求項7または8記載の暗号処理装置。 - 上記ラウンド演算部は、
複数のサブSboxを含み、非線形変換処理を行うSboxを有し、
上記所定ビットは、上記複数のサブSboxの出力信号の中で少なくも2つ以上のサブSboxが含まれるように選択される
請求項1から9のいずれか一に記載の暗号処理装置。 - 上記ラウンド演算部は、
上記第2レジスタ部の格納値データのビットを拡張する拡張部と、
上記拡張部の拡張データと鍵との排他的論理演算を行い、当該演算結果を上記Sboxに供給する排他的論理演算部と、
上記Sboxの非線形変換結果のビット位置の入れ替え処理を行う置換部と、を含む
請求項10記載の暗号処理装置。 - 出力する演算結果と所定のフラグとの排他的論理和演算を行ってフラグを解除するフラグ解除部を有する
請求項1から10のいずれか一に記載の暗号処理装置。 - 前記暗号処理装置は、DES(Data Encryption Standard)アルゴリズムまたはAES(Advanced Encryption Standard)に従った暗号処理演算を実行する
請求項1から12のいずれか一に記載の暗号処理装置。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170138934A (ko) * | 2016-06-08 | 2017-12-18 | (주)레드스톤소프트 | 로그 데이터 관리 디바이스 및 로그 관리 시스템 |
Families Citing this family (17)
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)
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 | 株式会社東芝 | 論理回路 |
-
2009
- 2009-03-13 JP JP2009061537A patent/JP5458611B2/ja not_active Expired - Fee Related
-
2010
- 2010-03-03 EP EP10250382A patent/EP2228941B1/en not_active Not-in-force
- 2010-03-05 US US12/718,052 patent/US8213603B2/en not_active Expired - Fee Related
- 2010-03-08 CN CN2010101290874A patent/CN101834720B/zh not_active Expired - Fee Related
Cited By (2)
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 |