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

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

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

<>
  • 特許-セキュア集積回路及びその方法 図1
  • 特許-セキュア集積回路及びその方法 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-19
(45)【発行日】2022-04-27
(54)【発明の名称】セキュア集積回路及びその方法
(51)【国際特許分類】
   G06F 21/55 20130101AFI20220420BHJP
【FI】
G06F21/55 380
【請求項の数】 20
(21)【出願番号】P 2021002854
(22)【出願日】2021-01-12
(65)【公開番号】P2021111410
(43)【公開日】2021-08-02
【審査請求日】2021-01-12
(31)【優先権主張番号】16/741,779
(32)【優先日】2020-01-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】110001933
【氏名又は名称】特許業務法人 佐野特許事務所
(72)【発明者】
【氏名】ジヴ ハーシュマン
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2010-021624(JP,A)
【文献】国際公開第2005/027403(WO,A1)
【文献】特開2006-054568(JP,A)
【文献】特開2006-203416(JP,A)
【文献】米国特許出願公開第2017/0288855(US,A1)
【文献】米国特許出願公開第2018/0097618(US,A1)
【文献】特開2010-245753(JP,A)
【文献】米国特許出願公開第2015/0365228(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
それぞれに一つ又は複数の入力を受け取り、当該一つ又は複数の入力に対して組み合わせ論理演算を行って、一つ又は複数の出力を生成するように配置される複数の機能的に等価な組み合わせ論理回路と、
当該複数の機能的に等価な組み合わせ論理回路のうちの一つからの当該一つ又は複数の出力をサンプリングし、当該一つ又は複数のサンプリング出力を入力として当該複数の機能的に等価な組み合わせ論理回路のうちの他の一つに供給するように配置される一つ又は複数の状態サンプリングコンポーネントをそれぞれに含む複数の状態サンプリングコンポーネントと、
当該複数の機能的に等価な組み合わせ論理回路で処理するために複数組の入力データを受け取り、当該複数組の入力データを当該複数の機能的に等価な組み合わせ論理回路にルーティングし、当該複数の機能的に等価な組み合わせ論理回路から複数組の出力データを抽出し、当該各組の入力データに関連付けて当該各組の出力データを出力するように配置される制御回路と、を備え
当該複数の機能的に等価な組み合わせ論理回路のうちの少なくとも二つは、ハードウェアでの実現において互いに異なり、前記制御回路は、動作中に、以前の定義に従い、又はランダムに、結合の案を修正するセキュア集積回路。
【請求項2】
当該組み合わせ論理演算は、反復セキュア演算の反復演算を含むことを特徴とする請求項1に記載のセキュア集積回路。
【請求項3】
当該複数の組み合わせ論理回路の当該一つ又は複数のサンプリング出力が入力として、当該複数の組み合わせ論理回路のうちの他の一つに供給されることにより、一組の所与の入力データに適用される当該組み合わせ論理演算反復演算が、異なる当該複数の組み合わせ論理回路のうちの異なる組み合わせ論理回路によって実行されることを特徴とする請求項1に記載のセキュア集積回路。
【請求項4】
当該複数の組み合わせ論理回路の当該一つ又は複数のサンプリング出力が入力として、当該複数の組み合わせ論理回路のうちの他の一つに供給されることにより、当該他の一つの組み合わせ論理回路の所与の組み合わせ論理回路が、連続するクロックサイクルの間、異なる当該複数組の入力データに当該組み合わせ論理演算を適用することを特徴とする請求項1に記載のセキュア集積回路。
【請求項5】
少なくとも一つの当該複数の機能的に等価な組み合わせ論理回路は、当該複数の機能的に等価な組み合わせ論理回路のうちの一つの組み合わせ論理回路に対する負論理によって実現されることを特徴とする請求項1に記載のセキュア集積回路。
【請求項6】
当該制御回路は、対応する入出力インタフェースを介して当該複数組の入力データを受け取り、当該各組の出力データを同一の入出力インタフェースで出力するように配置されており、当該同一の入出力インタフェースは、当該各組の出力データに対応する当該組の入力データを受け取るためのものであることを特徴とする請求項1に記載のセキュア集積回路。
【請求項7】
当該制御回路は、周期的な交互の方式で、当該複数組の入力データを当該複数の機能的に等価な組み合わせ論理回路に割り当て、周期的な交互の方式で、当該複数の機能的に等価な組み合わせ論理回路から当該複数組の出力データを収集するように配置されることを特徴とする請求項1に記載のセキュア集積回路。
【請求項8】
当該制御回路は、当該複数組の入力データの少なくとも一部をランダムデータ又は擬似のランダムデータ(pseudorandom data)に初期化するように配置されることを特徴とする請求項1に記載のセキュア集積回路。
【請求項9】
当該複数の組み合わせ論理回路のうちの一つ又は複数は、下記の
(i)当該複数組の出力データを抽出した後、引き続き当該組み合わせ論理演算を適用すること、及び(ii)当該複数組の入力データが供給される前に、当該組み合わせ論理演算の適用を開始することの少なくとも一項を実行するように配置されることを特徴とする請求項1に記載のセキュア集積回路。
【請求項10】
当該制御回路は、当該複数組の入力データが当該複数の組み合わせ論理回路の少なくとも二つに供給される時点の間に、相対的な遅延を生成するように配置されることを特徴とする請求項1に記載のセキュア集積回路。
【請求項11】
複数の機能的に等価な組み合わせ論理回路を動作させて、当該複数の組み合わせ論理回路の各組み合わせ論理回路において一つ又は複数の入力を受け取り、当該一つ又は複数の入力に組み合わせ論理演算を適用して、一つ又は複数の出力を生成することと、
状態サンプリングコンポーネントを動作させて、当該複数の機能的に等価な組み合わせ論理回路のうちの一つからの当該一つ又は複数の出力をサンプリングし、当該一つ又は複数のサンプリング出力が入力として当該複数の機能的に等価な組み合わせ論理回路のうちの他の一つに供給されることと、
制御回路を使用して、当該複数の機能的に等価な組み合わせ論理回路で処理するために複数組の入力データを受け取り、当該複数組の入力データを当該複数の機能的に等価な組み合わせ論理回路にルーティングし、当該複数の機能的に等価な組み合わせ論理回路から複数組の出力データを抽出し、当該各組の入力データに関連付けて当該各組の出力データを出力することと、を含むセキュア集積回路におけるデータ処理を行い、
当該複数の機能的に等価な組み合わせ論理回路のうちの少なくとも二つは、ハードウェアでの実現において互いに異なり、前記制御回路は、動作中に、以前の定義に従い、又はランダムに、結合の案を修正する方法。
【請求項12】
当該組み合わせ論理演算は、反復セキュア演算の反復演算を含むことを特徴とする請求項11に記載の方法。
【請求項13】
当該複数の組み合わせ論理回路の当該一つ又は複数のサンプリング出力が当該複数の組み合わせ論理回路のうちの他の一つに供給されることは、
当該複数の組み合わせ論理回路のうちの異なる組み合わせ論理回路によって、所与の一組の入力データに対して当該組み合わせ論理演算の反復演算が実行されることを含むことを特徴とする請求項11に記載の方法。
【請求項14】
当該一つ又は複数のサンプリング出力が当該複数の組み合わせ論理回路のうちの他の一つに供給されることは、
当該複数の組み合わせ論理回路のうちの所与の一つにおいて、連続するクロックサイクルの間、複数の異なる当該複数組の入力データに当該組み合わせ論理演算を適用することを含むことを特徴とする請求項11に記載の方法。
【請求項15】
当該組み合わせ論理演算を適することは、
当該複数の機能的に等価な組み合わせ論理回路の少なくとも一つにおいて、当該複数の機能的に等価な組み合わせ論理回路のうちの他の一つに対する負論理によって当該組み合わせ論理演算を適用することを含むことを特徴とする請求項11に記載の方法。
【請求項16】
当該複数組の入力データを受け取ることは、対応する複数の入出力インタフェースを介して当該複数組の入力データをそれぞれに受け取ることを含み、
当該複数組の出力データを出力することは、当該複数組の出力データに対応する当該複数組の入力データを受け取る同一の入出力インタフェースにおいて当該各組の出力データを出力することを含むことを特徴とする請求項11に記載の方法。
【請求項17】
当該複数組の入力データをルーティングすることは、周期的な交互の方式で、当該複数組の入力データを当該複数の機能的に等価な組み合わせ論理回路に割り当てることを含み、
当該複数組の出力データを抽出することは、周期的な交互の方式で、当該複数の機能的に等価な組み合わせ論理回路から当該複数組の出力データを収集することを含む請求項11に記載の方法。
【請求項18】
当該複数組の入力データの少なくとも一部をランダムデータ又は擬似のランダムデータに初期化することを更に含むことを特徴とする請求項11に記載の方法。
【請求項19】
当該組み合わせ論理演算を適用することは、
当該複数の組み合わせ論理回路のうちの一つ又は複数において、下記の
(i)当該複数組の出力データを抽出した後、引き続き当該組み合わせ論理演算を適用すること、及び
(ii)当該複数組の入力データが供給される前に、当該組み合わせ論理演算の適用を開始することの少なくとも一項を実行することを含むことを特徴とする請求項11に記載の方法。
【請求項20】
当該複数組の入力データが当該組み合わせ論理回路の少なくとも二つに供給される時点の間に、相対的な遅延を生成することを更に含むことを特徴とする請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に電子回路におけるデータセキュリティに関し、特に、バイパス攻撃を防止するための方法及びシステムに関する。
【背景技術】
【0002】
電子装置から情報を抽出するために、バイパス攻撃と呼ばれる様々な技術が開発されている。バイパス攻撃は通常、装置に記憶された秘密情報にアクセスするために、権限のない人によって行われる。一部のバイパス攻撃は、電子装置が通常、論理コンポーネントの変換の間に電力を消費するという事実を利用した。攻撃は、情報を担持する装置に電気的接触をすることなく、装置から発信された電子信号及び/又は電磁放射を非侵襲的に測定することで、情報を抽出する。
【0003】
バイパス攻撃から電子装置を保護するための様々な対策が提案されている。例えば、バダム(Baddam)は、2012年2月に、サウサンプトン大学の物理と応用科学学院、及び電子とコンピュータ科学学院の博士学位論文「差動電力解析に対するハードウェアレベル対策」において、いくつかの対策、特に、デュアルレールプリチャージ(Dual Rail Precharge、DRP)回路について記述されている。
【発明の概要】
【0004】
本発明の実施例は、セキュア集積回路(IC)を提供し、当該セキュア集積回路は、複数の機能的に等価な(functionally‐equivalent)組み合わせ論理回路と、複数組の状態サンプリングコンポーネントと、制御回路とを備える。組み合わせ論理回路のそれぞれは、一つ又は複数の入力を受け取り、前記一つ又は複数の入力に対して組み合わせ論理演算(combinational-logic-operation)を適用し、一つ又は複数の出力を生成するように配置される。各組の状態サンプリングコンポーネントは、一つ又は複数の状態サンプリングコンポーネントを含み、これらの状態サンプリングコンポーネントは、機能的に等価な組み合わせ論理回路のうちの一つからの一つ又は複数の出力をサンプリングし、一つ又は複数のサンプリング出力を入力として他の一つの機能的に等価な組み合わせ論理回路に供給するように配置される。制御回路は、機能的に等価な組み合わせ論理回路で処理するために複数組の入力データを受け取り、複数組の入力データを組み合わせ論理回路にルーティングし、組み合わせ論理回路から複数組の出力データを抽出し、各組の入力データに関連付けて各組の出力データを出力するように配置される。
【0005】
いくつかの実施例では、組み合わせ論理演算は、反復セキュア演算の反復演算を含む。一部の実施例では、複数の組み合わせ論理回路の一つ又は複数のサンプリング出力が入力として、複数の組み合わせ論理回路のうちの他の一つに供給されることにより、一組の所与の入力データに適用される組み合わせ論理演算の反復演算が、異なる複数の組み合わせ論理回路のうちの異なる組み合わせ論理回路によって実行される。いくつかの実施例では、複数の組み合わせ論理回路の一つ又は複数のサンプリング出力が入力として、複数の組み合わせ論理回路のうちの他の一つに供給されることにより、他の一つの組み合わせ論理回路の所与の組み合わせ論理回路が、連続するクロックサイクルにおいて、異なる複数組の入力データに当該組み合わせ論理演算を適用する。
【0006】
一つの実施例では、複数の機能的に等価な組み合わせ論理回路のうちの少なくとも二つは、ハードウェアでの実現において互いに異なる。
【0007】
他の一つの実施例では、制御回路は、対応する入出力インタフェースを介して複数組の入力データを受け取り、各組の出力データを同一の入出力インタフェースで出力するように配置されており、同一の入出力インタフェースは、各組の出力データに対応する複数組の入力データを受け取るためのものである。さらに他の実施例では、制御回路は、周期的な交互(cyclic alternation)の方式で、複数組の入力データを複数の機能的に等価な組み合わせ論理回路に割り当て、周期的な交互の方式で、複数の機能的に等価な組み合わせ論理回路から複数組の出力データを収集するように配置される。
【0008】
公開された実施例では、制御回路は、少なくとも一部の入力データをランダムデータ又は仮想ランダムのデータに初期化するように配置される。一つの実施例では、複数の組み合わせ論理回路のうちの一つ又は複数は、下記の(i)複数組の出力データを抽出した後、引き続き組み合わせ論理演算を適用すること、及び(ii)複数組の入力データが供給される前に、組み合わせ論理演算の適用を開始することの少なくとも一項を実行するように配置される。追加的又は代替的に、前記制御回路は、複数の組み合わせ論理回路の少なくとも二つに複数組の入力データが供給される時点の間に、相対的な遅延を生成するように配置される。
【0009】
本発明の実施例によれば、セキュア集積回路(IC)におけるデータ処理を行う方法をさらに提供する。上記方法は、複数の機能的に等価な組み合わせ論理回路を動作させて、当該複数の組み合わせ論理回路の各組み合わせ論理回路において一つ又は複数の入力を受け取り、当該一つ又は複数の入力に組み合わせ論理演算を適用して、一つ又は複数の出力を生成することと、状態サンプリングコンポーネントを動作させて、当該複数の機能的に等価な組み合わせ論理回路のうちの一つからの当該一つ又は複数の出力をサンプリングし、当該一つ又は複数のサンプリング出力が入力として当該複数の機能的に等価な組み合わせ論理回路のうちの他の一つに供給されることと、制御回路を使用して、当該複数の機能的に等価な組み合わせ論理回路で処理するために複数組の入力データを受け取り、当該複数組の入力データを当該複数の機能的に等価な組み合わせ論理回路にルーティングし、当該複数の機能的に等価な組み合わせ論理回路から複数組の出力データを抽出し、各組の入力データに関連付けて当該各組の出力データを出力することと、を含む。
【0010】
以下、図面を参照して実施例を詳細に説明することにより、本発明をより完全に理解することができる。
【図面の簡単な説明】
【0011】
図1図1は、本発明の実施例に係る、結合された、機能的に等価な組み合わせ論理回路を備えるセキュア電子装置を模式的に示すブロック図である。
図2図2は、本発明の代替実施例に係る負論理組み合わせ論理回路を備えるセキュア電子装置を模式的に示すブロック図である。
【発明を実施するための形態】
【0012】
本明細書で説明される本発明の実施例は、バイパス攻撃から電子装置を保護するための改善された方法及び回路を提供する。開示された技術は、例えば、セキュア組込み型コントローラ及び記憶装置などの様々な種類のセキュア装置に応用することができる。
【0013】
いくつかの開示された実施例では、セキュア集積回路(IC)は、同時に動作するように配置された複数の組み合わせ論理回路を備える。組み合わせ論理回路のそれぞれは、一つ又は一つ以上の入力を受け取り、前記入力に組み合わせ論理演算を適用して、一つ又は一つ以上の出力を生成するように配置されている。組み合わせ論理演算には通常、例えば、数学演算、暗号化、復号化、認証演算などいくつかの反復セキュア演算(iterative secure computation)の反復演算(iteration)が含まれる。
【0014】
開示された実施例では、複数の組み合わせ論理回路は、機能的に互いに等価であり、すなわち、同じ入力が与えられたときに同じ出力が生成されるが、内部実現及び/又は挙動が異なる可能性がある。設計者は、意図的に若干の差異を導入することがあり、例えば、デザイン又は総合的なツール、或いは製造プロセスにおける処理変更によって他の差異を導入することができる。
【0015】
当該集積回路は、複数組のフリップフロップ(Flip-Flop、FF)をさらに備え、各組のフリップフロップは、対応する組み合わせ論理回路の出力をサンプリングし、サンプリング出力を次のクロックサイクルの入力とするように配置される。組み合わせ論理回路、インターフェース信号、フリップフロップからなる対応する組み合わせは、まとめて「処理エンジン」と呼ばれることもある。
【0016】
しかしながら、従来のようにサンプリングの出力を同一の組み合わせ論理回路の入力にフィードバックする代わりに、開示された実施例では、少なくともいくつかのフリップフロップは、サンプリング出力を入力として他の一つの組み合わせ論理回路に供給するように配置される。複数の組み合わせ論理回路は機能的に等価であり、記憶なし(ステートレス)で入力のみに依存した組み合わせ論理演算を適用しているため、他の組み合わせ論理回路を用いても、このような配置により、正しい出力信号を生成することができる。
【0017】
例示的な実施例では、複数の組み合わせ論理回路は、上記の方式で周期的に互いに結合されている(すなわち、各組み合わせ論理回路の出力は、サンプリングされて入力として次の組み合わせ論理回路に供給され、最後の組み合わせ論理回路の出力回路は、サンプリングされて入力として第1の組み合わせ論理回路に供給される)。従って、反復セキュア演算の一連の反復演算を実行する場合、連続的な反復演算は、様々な組み合わせ論理回路によって交互に実行される。複数のこのようなシーケンス(複数の反復セキュア演算)が並行して実行されると、所与の組み合わせ論理回路は、一つのクロックサイクルから次のクロックサイクルまでの間、異なるセキュア演算の組み合わせ論理演算の間で交替する。この交替により、バイパス攻撃者は実行中のセキュア演算の特徴を認識することが困難になる。
【0018】
機能的に等価な組み合わせ論理回路間の内部の差異は、セキュア集積回路の消費電力及び放出される放射曲線をさらに分散させるため、バイパス攻撃への適応性をさらに高める。セキュア演算の反復演算は複数の組み合わせ論理回路に分布しているため、開示された、フォールトインジェクション攻撃を防止するための配置も有用である。以下に説明するように、フォールトインジェクションに有用な他の特徴は、いくつかの実施例では、一つ又は複数の組み合わせ論理回路が既知の解答テストを実行することができることである。
【0019】
開示された配置を使用する場合、通常、正しい組み合わせ論理回路からセキュア演算の最終結果を抽出し(すなわち、最後の反復演算を実行する組み合わせ論理回路の出力を抽出する)、最終結果を、対応する複数組の入力データと組み合わせる必要がある。例えば、複数の対応する入出力(I/O)インタフェースで複数組の入力データ(例えば、暗号化のための複数の平文)を受け取る実施例を考えてみる。この実施例では、通常、正しい組み合わせ論理回路の出力から各組の出力データ(例えば、それぞれの暗号化データワード)を抽出し、各組の出力データを入出力インタフェースで出力し、これらにより、対応する複数組の入力データを受け取る必要がある。
【0020】
従って、いくつかの実施例では、セキュア集積回路は制御回路をさらに備え、上記の制御回路は、機能的に等価な組み合わせ論理回路で処理するために複数組の入力データを受け取り、複数組の入力データを機能的に等価な組み合わせ論理回路にルーティングし、機能的に等価な組み合わせ論理回路から複数組の出力データを抽出して、各組の出力データを対応する各組の入力データに関連付けて出力するように配置される。
【0021】
いくつかの実施例では、セキュア集積回路の設計の間に、自動化プロセス(例えば、スクリプトを使用する)を使用して機能的に等価な組み合わせ論理回路間の結合を実現することができる。
【0022】
本明細書に記載される方法及びシステムは、複数の組み合わせ論理回路を含むICにおいて、強化された、バイパス攻撃に抵抗する弾力性を提供した。同時に、いくつかの実施例では、開示された技術は周波数速度又はスループットの損失をもたらさない。ここで、これらの技術の様々な実現例が説明された。また、例えば、一つ又は複数の組み合わせ論理回路を負論理により実現するなど、バイパス攻撃に抵抗する弾力性をより向上させる実施例も説明された。
■ システムの説明
【0023】
図1は、本発明の一実施例に係る、バイパス攻撃から保護されたセキュア電子装置24を模式的に示すブロック図である。セキュア電子装置24は、セキュア集積回路(IC)の一部であり、例えば、暗号化回路が集積された記憶装置であってもよく、又は暗号化又は認証回路を備える組込み型コントローラ(Embedded Controller、ECと略記される)や基板管理コントローラ(Baseboard Management Controller、BMCと略記される)であってもよく、又は他の任意の適切なセキュア電子装置であってもよい。
【0024】
セキュア電子装置24は図1の下部に示されている。比較及び説明を容易にするために、図1の上部には、想定された従来装置20が示されている。以下の説明では、まず、従来装置20の動作について説明し、続いてセキュア電子装置24の実施例について説明する。
【0025】
想定の従来装置20は、複数の組み合わせ論理回路28を備えている。各組み合わせ論理回路は、一つ又は複数の入力を受け取り、一つ又は複数の入力に対して組み合わせ論理演算を適用して、一つ又は複数の出力を生成するように配置されている。各組み合わせ論理回路28は、一組における一つ又は複数の状態サンプリングコンポーネント、この例ではフリップフロップ(FF)組32に結合され、各クロックサイクルで組み合わせ論理回路の出力をサンプリングし、次のクロックサイクルで組み合わせ論理回路の入力としてサンプリング出力を供給する。上記のように、組み合わせ論理回路、インターフェース信号、及び対応するFFグループ組を「処理エンジン」と呼ぶことがある。
【0026】
本例では、従来装置20は、28A、28B、及び28Cで示される三つの組み合わせ論理回路を備え、これらは、32A、32B、及び32Cで示される対応するフリップフロップ組に結合される。組み合わせ論理回路28Aの入出力はI/Oとして示され、組み合わせ論理回路28の入出力はI/Oとして示され、組み合わせ論理回路28Cの入出力はI/Oとして示される。
【0027】
組み合わせ論理回路28A~28Cの各々は、特定の組み合わせ論理演算を実行するように配置されており、通常はセキュア演算又はその構成要素である。組み合わせ論理演算の例には、乗算、暗号化、復号化、署名又は認証プロセスの反復演算、又は他の適切なタイプの組み合わせ論理演算が含まれる。例えばセキュアハッシュアルゴリズム(Secure Hash Algorithm、SHAと略記される)、データ暗号化標準(Data Encryption Standard、DESと略記される)、高度暗号化標準(Advanced Encryption Standard、AESと略記される)などの安全処理動作は通常、複数の連続するクロックサイクルで実行されるこのタイプの組み合わせ論理動作のシーケンスを含む。
【0028】
例えば、各組み合わせ論理回路(各回路28A~28C)が、あるタイプの反復暗号化アルゴリズムの反復演算を実行するように配置されている場合を考えてみる。典型的な動作フローでは、組み合わせ論理回路28Aは、暗号化されるべき入力データワードIN1をI/Oで受け取り、組み合わせ論理回路28Bは、暗号化されるべき他の入力データワードIN2をI/Oで受け取り、組み合わせ論理回路28Cは、暗号化されるべき他の入力データワードIN3をI/Oで受け取る。組み合わせ論理回路28Aは、入力データワードから一連の反復を実行する。各反復の組み合わせ論理回路28Aでは、その入力に組み合わせ論理演算を適用する(I/Oからであってもよく、又はフリップフロップ組32Aの以前の状態からであってもよい)。フリップフロップ組32Aは、出力をサンプリングし、次の反復演算の入力とする。動作の手順に従い、暗号化されたデータワードOUT1をI/Oで出力するとともに、組み合わせ論理回路28Bは、I/O上に供給された入力データワードIN2から一連の反復演算を実行し、暗号化されたデータワードOUT2をI/Oで出力する。同様に、組み合わせ論理回路28Cは、I/Oで受け取った入力データワードIN3を暗号化して、暗号化されたデータワードOUT3をI/Oで出力する。
【0029】
図面に示すように、従来装置20では、組み合わせ論理回路28A~28Cは互いに独立して動作する。各組み合わせ論理回路28は、それ自体の入力を受け取り、組み合わせ論理演算を入力に適用し、対応するフリップフロップ組32を使用して出力をサンプリングし、サンプリング出力を自身の入力にフィードバックして次のクロックサイクルに用いる。各組み合せ論理回路の独立した動作により、攻撃者は消費電力及び/又は放出された放射の中の特徴パターンを識別することができるため、このような従来のシステムはバイパス攻撃に敏感である。
【0030】
いくつかの実施例では、バイパス攻撃に対する敏感性は、異なる処理回路(組み合わせ論理回路28A~28C )の間に意図的な結合を導入することによって低減される。図1の下部のセキュア電子装置24は、本発明の実施例に係る結合の構造を示す。
【0031】
図1のセキュア電子装置24のシステムの構造に対する仮定は、組み合わせ論理回路28A~28Cが互いに機能的に等価であることである。本明細書では、「機能的に等価」とは、同じ複数組の入力データが与えられた場合に、いずれかの組み合わせ論理回路が同じ複数組の出力データを生成することを意味する。しかしながら、異なる組み合わせ論理回路の間で、内部ハードウェアの実現及び/又は挙動の差異が許容される。
【0032】
内部実現上の差異のいくつかの非限定的な例は、依然として機能的に等価なままであり、以下の内容を含む。
■ 所望の組み合わせ論理演算に適合させるように、異なる予め設定されたマスク(preconfigured masks)を用いて、入力と出力に対して異なる組み合わせ論理回路におけるルックアップテーブル(Look-Up Table、LUT)を作成し、そして、ルックアップテーブルの入力と出力を対応するマスクとに対してXOR演算を行ってしてもよい。
■ A=B+Cに対して、組み合わせ論理演算(X*A)と(X*B+X*C)は機能的に等価であるが、実現方式と消費電力が異なる。
■ 任意の組み合わせ論理演算は、積の和(sum-of-product)又は和の積(product-of-sum)として実現され得る。上記実現は異なるが、機能的には等価である。
■ 異なる物理的制約や異なる合成指令のため、同じRTL論理によって実現される組み合わせ論理演算は異なる場合もある。
【0033】
I/O上での暗号化のために入力データワードIN1が供給され、I/O上での暗号化のために入力データワードIN2が供給され、I/O上での暗号化のために入力データワードIN3が供給される例示的な場合を再び考えてみる。セキュア電子装置24の配置では、組み合わせ論理回路28Aは、入力データワードIN1に対して第1の反復を実行するが、結果出力はフリップフロップ組32Bによってサンプリングされる。このようにして、組み合わせ論理回路28Bは、このシーケンスにおける次の反復演算(次のクロックサイクル‐入力データワードIN1を暗号化する第2の反復演算)を実行する。(組み合わせ論理回路28Bの)結果出力はフリップフロップ組32Cによってサンプリングされ、次の反復演算(入力データワードIN1暗号化する第3の反復演算)が組み合わせ論理回路28Cで実行される。このシーケンスは循環的に実行され、すなわち、組み合わせ論理回路28Cの出力は、フリップフロップ組32Aによってサンプリングされ、組み合わせ論理回路28Aに入力として供給される。
【0034】
従って、IN1を暗号化するために必要な組み合わせ論理演算のシーケンスは、組み合わせ論理回路28A、28B、28C、28A、28B、28C、28A等によって周期的に実行される。組み合わせ論理回路28A~28Cは互いに機能的に等価であるため、最終結果(暗号化データワードOUT1)は正しい。組み合わせ論理回路のうちの一つの出力では、暗号化されたデータワード(反復演算を実行する回数に依存する)が供給される。
【0035】
同様に、IN2を暗号化するために必要な組み合わせ論理演算のシーケンスは、回路28Bで開始し、組み合わせ論理回路28C、28A、28B、28C、28A、28B等において循環的に行われる。IN3を暗号化するために必要な組み合わせ論理動作シーケンスは、組み合わせ論理回路28Cで開始し、回路28A、28B、28C、28A、28B、28C等において循環的に行われる。
【0036】
上記の説明から分かるように、一つのクロックサイクルから次のクロックサイクルまでの間、所与の組み合わせ論理回路は、異なるシーケンスに属する組み合わせ論理演算の間で交替する。例えば、組み合わせ論理回路28Aは、連続するクロックサイクルで、次のような動作を実行する。
■データワードIN1の1回目の暗号化反復演算。
■データワードIN3の2回目の暗号化反復演算。
■データワードIN2の3回目の暗号化反復演算。
■データワードIN1の4回目の暗号化反復演算。
■データワードIN3の5回目の暗号化反復演算。
■データワードIN2の6回目の暗号化反復演算。
■…
【0037】
上述した暗号化に関連の例では、制御回路は、暗号化シーケンスの開始時(1回目の暗号化反復演算の前)にI/Oインタフェースからの機能入力を組み合わせ論理回路に供給し、暗号化シーケンスの完了時(最終回の暗号化反復演算の後)に、組み合わせ論理回路から出力を抽出して、I/Oインタフェースに供給する。より一般的な場合、制御回路は、任意の適切なクロックサイクル(例えば、各クロックサイクル)で一つ又は複数の入力を供給し、任意の適切なクロックサイクル(例えば、各クロックサイクル)で一つ又は複数の出力を抽出することができる。要約すると、(i)セキュア電子装置24の現在の状態は、様々なフリップフロップ組によって保持され、(ii)次の状態は現在の状態であり、組み合わせ論理動作及びI/Oインタフェースからの一つ又は複数の入力の関数であり、(iii)I/Oインタフェースに出力されるのは現在の状態であり(例えば、一部)、組み合わせ論理動作及びI/Oインタフェースからの一つ又は複数の入力の反映である。
【0038】
他の組み合わせ論理回路も同様に暗号化シーケンスの間で交替する。本例のセキュア電子装置24の組み合わせ論理回路28A~28Cの動作を下記の表1にまとめた。
【表1】
【0039】
表1に示すように、各データワードの暗号化は、複数の機能的に等価な組み合わせ論理回路の間に分布されている。特定の組み合わせ論理回路の観点から、すなわち、連続するクロックサイクルにおいて、組み合わせ論理回路は、異なる暗号化シーケンスに属する組み合わせ論理動作の間で交替する。
【0040】
組み合わせ論理回路の分布、結合、交互動作は、セキュア電子装置24の電力消費及び放射分布にノイズを導入する。特に、上記のように、組み合わせ論理回路の交互動作は、(i)一連の組み合わせ論理演算におけるデータ変換間の関係、及び(ii)観察された電力消費を説明した。いくつかの付加的なノイズは、組み合わせ論理回路が機能的に等価であるわけで100%同一ではない可能性がある。同じ入力を処理する場合でも、組み合わせ論理回路間の差異には、例えば、タイミング、電力消費及び/又は放射の差異が含まれる場合がある。結果として、バイパス攻撃に対する防御力が大幅に強化される。
【0041】
上記のように、所与の組み合わせ論理動作シーケンス(例えば、暗号化動作)の中間出力は、一つの組み合わせ論理回路から他の一つの組み合わせ論理回路に転送される。組み合わせ論理回路の数と順序における組み合わせ論理演算の数に応じて、シーケンスが与えられた組み合わせ論理演算(例えば、暗号化されたデータワード)の最終結果は、任意の組み合わせ論理回路によって生成されることができる。
【0042】
一方で、通常、最終結果を初期の入力データに関連付ける必要がある。例えば、あるI/Oインタフェース(I/O1、I/O2、I/O3)で暗号化するために入力データワードが供給される場合、通常、同一のI/Oインタフェースで暗号化されたデータワードを返す必要がある。
【0043】
そのために、いくつかの実施例では、セキュア電子装置24は制御回路を備え、当該制御回路は、(i)入力データを適切な組み合わせ論理回路にルーティングし、(ii)適切な組み合わせ論理回路から出力データを抽出し、そして(iii)出力データを対応する入力データに関連付けるように配置される。
【0044】
制御回路は通常、組み合わせ論理回路間の交替パターンを理解するため、正しいクロックサイクルで、正しい組み合わせ論理回路から所与の組み合わせ論理動作シーケンスの最終結果を抽出し、当該最終結果を適切なI/Oインタフェースに出力することができる。
【0045】
上記の例を参照すると、制御回路は、あるI/Oインタフェースで入力データワードを受け取り、正しい組み合わせ論理回路から対応する出力データワード(例えば、入力データワードの暗号化バージョン)を抽出し、出力データワードを入力データワードを受け取る同一のI/Oインタフェースにルーティングするように配置されている。
【0046】
図1の実施例では、制御回路は、バス36と、 三つのマルチプレクサ/デマルチプレクサ40A~40C(便宜上、MUXと略記される)と、状態マシン44とを備える。MUX40A、40B、40Cは、それぞれ、I/OインタフェースであるI/O1、I/O2、I/O3に結合されている。各MUXはいずれもバス36を介してI/Oインタフェースからの複数組の入力データを任意の組み合わせ論理回路にルーティングすることができる。逆方向に、各MUXはいずれもバス36を介して任意の組み合わせ論理回路からの複数組の入力データをI/Oインタフェースにルーティングすることができる。MUX40A、40B、40Cの切り替えは、状態マシン44によって制御される。一例では、状態マシン44は、循環モジュロ3カウンタ(通常は、モジュロnカウンタであり、nは、組み合わせ論理回路の数である)を備える。
【0047】
なお、上記の説明は、単に暗号化動作を例示したものである。代替の実施例では、セキュア電子装置24内の組み合わせ論理回路の結合構造は、一連の組み合わせ論理動作を含む任意の他の適切な動作の実行に使用できる。いくつかの例を挙げると、このような動作の例は、セキュア演算(例えば、復号化、署名及び/又は署名検証)、汎用演算(例えば、算術論理ユニット(Arithmetic-Logic Unit、ALU)、デジタル信号処理(Digital Signal Processing、DSP)又はグラフィックス処理ユニット(Graphics Processing Unit、GPU))の動作、デジタルフィルタリング、及びデータ移動の動作を含む。
【0048】
図1の例では、各フリップフロップ組32は、ピア(peer)組み合わせ論理回路の出力に対してサンプリングした後に、その対応する組み合わせ論理回路28に入力を供給する。結合は逆方向に行ってもよい。言い換えると、代替の実施例では、各フリップフロップ組32は、対応する組み合わせ論理回路28の出力をサンプリングし、サンプリング出力を入力としてピア組み合わせ論理回路に供給することができる。実際には、各フリップフロップ組32は、二つの組み合わせ論理回路28の間で結合され、それらの両方に等価に関連付けられていると見なすことができる。
【0049】
なお、図1に示す多数の相互接続、例えば、フリップフロップ組32への/からの相互接続及び組み合わせ論理回路28への/からの相互接続は、通常、複数の信号線を含む。図1では、単に明確にするために、これらの相互接続を単線で描いている。
■ 負の組み合わせ論理を使用した組み合わせ論理回路
【0050】
いくつかの実施例では、否定論理を使用して、安全装置内の組み合わせ論理回路のうちの少なくとも一つを実現する。本明細書では、「負論理」とは、他の一つの組み合わせ論理回路(「基準回路」)と比較して、組み合せ論理が論理「1」を論理「0」として解釈することを意味し、その逆も同様である。負論理の組み合わせ論理回路を基準回路と機能的に等価なものとするために、前者の全ての入力及び出力にインバータ(NOTゲート)を配置した。
【0051】
負論理を用いる簡単な例として、「アンド」ゲートであり、この「アンド」ゲートの機能は入力及び出力にインバータを有する「オア」ゲートと同等である。組み合わせ論理回路28で用いられるセキュア演算のような、より複雑度の高い組み合わせ論理演算は、機能的に等価な負論理に変換されて実現することも可能である。負論理と正論理の組み合わせ論理回路を混合したものを用いて安全装置を実現することにより、バイパス攻撃に対する装置の弾力性をさらに向上させることができる。
【0052】
図2は、本発明の代替の実施例に係る負論理組み合わせ論理回路を用いたセキュア電子装置50を模式的に示すブロック図である。この例では、セキュア電子装置50は、 二つの組み合わせ論理回路54及び58を備え、組み合わせ論理回路58が組み合わせ論理回路54に対して負論理を使用しても、それらは互いに機能的に等価である。
【0053】
二つの組み合わせ論理回路の場合、セキュア電子装置50の高レベルのシステム構造は、図1のセキュア電子装置24と同様である。すなわち、フリップフロップ60Aは、組み合わせ論理回路58の出力をサンプリングし、これらのサンプリング出力を、次のクロックサイクルで入力として組み合わせ論理回路54に供給する。同様に、フリップフロップ60Bは、組み合わせ論理回路54の出力をサンプリングし、これらの出力を次のクロックサイクルの組み合わせ論理回路58への入力として供給される。
【0054】
一対の入力MUX68Aと68Bは、二つの組み合わせ論理回路をIOとIOとで示される二つのI/Oインタフェースの入力IN1とIN2に接続する。一対の出力MUX69Aと69Bは、二つの組み合わせ論理回路を二つのI/OインタフェースであるIOとIOの出力OUT1とOUT2に接続する。この例では、MUX68A、68B、69A及び69Bを制御する状態マシンは、フリップフロップ組74及びインバータ78によって実現されるモジュロ2カウンタを備える。
【0055】
図1の配置と異なり、図2の配置では、組み合わせ論理回路58は、組み合わせ論理回路54に対して、負論理を用いている。そのため、組み合わせ論理回路58は、その全体の入力と出力(組み合わせ論理回路54に接続された入力と出力、及びI/Oインタフェースに接続された入力と出力を含む)にインバータ(64A、64B、70A、 70Bと示される)を有している。。本明細書では、I/Oインタフェースと状態サンプリングコンポーネント(すなわち、インバータを含む)の観点から見ると、組み合わせ論理回路54、58も機能的に等価である。
【0056】
所与の組み合わせ論理演算の負論理は、様々な方法により実現することができる。いくつかの実施形態では、例えば、波動的差分論理(WDDL)を使用することができる。WDDLは、Verbauwhedeによる「デジタル回路:なぜ漏洩するのか、どのように対応すべきか」、暗号機能の設計と安全性、アルゴリズムと装置、アルゴリズムと装置、ブルガリアアルベナ、2013年7月、及びTitiらによる「WDDLと差分ルーティングを持つプロトタイプIC-DPA抵抗評価」(第7回暗号化ハードウェアと組込み型システム国際シンポジウム、CHES、2005年)に基づいて実現されるものである。
【0057】
図2の負論理実現は、異なる方式で組み合わせ論理回路を実現すると共に、それらの間の機能的等価を維持する極端な方法と見なすことができる。追加的又は代替的に、機能的に等価な組み合わせ論理回路の間には、他の差異が存在してもよい。設計者は、意図的に若干の差異を導入することがある。例えば、デザイン又は総合的なツール、或いは製造プロセスにおけるプロセス変更によって他の差異を導入することができる。内部実現の方式におけるこのような差異は、セキュア集積回路の電力消費及び放射放出曲線の多様化に寄与し、この方式によりバイパス攻撃への適応性を向上させる。
【0058】
上記の図1について説明したように、図2では、多数の相互接続は、複数の信号線を含む。同様に、様々なMUX及びインバータ(インバータ78を除く)は通常、複数のコンポーネント又は複数の信号コンポーネントを含む。図2では、単に明確にするために、これらの要素を単線で描いている。
【0059】
図1及び図2に示す電子装置の構成を図1に示す。図1及び図2は、単に概念を明確にするために描かれた例示的な配置である。代替の実施例では、任意の他の適切な配置を使用可能である。
【0060】
例えば、開示された技術は、二つ又は三つの組み合わせ論理回路の場合に限定されず、任意の適切な数の組み合わせ論理回路と共に使用することができる。負論理を用いて、任意の適切な数の組み合わせ論理回路(又は無い)を実現することができる。さらに別の例として、開示された技術は、フリップフロップ組に限定されるものではなく、例えば、ラッチ、スタティックランダムアクセスメモリ(SRAM)ユニット、又は任意の他の適切なタイプのメモリユニットなどの他のタイプの状態サンプリングコンポーネントを用いて実現することができる。各サンプルの出力は「論理のハイ」又は「論理のロー」であってもよい。
【0061】
バイパス攻撃を解決する他の態様は、2018年11月18日に登録査定となった米国特許出願第16/194,342号において解決され、当該特許出願はすでに本特許出願の譲受人に譲渡されており、その開示内容は参照として本明細書に引用される。
【0062】
様々な実施例では、例えば、一つ又は複数の個別コンポーネント、一つ又は複数の専用集積回路(Application-Specific Integrated Circuits、ASICs)、及び/又は一つ又は複数のフィールドプログラマブルゲートアレイ(Field-Programmable Gate Arrays、FPGAs)などの任意の適切なハードウェアを用いて、任意の開示された装置を実現することができる。
■ その他の実施形態と変更
【0063】
以下の説明は、いくつかの追加の実施例と変形を示している。この説明は、例示のみとして、図1のセキュア電子装置24及びその構成要素を参照した。
【0064】
上記の図1の説明では、全ての入力データセット(I/O1、I/O2、I/O3で供給される入力データ)は、安全処理のために供給される実データであった。代替の実施例では、制御回路は、一組又は複数組の入力データをランダム又は擬似のランダムのデータに初期化し、一組又は複数組の他の入力データを本当のデータで初期化して、セキュア処理を行う。例えば、I/Oで供給される入力データは擬似のランダムのデータを含むことができ、I/O及びI/Oで供給される入力データは本当のデータを含むことができる。この場合、擬似のランダムのデータは、様々な組み合わせ論理回路28にわたって転送され、組み合わせ論理動作を経てさらにランダム化される。このようにして、組み合わせ論理回路28で処理されている本当のデータをマスクするのに役立つ。
【0065】
一つ又は複数の組み合わせ論理回路で仮想ランダムデータを処理する能力は、セキュリティレベルとスループットとの間の配置可能なトレードオフを提供する。セキュリティを向上させるためにスループットを犠牲にし、制御回路は、入力データの上位部分を擬似のランダムに設定してもよく、その逆も同様である。この設定はユーザによって定義できる。
【0066】
いくつかの実施例では、一つ又は複数の組み合わせ論理回路28は、出力データが抽出された後も動作し続ける。すなわち、組み合わせ論理動作を適用する。追加的または代替的に、入力データが供給される前に、一つ又は複数の組み合わせ論理回路28は動作を開始し、すなわち、組み合わせ論理動作を適用する。
【0067】
例示的な実施例では、組み合わせ論理回路28は、入力データがそれらに与えられたかどうかにかかわらず、反復演算シーケンスの完了後及び新たな入力データの準備ができた場合を含めて、連続して動作する。最終結果(一組の出力データ)の準備ができた場合に、制御回路は、それを組み合わせ論理回路とは別の出力レジスタ又はバッファ領域に書き込むことができる。
【0068】
いくつかの実施例では、制御回路は、組み合わせ論理回路28から出力データを読み取る前に、及び/又は新たな入力データを組み合わせ論理回路28に供給する前に、ランダムな遅延を生成することができる。
【0069】
一つの例示的な実現では、制御回路は、いくらかの相対遅延で異なる組み合わせ論理回路28に入力データを供給することができる。例えば、制御回路は、以下の手順を実行することができる。
■1st入力データを1st組み合わせ論理回路に供給する。
■いくつかのクロックサイクルを待つ。
■2nd入力データを2nd組み合わせ論理回路に供給する。
■1st個の出力データの準備ができたまで待つ。
■オプションで、ランダム数のクロックサイクルを待つ。
■3rd入力データを第三の組み合わせ論理回路に供給する。
■…
【0070】
以上説明した例示的な動作モードは意図的に予想される時間挙動から逸脱しており、セキュア演算の実際のアクティブ化及び/又は無効化時間を隠すのに役立ち、さらに、バイパス攻撃の影響を受けないように、特徴モードをマスクする。
【0071】
いくつかの実施例では、所与の組み合わせ論理回路28は、例えば、逆演算又は既知の解答テストを実行することによって、自体の完全性をチェックすることができる。この完全性のチェックは、例えばフォールトインジェクション攻撃の検出に役立つ。
【0072】
いくつかの実施例では、開示された技術は、二つ又は二つ以上の中央処理ユニット(Central Processing Unit、CPUと略記される)のコア間の結合の生成に用いることができる。それぞれCPU1及びCPU2として示されている二つの相互に結合されたCPUコアに関する例を考えてみる。CPU1は何らかのオブジェクトコードを実行し、CPU2は予定の動作サイクルを実行して、ランダムデータを処理する。CPU2は、サイクルの途中結果を比較することで、例えば、フォールトインジェクションを識別するといった完全性チェックを実行することができる。CPU2が実行可能な完全性チェックを含む例示的なサイクルは、以下の通りである。
■二つのランダム又は仮想ランダム(NRAND)を取得する。
■一つの数字をR0に書き込み(R#はCPUバッファを示す)、他の一つの数字をR1に書き込む。
■R0+3*R1‐>R2
■R1+5*R2‐>R3
■R2+7*R3‐>R4
■R3+11*R4‐>R5
■…R[n‐2]+prime*R[n‐1]‐> Rn
■そして、逆演算を行ってR0及びR1の値と比較する。
■もし、R0、R1は結果と一致しないと‐‐不審な改ざんに対して警報を出す。
【0073】
さらにオプションで、開示された技術は、例えば、二つ又は複数のデジタル信号処理(Digital Signal Processing、DSP)ユニット又は暗号アクセラレータの間の結合などの、様々な他のタイプの組み合わせ論理回路の間の結合を生成するために使用することができる。
【0074】
いくつかの実施例では、組み合わせ論理回路間の結合は固定的である。これらの実施例では、所与のフリップフロップ組32について、組み合わせ論理回路がサンプリングされた結果を出力するというアイデンティティは変わらなく、サンプリング出力を組み合わせ論理回路への入力とするというアイデンティティも変わらない。他の実施例では、制御回路は、例えば、充電中又は動作中に、例えばいくつかの以前の定義に従い、又はランダムに、結合の案を修正することができる。例えば、制御回路は、所与のフリップフロップ組32の入力を一つの組み合わせ論理回路から他の一つ組み合わせ論理回路に切り替え、及び/又は所与のフリップフロップ組32の出力を一つの組み合わせ論理回路から他の一つの組み合わせ論理回路に切り替えることができる。この配置可能性は、一つ又は複数のフリップフロップ組32の入力及び/又は出力にMUXを追加することによって実現することができる。
【0075】
上述の実施例は、例としてのみ引用されており、本発明は、上記で具体的に示され、記載されたものに限定されないことが理解される。代わりに、本発明の範囲は、上記の様々な特徴のコンビネーションおよびサブコンビネーション、当業者が前述の説明を読んだ後に想到できるこれらの変更およびその変形、修正、並びに従来技術には開示されないものを含む。参照により本特許出願に組み込まれる文書は、本出願の構成部分と見なされるものとし、本明細書の明示的又は暗黙的定義と矛盾する形でこれらの組み込まれた文書に定義されている用語の範囲を除いて、本明細書での定義を考慮する必要がある。
【符号の説明】
【0076】
20:従来装置
24、50:セキュア電子装置
28、28A、28B、28C、54、58:組み合わせ論理回路
32、32A、32B、32C、60A、60B、74:フリップフロップ(FF)組
36:バス
40A、40B、40C、68A、68B、69A、69B:マルチプレクサ
44:状態マシン
64A、64B、70A、70B:インバータ
CLK:クロックサイクル
I/O、I/O、I/O:入力、出力
IN1、IN2:入力
OUT1、OUT2:出力
図1
図2