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

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

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

<>
  • 特許-半導体装置及びクロック制御方法 図1
  • 特許-半導体装置及びクロック制御方法 図2
  • 特許-半導体装置及びクロック制御方法 図3
  • 特許-半導体装置及びクロック制御方法 図4
  • 特許-半導体装置及びクロック制御方法 図5
  • 特許-半導体装置及びクロック制御方法 図6
  • 特許-半導体装置及びクロック制御方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-21
(45)【発行日】2025-03-31
(54)【発明の名称】半導体装置及びクロック制御方法
(51)【国際特許分類】
   H04L 9/10 20060101AFI20250324BHJP
   G06F 21/55 20130101ALI20250324BHJP
【FI】
H04L9/10 A
G06F21/55 380
【請求項の数】 12
(21)【出願番号】P 2021192640
(22)【出願日】2021-11-29
(65)【公開番号】P2023079262
(43)【公開日】2023-06-08
【審査請求日】2024-05-01
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】皆木 敬浩
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2011-221711(JP,A)
【文献】特開2004-302575(JP,A)
【文献】特表2003-527790(JP,A)
【文献】特開2005-045752(JP,A)
【文献】米国特許出願公開第2019/0213330(US,A1)
【文献】米国特許出願公開第2005/0232430(US,A1)
【文献】特開2020-058034(JP,A)
【文献】特開2002-314534(JP,A)
【文献】米国特許出願公開第2011/0285420(US,A1)
【文献】米国特許出願公開第2011/0299678(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
基準クロックに応じてインクリメントされたカウント値を出力するカウンタ部と、
前記カウント値に応じて第1乱数値を生成する第1乱数生成部と、
前記カウント値に応じて第2乱数値を生成する第2乱数生成部と、
複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第1ビットマップ情報を出力する第1ビットマップ部と、
前記基準クロックから前記カウント値と前記第1ビットマップ情報の組合せに応じてクロックを間引いて第1間欠クロックを出力する第1クロック制御部と、
複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第2ビットマップ情報を出力する第2ビットマップ部と、
前記基準クロックから前記カウント値と前記第2ビットマップ情報の組合せに応じてクロックを間引いて第2間欠クロックを出力する第2クロック制御部と、を有する半導体装置。
【請求項2】
前記第1クロック制御部は、第1セレクタと第1クロック出力部を有しており、
前記第1セレクタは、前記第1ビットマップ情報から前記カウント値で示されるビット位置の値を選択して第1クロックイネーブル信号を出力し、
前記第1クロック出力部は、前記第1クロックイネーブル信号に応じて前記第1間欠クロックを出力する、請求項1に記載の半導体装置。
【請求項3】
前記第2クロック制御部は、第2セレクタと第2クロック出力部を有しており、
前記第2セレクタは、前記第2ビットマップ情報から前記カウント値で示されるビット位置の値を選択して第2クロックイネーブル信号を出力し、
前記第2クロック出力部は、前記第2クロックイネーブル信号に応じて前記第2間欠クロックを出力する、請求項1に記載の半導体装置。
【請求項4】
前記複数のビットマップは、基本の発振情報を示す第1ビットマップと、発振情報を前記第1乱数値に置き換えるか否かを示す第2ビットマップと、発振情報を前記第2乱数値に置き換えるか否かを示す第3ビットマップと、発振情報を反転するか否かを示す第4ビットマップを含み、
前記第1ビットマップ部及び前記第2ビットマップ部は、前記第1ビットマップと前記第2ビットマップと前記第3ビットマップと前記第4ビットマップの組合せにより、それぞれ前記第1ビットマップ情報と前記第2ビットマップ情報を出力する、請求項1に記載の半導体装置。
【請求項5】
前記第1ビットマップ部および前記第2ビットマップ部は、
前記第2ビットマップにより前記第1ビットマップと前記第1乱数値のうちいずれかを選択し第1発振情報とし、さらに前記第3ビットマップにより前記第1発振情報と前記第2乱数値のうちいずれかを選択し第2発振情報とし、さらに前記第4ビットマップにより前記第2発振情報をそのままもしくは反転させ、前記第1ビットマップ情報と前記第2ビットマップ情報として出力する、請求項4に記載の半導体装置。
【請求項6】
さらに、前記複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第3ビットマップ情報を出力する第3ビットマップ部と、
前記基準クロックから前記カウント値と前記第3ビットマップ情報の組合せに応じてクロックを間引いて第3間欠クロックを出力する第3クロック制御部を有する、請求項1に記載の半導体装置。
【請求項7】
前記第3ビットマップ情報は前記第1乱数値である、請求項6に記載の半導体装置。
【請求項8】
前記第1ビットマップ情報は前記第2乱数値であり、前記第2ビットマップ情報は前記第2乱数値の反転値である、請求項7に記載の半導体装置。
【請求項9】
前記第1乱数生成部と前記第2乱数生成部とは互いに異なるアルゴリズムで前記第1乱数値と前記第2乱数値を生成する、請求項1に記載の半導体装置。
【請求項10】
前記第1ビットマップ、前記第2ビットマップ、前記第3ビットマップ、前記第4ビットマップは、プロセッサにより定期的に変更される、請求項4に記載の半導体装置。
【請求項11】
半導体装置におけるクロック制御方法であって、
カウンタ部が基準クロックに応じてインクリメントされたカウント値を出力するステップと、
第1乱数生成部が前記カウント値に応じて第1乱数値を生成するステップと、
第2乱数生成部が前記カウント値に応じて第2乱数値を生成するステップと、
第1ビットマップ部が複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第1ビットマップ情報を出力するステップと、
第1クロック制御部が前記基準クロックから前記カウント値と前記第1ビットマップ情報の組合せに応じてクロックを間引いて第1間欠クロックを出力するステップと、
第2ビットマップ部が複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第2ビットマップ情報を出力するステップと、
第2クロック制御部が前記基準クロックから前記カウント値と前記第2ビットマップ情報の組合せに応じてクロックを間引いて第2間欠クロックを出力するステップと、を有するクロック制御方法。
【請求項12】
半導体装置におけるクロック制御方法であって、
カウンタ部が基準クロックに応じてインクリメントされたカウント値を出力するステップと、
第1乱数生成部が前記カウント値に応じて第1乱数値を生成するステップと、
第2乱数生成部が前記カウント値に応じて第2乱数値を生成するステップと、
第1ビットマップ部が複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第1ビットマップ情報を出力するステップと、
第1クロック制御部が前記基準クロックから前記カウント値と前記第1ビットマップ情報の組合せに応じてクロックを間引いて第1間欠クロックを出力するステップと、
第2ビットマップ部が複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第2ビットマップ情報を出力するステップと、
第2クロック制御部が前記基準クロックから前記カウント値と前記第2ビットマップ情報の組合せに応じてクロックを間引いて第2間欠クロックを出力するステップと、
第3ビットマップ部が前記複数のビットマップと前記第1乱数値と前記第2乱数値に応じて第3ビットマップ情報を出力するステップと、
第3クロック制御部が前記基準クロックから前記カウント値と前記第3ビットマップ情報の組合せに応じてクロックを間引いて第3間欠クロックを出力するステップを有する、クロック制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サイドチャネル攻撃の耐性を有する半導体装置及びサイドチャネル攻撃を回避するためのクロック制御方法に関する。
【背景技術】
【0002】
システムLSI(Large Scale Integration)は、1チップの中に1つ以上の機能を集積したLSIであり、SoC(System on Chip)とも呼ばれる。現在、システムLSIは多くの用途(例えば、セキュリティ用途)で使用されており、システムLSIは様々な機能を実現している。セキュリティ用途のシステムLSI(セキュアLSI)には、通常、暗号化機能が構成要素の一つとして含まれている。
【0003】
セキュアLSIに対する脅威の一つにサイドチャネル攻撃がある。サイドチャネル攻撃は、暗号回路の消費電力、電磁波、処理時間等の物理量を測定し、それらを解析することにより、暗号回路内部の秘密情報を得ようとする攻撃の総称である。例えば、電力解析攻撃と呼ばれるサイドチャネル攻撃では、暗号の演算中の秘密情報に依存した消費電力のわずかな偏りを解析することによって秘密情報を取得するものである。
【0004】
例えば、特許文献1(図34)には、無効サイクルを挿入する、あるいはさらにクロック自体の周波数にランダムな揺らぎを与える、あるいはさらに不規則な電流値となるような電流を発生させる偽電流発生回路を設けることにより、時間軸でみた場合の消費電流を変化させ、電流波形の解析による暗号鍵の解読等を困難にする方法が記載されている。また、VCO(Voltage Controlled Oscillator:電圧制御発振器)の制御電圧を保持するキャパシタの容量を乱数に基づいて変化させることにより、周波数にジッタを意図的に発生させることが記載されている。
【0005】
さらに、特許文献1(図28)には、乱数発生器とタイミング生成回路とにより発生させたランダムな信号を利用して、CPUに1以上の命令からなる疑似的処理を挿入し、タイミングを変更することが記載されている。
【0006】
さらに、特許文献1(図5)には、発振回路の出力信号をカウンタで計数し、その計数出力を発振周波数とは非同期のタイミングジェネレータ出力でサンプリングし、レジスタにデータとして転送する。レジスタの各段には、キャパシタの容量を乱数に基づいて変化させた容量C1~C4等を接続する。このような構成により、カウンタの計数出力のサンプリングによって乱数を発生させるとともに、容量C1~C4が保持している電荷の状態と乱数に対応したハイレベル出力とロウレベル出力との組み合わせによって、膨大な組み合わせからなる偽電流をクロックに同期して発生させることが記載されている。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2000-259784号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1(図34)に記載されている、クロック発振をランダム化する方法は、ジッタ量によって周波数が中央値からずれるため、タイミングデザインにおいてマージンを増やす必要があり、タイミングデザインの難易度が高くなる。また、特許文献1(図28)に記載されている、ダミー処理の挿入をハードウェアで行う方法では、例えば暗号化処理等を行うハードウェアのステートマシンの修正が必要であり、かつ、ソフトウェア制御によるダミー処理挿入程の自由度はない。また、特許文献1(図5)に記載されているような偽電流発生回路を追加すると、トータルの消費電力やチップ面積が増えてしまうというデメリットがある。
【0009】
本発明は従来技術におけるデメリットを回避しながら、サイドチャネル攻撃への対策を行うものである。
【課題を解決するための手段】
【0010】
一実施の形態に係るサイドチャネル攻撃回避方法においては、クロック発振状態を疑似乱数で置き換えることにより、処理時間が毎回ずれるため、単純電力解析によるサイドチャネル攻撃が困難になる。さらに、ロジック回路のクロック発振状態を疑似乱数の反転値で置き換えることにより、ロジック回路が動作停止中にもう一方のロジック回路を動かし電力を平滑化することにより電力解析によるサイドチャネル攻撃への耐性を上げることが可能となる。
【発明の効果】
【0011】
トータルの消費電力やチップ面積を増やすことなく、かつ設計難易度を上げることなく、時間軸でみた場合の消費電流の変化を制御することが可能となり、電流波形の解析による暗号鍵の解読等を困難にすることができる。
【図面の簡単な説明】
【0012】
図1図1は、第一の実施形態に係る半導体装置の構成図である。
図2図2は、第一の実施形態に係るクロック制御回路の構成を示すブロック図である。
図3図3は、第一の実施形態に係るビットマップ回路の構成を示すブロック図である。
図4図4は、第一の実施形態に係る電流の時間変化を示す図である。
図5図5は、第二の実施形態および第三の実施形態に係る半導体装置の構成図である。
図6図6は、第二の実施形態に係る電流の時間変化を示す図である。
図7図7は、第三の実施形態に係る電流の時間変化を示す図である。
【発明を実施するための形態】
【0013】
以下、一実施の形態に係る半導体装置について、図面を参照して詳細に説明する。なお、明細書および図面において、同一の構成要件または対応する構成要件には、同一の符号を付し、重複する説明は省略する。また、図面では、説明の便宜上、構成を省略または簡略化している場合もある。また、実施の形態と各変形例との少なくとも一部は、互いに任意に組み合わされてもよい。
【0014】
(第一の実施形態)
図1は、第一の実施形態に係る半導体装置の全体構成を示す図である。
【0015】
プロセッサ、共有メモリ、発振回路、カウンタ回路、乱数生成器、クロック発振状態を示すビットマップ回路、クロック制御回路、およびクロック制御回路で生成されたクロックで駆動されるロジック回路を有する。なお、乱数生成器、クロック制御回路およびロジック回路は必要に応じて任意の数だけ増やせるものとする。
【0016】
図1において、ビットマップ回路A、B(15A、15B)とクロック制御回路A、B(12A、12B)とロジック回路A、B(10A、10B)、乱数生成器1、2(14A、14B)の数は必要に応じて拡張する。ビットマップ回路A、B(15A、15B)は、後述のように書き換え可能なレジスタおよびセレクタで構成される。カウンタ回路(11)は共通化し、カウンタ回路(11)でカウントしたカウント値はクロック制御回路A、B(12A、12B)および乱数生成器1、2(14A、14B)に送信される。
【0017】
乱数生成器1、2(14A、14B)で生成された乱数情報をビットマップ回路A、B(15A、15B)に送信する。ビットマップ回路A、B(15A、15B)のそれぞれから出力されたビットマップ情報A、Bをクロック制御回路A、B(12A、12B)に送信する。クロック制御回路A、B(12A、12B)のそれぞれから出力された間欠クロックA、Bはロジック回路A、B(10A、10B)に送信される。プロセッサ(16)は、ビットマップ情報A、Bを生成するために必要な発振制御情報をビットマップ回路A、B(15A、15B)に設定する。
【0018】
共有メモリ(17)には、例えば動作モード毎に最適なビットマップ情報の組み合わせが記憶されている。プロセッサ(16)、共有メモリ(17)およびビットマップ回路A、B(15A、15B)はシステムバス(18)と接続されている。プロセッサ(16)は、動作モードに応じて最適な発振制御情報の組み合わせを共有メモリ(17)から読み出し、システムバス(18)を介してビットマップ回路A、B(15A、15B)にビットマップ情報を設定する。
【0019】
カウンタ回路(11)は、例えば0~15の間を順次インクリメントしたカウント値を出力する。乱数生成器1、2(14A、14B)はカウント値のオーバーフローに連動して、例えば16ビットの乱数値を生成して、更新する。本実施の形態においては、例えばロジック回路A(10A)は暗号鍵を用いて暗号化や復号化の処理を行う回路とする。一方、ロジック回路B(10B)は、ロジック回路A(10A)とほぼ同等の回路規模を持つ、暗号化以外の処理を行う回路とする。
【0020】
図2に第一の実施形態におけるクロック制御回路(図1の12A、12B)の詳細構成を示す。
【0021】
図2において、セレクタ(21)は例えば16ビットのビットマップ情報からカウント値で示されるビット位置の値を選択してクロックイネーブル信号として出力する。クロックゲートセル(22)はクロックイネーブル信号が「1」を示すときだけ間欠クロックを出力する。カウント値の値域、ビットマップ情報のビット数、図1の乱数生成器1、2(14A、14B)の乱数値のビット数は必要に応じて任意の数に拡張することができる。
【0022】
図3に第一の実施形態におけるビットマップ回路の詳細構成を示す。
【0023】
図3において、ビットマップ1(30A)は、システムバス(33)を経由して、プロセッサ(34)が設定する発振制御情報1(基本発振パターン)を格納する。ビットマップ2(30B)は、システムバス(33)を経由して、プロセッサ(34)が設定する発振制御情報2(乱数生成器1(32A)の生成する乱数値に発振情報を置き換えるか否かを選択するための情報)を格納する。ビットマップ3(30C)はシステムバス(33)を経由してプロセッサ(34)が設定する発振制御情報3(乱数生成器2(32B)の生成する乱数値に発振情報を置き換えるか否かを選択するための情報)を格納する。
【0024】
ビットマップ4(30D)は、システムバス(33)を経由して、プロセッサ(34)が設定する発振制御情報4(発振状態を反転するか否かを選択するための情報)を格納する。プロセッサ(34)が設定する、発振制御情報1~4はあらかじめ図1の共有メモリ(17)に格納されている。プロセッサ(34)は、システムバス(33)を経由して発振制御情報1~4を読み取り、システムバス(33)を経由して、図3のビットマップ1~4(30A~30D)に格納する。
【0025】
セレクタ1(31A)はビットマップ2(30B)に設定された値に基づいてビットマップ1(30A)または乱数生成器1(32A)の値を選択する。セレクタ2(31B)はビットマップ3(30C)に設定された値に基づいてセレクタ1(31A)により選択された値または乱数生成器2(32B)の値を選択する。セレクタ3(31C)はビットマップ4(30D)に設定された値に基づいてセレクタ2(31B)により選択された値またはその反転した値を選択する。ビットマップ1~4(30A~30D)、セレクタ1~3(31A~31C)はそれぞれ図1のカウンタ回路(11)が出力するカウント値域分だけ実装されている。
【0026】
次に、図1のロジック回路A(10A)とロジック回路B(10B)を相補的に動作させて電流波形の解析による暗号鍵の解読等を困難にする例を示す。
【0027】
例えば、図1のビットマップ回路A(15A)において、図3のビットマップ1(30A)に「0x5555」を、ビットマップ2(30B)、ビットマップ3(30C)、ビットマップ4(30D)にそれぞれ「0x0000(16進表記)」を設定し、図1のビットマップ回路B(15B)において、図3のビットマップ1(30A)に「0x5555」を、ビットマップ2(30B)、ビットマップ3(30C)にそれぞれ「0x0000」、ビットマップ4(30D)に「0xFFFF(16進表記)」を設定すると、図1のビットマップ回路A(15A)が出力するビットマップ情報Aは「0x5555」、図1のビットマップ回路B(15B)が出力するビットマップ情報Bは「0xAAAA」となる。
【0028】
図4は第一の実施形態における間欠クロックと電力の時間変化を示した図である。
【0029】
図1のカウンタ回路(11)が出力するカウント値は0から15まで順次インクリメントする動作を繰返す(4-2)。クロックイネーブル信号Aはビットマップ情報(図4の例では「0x5555」)から、カウント値で指定されるビット位置の値を選択して出力する(4-3)。クロックイネーブル信号Bはビットマップ情報(図4の例では「0xAAAA」)から、カウント値で指定されるビット位置の値を選択して出力する(4-4)。間欠クロックAはクロックイネーブル信号Aの値が「1」のときだけ発振する(4-5)。間欠クロックBはクロックイネーブル信号Bの値が「1」のときだけ発振する(4-6)。間欠クロックAが発振すると、ロジック回路A(10A)内部でトランジスタのスイッチング電流が流れる(4-7)。間欠クロックBが発振すると、ロジック回路B(10B)内部でトランジスタのスイッチング電流が流れる(4-8)。ロジック回路A(10A)とロジック回路B(10B)の合計電流は図4の4-9のようになる。
【0030】
以上のように、図4に示す通り、ロジック回路A(10A)が動作しない間に、ロジック回路A(10A)とほぼ同程度の回路規模のロジック回路B(10B)を動作させることにより、ロジック回路A(10A)の動作状態に連動した消費電流の変化を遮蔽し、電流波形の解析によるロジック回路A(10A)の持つ暗号鍵の解読等を困難にすることが可能となる。これらの制御はクロック発振を間引き制御することによって実現されており、特許文献1(図34)に記載されているクロック発振をランダム化する方法と比べて、タイミング設計に与える影響が少ない。
【0031】
(第二の実施形態)
第一の実施形態に係るサイドチャネル攻撃回避方法では、暗号化の処理を行うロジック回路Aが動作しない間に、ロジック回路Aとほぼ同程度の回路規模のロジック回路B(暗号化以外の処理を行う)を動作させることにより、ロジック回路Aの動作状態に連動した消費電流の変化を遮蔽し、電流波形の解析によるロジック回路Aの持つ暗号鍵の解読等を困難にしていたが、本実施の形態に係るサイドチャネル攻撃回避方法では、第一の実施形態に加え、ロジック回路Aとは無関係のロジック回路Cをランダムに動作させることで、電流波形の解析によるロジック回路Aの持つ暗号鍵の解読等をさらに困難にすることを特徴とする。第一の実施形態におけるロジック回路Aとロジック回路Bは同じ規模の回路であるのに対し、ロジック回路Cについてはどのような規模でもかまわない。
【0032】
図5は、第二の実施形態に係る半導体装置の全体構成を示す図である。第一の実施形態に対し、ロジック回路C、クロック制御回路C、ビットマップ回路Cが追加されている点で異なる。
【0033】
ビットマップ回路A、B(55A、55B)が出力するビットマップ情報A、Bは第一の実施形態と同様である。すなわち、ビットマップ回路A(55A)において、図3のビットマップ1(30A)に「0x5555」を、ビットマップ2(30B)、ビットマップ3(30C)、ビットマップ4(30D)にそれぞれ「0x0000(16進表記)」を設定し、ビットマップ回路B(55B)において、ビットマップ1(30A)に「0x5555」を、ビットマップ2(30B)、ビットマップ3(30C)にそれぞれ「0x0000」、ビットマップ4(30D)に「0xFFFF(16進表記)」を設定すると、ビットマップ回路A(55A)が出力するビットマップ情報Aは「0x5555」、ビットマップ回路B(55B)が出力するビットマップ情報Bは「0xAAAA」となる。
【0034】
第二の実施形態においては、上記に加え、ビットマップ回路C(55C)が、図3のビットマップ1(30A)に「0x0000」を、ビットマップ2(30B)に「0xFFFF」を、ビットマップ3(30C)とビットマップ4(30D)にそれぞれ「0x0000(16進表記)」を設定すると、ビットマップ回路C(55C)が出力するビットマップ情報Cは乱数生成器1(54A)が示す乱数値となる。カウンタ回路(51)が出力するカウント値がオーバーフローすると、乱数生成器1(54A)の乱数値は新たな乱数値に更新され、ビットマップ情報Cに新たな乱数値が反映される。
【0035】
図6は第二の実施形態における間欠クロックと電力の時間変化を示した図である。
【0036】
図6に示す例では、16クロック周期において、ロジック回路AおよびBでは、期間(1)は固定発振制御期間となり、一方、ロジック回路Cでは、期間(2)は乱数生成器1(54A)によるランダム発振制御期間となる。
カウンタ回路(51)が出力するカウント値は、0から15まで順次インクリメントする動作を繰返す(6-2)。クロックイネーブル信号Aはビットマップ情報(図6の例では「0x5555」)から、カウント値で指定されるビット位置の値を選択して出力する(6-3)。クロックイネーブル信号Bはビットマップ情報(図6の例では「0xAAAA」)から、カウント値で指定されるビット位置の値を選択して出力する(6-4)。クロックイネーブル信号Cはビットマップ情報(図6の例では始め「0x4129」)から、カウント値で指定されるビット位置の値を選択して出力する(6-5)。
【0037】
間欠クロックAはクロックイネーブル信号Aの値が「1」のときだけ発振する(6-6)。間欠クロックBはクロックイネーブル信号Bの値が「1」のときだけ発振する(6-7)。間欠クロックCはクロックイネーブル信号Cの値が「1」のときだけ発振する(6-8)。間欠クロックAが発振するとロジック回路A(50A)内部でトランジスタのスイッチング電流が流れる(6-9)。間欠クロックBが発振するとロジック回路B(50B)内部でトランジスタのスイッチング電流が流れる(6-10)。間欠クロックCが発振するとロジック回路C(50C)内部でトランジスタのスイッチング電流が流れる(6-11)。ロジック回路A、B、C(50A~50C)の合計電流は6-12のようになる。
【0038】
図6に示すとおり、ロジック回路A(50A)が動作しない間に、ロジック回路A(50A)とほぼ同程度の回路規模のロジック回路B(50B)を動作させ、ロジック回路A(50A)の動作状態に連動した消費電流の変化を遮蔽した上で、ロジック回路A(50A)とは無関係のロジック回路C(50C)をランダムに動作させることで、電流波形の解析によるロジック回路A(50A)の持つ暗号鍵の解読等を第一の実施形態よりもさらに困難にすることができる。
【0039】
本実施の形態においては、ロジック回路C(50C)は元々半導体装置に必要とされ、搭載されている回路を用いることを想定しており、特許文献1に記載されているような、偽電流発生のための回路を追加することなく、つまりトータルの消費電力やチップ面積を増やさずに、特許文献1と同様の効果を得ることが可能となる。
【0040】
(第三の実施形態)
第二の実施形態に加え、図5の乱数生成器2(54B)を用いて、特許文献1に記載されているクロックランダム化やダミー処理挿入と同様の効果を実現する例を示す。
【0041】
例えば、図5のビットマップ回路A(55A)において、図3のビットマップ1(30A)に「0x5555」を、ビットマップ2(30B)に「0x0000」、ビットマップ3(30C)に「0xFF00」、ビットマップ4(30D)に「0x0000(16進表記)」を設定し、ビットマップ回路B(55B)において、図3のビットマップ1(30A)に「0x5555」を、ビットマップ2(30B)に「0x0000」、ビットマップ3(30C)に「0xFF00」、ビットマップ4(30D)に「0xFFFF(16進表記)」を設定すると、ビットマップ回路A(55A)が出力するビットマップ情報Aの上位8ビットは乱数生成器2(54B)の示す乱数値、下位8ビットは「0x55」となり、ビットマップ回路B(55B)が出力するビットマップ情報Bの上位8ビットは乱数生成器2(54B)の示す乱数値の反転値、下位8ビットは「0xAA」となる。
【0042】
カウンタ回路(51)が出力するカウント値がオーバーフローすると、乱数生成器2(54B)の乱数値は新たな乱数値に更新され、ビットマップ回路A(55A)が出力するビットマップ情報Aの上位8ビットに新たな乱数値が反映され、ビットマップ回路B(55B)が出力するビットマップ情報Bの上位8ビットには新たな乱数値の反転値が反映される。乱数生成器2(54B)の乱数値は、例えば始め「0x1E37」で、新たな値は「0x39EA」とする。
【0043】
一方、ビットマップ回路C(55C)において、図3のビットマップ1(30A)に「0x0000」を、ビットマップ2(30B)に「0xFFFF」を、ビットマップ3(30C)とビットマップ4(30D)にそれぞれ「0x0000(16進表記)」を設定すると、ビットマップ回路C(55C)が出力するビットマップ情報Cは乱数生成器1(54A)が示す乱数値となる。カウンタ回路(51)が出力するカウント値がオーバーフローすると、乱数生成器1(54A)の乱数値は新たな乱数値に更新され、ビットマップ回路C(55C)が出力するビットマップ情報Cに新たな乱数値が反映される。乱数生成器1(54A)の乱数値は、例えば始め「0x4129」で、新たな値は「0xC5A7」とする。
【0044】
第三の実施形態における間欠クロックと電力の時間変化を図7に示す。
【0045】
図7に示す例では、16クロック周期において、ロジック回路AおよびBでは、期間(1)は固定発振制御期間、期間(3)は乱数生成器2(54B)によるランダム発振制御期間となる。一方、ロジック回路Cでは、期間(2)は乱数生成器1(54A)によるランダム発振制御期間となる。
【0046】
図7に示すとおり、ロジック回路A(50A)が動作しない間に、ロジック回路A(50A)とほぼ同程度の回路規模のロジック回路B(50B)を動作させ、ロジック回路A(50A)の動作状態に連動した消費電流の変化を遮蔽した上で、ロジック回路A(50A)とは無関係のロジック回路C(50C)をランダムに動作させ、その上でロジック回路A(50A)が動作しないダミー処理期間をランダムに挿入することで、電流波形の解析によるロジック回路A(50A)の持つ暗号鍵の解読等を第二の実施形態よりもさらに困難にすることができる。
【0047】
本実施の形態においては、クロックランダムに既知のクロックゲーティングの技術を用いることを想定しており、特許文献1に記載されているクロックにジッタを載せる手法のような、周波数の中央値からのずれを考慮する必要はなく、従ってタイミングデザインにおいてジッタ分のマージンを増やす必要も無く、タイミングデザインの難易度を上げることなく、特許文献1に記載されているクロックランダム化と同様の効果を得ることが可能となる。
【0048】
(第一の変形例)
第三の実施形態においては、図3のビットマップ1(30A)、ビットマップ2(30B)の設定値を変更することで、図1におけるロジック回路A(10A)および図5におけるロジック回路A(50A)の動作率を制御することができる。
【0049】
図7の例では図3のビットマップ1(30A)で設定される固定発振制御期間の比率が50%、図3のビットマップ3(30C)で設定されるランダム発振制御期間の比率が50%、乱数生成器2(図1の14B、図5の54B)における0/1の発生比率が例えば50%だとすると、ロジック回路A(図1の10A、図5の50A)の平均動作率は50%となるが、ロジック回路A(図1の10A、図5の50A)の平均動作率を上げたい場合は、図3のビットマップ1(30A)で設定される固定発振期間の比率を増やせばよい。
【0050】
(第二の変形例)
第三の実施形態においては、ロジック回路A(図1の10A、図5の50A)のダミー処理期間挿入に、乱数生成器1(図1の14A、図5の54A)を併用することもできる。すなわち2つの異なる乱数発生源を用いて、ロジック回路A(図1の10A、図5の50A)のダミー処理期間を挿入することができる。これはつまり、乱数生成器1(図1の14A、図5の54A)と乱数生成器2(図1の14B、図5の54B)を、より実装の容易な、それぞれ異なる生成アルゴリズムで動作する疑似乱数生成器のような回路に置き換えても、同様の効果を得ることができることを意味する。
【0051】
(第三の変形例)
第三の実施形態においては、図3のビットマップ1~4(30A~30D)の設定を定期的に変更することで、時間軸でみた場合の消費電流をさらに変化させ、電流波形の解析による暗号鍵の解読等を困難にすることもできる。
【0052】
(第四の変形例)
第三の実施形態においては、動作説明を簡単にするため、図3のビットマップ1(30A)で設定する固定発振制御期間と、図3のビットマップ3(30C)で設定するランダム発振制御期間を8サイクル毎に交代するように設定しているが、ビットマップの設定を変えることにより、固定発振制御期間とランダム発振制御期間を異なるサイクルで交代させることもできる。例えば、図3のビットマップ1(30A)の設定値を「0x8888」、図3のビットマップ3(30C)の設定値を「0x5555」とすると、ランダム発振、停止、ランダム発振、発振・・・の繰り返しとなり、より短い周期でランダム発振が行われるようになり、電流波形の解析による暗号鍵の解読等をより困難にできる。
【0053】
なお、本発明は、上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更され得る。
【符号の説明】
【0054】
10A、10B、23、50A、50B、50C ロジック回路
11、51 カウンタ回路
12A、12B、52A、52B、52C クロック制御回路
13、53 発振器
14A、14B、32A、32B、54A、54B 乱数生成器
15A、15B、20、55A、55B、55C ビットマップ回路
16、34、56 プロセッサ
17、57 共有メモリ
18、33、58 システムバス
21、31A、31B、31C セレクタ
22 クロックゲートセル
30A、30B、30C、30D ビットマップ
図1
図2
図3
図4
図5
図6
図7