IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサスエレクトロニクス株式会社の特許一覧

<>
  • 特開-半導体装置 図1
  • 特開-半導体装置 図2
  • 特開-半導体装置 図3
  • 特開-半導体装置 図4
  • 特開-半導体装置 図5
  • 特開-半導体装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023073928
(43)【公開日】2023-05-26
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 21/55 20130101AFI20230519BHJP
   H04L 9/06 20060101ALI20230519BHJP
【FI】
G06F21/55 380
H04L9/06 Z
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021186709
(22)【出願日】2021-11-16
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール弁理士法人
(72)【発明者】
【氏名】森山 大輔
(57)【要約】
【課題】フォルトインジェクションによりラウンド数を下回る挙動を低減することが可能な技術を提供することである。
【解決手段】半導体装置は、暗号処理に関する演算を所定ラウンド数繰り返す演算回路と、演算回路の演算のラウンド数に関するデータを保持する保持回路と、ラウンド数が所定ラウンド数かどうかを判定する判定回路と、ラウンド数が所定ラウンド数であると判定回路が判定したとき、演算回路の演算結果データを出力する出力バッファ回路と、を備える。保持回路を二重化し、二重化された保持回路の二つの出力が一致しないとき、演算結果データを出力しないよう構成される。
【選択図】図2
【特許請求の範囲】
【請求項1】
暗号処理に関する演算を所定ラウンド数繰り返す演算回路と、
前記演算回路の演算のラウンド数に関するデータを保持する保持回路と、
前記ラウンド数が前記所定ラウンド数かどうかを判定する判定回路と、
前記ラウンド数が前記所定ラウンド数であると前記判定回路が判定したとき、前記演算回路の演算結果データを出力する出力バッファ回路と、
を備え、
前記保持回路を二重化し、
二重化された前記保持回路の二つの出力が一致しないとき、前記演算結果データを出力しないよう構成される半導体装置。
【請求項2】
請求項1の半導体装置において、
さらに、前記判定回路を二重化し、
二重化された前記判定回路の二つの出力が一致しないとき、前記演算結果データを出力しないよう構成される半導体装置。
【請求項3】
請求項2の半導体装置において、
さらに、前記出力バッファ回路を二重化し、
二重化された前記出力バッファ回路の二つの出力が一致しないとき、前記演算結果データを出力しないよう構成される半導体装置。
【請求項4】
請求項2の半導体装置において、
前記出力バッファ回路は、第一のイネーブル入力端子と第二のイネーブル入力端子とを有するフリップフロップ回路で構成され、
二重化された前記判定回路の一つの出力は前記第一のイネーブル入力端子に入力され、二重化された前記判定回路のもう一つの出力は前記第二のイネーブル入力端子に入力され、
前記出力バッファ回路は、前記第一のイネーブル入力端子および前記第一のイネーブル入力端子のイネーブル条件が成立したとき、前記演算結果データを取り込むよう構成される半導体装置。
【請求項5】
請求項1から4の何れか1項の半導体装置において、
前記保持回路はインクリメント回路またはデクリメント回路を有する半導体装置。
【請求項6】
請求項1の半導体装置において、
二重化された前記保持回路の二つの出力を比較する比較回路を備える半導体装置。
【請求項7】
請求項2の半導体装置において、
二重化された前記判定回路の二つの出力を比較する比較回路を備える半導体装置。
【請求項8】
請求項3の半導体装置において、
二重化された前記出力バッファ回路の二つの出力を比較する比較回路を備える半導体装置。
【請求項9】
請求項1の半導体装置において、
さらに、前記演算回路の中間演算結果を保持する中間値保持回路を備え、
前記中間値保持回路は前記演算結果データを出力するよう構成される半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は半導体装置に関し、例えば、暗号処理回路を備える半導体装置に適用可能である。
【背景技術】
【0002】
暗号アルゴリズムには、例えば、AES(Advanced Encryption Standard)がある。AESは、鍵長やブロック長が可変の共通鍵方式のブロック暗号である。パラメーターとしては、鍵長は3種類あり、128ビット、192ビット、256ビットのいずれかで、ブロック長は1種類、128ビットのみである。そのため、鍵長によって「AES-128」、「AES-192」、「AES-256」という3種類の表記がある。
【0003】
暗号アルゴリズムに規定されている処理において、既定のループ数を下回っている場合にどの程度安全性が低下するかは、広く研究が行われている。例えば、最新の研究成果では、以下の報告が行われている。AES-128においては、通常のループ数は11ラウンドであるが、これが5ラウンドに削減されたならば、222程度の計算量で鍵復元攻撃が可能である。また、SHA-256(Secure Hash Algorithm 256-bits)においては、通常のループ数は64ラウンドであるが、これが31ラウンドに削減されたならば、265.5程度の計算量で衝突が発見される。研究レベルではどのようなことが起きた場合に規定のループ数(ラウンド数)を下回る動作になるかについては議論の対象とされていない。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2016-58777号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載されるように、レーザ等によるフォルトインジェクション(Fault Injection)を行う装置を利用することで、特定のビットを反転するなどの攻撃を行うことができる。したがって、暗号アルゴリズムの仕様をそのまま実装すると、フォルトインジェクション攻撃によりラウンド数を下回る挙動が実現されてしまう。
【0006】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
本開示のうち代表的なものの概要を簡単に説明すれば次の通りである。すなわち、半導体装置は、暗号処理に関する演算を所定ラウンド数繰り返す演算回路と、演算回路の演算のラウンド数に関するデータを保持する保持回路と、ラウンド数が所定ラウンド数かどうかを判定する判定回路と、ラウンド数が所定ラウンド数であると判定回路が判定したとき、演算回路の演算結果データを出力する出力バッファ回路と、を備える。保持回路を二重化し、二重化された保持回路の二つの出力が一致しないとき、演算結果データを出力しないよう構成される。
【発明の効果】
【0008】
上記半導体装置によれば、フォルトインジェクション攻撃によりラウンド数を下回る挙動を低減することができる。
【図面の簡単な説明】
【0009】
図1図1は比較例における暗号IPコアの構成を示すブロック図である。
図2図2は第一実施例における暗号IPコアの構成を示すブロック図である。
図3図3は第二実施例における暗号IPコアの構成を示すブロック図である。
図4図4は第三実施例における暗号IPコアの構成を示すブロック図である。
図5図5は第四実施例における暗号IPコアの構成を示すブロック図である。
図6図6は第五実施例における暗号IPコアの構成を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、比較例および実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【0011】
まず、本実施形態をより明確にするため、暗号化処理の流れの概要についてAESを例に説明する。暗号化は下記の処理から構成される。
【0012】
(a)入力データの分割し、分割されたデータの置き換え(サブバイト(SubBytes))
(b)データ位置のバイト単位での入れ替え(シフトロウズ(ShiftRows)
(c)演算処理(ミックスコラムス(MixColumns))によるデータ変換
(d)演算処理(アッドラウンドキー(AddRoundKey))
【0013】
上記(a)~(d)の処理を1ラウンドとして、鍵長に応じた所定ラウンド数を繰り返して暗号化が行われる。復号は上記(a)~(d)の処理の逆変換を逆順序で行われる。
【0014】
次に、上述の暗号化処理を実現する暗号IPコア(Intellectual Property Core)の構成について図1を用いて説明する。図1は比較例における暗号IPコアの構成を示すブロック図である。
【0015】
暗号IPコア10はマイクロコントローラ等の半導体装置に内蔵される。暗号IPコア10は第一のフリップフロップ11と、第二のフリップフロップ12と、第三のフリップフロップ13と、ラウンド関数回路(RNF)14と、判定回路(JDG)15と、を備える。
【0016】
第一のフリップフロップ11は第一のデータ入力端子(D1)11aと第二のデータ入力端子(D2)11bと第一のイネーブル入力端子(EN1)11cと第二のイネーブル入力端子(EN2)11dとクロック入力端子(CK)11eとデータ出力端子(DO)11fとを有する。第一のデータ入力端子(D1)11aにはラウンド関数回路14の出力データ(Dr)が入力される。第二のデータ入力端子(D2)11bには初期データ(Di)が入力される。第一のイネーブル入力端子(EN1)11cには演算中を示す信号(S1)が入力される。第二のイネーブル入力端子(EN2)11dには演算開始を示す信号(S0)が入力される。クロック入力端子(CK)11eにはクロック信号(CLK)が入力される。
【0017】
第一のフリップフロップ11は、クロック信号(CLK)の立上りまたは立下りにおいて、演算中を示す信号(S1)が活性化されている(例えば、ハイレベルである)とき、第一のデータ入力端子(D1)11aからラウンド関数回路14の出力データを取り込む。また、第一のフリップフロップ11は、クロック信号(CLK)の立上りまたは立下りにおいて、演算開始を示す信号(S0)が活性化されている(例えば、ハイレベルである)とき、第二のデータ入力端子(D2)11bから初期データ(Di)を取り込む。第一のフリップフロップ11は、暗号化処理の中間データまたは最終データを保持し、データ出力端子(DO)11fから中間データまたは最終データを出力データ(Dm)として出力する。
【0018】
第二のフリップフロップ12はインクリメントイネーブル入力端子(+1)12aとクロック入力端子(CK)12bとデータ出力端子(DO)12cとを有する。インクリメントイネーブル入力端子(+1)12aには演算開始を示す信号(S0)と演算中を示す信号(S1)とが論理和された入力信号(S01)が入力される。クロック入力端子(CK)12bにはクロック信号(CLK)が入力される。
【0019】
第二のフリップフロップ12は、クロック信号(CLK)の立上りまたは立下りにおいて、入力信号(S01)を取り込む。入力信号(S01)が活性化されている(例えば、ハイレベルである)とき、インクリメントする。第二のフリップフロップ12は、ラウンド数を保持し、データ出力端子(DO)12cからラウンド数(RN)を出力する。
【0020】
第三のフリップフロップ13はデータ入力端子(D)13aとイネーブル入力端子(EN)13bとクロック入力端子(CK)13cとデータ出力端子(DO)13dとを有する。データ入力端子(D)13aには第一のフリップフロップ11の出力データ(Dm)が入力される。イネーブル入力端子(EN)13bには判定回路15の出力信号である演算終了信号(S3)が入力される。クロック入力端子(CK)13cにはクロック信号(CLK)が入力される。
【0021】
第三のフリップフロップ13は、クロック信号(CLK)の立上りまたは立下りにおいて、演算終了信号(S3)が活性化されている(例えば、ハイレベルである)とき、データ入力端子(D)13aから第一のフリップフロップ11の出力データ(Dm)を取り込む。第三のフリップフロップ13は、出力バッファを構成し、データ出力端子(DO)13dからデータ(Dout)を出力する。
【0022】
ラウンド関数回路14は初期データ(Di)および中間データとしての出力データ(Dm)に対して上記(a)~(d)の処理を行う演算回路である。
【0023】
判定回路15は鍵長に対応したラウンド数の最大値(RNmax)が格納される回路15aと比較回路15bとを備え、ラウンド数が所定値(最大値)に達したかどうかを判定する回路である。判定回路15は、ラウンド数が所定値に達した場合、演算終了信号(S3)を活性化する。
【0024】
第二のフリップフロップ12にフォルトインジェクション攻撃が実行されると、例えば、4ビットの二進数のデータにおいて下記の異常動作ように最上位ビット(最も左側のビット)にビット反転が発生し得る。
【0025】
正常動作:0000→0001→0010→0011
異常動作:0000→0001→1010→1011
【0026】
そうなると、8ラウンド分処理が短い出力が観測され、ラウンド削減(Reduced Round)攻撃が可能になる。
【0027】
そこで、本実施形態では、比較例における暗号IPコアのうち下記(A)の回路、下記(A)および下記(B)の回路、または下記(A)から下記(C)の回路を二重化する。すなわち、本実施形態における暗号IPコアは全ての回路を二重化するものではない。
【0028】
(A)ラウンド数を管理する回路(第二のフリップフロップ12)
(B)仕様に規定されているラウンド数が演算されたかを比較する回路(判定回路15)
(C)出力バッファを構成する回路(第三のフリップフロップ)
【0029】
本実施形態では、暗号IPコアの一部の回路を二重化するので、面積増加は1~2%程度であるが、フォルトインジェクション攻撃によるセキュリティリスクを低減することができる。そのため、面積増加に伴うコストをほとんど増やすことなく、サイドチャネル対策の1つを防ぐことができるセキュリティの高い暗号IPコアを提供することができる。
【実施例0030】
第一実施例における暗号IPコアについて図2を用いて説明する。図2は第一実施例における暗号IPコアの構成を示すブロック図である。
【0031】
第一実施例における暗号IPコア10は、上記(A)の回路である第二のフリップフロップ12を二重化する構成である。第一実施例における暗号IPコア10は、比較例における暗号IPコアに対して、さらに、もう一つの第二のフリップフロップ12と、比較回路(CMP)16と、を備える。比較回路16は、二つの第二のフリップフロップ12の出力を比較し、二つの出力が一致する場合は、第二のフリップフロップ12の出力(RN)を判定回路15に出力する。二つの出力が一致しない場合、比較回路16は、判定回路15が演算終了信号(S3)を活性化しないようにする。
【0032】
フォルトインジェクション攻撃により第二のフリップフロップ12の出力が変化した場合、二つの第二のフリップフロップ12の出力は一致しない可能性が高くなる。二つの出力が一致しないことを検出することにより、第三のフリップフロップ13から演算結果が出力させれず、ラウンド削減を抑制し得る。
【実施例0033】
第二実施例における暗号IPコアについて図3を用いて説明する。図3は第二実施例における暗号IPコアの構成を示すブロック図である。
【0034】
第二実施例における暗号IPコア10は、上記(A)の回路である第二のフリップフロップ12と上記(B)の回路である判定回路15を二重化する構成である。第二実施例における暗号コアIP10は、比較例における暗号IPコアに対して、さらに、もう一つの第二のフリップフロップ12と、もう一つの判定回路15と、比較回路(CMP)26と、を備える。比較回路26は、二つの判定回路15の出力を比較し、二つの出力が一致する場合は、判定回路15の出力である演算終了信号(S3)を第三のフリップフロップ13に出力する。二つの出力が一致しない場合、比較回路26は、演算終了信号(S3)を不活性化して出力する。
【0035】
フォルトインジェクション攻撃により第二のフリップフロップ12または判定回路15の出力が変化した場合、二つの判定回路15の出力は一致しない可能性がより高くなる。二つの出力が一致しないことを検出することにより、第三のフリップフロップ13から演算結果が出力させれず、ラウンド削減を抑制し得る。
【実施例0036】
第三実施例における暗号IPコアについて図4を用いて説明する。図4は第三実施例における暗号IPコアの構成を示すブロック図である。
【0037】
第三実施例における暗号IPコア10は、上記(A)の回路である第二のフリップフロップ12と上記(B)の回路である判定回路15と上記(C)の回路である第三のフリップフロップ13を二重化する構成である。第三実施例における暗号コアIP10は、比較例における暗号IPコアに対して、さらに、もう一つの第二のフリップフロップ12と、もう一つの判定回路15と、もう一つの第三のフリップフロップ13と、比較回路(CMP)36と、を備える。比較回路36は、二つの第三のフリップフロップ13の出力を比較し、二つの出力が一致する場合は、第三のフリップフロップ13の出力であるデータ(Dout)を出力する。二つの出力が一致しない場合、比較回路36は、データ(Dout)の出力を止める。
【0038】
フォルトインジェクション攻撃により第二のフリップフロップ12または判定回路15または第三のフリップフロップ13の出力が変化した場合、二つの第三のフリップフロップ13の出力は一致しない可能性がより高くなる。二つの出力が一致しないことを検出することにより、第三のフリップフロップ13から演算結果が出力させれず、ラウンド削減を抑制し得る。
【実施例0039】
第四実施例における暗号IPコアについて図5を用いて説明する。図5は第四実施例における暗号IPコアの構成を示すブロック図である。
【0040】
第四実施例における暗号IPコア10は、第二実施例と同様に、上記(A)と上記(B)の回路を二重化する構成である。ただし、第四実施例における暗号コアIP10は、第二実施例における暗号IPコアの第二のフリップフロップ12を第二のフリップフロップ22に代え、判定回路15を判定回路25に代え、比較回路26を削除し、第三のフリップフロップ13を第三のフリップフロップ23に代えるものである。
【0041】
第二のフリップフロップ12はデクリメントイネーブル入力端子(-1)22aとクロック入力端子(CK)22bとデータ出力端子(DO)22cとデータ入力端子(D)22dを有する。デクリメントイネーブル入力端子(-1)22aには演算開始を示す信号(S0)と演算中を示す信号(S1)とが論理和された入力信号(S01)が入力される。クロック入力端子(CK)22bにはクロック信号(CLK)が入力される。データ入力端子(D)22dには初期値(RNi)が入力される。ここで、初期値(RNi)は鍵長に対応したラウンド数の最大値(RNmax)である。
【0042】
第二のフリップフロップ22は、クロック信号(CLK)の立上りまたは立下りにおいて、入力信号(S01)が非活性化されている(例えば、ローレベルである)とき、データ入力端子(D)22dから初期値(RNi)を取り込む。また、第二のフリップフロップ22は、クロック信号(CLK)の立上りまたは立下りにおいて、入力信号(S01)を取り込む。入力信号(S01)が活性化されている(例えば、ハイレベルである)とき、デクリメントする。第二のフリップフロップ22は、ラウンド数に関する値(RM=RNmax-RN)を保持し、データ出力端子(DO)22cからラウンド数に関する値(RM)を出力する。
【0043】
第三のフリップフロップ23はデータ入力端子(D)23aと第一のイネーブル入力端子(EN1)23bと第二のイネーブル入力端子(EN2)23eとクロック入力端子(CK)23cとデータ出力端子(DO)23dとを有する。データ入力端子(D)23aには第一のフリップフロップ11の出力データ(Dm)が入力される。第一のイネーブル入力端子(EN1)23bには一つの判定回路25の出力信号である演算終了信号(S3)が入力される。第二のイネーブル入力端子(EN2)23eにはもう一つの判定回路25の出力信号である演算終了信号(S3)が入力される。クロック入力端子(CK)13cにはクロック信号(CLK)が入力される。
【0044】
第三のフリップフロップ23は、クロック信号(CLK)の立上りまたは立下りにおいて、二つの演算終了信号(S3)の両方が活性化されている(例えば、ハイレベルである)とき、データ入力端子(D)23aから第一のフリップフロップ11の出力データ(Dm)を取り込む。第三のフリップフロップ13は、出力バッファを構成し、データ出力端子(DO)23dからデータ(Dout)を出力する。
【0045】
判定回路25は第二のフリップフロップ22の出力(RM)と「0」とを比較する比較回路を備え、ラウンド数が所定値(最大値)に達したかどうかを判定する回路である。判定回路25は、ラウンド数が所定値に達した場合、演算終了信号(S3)を活性化する。
【0046】
第三のフリップフロップ23は、二つの判定回路15の出力である演算終了信号(S3)が一致する場合は、演算結果(Dm)を取り込む。二つの演算終了信号(S3)が一致しない場合、第三のフリップフロップ23は、演算結果(Dm)を取り込まない。これにより、第二実施例における比較回路26は不要になる。
【0047】
フォルトインジェクション攻撃により第二のフリップフロップ22または判定回路25の出力が変化した場合、二つの判定回路25の出力は一致しない可能性がより高くなる。二つの出力が一致しないことを検出することにより、第三のフリップフロップ13から演算結果が出力させれず、ラウンド削減を抑制し得る。
【実施例0048】
第五実施例における暗号IPコアについて図6を用いて説明する。図6は第五実施例における暗号IPコアの構成を示すブロック図である。
【0049】
第五実施例における暗号IPコア10は、第三実施例と同様に、上記(A)と上記(B)と上記(C)の回路を二重化する構成である。ただし、第五実施例における暗号コアIP10は、第三実施例における暗号IPコアの第二のフリップフロップ12を第四実施例の第二のフリップフロップ22に代え、判定回路15を第四実施例の判定回路25に代えるものである。
【0050】
フォルトインジェクション攻撃により第二のフリップフロップ22または判定回路25または第三のフリップフロップ13の出力が変化した場合、二つの第三のフリップフロップ13の出力は一致しない可能性がより高くなる。二つの出力が一致しないことを検出することにより、第三のフリップフロップ13から演算結果が出力させれず、ラウンド削減を抑制し得る。
【0051】
なお、第一実施例における暗号IPコア10において、第二のフリップフロップ12を第四実施例の第二のフリップフロップ22に代える構成の暗号IPコアであってもよい。また、第二実施例における暗号IPコア10において、第二のフリップフロップ12を第四実施例の第二のフリップフロップ22に代え、判定回路15を第四実施例の判定回路25に代える構成の暗号IPコアであってもよい。また、第三実施例における暗号IPコア10において、第二のフリップフロップ12を第四実施例の第二のフリップフロップ22に代え、判定回路15を第四実施例の判定回路25に代える構成の暗号IPコアであってもよい。また、第四実施例における暗号IPコア10において、第二のフリップフロップ22を第二実施例の第二のフリップフロップ12に代え、判定回路25を第二実施例の判定回路15に代える構成の暗号IPコアであってもよい。
【0052】
以上、本開示者によってなされた開示を実施形態および実施例に基づき具体的に説明したが、本開示は上記実施形態および実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0053】
例えば、実施形態および実施例ではAESを例に説明したが、所定ループ繰り返す演算を行う暗号アルゴリズム、例えば、SHAにも適用できる。
【符号の説明】
【0054】
12 第二のフリップフロップ(保持回路)
13 第三のフリップフロップ(出力バッファ回路)
14 ラウンド関数回路(演算回路)
15 判定回路
図1
図2
図3
図4
図5
図6