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

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

▶ 新唐科技股▲ふん▼有限公司の特許一覧

特許7349482電子回路、電子回路の設計方法、電子回路内のデータ処理方法
<>
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図1
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図2
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図3
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図4
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図5A
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図5B
  • 特許-電子回路、電子回路の設計方法、電子回路内のデータ処理方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-13
(45)【発行日】2023-09-22
(54)【発明の名称】電子回路、電子回路の設計方法、電子回路内のデータ処理方法
(51)【国際特許分類】
   G06F 21/55 20130101AFI20230914BHJP
【FI】
G06F21/55 360
【請求項の数】 19
【外国語出願】
(21)【出願番号】P 2021182855
(22)【出願日】2021-11-09
(65)【公開番号】P2022084538
(43)【公開日】2022-06-07
【審査請求日】2022-03-16
(31)【優先権主張番号】16/952,119
(32)【優先日】2020-11-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】110000291
【氏名又は名称】弁理士法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】ハーシュマン,ジヴ
【審査官】局 成矢
(56)【参考文献】
【文献】特開2013-167729(JP,A)
【文献】米国特許出願公開第2009/0302882(US,A1)
【文献】豊嶋 太樹,ランダム遅延素子を用いた耐タンパ非同期式パイプライン回路,IEICE Technical Report,日本,一般社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,2016年06月17日,pp.185-190
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
少なくとも2つの入力および少なくとも1つの出力を含み、且つ前記少なくとも2つの入力に応答して、前記少なくとも1つの出力を第1の論理状態と第2の論理状態との間で切り替えるように構成される駆動ユニット、
少なくとも2つの入力を含み、前記少なくとも2つの入力のうちの少なくとも1つは、前記駆動ユニットの前記出力によって駆動される少なくとも1つの被駆動ユニット
前記駆動ユニットを前記被駆動ユニットに接続する信号ネットワーク、
前記信号ネットワークに備えられる少なくとも1つのインバータ、
前記少なくとも1つのインバータのうちの1つのインバータの前の前記信号ネットワークの容量の第1の部分を有する第1の容量負荷、および
前記1つのインバータの後の前記信号ネットワークの容量の第2の部分を有する第2の容量負荷を含み、
前記1つのインバータは、前記第1の容量負荷と前記第2の容量負荷を等しくするように適切に前記信号ネットワークに設置され、それによって前記信号ネットワークでの前記第1の容量負荷と前記第2の容量負荷を平衡化させるように構成され、前記第1の容量負荷は、前記第1の論理状態から前記第2の論理状態への遷移により生じる電流に応答し、前記第2の容量負荷は、前記第2の論理状態から前記第1の論理状態への遷移により生じる電流に応答する電子回路。
【請求項2】
前記少なくとも1つのインバータは、第1の電流と第2の電流を平衡化させるように構成され、前記第1の電流は、前記駆動ユニットの前記第1の論理状態から前記第2の論理状態への遷移に応答して前記信号ネットワークで消費され、前記第2の電流は、前記駆動ユニットの前記第2の論理状態から前記第1の論理状態への遷移に応答して前記信号ネットワークで消費される請求項1に記載の電子回路。
【請求項3】
前記第1の容量負荷および前記第2の容量負荷の少なくとも1つは接地される請求項1に記載の電子回路。
【請求項4】
前記第1の容量負荷および前記第2の容量負荷の少なくとも1つは、前記電子回路の供給電圧レールに接続される請求項1に記載の電子回路。
【請求項5】
前記少なくとも1つの被駆動ユニットは、単一の被駆動ユニットで構成され、前記信号ネットワークは、前記駆動ユニットの前記出力と前記単一の被駆動ユニットの前記入力の少なくとも1つの間に配線された導体を含み、且つ前記少なくとも1つのインバータは、前記導体に沿って設置される請求項1に記載の電子回路。
【請求項6】
前記少なくとも1つの被駆動ユニットは、複数の被駆動ユニットを含み、前記信号ネットワークは、分岐を含み、前記分岐は、対応する前記被駆動ユニットの前記入力に配線された少なくとも第1の導体と第2の導体を接続し、且つ前記少なくとも1つのインバータは、前記分岐と前記被駆動ユニットの前記入力との間に設置された少なくとも前記1つのインバータともう1つのインバータを含み、前記1つのインバータと前記もう1つのインバータはそれぞれ前記第1の導体と前記第2の導体に設置され、
前記電子回路は、前記もう1つのインバータの後の前記信号ネットワークの容量の第3の部分を有する第3の容量負荷を含む請求項1に記載の電子回路。
【請求項7】
前記少なくとも1つの被駆動ユニットは、複数の被駆動ユニットを含み、前記信号ネットワークは、分岐を含み、前記分岐は、対応する前記被駆動ユニットの前記入力に配線された少なくとも第1の導体と第2の導体を接続し、且つ前記少なくとも1つのインバータは、前記駆動ユニットの出力と前記分岐との間に設置された前記1つのインバータを含み、
前記電子回路は、前記分岐の後の前記第1の導体の容量を有する第3の容量負荷と、前記分岐の後の前記第2の導体の容量を有する第4の容量負荷を含む請求項1に記載の電子回路。
【請求項8】
駆動ユニットを指定し、前記駆動ユニットは、少なくとも2つの入力および少なくとも1つの出力を含み、前記少なくとも2つの入力に応答して、前記少なくとも1つの出力を第1の論理状態と第2の論理状態との間で切り替えるように構成されるステップ、
少なくとも1つの被駆動ユニットを指定し、前記少なくとも1つの被駆動ユニットは、少なくとも2つの入力を含み、前記少なくとも2つの入力のうちの少なくとも1つは、前記駆動ユニットの前記少なくとも1つの出力によって駆動されるステップ、および
前記駆動ユニットを前記被駆動ユニットに接続する信号ネットワーク、
前記信号ネットワークに備えられる少なくとも1つのインバータ、
前記少なくとも1つのインバータのうちの1つのインバータの前の前記信号ネットワークの容量の第1の部分を有する第1の容量負荷、および
前記1つのインバータの後の前記信号ネットワークの容量の第2の部分を有する第2の容量負荷を含み、
前記1つのインバータは、前記第1の容量負荷と前記第2の容量負荷を等しくするように適切に前記信号ネットワークに設置され、それによって前記信号ネットワークでの前記第1の容量負荷と前記第2の容量負荷を平衡化させ、前記第1の容量負荷は、前記第1の論理状態から前記第2の論理状態への遷移により生じる電流に応答し、前記第2の容量負荷は、前記第2の論理状態から前記第1の論理状態への遷移により生じる電流に応答するステップを含む電子回路を設計する方法。
【請求項9】
前記少なくとも1つのインバータは、第1の電流と第2の電流を平衡化させるように構成され、前記第1の電流は、前記駆動ユニットの前記第1の論理状態から前記第2の論理状態への遷移に応答して前記信号ネットワークで消費され、前記第2の電流は、前記駆動ユニットの前記第2の論理状態から前記第1の論理状態への遷移に応答して前記信号ネットワークで消費される請求項8に記載の電子回路を設計する方法。
【請求項10】
前記第1の容量負荷および前記第2の容量負荷の少なくとも1つは接地される請求項8に記載の電子回路を設計する方法。
【請求項11】
前記第1の容量負荷および前記第2の容量負荷の少なくとも1つは、前記電子回路の供給電圧レールに接続される請求項8に記載の電子回路を設計する方法。
【請求項12】
前記少なくとも1つの被駆動ユニットは、単一の被駆動ユニットで構成され、前記信号ネットワークは、前記駆動ユニットの前記出力と前記単一の被駆動ユニットの前記入力の少なくとも1つの間に配線された導体を含み、且つ前記少なくとも1つのインバータは、前記導体に沿って設置される前記少なくとも1つのインバータを含む請求項8に記載の電子回路を設計する方法。
【請求項13】
前記少なくとも1つの被駆動ユニットは、複数の被駆動ユニットを含み、前記信号ネットワークは、分岐を含み、前記分岐は、対応する前記被駆動ユニットの前記入力に配線された少なくとも第1の導体と第2の導体を接続し、且つ前記少なくとも1つのインバータは、前記分岐と前記被駆動ユニットの前記入力との間に設置された少なくとも前記1つのインバータともう1つのインバータを含み、前記1つのインバータと前記もう1つのインバータはそれぞれ前記第1の導体と前記第2の導体に設置され、
前記電子回路は、前記もう1つのインバータの後の前記信号ネットワークの容量の第3の部分を有する第3の容量負荷を含む請求項8に記載の電子回路を設計する方法。
【請求項14】
前記1つ以上の被駆動ユニットは、複数の被駆動ユニットを含み、前記信号ネットワークは、分岐を含み、前記分岐は、対応する前記被駆動ユニットの前記入力に配線された少なくとも第1の導体と第2の導体を接続し、且つ前記少なくとも1つのインバータは、前記駆動ユニットの前記出力と前記分岐との間に設置された前記1つのインバータを含み、
前記電子回路は、前記分岐の後の前記第1の導体の容量を有する第3の容量負荷と、前記分岐の後の前記第2の導体の容量を有する第4の容量負荷を含む請求項8に記載の電子回路を設計する方法。
【請求項15】
前記少なくとも1つのインバータは、前記駆動ユニットと前記被駆動ユニットとの間の所与のパスに奇数個のインバータを追加し、前記駆動ユニットまたは前記被駆動ユニットの1つに追加のインバータを埋め込むステップを含む請求項8に記載の電子回路を設計する方法。
【請求項16】
少なくとも2つの入力および少なくとも1つの出力を含み、且つ前記少なくとも2つの入力に応答して、前記出力を第1の論理状態と第2の論理状態との間で切り替えるように構成される駆動ユニットを用いるステップ、
前記駆動ユニットの前記少なくとも1つの出力によって少なくとも1つの被駆動ユニットを駆動し、前記少なくとも1つの被駆動ユニットのそれぞれは、少なくとも2つの入力を含み、前記少なくとも2つの入力のうちの少なくとも1つは、前記駆動ユニットの前記少なくとも1つの出力によって駆動されるステップ、および
前記駆動ユニットを前記被駆動ユニットに接続する信号ネットワーク、
前記信号ネットワークに備えられる少なくとも1つのインバータ、
前記少なくとも1つのインバータのうちの1つのインバータの前の前記信号ネットワークの容量の第1の部分を有する第1の容量負荷、および
前記1つのインバータの後の前記信号ネットワークの容量の第2の部分を有する第2の容量負荷を含み、
前記1つのインバータは、前記第1の容量負荷と前記第2の容量負荷を等しくするように適切に前記信号ネットワークに設置され、それによって前記信号ネットワークでの前記第1の容量負荷と前記第2の容量負荷を平衡化させ、前記第1の容量負荷は、前記第1の論理状態から前記第2の論理状態への遷移により生じる電流に応答し、前記第2の容量負荷は、前記第2の論理状態から前記第1の論理状態への遷移により生じる電流に応答する少なくとも1つのインバータを用いるステップを含む電子回路におけるデータ処理方法。
【請求項17】
前記容量負荷を平衡化させるステップは、第1の電流と第2の電流を平衡化させるステップを含み、前記第1の電流は、前記駆動ユニットの前記第1の論理状態から前記第2の論理状態への遷移に応答して前記信号ネットワークで消費され、前記第2の電流は、前記駆動ユニットの前記第2の論理状態から前記第1の論理状態への遷移に応答して前記信号ネットワークで消費される請求項16に記載の電子回路におけるデータ処理方法。
【請求項18】
前記第1の容量負荷および前記第2の容量負荷の少なくとも1つは接地される請求項16に記載の電子回路におけるデータ処理方法。
【請求項19】
前記第1の容量負荷および前記第2の容量負荷の少なくとも1つは、前記電子回路の供給電圧レールに接続される請求項16に記載の電子回路におけるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子回路のデータセキュリティに関するものであり、特に、サイドチャネル攻撃を防止するための方法およびシステムに関するものである。
【背景技術】
【0002】
サイドチャネル攻撃と呼ばれるさまざまな技術が電子機器から情報を抽出するように開発されている。サイドチャネル攻撃は通常、機器内に保存されている機密情報にアクセスするために、許可を得ていない第三者によって実行されている。一部のサイドチャネル攻撃は、電子機器が通常、論理素子の遷移時に電力を消費するという事実を利用している。この攻撃は、情報を搬送する機器に電気的に接続する必要なく、電気信号および/または機器から放射された電磁放射を非侵襲的に測定することによって情報を抽出する。
【0003】
さまざまな対策がサイドチャネル攻撃から電子機器を保護するために、提案されている。例えば、「Hardware Level Countermeasures Against Differential Power Analysis」と題された2012年2月のUniversity of Southampton, Faculty of Physical and Applied Sciences, School of Electronics and Computer Scienceの博士論文で、Baddamは、いくつかのタイプの対策、特にDual Rail Precharge(DRP)回路について説明している。
【0004】
米国特許第10,521,530号では、電力解析攻撃を軽減するために電子設計自動化システムを用いて、データ関連の遅延を有する論理回路の論理回路を設計する方法が説明されている。この論理回路は、論理入力から少なくとも1つの論理出力までの論理パス(logic path)を含む。この方法は、初期回路設計を取得し、初期回路設計内の複数の論理パスの対応する遅延を割り当てて、少なくとも一部の出力が一クロックサイクル中の異なる時間に、異なる論理入力の組み合わせに切り替わるようにし、指定された対応する遅延に基づいて遅延素子を初期回路設計に加えることにより、第2の回路設計を形成し、第2の回路設計は、対応する論理パス上に指定された対応する遅延を有することを含む。
【発明の概要】
【0005】
本明細書に記載の本発明の実施形態は、駆動ユニット、少なくとも1つの被駆動ユニット、および少なくとも1つのインバータを含む電子回路を提供する。駆動ユニットは、少なくとも2つの入力および少なくとも1つの出力を含み、且つ少なくとも2つの入力に応答して、少なくとも1つの出力を第1の論理状態と第2の論理状態との間で切り替えるように構成される。少なくとも1つの被駆動ユニットのそれぞれは、少なくとも2つの入力を含み、少なくとも2つの入力のうちの少なくとも1つは、駆動ユニットの出力によって駆動されるように構成される。少なくとも1つのインバータは、駆動ユニットを被駆動ユニットに接続する信号ネットワークに設置され、少なくとも1つのインバータは、信号ネットワークでの第1の容量負荷と第2の容量負荷を平衡化させるように構成され、第1の容量負荷は、第1の論理状態から第2の論理状態への遷移により生じる電流に応答し、第2の容量負荷は、第2の論理状態から前記第1の論理状態への遷移により生じる電流に応答する。
【0006】
通常、少なくとも1つのインバータは、第1の電流と第2の電流を平衡化させるように構成され、第1の電流は、駆動ユニットの第1の論理状態から第2の論理状態への遷移に応答して信号ネットワークで消費され、第2の電流は、駆動ユニットの第2の論理状態から第1の論理状態への遷移に応答して信号ネットワークで消費される。
【0007】
いくつかの実施形態では、第1の容量負荷および第2の容量負荷の少なくとも1つは接地される。いくつかの実施形態では、第1の容量負荷および第2の容量負荷の少なくとも1つは、電子回路の供給電圧レールに接続される。
【0008】
一実施形態では、少なくとも1つの被駆動ユニットは、1つの被駆動ユニットを含み、信号ネットワークは、駆動ユニットの出力と被駆動ユニットの入力の少なくとも1つの間に配線された導体を含み、且つ少なくとも1つのインバータは、導体に沿って設置される。もう1つの実施形態では、少なくとも1つの被駆動ユニットは、複数の被駆動ユニットを含み、信号ネットワークは、分岐を含み、分岐は、対応する被駆動ユニットの入力に配線された複数の導体を接続し、且つ少なくとも1つのインバータは、分岐と被駆動ユニットの入力との間に設置されたインバータを含む。
【0009】
また、本発明の一実施形態によれば、電子回路を設計する方法が提供される。この方法は、駆動ユニットを指定し、駆動ユニットは、少なくとも2つの入力および少なくとも1つの出力を含み、且つ少なくとも2つの入力に応答して、少なくとも1つの出力を第1の論理状態と第2の論理状態との間で切り替えるように構成されるステップを含む。少なくとも1つの被駆動ユニットを指定し、少なくとも1つの被駆動ユニットは、少なくとも2つの入力を含み、少なくとも2つの入力のうちの少なくとも1つは、駆動ユニットの少なくとも1つの出力によって駆動される。駆動ユニットと被駆動ユニットを接続する信号ネットワークには、少なくとも1つのインバータが設置され、少なくとも1つのインバータは、信号ネットワークに設置され、第1の容量負荷と第2の容量負荷を平衡させる。第1の容量負荷は、第1の論理状態から第2の論理状態への遷移により生じる電流に応答し、第2の容量負荷は、第2の論理状態から第1の論理状態への遷移により生じる電流に応答する。
【0010】
一実施形態では、少なくとも1つのインバータは、駆動ユニットと被駆動ユニットとの間の所与のパスに奇数個のインバータを追加し、駆動ユニットまたは被駆動ユニットの1つに追加のインバータを埋め込むことを含む。
【0011】
また、本発明の一実施形態によれば、電子回路におけるデータ処理方法も提供される。この方法は、駆動ユニットを用い、駆動ユニットは、少なくとも2つの入力および少なくとも1つの出力を含み、且つ少なくとも2つの入力に応答して、出力を第1の論理状態と第2の論理状態との間で切り替えるように構成される。駆動ユニットの少なくとも1つの出力によって少なくとも1つの被駆動ユニットを駆動し、少なくとも1つの被駆動ユニットのそれぞれは、少なくとも2つの入力を含み、少なくとも2つの入力のうちの少なくとも1つは、駆動ユニットの少なくとも1つの出力によって駆動される。少なくとも1つのインバータを用いて、信号ネットワークでの第1の容量負荷と第2の容量負荷を平衡化させ、第1の容量負荷は、第1の論理状態から第2の論理状態への遷移により生じる電流に応答し、第2の容量負荷は、第2の論理状態から前記第1の論理状態への遷移により生じる電流に応答する。
【0012】
添付の図面とともに以下の詳細な説明及び実施例を検討することで、本発明をより完全に理解できる。
【図面の簡単な説明】
【0013】
図1図1は、本発明の一実施形態による、安全回路および非安全回路を含む集積回路(Integrated Circuit; IC)を示すブロック図である。
図2図2は、本発明のいくつかの実施形態による、平衡化された容量負荷を有する電子回路を示すブロック図である。
図3図3は、本発明のいくつかの実施形態による、平衡化された容量負荷を有する電子回路を示すブロック図である。
図4図4は、本発明のいくつかの実施形態による、平衡化された容量負荷を有する電子回路を示すブロック図である。
図5A図5Aは、本発明の一実施形態による、インバータの「0」から「1」、および「1」から「0」の状態遷移を示す回路図である。
図5B図5Bは、本発明の一実施形態による、インバータの「0」から「1」、および「1」から「0」の状態遷移を示す回路図である。
図6図6は、本発明の一実施形態による、電子回路を設計する方法を示すフローチャートである。
【発明を実施するための形態】
【0014】
本明細書に記載された本発明の実施形態として、サイドチャネル攻撃から電子回路を保護するための改善された方法を提供する。本開示の技術は、例えば安全な埋め込みコントローラおよびメモリデバイスなどの様々な形態のセキュリティデバイスで用いられることができる。
【0015】
いくつかの実施形態では、電子回路は、複数の論理ユニットを含み、各論理ユニットは、1つ以上の入力および1つ以上の出力を含む。各出力は、回路トレースなどの導電体によって、1つ以上の他の論理ユニットの1つ以上の入力に接続される。各クロックサイクルにおいて、一部の論理ユニットは、1つの論理状態からその出力をもう1つの論理状態(「0」から「1」または「1」から「0」)に遷移し、1つ以上のその入力の遷移に応答さユニットことができる。軽減されない限り、この論理ユニットの状態遷移のシーケンスは、回路全体の消費電流の変動を生じさせる可能性があり、これは、攻撃者に測定されて攻撃者をアシストする可能性がある。
【0016】
このような消費電流の変動の主な原因の1つは、状態遷移中に容量負荷が充電されることである。容量負荷は、通常、回路導体と接地間の容量、回路導体と電源電圧(Vdd)間の容量、回路導体間の容量(他の信号線への容量)、および/または論理ユニット自体の容量を含む。
【0017】
複合論理ユニット(即ち、複数の入力を有し、いくつかの論理演算を実行して出力を生成する論理ユニット)について考えると、複合論理ユニットの出力は、1つ以上の他の複合論理ユニットの入力を駆動する。前者の論理ユニットは、本明細書では「駆動ユニット」と呼ばれ、後者の論理ユニットは、「被駆動ユニット」と呼ばれる。(複合)駆動ユニットの出力は、(複合)被駆動ユニットの入力に接続するパスは、本明細書では「信号ネットワーク」と呼ばれる。
【0018】
駆動ユニットを1つ以上の被駆動ユニットに接続する信号ネットワークは、接地に対して特定の容量(または、より広義には、接地に対する特定の容量と、例えば電源電圧レールまたは他の信号などの他の電圧源に対するもう1つの容量)を有する。駆動ユニットの出力が1つの論理状態からもう1つの論理状態に遷移したとき、駆動ユニットの出力の電圧遷移は電流を流動させ、上述の容量を充電する。生成された電流は、回路の瞬間的な総消費電流に寄与する。
【0019】
しかしながら、一般に、駆動ユニットの出力が「0」から「1」への遷移による消費電流は、「1」から「0」への遷移による消費電流と異なる可能性がある。「0」から「1」への遷移の消費電流が「1」から「0」への遷移と異なるとき、回路の瞬間的な消費電流は、機密情報を含む内部演算を表す可能性がある。この不均衡は、電力解析攻撃によって悪用され得るセキュリティ上の脆弱性をもたらす。
【0020】
本明細書に記載された本発明のいくつかの実施形態は、回路の電流消費上の状態遷移の衝撃を低減するように用いられる、回路構成および関連する設計方法を提供している。開示された実施形態では、1つ以上の追加のインバータが、駆動ユニットとその被駆動ユニットとの間の信号ネットワークに加えられる。インバータは、駆動ユニットの出力の「0」から「1」への遷移により充電された容量負荷と、出力の「1」から「0」への遷移により充電された容量負荷を平衡化させる方式で加えられる。必要に応じて、駆動ユニットおよび/または被駆動ユニットの論理を変更し、追加のインバータが回路の論理機能を変えないようにすることができる。
【0021】
本開示の技術は、回路全体、または回路内の機密情報を操作する選択された部分の容量負担を平衡化させるように用いられることができる。このように、回路の瞬間的な消費電流は、処理されている機密情報と基本的に無関係であることが可能である。従って、開示された技術は、電力解析攻撃に対する回路の感度を低減させる。本明細書に開示された技術を用いたいくつかの例示的な回路構成について説明する。設計ツールがインバータを挿入することで容量負荷を平衡化させるように用いられた例示的な設計技術についても説明する。
【0022】
電力解析攻撃に対する回路の感度を低減するように用いられる1つの代替の方法は、デュアルレールプリチャージロジック(Dual-rail Pre-charge Logic; DPL)と呼ばれる技術を適用することである。DPLでは、回路は並列に動作する相補回路によって保護される。各保護回路のネットワークは、相補回路では逆の状態遷移を経る対応するネットワークを有する。従って、各クロックサイクルでは、処理されたデータ値に関係なく、「0」から「1」への遷移の総数は、「1」から「0」への遷移の総数と同じになる。しかしながら、この結果の代償は、ハードウェアを2倍にさせ、且つこれにより、コスト、サイズ、および回路の消費電力を倍にする。DPLと比較すると、本開示を実施するための技術は、比較的単純であり、且つハードウェアを2倍にすることと比較すると、必要なハードウェアも比較的少なくなる。
【0023】
いくつかの実施形態では、本開示の技術は他の電力解析攻撃を軽減する技術と組み合わせて、暗号化エンジンなど、例えば高度暗号化標準(Advanced Encryption Standard; AES)エンジンの安全な回路を実施するように用いられることができる。例えば、例示的な技術は、「Coupling of Combinational Logic Circuits for Protection against Side-Channel Attacks」と題された米国特許出願第16/741,799号、および「Mitigation of Side-Channel Attacks using Small-Overhead Random Pre-Charging」と題された米国特許出願第16/194,342号に開示されている。これらの両方の特許出願は、本特許出願の譲受人に譲渡され、それらの開示内容は、参照により本明細書に組み込まれている。
【0024】
システム記述
図1は、本発明の一実施形態による、安全な集積回路(IC)20を示すブロック図である。例えば、安全なIC20は、集積された暗号化回路を有するメモリ装置、暗号化または認証回路を含む埋め込みコントローラ(Embedded Controller,EC)またはベースボード管理コントローラ(Baseboard Management Controller,BMC)、または任意の他の適切な安全な電子機器を含むことができる。
【0025】
この例では必要ないが、IC20は非安全回路24と安全回路28の両方を含んでいる。例えば、安全回路28は、暗号化エンジンまたはサイドチャネル攻撃から保護される必要がある任意の他の回路を含むことができる。非安全回路24は、保護がそれほど重要でない任意の回路を含むことができる。
【0026】
この例では、非安全回路24は、駆動ユニット32および被駆動ユニット36を含む。明確にするために、図1は、1つの駆動ユニット、1つの被駆動ユニット、および1つのそれらの間にあるネットワークのみを描いている。実際には、回路24は、通常、乗算器、AES Sボックス(S-box)、または任意の他の適切な論理機能などの論理機能を一緒に実現する多数のユニットを含む。
【0027】
駆動ユニット32と被駆動ユニット36はどちらも複雑な論理ユニットであり、即ち、複数の入力(例えば、バッファおよびインバータと相反する)を有する。駆動ユニット32は、複数の入力40および出力44を含む。被駆動ユニット36は、複数の入力を含み、そのうちの1つの入力48は、駆動ユニット32の出力44によって駆動される。駆動ユニット32と被駆動ユニット36の間の信号ネットワークは、回路トレースを含み、その接地への容量はCと表される。
【0028】
信号ネットワークの容量Cは、被駆動ユニット32の出力44の容量負荷となる。この例では、出力44の「0」から「1」への遷移の期間に充電された容量と、出力44の「1」から「0」への遷移の期間に充電された容量との間に平衡化はない。従って、出力44の「0」から「1」への遷移と「1」から「0」への遷移の消費電流は徐々に異なる。
【0029】
図1の例の安全回路28は、駆動ユニット52および被駆動ユニット56を含む。ここでも明確にするために、1つの駆動ユニット、1つの被駆動ユニット、および1つのそれらの間にあるネットワークのみを描いている。実際には、安全回路28は、通常、互いに駆動し合う多数のユニットを含む。
【0030】
駆動ユニット52は、複数の入力60および出力64を含む。被駆動ユニット56は複数の入力を含み、そのうちの1つの入力68は駆動ユニット52の出力64によって駆動される。容量負荷の不均衡を防ぐために、追加のインバータ72が出力64と入力68間のネットワークに設置される。適切に設定されたとき、インバータ72の前(C1で表される)の信号ネットワークの容量の部分は、インバータ72の後(C2で表される)の信号ネットワークの容量の部分と同じである。
【0031】
このようにインバータ72を設定すると、出力64の「0」から「1」への遷移による消費電流と、出力64の「1」から「0」への遷移による消費電流とが平衡化する。
【0032】
出力64の「0」から「1」への遷移について考えてみる。この遷移では、出力64の電圧は、論理「0」を表す電圧から論理「1」を表す電圧に遷移する。この電圧遷移は、特定の電流が容量C1に流れるようにする。この電流はi(「0」から「1」、C1)で表され、且つ「0」と「1」を表す電圧と容量C1の関数である。出力64の「0」から「1」への遷移は、インバータ72で逆の遷移、即ち「1」から「0」をもたらす。従って、インバータ72の出力の電圧は、論理「1」を表す電圧から論理「0」を表す電圧に遷移する。この電圧遷移は、特定の電流を容量C2に流動させる。この電流はi(「0」から「1」、C2)で表され、且つ「0」と「1」を表す電圧と容量C2の関数である。
【0033】
ここで、出力64の「1」から「0」への逆の遷移について考えてみる。この遷移では、出力64の電圧は、論理「1」を表す電圧から論理「0」を表す電圧に遷移する。この電圧遷移は、特定の電流が容量C1に流れるようにする。この電流はi(「1」から「0」、C1)で表され、且つ「0」と「1」を表す電圧と容量C1の関数である。出力64の「0」から「1」への遷移は、インバータ72で逆の遷移、即ち「0」から「1」をもたらす。従って、インバータ72の出力の電圧は、論理「0」を表す電圧から論理「1」を表す電圧に遷移する。この電圧遷移は、特定の電流を容量C2に流動させる。この電流はi(「0」から「1」、C2)で表され、且つ「0」と「1」を表す電圧と容量C2の関数である。
【0034】
出力64の「0」から「1」への遷移の期間の信号ネットワークの総消費電流はi(「0」から「1」)=i(「0」から「1」、C1)+i(「1」から「0」、C2)であると仮定し、且つ出力64の「1」から「0」への遷移の期間の信号ネットワークの総消費電流は、i(「1」から「0」)=i(「1」から「0」、C1)+i(「0」から「1」、C2)であると仮定される。このように、C1=C2であれば、i(「0」から「1」)=i(「1」から「0」)であることがわかる。従って、容量負荷がインバータ72によって平衡化されたとき、信号ネットワークでの総電流消費は、状態遷移の方向とは無関係である(即ち、出力64の「1」から「0」への、または「0」から「1」への遷移は無関係である)。
【0035】
上述の説明では、消費電流の完全な平衡化は、容量負荷の完全な平衡化によって得られることが示されている。特定の実施形態では、容量C1とC2間は、いくらかの残差が保持される可能性があることが理解されるであろう。それにもかかわらず、この残差は通常、十分に小さいため、安全回路28上の電力解析攻撃を効果的に軽減させることができ、他の対策と組み合わせることもできる。本特許出願の文脈および特許請求項では、「平衡化された容量」、「平衡化された容量負荷」および「平衡化された消費電流」などは、容量、容量負荷、または消費電流の攻撃を効果的に軽減するのに十分であると考えられる所定の閾値以下であることを表している。
【0036】
平衡化された容量負荷を有する代替のネットワーク設計
図2図4は、本発明の代替の実施形態による、平衡化された容量負荷を有する電子回路を示すブロック図である。
【0037】
図2では、2つのインバータ72が、駆動ユニット52の出力と駆動ユニット56の入力間のネットワークに設定される。この実施形態では、駆動ユニット52の出力状態が遷移したとき、C3およびC5で表される容量は一方向(「0」から「1」または「1」から「0」)に駆動され、且つC4で表される容量は逆の方向(それに応じて、「1」から「0」または「0」から「1」)に駆動される。従って、容量負荷において平衡化を得るために、容量はC4=C3+C5の条件を満たす必要がある。
【0038】
図3は、駆動ユニット52の出力が分岐され、2つの被駆動ユニット56の入力を並列に駆動するように用いられる状況を示している。この例では、分岐前の信号ネットワークの容量はC6で表され、分岐後の2つの分岐の容量はC7とC8で表される。2つのインバータ72が信号ネットワーク内に設置され、この分岐と被駆動ユニットの入力との間でこの分岐に隣接する。この場合、容量負荷内での平衡化を得るために、容量はC6=C7+C8の条件を満たす必要がある。一代替の実施形態では、1つのインバータが分岐の前(駆動ユニットの出力と分岐の間に、C6の後に、この分岐に隣接して)に配置され、図に示されている2つのインバータと置き換えることができる。
【0039】
図4は、信号ネットワークが接地と電圧レールVddの両方に対して容量を有している場合を示している。1つのインバータ72は信号ネットワーク内に設置される。インバータの前の部分の容量はC01(接地への)とC11(Vddへの)で示される。インバータの後の部分の容量はC02(接地への)とC12(Vddへの)で示される。この場合、容量負荷内の平衡化を得るために、容量はC11+C02=C01+C12の条件を満たす必要がある。
【0040】
図5Aおよび図5Bは、本発明の一実施形態による、インバータ72内の状態遷移を示す回路図である。この例では、インバータ72は、Pで表されるP型金属酸化物半導体電界効果トランジスタ(P-type Metal-Oxide-Semiconductor Field-Efect Transistor,PMOS FET)と、Nで表されるN型金属酸化物半導体電界効果トランジスタ(NMOS FET)とを含み、Vddと接地間では、ソースからドレインの方式で接続される。インバータ72の入力は、2つのトランジスタのゲートに印加される。インバータ72の出力は、P型トランジスタのソースとN型トランジスタのドレインとの間の接続点から得られる。
【0041】
図5Aは、出力と接地間の容量負荷(C0で表される)の場合を示している。図5Bは、出力と供給電圧(Vdd)間の容量負荷(C1で表される)の場合を示している。2つの図では、「0→1」と書かれた矢印は、「0」から「1」への出力の遷移の期間の電流を示しており、「1→0」と書かれた矢印は、「1」から「0」への出力の遷移の期間の電流を示している。ほとんどの実際的なシナリオでは、2つの場合の重ね合わせを含む。
【0042】
図5A図5Bに見られるように、消費電流は対称的ではない。例えば、図5Aでは、Vddから接地への電流は「0」から「1」への遷移の期間にのみ流れる。「1」から「0」への遷移の期間、電流はほとんど一方のコンデンサの極からもう一方の極に流れ、必ずしも接地に到達するとは限らない。上述の図4の条件を満たすように容量を設定すると、「0」から「1」への遷移と「1」から「0」への遷移の消費電流を平衡化させる。
【0043】
様々な電子回路の構成が図1図4に示され、図5Aおよび図5Bは、概念を明確にするためにのみ描かれた構成例である。代替の実施形態では、任意の他の適切な回路構成を用いることができる。例えば、図1図4の構成の任意の適切な組み合わせを用いることができる。
【0044】
もう1つの例として、上述の例では、駆動ユニットおよび被駆動ユニットは、3入力ORまたはNORユニットである。しかしながら、この選択は一例にすぎない。代替の実施形態では、任意の駆動ユニットおよび被駆動ユニットは、2つ以上の入力および1つ以上の出力を有する任意の他の適切な論理ユニット、例えば、様々なOR、AND、NOR、NAND、およびXORゲートを含むことができる。
【0045】
さらに、もう1つの例として、所与の駆動ユニットと所与の被駆動ユニットとの間に設置されるインバータ72の数は、1つまたは2つに限定されず、任意の適切な数を含むことができる。もう1つの例として、駆動ユニットの出力は2つ以上の分岐に分岐させて、2つ以上の被駆動ユニットを駆動させることができる。一般的に、被駆動ユニットは、互いに異なる、および/または駆動ユニットと異なることができ、回路が必要な論理機能を行うように適合させることができる。
【0046】
様々な実施形態では、任意の開示された回路が、任意の適切なハードウェアまたはファームウェア、例えば1つ以上のディスクリート部品、1つ以上の特定用途向け集積回路(Application Specific Integrated Circuit,ASIC)および/または1つ以上のフィールドプログラマブルゲートアレイ(Field Programmable Gate Array,FPGA)を用いて実施することができる。
【0047】
平衡化された容量負荷を実現するための設計方法
いくつかの実施形態では、図1図4に示される例などの本発明の実施形態による安全回路は、既存の超大規模集積回路(very-large-scale integration,VLSI)設計ツールを用いて設計および処理することができる。設計の例示的な指針は、以下の例を含むことができる:
・合成プロセスの誘導は、小さなサイズの論理ユニット、例えばORユニットの代わりにNORユニットの後にインバータを用いる。
・最大遷移時間を制限して、インバータの挿入を誘導する。
・バッファの使用を避け、代わりにインバータを用いる(または既存のバッファを一対のインバータと置き換える)。
・駆動強度の低いユニットを用いて、インバータの挿入を誘導する。
・合成プロセスを誘導して、出力の段階で余分なインバータを有するユニット(AND、OR、バッファーなど)を用いないように回避し、代わりに、対応するより簡略化したバージョン(NAND、MOR、インバータなど)を用いる。これは、合成プロセスが外部インバータで論理を補完するように強制し、後で容量を平衡化させるように用いられることができる。
・駆動ユニットと被駆動ユニットの間にインバータがない場合、保護が必要なネットワーク上に一対の直列接続されたインバータを明示的に追加することができる。
・設計のバックエンドの段階の一部として、インバータの位置を平衡化させる。
【0048】
図6は、本発明の一実施形態による、電子回路を設計する方法を示すフローチャートである。この方法は、設計者または設計ツールが駆動ユニット指定ステップ80で駆動ユニットを指定するステップから始まる。被駆動ユニット指定ステップ84では、設計者または設計ツールは、駆動ユニットにより駆動される1つ以上の被駆動ユニットを指定する。
【0049】
本明細書に記載されるように、平衡化ステップ88では、設計者または設計ツールは、駆動ユニットおよび被駆動ユニットの信号ネットワークに1つ以上のインバータを追加または変更する。インバータの追加または変更は、さまざまな方法で行なわれることができる。例えば、いくつかの状況では、例えば1つ以上の既存のインバータのサイズを調整、または1つ以上の既存のインバータのネットワーク内にある場所を変えるなど、既存のインバータを変更するだけで十分な場合もある。もう1つの例として、例えばORゲートをNORゲートに置き換える、またはその逆、またはANDゲートをNANDゲートに置き換える、またはその逆など、既存の論理ゲートをもう1つの論理ゲートに置き換えることによってインバータを追加することができる。また、もう1つの例として、追加のインバータが被駆動ユニットの入力に埋め込まれ、それにより、1つのインバータのみが挿入されることを保証することができる。
【0050】
留意すべきことは、一般に、駆動ユニットと被駆動ユニットとの間のパスに奇数個のインバータが追加された場合、駆動ユニットまたは被駆動ユニットのいずれかが変更されて、正確な回路機能を維持する必要がある。前記変更は通常、駆動ユニットの出力に、または被駆動ユニットの入力に、追加のインバータを埋め込むことを含む。
【0051】
図6のプロセスは、例えば、ICまたは一部の追加の保護が必要な回路など、電子回路全体に実施することができる。
【0052】
いくつかの実施形態では、図6の方法など、開示された設計技術は、汎用コンピュータにより行なわれることができ、前記汎用コンピュータは、ソフトウェアでプログラムされて、本明細書に記載の機能を行う。例えば、ソフトウェアは、ネットワークからコンピュータに電子形式でダウンロードされ得るか、あるいは代替的または追加的に、非一時的な有形媒体、例えば磁気、光学、または電子メモリに提供および/または格納され得る。
【0053】
本明細書の実施形態は、主に状態遷移中での容量負荷の平衡化を解決しているが、本明細書に記載の方法およびシステムは、他のアプリケーション、例えばデータが変わらない状況(静的データ)での容量負荷の平衡化でも用いられることができる。このようなアプリケーションでは、平衡化されるパラメータは、論理「0」でのリーク電流と論理「1」でのリーク電流である。
【0054】
上述の実施形態は、例として引用されており、本発明は、上述に具体的に開示および記載された内容に限定されないことに留意されたい。むしろ、本発明の範囲は、上述の様々な特徴のコンビネーションおよびサブコンビネーションの両方、ならびに前述の説明を読んで当業者が知るであろう、先行技術に開示されていないその変形および修正を含む。参照することにより本特許出願に組み込まれた文書は、組み込まれた文書の用語の定義が本明細書で明示的または暗黙的になされた定義と矛盾する場合を除いて、本出願の不可欠な部分と見なされ、本明細書の定義のみが考慮されるべきである。
【符号の説明】
【0055】
20 IC
24 非安全回路
28 安全回路
32 駆動ユニット
36 被駆動ユニット
40 入力
44 出力
48 入力
52 駆動ユニット
56 被駆動ユニット
60 入力
64 出力
68 入力
72 インバータ
C、C1~C8 容量
C01、C02、C11、C12 容量
80~88 ステップ
図1
図2
図3
図4
図5A
図5B
図6