(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6952102
(24)【登録日】2021年9月29日
(45)【発行日】2021年10月20日
(54)【発明の名称】被保護システム及び保護方法
(51)【国際特許分類】
H04L 9/10 20060101AFI20211011BHJP
G06F 21/52 20130101ALI20211011BHJP
【FI】
H04L9/00 621A
G06F21/52
【請求項の数】22
【全頁数】21
(21)【出願番号】特願2019-240103(P2019-240103)
(22)【出願日】2019年12月31日
(65)【公開番号】特開2020-109967(P2020-109967A)
(43)【公開日】2020年7月16日
【審査請求日】2019年12月31日
(31)【優先権主張番号】16/240,747
(32)【優先日】2019年1月6日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【弁理士】
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
【審査官】
金沢 史明
(56)【参考文献】
【文献】
特開2010−021637(JP,A)
【文献】
米国特許出願公開第2007/0182575(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
G06F 21/00−21/52
(57)【特許請求の範囲】
【請求項1】
シリコンチップと、
前記シリコンチップ上に配置され、第1機能プロセスを実行するように構成された第1装置と、
前記シリコンチップ上に配置され、第1検証可能なテスト結果を提供する第1保護プロセスを実行するように構成される第2装置と、
前記シリコンチップ上に配置され、前記第1装置が前記第1機能プロセスを実行している1つの期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送るように構成される主コントローラと、
前記シリコンチップ上に配置され、少なくとも前記第1保護プロセスが、攻撃が実行されていることを示す前記第1検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行するように構成された攻撃処理コントローラと、
を備える、
前記第1装置と前記第2装置において、前記第1装置の少なくとも一部と前記第2装置の少なくとも一部がインターリーブする(交錯する)物理レイアウトを有し、前記第1装置のインターリーブする前記少なくとも一部に対する攻撃が前記第2装置のインターリーブする前記少なくとも一部にも発生することを特徴とする被保護システム。
【請求項2】
前記第2装置の前記少なくとも一部とインターリーブする前記第1装置の前記少なくとも一部は、前記第1装置によって占有される前記シリコンチップ上の面積の少なくとも20%を含む請求項1に記載の被保護システム。
【請求項3】
前記第1装置と前記第2装置によって共有される複数のメモリレジスタを含み、前記主コントローラは、前記第1装置と前記第2装置との間で前記複数のメモリレジスタの使用を割り当てるように構成される請求項1に記載の被保護システム。
【請求項4】
前記主コントローラは、前記第1装置が前記第1機能プロセスを実行している全期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送るように構成される請求項1に記載の被保護システム。
【請求項5】
前記第1機能プロセスと前記第1保護プロセスは、異なるプロセスである請求項1に記載の被保護システム。
【請求項6】
前記第1保護プロセスは、所定のランタイムを有し、前記攻撃処理コントローラは、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第1機能プロセスを保護するように構成される請求項1に記載の被保護システム。
【請求項7】
前記第1保護プロセスは、複数の処理サイクルにわたって周期的に実行され、前記主コントローラは、前記第1機能プロセスの完了時に応じて前記第1保護プロセスの実行を中断するように構成される請求項1に記載の被保護システム。
【請求項8】
前記主コントローラは、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが第2結果を公開するように制御する請求項1に記載の被保護システム。
【請求項9】
前記主コントローラは、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが前記第2結果に基づく動作制御を行う請求項1に記載の被保護システム。
【請求項10】
前記第1装置は、前記第2装置が第2機能プロセスを実行している間に、前記第2装置を攻撃から保護するように第2検証可能なテスト結果を有提供する第2保護プロセスとして前記第1機能プロセスを実行する請求項1に記載の被保護システム。
【請求項11】
第1保護プロセスは、第2機能への入力として用いられる出力を提供する第1機能を実行することを含み、前記第2機能の出力が前記第1機能への入力に等しくなるように、前記第2機能が定義されている請求項1に記載の被保護システム。
【請求項12】
シリコンチップ上に配置された第1装置によって第1機能プロセスを実行し、
前記シリコンチップ上に配置された第2装置によって第1検証可能なテスト結果を提供する第1保護プロセスを実行し、前記第1装置と前記第2装置において、前記第1装置の少なくとも一部と前記第2装置の少なくとも一部がインターリーブする物理レイアウトを有し、前記第1装置のインターリーブする前記少なくとも一部に対する攻撃が前記第2装置のインターリーブする少なくとも一部にも発生し、
前記第1装置が前記第1機能プロセスを実行している1つの期間中に、前記シリコンチップ上に配置される主コントローラが前記第1保護プロセスを実行するように前記第2装置に信号を送り、
少なくとも前記第1保護プロセスが、攻撃が実行されていることを示す前記第1検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行することを含む保護方法。
【請求項13】
前記第2装置の前記少なくとも一部とインターリーブする前記第1装置の前記少なくとも一部は、前記第1装置によって占有される前記シリコンチップ上の面積の少なくとも20%を含む請求項12に記載の保護方法。
【請求項14】
前記主コントローラは、前記第1装置と前記第2装置との間で、前記第1装置と前記第2装置によって共有される複数のメモリレジスタの使用を割り当てることを含む請求項12に記載の保護方法。
【請求項15】
前記主コントローラは、前記第1装置が前記第1機能プロセスを実行している全期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送ることを含む請求項12に記載の保護方法。
【請求項16】
前記第1機能プロセスと前記第1保護プロセスは、異なるプロセスである請求項12に記載の保護方法。
【請求項17】
前記第1保護プロセスは、所定のランタイムを有し、保護方法は、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第1機能プロセスを保護することを含む請求項12に記載の保護方法。
【請求項18】
前記第1保護プロセスは、複数の処理サイクルにわたって周期的に実行され、保護方法は、前記主コントローラは、前記第1機能プロセスの完了時に応じて前記第1保護プロセスの実行を中断することを含む請求項12に記載の保護方法。
【請求項19】
前記主コントローラは、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが第2結果を公開するように制御することを含む請求項12に記載の保護方法。
【請求項20】
前記主コントローラは、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが前記第2結果に基づく動作制御を行うことを含む請求項12に記載の保護方法。
【請求項21】
前記第2装置が第2機能プロセスを実行している間に、前記第2装置を攻撃から保護するように第2検証可能なテスト結果を有提供する第2保護プロセスとして前記第1機能プロセスを実行することを含む請求項12に記載の保護方法。
【請求項22】
第1保護プロセスは、第2機能への入力として用いられる出力を提供する第1機能を実行することを含み、前記第2機能の出力が前記第1機能への入力に等しくなるように、前記第2機能が定義されている請求項12に記載の保護方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、チップセキュリティに関し、特に、限定的ではないが、フォールトインジェクション攻撃(故障注入攻撃)に対する被保護システム及び保護方法に関する。
【背景技術】
【0002】
フォールトインジェクション攻撃は、暗号化回路などの安全な電子回路から情報にアクセス、分析、又は抽出するために使用される一連の技術である。フォールトインジェクション攻撃は、通常、信号線に物理的に接触したり、高出力レーザーや電磁パルスを適用したり、電源やその他の外部インターフェイスにグリッチを発生させたりして、回路に障害を引き起こすことが挙げられる。この障害により、回路が機密情報を出力するか、又は攻撃者が回路又は格納する情報に侵入するのを支援する。
【0003】
フォールトインジェクション攻撃を検出及び軽減するためのさまざまな技術が当技術分野で知られている。例えば、米国特許第8,375,253号(特許文献1)においては、その発明者のBenoit氏は、電子デバイスでのコンピュータ化されたコードの実行中の摂動によって障害を検出する方法を開示している。コンピューターコードには機密プロセスが含まれている。この方法は、機密プロセスの冗長化処理を実行するステップと、機密プロセスと冗長化処理の間に遅延を挿入するステップを含む。遅延中にトラップング処理が実行される。トラッピング処理は摂動と供給に敏感なので、摂動がない場合は予測可能な結果が提供される。
【0004】
また、米国特許公開2004/0186979(特許文献2)においては、Janke氏らは、第1計算ユニットと、第2計算ユニットと、2つの計算ユニットを制御するための制御手段とを備えるプロセッサを開示している。当該制御手段により、それらの計算ユニットが、補完データを処理するハイセキュリティモードと、又は独立したデータを処理する並列動作モードと、又は同じデータを処理するセキュリティ動作モードと、又は計算ユニットの1つがオフになっている省電力動作モードと、の間で動作可能となるように選択的に制御されている。
【0005】
また、英国特許出願GB 2,431,258(特許文献3)においては、Pomaranski氏らは、同じタイプの複数の実行ユニットと、モードレジスタの値を設定して、フォールトトレランス機能を選択的にオン又はオフにするために使用されるモードレジスタと、を含むマイクロプロセッサを開示している。これにより、マイクロプロセッサは、プログラムにフォールトトレランスが必要かどうかに応じて、フォールトトレラントモード又はパフォーマンスモード(フォールトトレランス動作がオフ)で選択的に動作できる。フォールトトレラントモードでは、命令発行/デコードユニットが両方の浮動小数点ユニット(FPU)に同じ命令を発行する。つまり、FPUの1つが冗長処理ニットとして使用される。実行後、コンパレータはFPUのそれぞれの出力を比較する。出力が一致しない場合、コンパレータはエラーを示す信号を比較フラグに提供する。
【0006】
また、米国特許公開2011/0029828(特許文献4)においては、Bancel氏らは、集積回路のフォールトインジェクションを検出する回路であって、前記集積回路の論理機能を実行する少なくとも1つの論理ステップと、処理待ち信号及び論理ステップの機能フェーズと検出フェーズを示す分離イネーブル信号を受信するために接続され、機能フェーズ中に処理待ち信号を論理ステップの少なくとも1つの入力に転送し、検出フェーズ中に定数値を論理ステップの入力に転送する隔離ステップと、検出段階中に、論理ステップの出力信号の状態を監視し、出力信号の状態が変化した場合に警告信号を生成するように構成された検出ステップと、を備える回路を開示している。
【0007】
また、米国特許第10,013,581号(特許文献5)においては、Hershman氏は、機能回路及び故障検出回路を含むフォールトインジェクションを検出するための装置を開示している。機能回路は、1つ以上の機能入力信号を受信し、機能入力信号を処理して、1つ以上の機能出力信号を生成するように構成される。機能回路は、最初の時間間隔中の1つ以上の機能入力信号の指定されたセットの安定性が、2番目の時間間隔中の1つ以上の機能出力信号の指定されたセットの安定性を保証することを指定する安定条件を有し、これは初回の間隔から導出される。障害検出回路は、指定された機能入力及び出力信号を監視し、監視された機能入力及び出力信号に基づいて安定性条件を評価し、安定条件からの逸脱の検出に応じて障害投入の試みを検出するように構成されている。
【0008】
また、米国特許第9,523,736号(特許文献6)においては、Hershman氏らは、集積回路(IC)及び回路にまたがる高ファンアウトネットワークを含む故障注入を検出するための装置を開示している。 いくつかの実施形態では、高ファンアウトネットワークは、ICの機能動作中は継続的に非アクティブであり、回路は、高ファンアウトネットワーク内の複数のサンプリングポイントで信号レベルを検知し、検知された信号レベルで、ファンアウトの多いネットワークの信号異常。いくつかの実施形態では、回路は、高ファンアウトネットワークの複数のサンプリングポイントで信号レベルを感知し、感知された信号レベルに基づいて、機能的動作中に正当な信号変動と高ファンアウトネットワークの信号異常を区別するように構成される IC、及び信号の異常を検出することにより、障害挿入の試みを識別する。
【0009】
また、米国特許公開2011/0225432(特許文献7)においては、Trichina氏は、暗号化操作中に少なくとも1つのルックアップテーブルを使用してフォールト攻撃を検出する方法を開示している。このルックアップテーブルには複数のサブテーブルが含まれ、各サブテーブルは同じ数の固定ビット長値を持ち、複数のサブテーブル内の同じ位置の値の間には固定関係があります。この方法には、ルックアップテーブルの各サブテーブルの同じ位置からデータ値を取得するロード操作を実行する、2つ以上のデータ値間の固定関係を確認する、確認結果に応じて出力信号を生成することが含まれる。
【0010】
また、米国特許第7,590,880号(特許文献8)では、発明者のHershman氏は、ハードウェアモジュールのオーバークロック攻撃を検出して防止するための回路について開示している。回路には、テスト信号と、テスト信号の遅延信号の1つを提供する遅延パスと、テスト信号と遅延信号の論理状態を比較し、両者が異なる場合に、攻撃を回路指示を発行する。また、米国特許第9,716,502号(特許文献9)においては、発明者のSarafianos氏は、マトリックス配列に分布した放射線検出素子のグループと、列と行に配置された検出要素の出力を結合する複数の論理ゲートと、論理ゲートによって提供され、イベントカウンターと遅延要素を含む信号を解釈するための回路とを含み、検出要素の各出力は、行を結合するゲートと列を結合するゲートに接続されている集積回路保護デバイスを開示している。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】米国特許第8,375,253号
【特許文献2】米国特許公開2004/0186979号公報
【特許文献3】英国特許出願GB 2,431,258号公報
【特許文献4】米国特許公開2011/0029828号公報
【特許文献5】米国特許第10,013,581号公報)
【特許文献6】米国特許第9,523,736号公報
【特許文献7】米国特許公開2011/0225432号公報
【特許文献8】米国特許第7,590,880号号公報
【特許文献9】米国特許第9,716,502号号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
本発明の目的は、下記の被保護システム及び保護方法を提供することにある。
【課題を解決するための手段】
【0013】
本発明の実施例にかかる被保護システムは、シリコンチップと、前記シリコンチップ上に配置され、第1機能プロセスを実行するように構成された第1装置と、前記シリコンチップ上に配置され、第1検証可能なテスト結果を有する第1保護プロセスを実行するように構成され、前記第1装置の少なくとも一部と少なくとも一部がインターリーブする(交錯する)物理レイアウトを有し、前記第1装置の前記少なくとも一部に対する攻撃が前記少なくとも一部にも発生する第2装置と、前記シリコンチップ上に配置され、前記第1装置が前記第1機能プロセスを実行している1つの期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送るように構成される主コントローラ(primary controller)と、前記シリコンチップ上に配置され、少なくとも前記第1保護プロセスが攻撃が実行されていることを示す前記第1検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行するように構成された攻撃処理コントローラーと、を備える。
【0014】
また、本発明の被保護システムにおいて、前記第2装置の前記少なくとも一部とインターリーブする前記第1装置の前記少なくとも一部は、前記第1装置によって占有される前記シリコンチップ上の面積の少なくとも20%を含む。
【0015】
また、本発明の被保護システムは、前記第1装置と前記第2装置によって共有される複数のメモリレジスタを含み、前記主コントローラ(primary controller)は、前記第1装置と前記第2装置との間で前記複数のメモリレジスタの使用を割り当てるように構成される。
【0016】
また、本発明の被保護システムにおいて、前記主コントローラは、前記第1装置が前記第1機能プロセスを実行している全期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送るように構成される。
【0017】
また、本発明の被保護システムにおいて、前記第1機能プロセスと前記第1保護プロセスは、異なるプロセスである。
【0018】
また、本発明の被保護システムにおいて、前記第1保護プロセスは、所定のランタイムを有し、前記攻撃処理コントローラは、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第1機能プロセスを保護するように構成される。
【0019】
また、本発明の被保護システムにおいて、前記第1保護プロセスは、複数の処理サイクルにわたって周期的に実行され、前記主コントローラは、前記第1機能プロセスの完了時に応じて前記第1保護プロセスの実行を中断するように構成される。
【0020】
また、本発明の被保護システムにおいて、前記主コントローラは、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが第2結果を公開するように制御する。
【0021】
また、本発明の被保護システムにおいて、前記主コントローラは、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが前記第2結果に基づく動作制御を行う。
【0022】
また、本発明の被保護システムにおいて、前記第1装置は、前記第2装置が第2機能プロセスを実行している間に、前記第2装置を攻撃から保護するように第2検証可能なテスト結果を有する第2保護プロセスとして前記第1機能プロセスを実行する。
【0023】
また、本発明の被保護システムにおいて、第1保護プロセスは、第2機能への入力として用いられる出力を提供する第1機能を実行することを含み、前記第2機能の出力が前記第1機能への入力に等しくなるように、前記第2機能が定義されている。
【0024】
本発明の実施例にかかる保護方法は、シリコンチップ上に配置された第1装置によって第1機能プロセスを実行し、前記シリコンチップ上に配置された第2装置によって第1検証可能なテスト結果を有する第1保護プロセスを実行し、前記第1装置の少なくとも一部と少なくとも一部がインターリーブする物理レイアウトを有し、前記第1装置の前記少なくとも一部に対する攻撃が前記少なくとも一部にも発生し、前記第1装置が前記第1機能プロセスを実行している1つの期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送り、少なくとも前記第1保護プロセスが攻撃が実行されていることを示す前記第1検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行することを含む。
【0025】
また、本発明の保護方法は、前記第2装置の前記少なくとも一部とインターリーブする前記第1装置の前記少なくとも一部は、前記第1装置によって占有される前記シリコンチップ上の面積の少なくとも20%を含む。
【0026】
また、本発明の保護方法は、前記第1装置と前記第2装置との間で、前記第1装置と前記第2装置によって共有される複数のメモリレジスタの使用を割り当てることを含む。
【0027】
また、本発明の保護方法は、前記第1装置が前記第1機能プロセスを実行している全期間中に、前記第1保護プロセスを実行するように前記第2装置に信号を送ることを含む。
【0028】
また、本発明の保護方法において、前記第1機能プロセスと前記第1保護プロセスは、異なるプロセスである。
【0029】
また、本発明の保護方法は、前記第1保護プロセスは、所定のランタイムを有し、保護方法は、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第1機能プロセスを保護することを含む。
【0030】
また、本発明の保護方法においては、前記第1保護プロセスは、複数の処理サイクルにわたって周期的に実行され、保護方法は、前記第1機能プロセスの完了時に応じて前記第1保護プロセスの実行を中断することを含む。
【0031】
また、本発明の保護方法は、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが第2結果を公開するように制御することを含む。
【0032】
また、本発明の保護方法は、前記第1保護プロセスの前記第1検証可能なテスト結果が期待の結果に等しいことを条件として、前記第1機能プロセスが前記第2結果に基づく動作制御を行うことを含む。
【0033】
また、本発明の保護方法は、前記第2装置が第2機能プロセスを実行している間に、前記第2装置を攻撃から保護するように第2検証可能なテスト結果を有する第2保護プロセスとして前記第1機能プロセスを実行することを含む。
【0034】
また、本発明の保護方法において、第1保護プロセスは、第2機能への入力として用いられる出力を提供する第1機能を実行することを含み、前記第2機能の出力が前記第1機能への入力に等しくなるように、前記第2機能が定義されている。
【図面の簡単な説明】
【0035】
【
図1】Fig1は、本発明の実施例にかかる被保護システムの構築及び動作を示すステップ図である。
【
図2】Fig2A〜Fig2Bは、Fig1の被保護システムにおけるインターリーブされた物理レイアウトを示す図である。
【
図3】Fig2Cは、Fig1の被保護システムで使用される共有されたメモリーレジスタの概略構成図である。
【
図4】Fig3は、Fig1の被保護システムが第1保護方法の動作時の一例を示すフローチャートである。
【
図5】Fig4は、Fig1の被保護システムが第2の保護方法の動作時の一例を示すフローチャートである。
【
図6】Fig5は、逆方向保護機能を有するFig1の被保護システムを示すステップ図である。
【発明を実施するための形態】
【0036】
以下、本発明について、図に示す実施形態に基づいて説明する。
【0037】
フォールトインジェクション攻撃では、通常、信号線と物理的に接触したり、高出力レーザーや電磁パルスを利用したり、電源やその他の外部インターフェイスにグリッチを発生させたりして、回路に障害を引き起こす。この障害により、回路が機密情報を出力してしまったり、攻撃者が回路に格納されている情報へ侵入することに対する支援が意図されます。
【0038】
本発明の実施形態では、物理的及び論理的保護の組み合わせを使用した相乗効果によって、フォールトインジェクション攻撃を抑制することができるに被保護システムについて説明する。機能プロセスを実行する被保護装置と並行して、保護装置が検証可能なテスト結果を有する保護プロセスを実行する。保護装置及び被保護装置は、シリコンチップ上に配置され、保護装置の少なくとも一部と被保護装置の少なくとも一部とがインターリーブする物理レイアウトを有し、被保護装置の少なくとも一部に対する攻撃が保護装置の少なくとも一部にも発生するように構成されている。
【0039】
従って、被保護装置のインターリーブ部分が攻撃された(例えば、グリッチ又は電磁(EM)場又はレーザービームなどにより)場合、保護装置も攻撃されることになる。その結果、保護プロセスが検証可能なテスト結果を提供できず、それにより攻撃が検出される。通常、保護措置が実行された後に攻撃の検出が開始される。
【0040】
主コントローラは、シリコンチップ上に配置され、被保護装置が機能プロセスを実行している1つの期間中に、保護プロセスを実行するように保護装置に信号を送る。
【0041】
攻撃処理コントローラー(主コントローラーによる代用もできる)は、シリコンチップ上に配置され、保護プロセスが攻撃が実行されていることを示す検証可能なテスト結果を提供することに失敗した場合に応答して、機能プロセスを保護する保護措置を実行する。保護措置には、機能プロセスの結果の公表の拒否及び/又は保留が含まれる。いくつかの実施形態では、保護プロセスの検証可能なテスト結果の検証が成功するまで、機能プロセスの結果の公開が実行されないようになっている。例えば、機能プロセスの結果は、(別のプロセス、機密又はセキュリティーリソースなど)へのアクセスを許可又は拒否したり、又はパスワードの認証結果に基づいて物理的ロックを解除するI/O信号のトグルを生成する。その場合、別のプロセスなどへのアクセスの承認は、保護プロセスの検証可能なテスト結果の検証が成功するまで延期される。
【0042】
各装置の素子間のインターリーブは、少なくとも部分的に、保護装置の素子によって覆われる被保護装置の素子を含んでもよい。被保護素子は、組み合わせ論理ゲート、メモリインターフェイスの一部、(ラッチ、フリップフロップ、ランダムアクセスメモリ(RAM)など)の揮発性メモリ素子(例えば、メモリレジスタ)、(ワンタイムプログラマブル(OTP)、電気(電圧)の操作によってデータの消去や書き換えが可能となっているメモリ(EEPROM)、フラッシュメモリなど)の不揮発性メモリ素子、又は被保護装置内の他の機密素子を含んでもよい。保護装置と被保護装置によって共有(例えば、時方式によって共有)される複数のメモリレジスタを含んでもよい。主コントローラーは、通常、各装置間の複数のメモリレジスタの使用を割り当てる。この共有されたメモリ複数のを使用することで、敏感な素子間のインターリーブが強化され、その結果、攻撃者が攻撃する必要があるターゲットとなる装置を推測し続けなればならなくなる。
【0043】
また、本発明のいくつかの実施形態では、保護プロセスと機能プロセスは異なるプロセスである。例えば、保護プロセスはRivest?Shamir?Adleman(RSA)暗号化プロセスを、機能プロセスはAdvanced Encryption Standard(AES)暗号化を実行するようになっている。
【0044】
また、保護プロセスは、検証可能な所定のランタイムを有してもよい。攻撃処理コントローラーは、保護プロセスが所定のランタイムの所定許容範囲内で実行されなかった場合、保護措置を実行して機能プロセスを保護するようになっている。
【0045】
また、本発明のいくつかの実施形態では、保護プロセスは複数の処理サイクルにわたって周期的に実行されることができ、1つの処理サイクルの出力を次の処理サイクルの入力に提供する。機能プロセスが完了すると、保護プロセスの周期的な実行が中断される。また、他の実施形態では、保護プロセスは、被保護装置上で実行される機能プロセスの予想実行期間に対応する所定の数の処理サイクルの間で実行するように設定されてもよい。保護プロセスが周期的に実行される場合、すべての処理サイクルの完了するたびに、又は最後の処理サイクルの完了時に検証可能なテスト結果を確認できる。本明細書及び請求の範囲で使用される「処理サイクル」とは、データ値に対する1つ以上の操作が含まれる保護プロセスの1回の実行を意味する。例えば、データ値に対する最初の操作の後、最初の操作の結果データ値に対して逆操作を実行する。
【0046】
便宜上、検証可能なテスト結果が最後の処理サイクルの終了時に検証される場合、通常、保護プロセスは、第2機能への入力として用いられる出力を提供する第1機能を実行することを含み、第2機能の出力が第1機能への入力に等しくなるように、第2機能が定義されている。例えば、出力を提供するデータ値を暗号化してから、当該出力を復号化することで元のデータ値を提供する。同様の機能として、加算して減算する、乗算して除算する、逆数を実行の後に他の逆数を求めるなどが含まれる。各処理サイクルの第1機能への入力は、同じ値、カウンター値、ランダム値、又はその他の任意の適切な値であってもよい。上記機能は、各処理サイクルの終了時の検証可能なテスト結果を検証される場合にも適用できる。いくつかの実施形態では、検証可能なテスト結果は、事前に計算された予想結果と比較することができる。
【0047】
また、いくつかの実施形態では、保護装置と被保護装置の役割を入れ替えて、被保護装置であった保護装置が、保護装置であった被保護装置を保護するようにしてもよい。一例として、RSAを実行している保護装置が、チップの機能動作の一部としてAESを実行している装置を保護していた場合、今度は、AESを実行している装置がチップの機能動作の一部としてのRSAを実行している装置を保護するように役割を逆にすることができる。
【0048】
Fig1は、本発明の実施例にかかる被保護システムの構成及び動作を示すステップ図である。被保護システム10は、シリコンチップ12と、第1装置14と、第2装置16と、主コントローラー18と、攻撃処理コントローラー20と、を備える。
【0049】
第1装置14は、シリコンチップ12上に配置され、第1機能プロセスを実行するための装置である。第1機能プロセス15は、オリジナルデータ値を別のデータ値に変換し、オプションとしてこの別のデータ値を上記オリジナルデータ値に戻すデータ変換プロセスである。また、第1機能的プロセス15は、フォールトインジェクションによって攻撃された場合、機密データを漏洩する可能性がある。具体的には、第1装置14は、第1機能プロセス15を実行するCPUを有し、第1機能プロセス15は、暗号化キーをある素子から別の素子に移動する、及び/又は1つの文字列を別の文字列と比較してパスワードの正当性を確認する、及び/又は操作を許可するか拒否するかを決定するために検証する。また、第1の機能プロセス15は、RSA、AES、キー付きハッシュメッセージ認証などの暗号化プロセスコード(HMAC)、又はSHA-256、SHA-3などの暗号化ハッシュ関数などを含む暗号化プロセスであってもよい。Fig1〜Fig4に示すように、被保護装置である第1装置14は、保護装置である第2装置16によって保護されている。また、いくつかの実施形態では、第1装置14と第2装置16は、保護する役と保護された役の役割を選択的に逆にすることもできる。詳細は、Fig5を参照してまた後述する。
【0050】
第2装置16は、シリコンチップ12上に配置され、第1保護プロセス17を実行するための装置である。第1保護プロセス17は、第1検証可能なテスト結果、及びオプションとして後述する所定のランタイムを有してもよい。一例として、第1保護プロセス17は、(1)定義されたキーとデータを使用したRSA復号化プロセス、(2)AES、HMAC、SHA256又はSHA-3などの暗号化ハッシュ関数を使用した循環暗号化プロセス、(3)今サイクルの巡回プロセスが提供した出力が所定の回数又は巡回プロセスが中断されるまで次のサイクルの巡回プロセス入力に提供される巡回冗長検査(CRC)、及び/又は(4)予め定義された結果を持つコードセクションを実行する中央処理装置(CPU)を含んでもよい。第1保護プロセス17は自己検証可能であってもよい。例えば、データ値が周期的に暗号化及び複合化できるため、任意の入力データ値を使用でき、複合化したデータ値が入力データ値に対する検証に使用できる。
【0051】
また、いくつかの実施形態では、第1機能プロセス15及び第1保護プロセス17は、異なるプロセスを実行する。
【0052】
第1装置14と第2装置16は、第1装置14の少なくとも一部22と第2装置16の少なくとも一部24がインターリーブする(交錯する)物理レイアウトを有するため、第1装置14の一部22に対する攻撃が第2装置16の一部24にも発生する。シリコンチップ12は、2つ以上のインターリーブされた装置を含むことができる。
【0053】
また、いくつかの実施形態では、第2装置16の一部24とインターリーブする第1装置14の一部22は、第1装置14によって占有されるシリコンチップ12上の面積の少なくとも20%を含む。
【0054】
いくつかの実施形態では、主コントローラ18の機能は、第2装置16と組み合わされることで、主コントローラ18の少なくとも一部が第1装置14の一部22とインターリーブされるようにしてもよい。
【0055】
第1装置14及び第2装置16の素子間のインターリーブは、少なくとも部分的に、第2装置16の素子によって覆われる第1装置14の素子を含んでももよい(逆の場合でも可)。また、保護を受けるためにインターリーブされる素子は、組み合わせ論理ゲート26、メモリインターフェース28の一部、(ラッチ、フリップフロップ、ランダムアクセスメモリ(RAM)など)の揮発性メモリ要素(例えばメモリレジスタ)、(ワンタイムプログラマブル(OTP)、電気(電圧)の操作によってデータの消去や書き換えが可能となっているメモリ(EEPROM)、フラッシュメモリなど)の不揮発性メモリ素子、又は第1装置(又は第2装置)内の他の機密素子、次のうちの1つ以上を含んでも良い。また、第1装置14の1つの論理ゲートは、第2装置16の複数のコンポーネントとインターリーブしてもよい。
【0056】
第1装置14及び第2装置16は、第1装置14及び第2装置16によって共有(例えば、時分割方式によって共有)される複数のメモリレジスタ30を含んでもよい。主コントローラ18は、第1装置14と第2装置16の間で複数のメモリレジスタ30の使用を周期的に割り当てることができる。
【0057】
この共有された複数のメモリレジスタ30を使用することで、敏感な素子(Fig2A〜Fig2Cを参照)間のインターリーブが強化され、その結果、攻撃者が攻撃する必要があるターゲットとなる装置を推測し続けなればならなくなる。
【0058】
主コントローラ18は、第1装置14と第2装置16に割り当てられたそれぞれのレジスタが第1装置14と第2装置16の間でインターリーブ又は混合されるように複数のメモリレジスタ30を割り当てることができ、その結果、第1装置14に割り当てられたレジスタへの攻撃は、第2装置16に割り当てられたレジスタによって検出されることができる。
【0059】
例えば、複数のメモリレジスタ30のうちの2組以上の交換可能なレジスタのうち、第1装置14にサービスを提供する1組以上のレジスタと、第2装置16にサービスを提供する1組以上のレジスタとなるように定義されており、このうちの2組以上のレジスタは、第1装置14と第2装置16の間で周期的に割り当てられるようになっている。
【0060】
次に、メモリレジスタ30について、Fig2Cを参照しながら詳細に説明する。
【0061】
第1装置14及び第2装置16は、ステータスの保存及び/又はプロセスの実行のために、それぞれ別のメモリ、マイクロプロセッサ、及び/又は論理ゲートを含んでも良い。第1装置14及び第2装置16の様々な素子は、他の第1装置14及び第2装置16の素子とインターリーブされてもよいし、されなくてもよい。
【0062】
また、一般的には、主コントローラ18は、シリコンチップ12に設けられ、第1装置14が第1機能プロセス15を実行している1つの期間中に、第1保護プロセス17を実行するように第2装置16に信号を送る。また、主コントローラ18は、ファームウェアを実行してさまざまなプロセスを管理できる。また、他の実施形態においては、主コントローラ18は、アプリケーション専用のハードウェアプロセッサを含む。また、いくつかの実施形態では、主コントローラ18は、第1装置14が第1機能プロセス15を実行している間、第1保護プロセス17を実行するように第2装置16に信号を送る。また、主コントローラ18は、第1保護プロセス17が実行される期間を管理できる。また、主コントローラ18は、第1機能プロセス15の持続時間に基づいて、第1保護プロセス17を所定期間で、又は所定の数の処理サイクルで実行するように第2装置16に指示できる。ここの「処理サイクル」とは、データ値に対する1つ以上の操作が含まれる保護プロセスの1回の実行を意味する。例えば、データ値に対する最初の操作の後、最初の操作の結果データ値に対して逆操作を実行する。
【0063】
また、主コントローラ18は、第1保護プロセス17が周期的に実行されるように第2装置16に指示でき、第1機能プロセス15の完了時に応じて第1保護プロセス17の実行を中断させることができる。検証可能なテスト結果は、各処理サイクルの終了時、又は循環プロセスの完了時に(プロセスが自然に終了するか、中断により終了するか)主コントローラ18によって、又は第2装置16によって、又は包装回路によって検証できる。いくつかの実施形態では、1つの処理サイクルの出力は、次の処理サイクルへの入力として提供される。便宜上、検証可能なテスト結果が循環サイクルの完了時に検証される場合、第1保護プロセス17は、第2機能への入力として用いられる出力を提供する第1機能を実行することを含み、第2機能の出力が第1機能への入力に等しくなるように、第2機能が定義されている。例えば、出力を提供するデータ値を暗号化してから、当該出力を復号化することで元のデータ値を提供する。同様の機能として、加算して減算する、乗算して除算する、逆数を実行の後に他の逆数を求めるなどが含まれる。
【0064】
上記の機能は、各処理サイクルの終了時に検証可能なテスト結果が検証される場合にも使用できる。上記の機能を使用することで、検証可能なテスト結果がいつどのように検証されるかに関係なく、入力データは各第1保護プロセス17の処理サイクルで変更されることができる(例えば、増分データ値又はランダムデータ)ため、毎回異なる入力値が使用される。また、いくつかの実施形態では、検証可能なテスト結果は、事前に計算された予想結果と比較できる。例えば、保護装置16がAESエンジンである場合、保護された機能プロセス15の実行が完了するまで、同一AESキー及び入力データの暗号化処理サイクルを実行してもよい。
【0065】
主コントローラ18は、テストデータ及び/又はテスト結果を第2装置16に提供できる。第1機能プロセス15及び第1保護プロセス17の実行について、Fig3及びFig4を参照してまた後述する。
【0066】
攻撃処理コントローラ20は、通常、シリコンチップ12上に配置され、ファームウェアを実行することにより様々なプロセスを管理することができる。他の実施形態では、攻撃処理コントローラ20は、アプリケーション専用のハードウェアプロセッサを含む。また、攻撃処理コントローラ20は、少なくとも第1保護プロセス17が第1検証可能なテスト結果を提供することに失敗した場合に応答して、第1機能プロセス15を保護する保護措置を実行する。第1保護プロセス17が第1検証可能なテスト結果の提供に失敗した場合は、つまり攻撃が実行されていることを示す。フォールトインジェクションハンドリング処理を提供する保護動作には、第1装置14のリセット、第1装置14の処理の中断、及び/又は第1装置14のメモリへのアクセスの遮断が含まれてもよい。
【0067】
第1保護プロセス17が所定のランタイムを有する実施形態では、攻撃処理コントローラー20は、第1保護プロセス17が所定のランタイムの所定許容範囲内で実行できない、及び/又は第1検証可能なテスト結果を提供できなかった場合、第1機能プロセス15を保護するように保護措置を実行する。
【0068】
一例として、第1保護プロセス17がRSAプロセスである場合、RSAプロセスを実行する素子は、第1装置14の素子(例えば、セキュリティに敏感な素子)とインターリーブされる。具体的には、第1装置14の素子としては、メモリインターフェイス28、組み合わせ論理ゲート26、揮発性メモリコンポーネント(メモリレジスタなど)、ラッチ、フリップフロップ、ランダムリードメモリ(RAM)、不揮発性メモリコンポーネント(ワンタイムプログラミングコンポーネント(OTP)、電子的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、フラッシュメモリ)のうちの1つ以上である。主コントローラ18は、第1保護プロセス17の実行に必要な時間を計算し、RSAキーのサイズ、暗号キー及びデータシードを選択する。また、主コントローラ18は、選択されたデータでRSAプロセスを実行するように第1保護プロセス17に指示する。第1保護プロセス17が実行され、結果が生成される。そして、生成された結果又はその結果の一部(例えば、1つのダブルキャラクタ(D-word)など)が記録される。RSAプロセスは周期的に実行でき、各処理サイクルの終了時に、記録された結果又は予想結果(又はその結果の一部)と生成された結果が比較される。
【0069】
第1保護プロセス17の実行は、例えば、第1保護プロセス17が主コントローラ18によって中断されるかどうか、処理サイクル数が検証されるかどうか、及び/又は検証可能なテスト結果が第2装置16又は主コントローラ18によって検証されるかどうか、の複数のオプションを含むことができるが、これらオプションに限定されない。
【0070】
Fig2A〜Fig2Bは、Fig1の被保護システム10におけるインターリーブされた物理レイアウト40を示す図である。物理レイアウト40は、Fig1における第1装置14と第2装置16とのインターリーブを示している。Fig2A及びFig2Bに示すように、第1装置14の素子42は、影付きステップで表示されており、第2装置16の素子44は、陰影のないステップで表示されている。Fig2A及びFig2Bに示すように、攻撃のフットプリント46が、第1装置14の素子42の1つを攻撃した場合、第2装置16の素子44の1つも同時に攻撃を受けることになる。また、図面での表示を簡単にするために、Fig2A及びFig2Bには、一部の素子42、44しか示されていない。物理レイアウト40は、通常、フットプリント46がセル(例えば、素子42)よりも大きい攻撃から装置を保護する。Fig2Aは、素子42と素子44とが完全にインターリーブされ(素子42が素子44によって完全に囲まれている)、攻撃に対する高度の保護を提供する物理レイアウト40を示している。Fig2Bは、一部の素子42のみが素子44によって囲まれているが、残りの素子42は素子44に隣接していないため、低レベルのインターリーブを示している。Fig2Bに示す配置は、攻撃に対するある程度の保護を提供できるが、Fig2Aの配置に比べて低い保護能力となっている。シリコンチップ12上に配置されたさまざまな素子のセキュリティ敏感度に応じて、単一の配置でさまざまなレベルの保護を提供することができる。
【0071】
第1装置14と第2装置16とのインターリーブは、回路設計及び上記の配置によって実現できる。保護を受ける必要がある倫理回路は、CPUやメモリインターフェイスを含む暗号化モジュールなどの敏感な集積回路部品、ラッチ、フリップフロップ、ランダムアクセスメモリ(RAM)などの揮発性メモリ素子(メモリレジスタなど)、及び/又はワンタイムプログラマブル(OTP)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリなどの不揮発性メモリ素子のうちの1つ以上であってもよい。例えば、配置ツール(placement tool)の最大面積使用率を40%に制約する(つまり、ロジックセルによって占められる指定されたレイアウト領域がシリコン領域の40%を超えないように制約する)ことにより、第1の装置14をゆるい密度で、所定のチップレイアウト領域に配置する。又は、対応するロジックセルを配置前に人為的に拡大し、配置ツールで配置座標を設定した後、元のサイズに縮小することができる。第2装置16がシリコンチップ12の同じチップレイアウト領域に配置される際に、第1装置14の素子が動かないように、第1装置14の素子に対して「触れない(do not touch)」属性が設定される。また、シリコンチップ12のレイアウト領域は、第1装置14と第2装置16の素子をインターリーブするために、より高い密度(例えば、80%)で提供することができる。次に、チップのレイアウト設計の際に、第2装置16の素子がチップ内の第1装置14の素子の間に配置されるように、第2装置16の素子(モジュール)をシリコンチップ12の第1装置14の同じレイアウト領域に配置する。シリコンチップ12を製造する前に、設計でのチップレイアウトを必要に応じて修正することができる。チップレイアウト領域の利用率は、第1装置14と第2装置16のサイズの比率に従って調整できることに留意する必要がある。なお、第1装置14と第2装置16とのインターリーブは、タイミング及び面積(サイズ)の含意に優先することができる。インターリーブの粒度は、回路の安全性(高度なインターリーブ)と回路効率(低レベルのインターリーブ)との間でバランス取りすることができる。
【0072】
Fig2Cは、Fig1の被保護システム10で使用される共有されたメモリーレジスタ30の一例を示す概略構成図である。メモリレジスタ30は、2つのフリップフロップセット41、「FF SET1」及び「FF SET2」を含み、第1装置14の組み合わせ論理ゲート26及び第2装置16の組み合わせ論理ゲート26からの「n」個のデータパスに関連する状態を格納する。フリップフロップセット41のそれぞれは、入力マルチプレクサ43及び出力マルチプレクサ45に結合(coupled to)されている。マルチプレクサセレクタ47(SEL_i及びSEL_o)は、被保護システム10の実行時に主コントローラ18(Fig1)により制御される。また、メモリレジスタ30は、SEL_iと入力マルチプレクサ43の1つとの間に配置された1つのインバータ49と、SEL_oと出力マルチプレクサ45の1つとの間に配置された別のインバータ51をさらに含む。いくつかの実施形態では、インバータ49、51の1つ以上は、Fig2Cの上半部の入力マルチプレクサ43及び出力マルチプレクサ45への接続を切り替えることにより、又はコンポーネントの別の同等の配置により取り代わることができる。
【0073】
マルチプレクサセレクタ47、SEL_i及びSEL_oは、主コントローラ18によって制御されることにより、第1の装置14の組み合わせ論理ゲート26の間及び第2の装置16の組み合わせ論理ゲート26の間で異なるデータパスを可能にするようにコーディネード(協調)されている。第1装置14及び第2装置16の組み合わせ論理ゲート26は、物理的にインターリーブされてもよい。SEL_iは、どのフリップフロップセット41が、第2装置16に対する第1装置14のどの組み合わせ論理ゲート26をサンプリングするかを制御する。SEL_oは、次のクロックサイクルで正しいフリップフロップセット41を対応する組み合わせ論理ゲート26に接続するように設定される。一実施形態では、SEL_oは、FF SET41のクロックに従ってSEL_iをサンプリングすることにより生成することができる。例えば、Fig2Cに示すように、1つのクロックサイクルでSEL_iが「1」であった場合、次のクロックサイクルでSEL_oは「1」となり、1つのクロックサイクルでSEL_iが「0」であった場合、次のクロックサイクルでSEL_o 「0」となる。したがって、Fig2Cの例では、SEL_iは一主コントローラ18により任意に制御され、SEL_oは主コントローラ18により適宜設定される。なお、Fig2Cは、あくまでも概略回路図であるため、インターリーブ又は共有されてもされなくてもよい装置の他の部分、及び被保護システム10の他のインターフェースロジックに対する第1装置14及び第2装置16のすべての入力及び出力について図示されていない。
【0074】
Fig3は、Fig1の被保護システムが第1保護方法の動作時の一例を示すフローチャート50である。Fig1にも示すように、シリコンチップ12がメモリレジスタ30を含む場合、まず、主コントローラ18は、第1の装置14と第2の装置16との間でメモリレジスタ30の使用を割り当てる(ステップ52)。次に、主コントローラ18は、第1装置14が第1機能プロセス15を実行している1つの期間中に、第1保護プロセス17を実行するように第2装置16に信号を送る(ステップ54)。また、いくつかの実施形態では、主コントローラ18は、第1装置が第1機能プロセス15を実行している全期間中に、第1保護プロセス17を実行するように第2装置に信号を送る。
【0075】
いくつかの実施形態では、主コントローラ18は、第2装置16に、所定の数の処理サイクル(繰り返し)で(又は所定の期間で)第1保護プロセス17を実行し、各処理サイクルで検証可能なテスト結果を検証するように指示することができる。他の実施形態では、主コントローラ18は、第1機能プロセス15が実行完了するまで第1保護プロセス17を実行するように第2装置16に指示してもよい。第1装置14による第1機能プロセス15の実行完了は、主制御装置18により直接的に、又は主制御装置18が第2装置16に信号を送ることによって間接的に監視することができる。
【0076】
第1装置14は、第1機能プロセス15を実行し(ステップ56)、第2装置16は、第1保護プロセス17を実行するようになっている(ステップ58)。第1機能プロセス15と第1保護プロセス17は、通常、並行して実行される。
【0077】
第2装置16及び/又は主コントローラ18は、検証可能なテスト結果を検証する(ステップ60)。
【0078】
ステップ62では、もし検証可能なテスト結果が肯定的に検証された場合(分岐64(YES))、処理はを経由してステップ66に進む。ステップ66では、第1機能プロセス15の結果の準備ができているかどうかを検証する。もし結果の準備ができている場合(分岐72(YES))、第1装置14又は主コントローラ18は、第1機能プロセス15の結果を公開する(ステップ74)、又は第1機能プロセス15の結果に基づく動作をする。例えば、機能プロセスの結果は(例えば、別のプロセス、シークレット、又はその他のセキュリティで保護されたリソース)へのアクセスの許可又は拒否したり、又はパスワードの認証に基づいて物理ロックを解除するI / O信号のトグルを提供する。その場合、他のプロセスなどへのアクセスの承認は、保護プロセスの検証可能なテスト結果の検証が成功するまで延期される。もし第1機能プロセス15の結果の準備ができていない場合(分岐76(NO))、ステップ58に処理を戻して第1保護プロセス17を別の処理サイクルで処理するようにステップ58、60、62のプロセルを繰り返す。
【0079】
第2装置16が所定の数の処理サイクル(または所定の期間)で第1保護プロセス17を実行するように指示された実施形態では、決定ステップ66は不要であり、第1機能プロセス15の結果は、第2装置16が所定の数の処理サイクル(または所定の期間)で実行された後、及び検証可能なテスト結果が各処理サイクルの完了時に肯定的に検証され後に、自動的に公開又は実行される(例えば、制限されたリソースへのアクセスを提供する)。
【0080】
もし検証可能なテスト結果が肯定的に検証されなかった場合(即ち、第1保護プロセス17が正しい検証可能なテスト結果を提供できなかった場合)(分岐68(NO))、攻撃処理コントローラ20は第1機能プロセス15を保護するように保護動作を実行する(ステップ70)。この場合、主コントローラ18は、通常、第1機能プロセス15の結果の公開を保留する(ステップ71)か、公開された結果に基づいて後続的に動作することを回避(例えば、制限されたリソースへのアクセスを回避する)。従って、主コントローラ18は、第1保護プロセス17の第1検証可能なテスト結果が期待の結果に等しいことを条件として、第1機能プロセス15の結果を公開又は公開された結果に基づく動作をするように制御する(ステップ74)。
【0081】
Fig4は、Fig1の被保護システムが第2保護方法の動作時の一例を示すフローチャート80である(Fig1にも参照)。
【0082】
シリコンチップ12がメモリレジスタ30を含む場合、まず、主コントローラ18は、第1の装置14と第2の装置16との間でメモリレジスタ30の使用を割り当てる(ステップ82)。次に、主コントローラ18は、第1装置14が第1機能プロセス15を実行している1つの期間中に、第1保護プロセス17を実行するように第2装置16に信号を送る(ステップ84)。また、いくつかの実施形態では、主コントローラ18は、第1装置が第1機能プロセス15を実行している全期間中に、第1保護プロセス17を実行するように第2装置に信号を送る。
【0083】
いくつかの実施形態では、主コントローラ18は、所定の数の処理サイクル又は所定の期間にわたって第1保護プロセス17を実行するように第2装置16に指示することができる。他の実施形態では、主コントローラ18は、第1機能プロセス15が完了するまで第1保護プロセス17を実行するように第2装置16に指示してもよい。また、第1装置14による第1機能プロセス15の完了は、出コントローラ18によって監視され、主コントローラ18によって第2装置16に信号を送られて、循環処理を停止させることができる。
【0084】
第1装置14は第1機能プロセス15を実行する(ステップ86)、第2装置16は複数の処理サイクルにわたって周期的に第1保護プロセス17を実行する(ステップ88)。第1機能プロセス15および第1保護プロセス17は、通常、並行して実行される。第1保護プロセス17は、第1機能プロセス15に先んじて、又は第1機能プロセス15と同時に開始されることが好ましい。
【0085】
ステップ90では、主コントローラ18は、第1機能プロセス15の結果が準備ができているかどうかを検証する。もし第1機能プロセス15の結果の準備ができていない場合(分岐92(NO))、処理がステップ88に戻され、第1保護プロセス17が繰り返される。
【0086】
もし結果の準備ができている場合(分岐94(YES))、主コントローラ18は、第1機能プロセス15の処理の完了に応答して、第1保護プロセス17の実行を中断する(ステップ96)。第1保護プロセス17が現在の処理サイクル内で完了する場合、第2装置16又は主コントローラ18は、検証可能なテスト結果を検証するための待機期間が設けられている(ステップ98)。
【0087】
第2装置16が所定数の処理サイクルまたは所定の期間で第1保護プロセス17を実行するように指示された実施形態では、ステップ90及びステップ96の処理は不要であり、第1保護プロセス17は所定数の処理サイクルで(又は所定の期間が終わるまで)繰り返された後、処理をステップ98に進む。
【0088】
ステップ100では、もし検証可能なテスト結果が肯定的に検証された場合(分岐102(YES))、第1装置14又は主コントローラ18は、第1機能プロセス15の結果を公開する(ステップ104)、又は第1機能プロセス15の結果に基づく動作をする。
【0089】
もし検証可能なテスト結果が肯定的に検証されなかった場合(即ち、第1保護プロセス17が正しい検証可能なテスト結果を提供できなかった場合)(分岐106(NO))、攻撃処理コントローラ20は第1機能プロセス15を保護するように保護動作を実行する(ステップ108)。この場合、主コントローラ18は、第1機能プロセス15の結果の公開を保留する(ステップ110)か、公開された結果に基づいて後続的に動作することを回避(例えば、制限されたリソースへのアクセスを回避する)。従って、主コントローラ18は、第1保護プロセス17の第1検証可能なテスト結果が期待の結果に等しいことを条件として、第1機能プロセス15の結果を公開又は公開された結果に基づく動作をするように制御する。
【0090】
Fig5は、逆方向保護機能を有するFig1の被保護システムを示すステップ図である。
【0091】
また、いくつかの実施形態では、第1装置14と第2装置16の役割を選択的に入れ替えて、第2装置16が第1装置14を保護する代わりに、第1装置14が第2装置16を保護するようにしてもよい。また、機能モジュールを使用して第1装置14および第2装置16が互いに保護機能を選択的に提供できるようにすることで、互いに保護することを可能にしてもよい。第1装置14及び第2装置16の役割を制御するためにいくつかの論理回路を追加することで、シリコンチップ12上のスペースを節約する。これらの実施形態では、被保護システム10の主な動作方式として、必要に応じて第1機能プロセス15が第2「保護」プロセスとして使用され、第1保護プロセス17が生産データを処理する第2「機能」プロセスとして使用される。
【0092】
いくつかの実施形態では、主コントローラ18は、第2装置16が第1保護プロセス17を使用して第2機能プロセスを実行している間に、第2検証可能なテスト結果を有する第2保護プロセスとして第1機能プロセス15を実行するように第1装置14に信号を送る。これにより、第1装置14が攻撃から第2装置16を保護することができる。
【0093】
また、一部の保護プロセスは、例えば、暗号化とそれに続く復号化などの逆演算を実行することにより、自身で結果を検証することができる。また、第1装置14と第2装置16の両方が機能的計算を実行している間に、第1装置14と第2装置16のうちの一方が他方を保護するようにインターリーブされてもよい。この場合、第1装置14はいずれにしても機能プロセスとして第1機能プロセス15を実行しているので、主コントローラ18は第2保護プロセスとして第1機能プロセス15を実行するように第1装置14に信号を送る必要はない。例えば、CPUがAESエンジンとインターリーブされた場合、AESエンジンが逆操作を実行した結果を元の入力データと比較するため、AESが機能的なCPU操作と同時に実行される機能的なプロセスを実行している間でも、CPUは、AESエンジンの保護から恩恵を受けることができる。
【0094】
上記の態様はあくまでも例として説明されている。第1装置14は、RSAプロセスを実行するように構成され、第2装置16は、AESプロセスを実行するように構成されてもよい。被保護システム10がRSAプロセスを使用してデータを処理する必要があった場合、第1装置14はRSAプロセスを実行し、第2装置16はAESプロセスを使用してRSAプロセスを保護する。被保護システム10がAESプロセスを使用してデータを処理する必要があった場合、第2装置16はAESプロセスを実行し、第1装置14はRSAプロセスを使用してAESプロセスを保護する。
【0095】
実際には、主コントローラ18及び/又は攻撃処理コントローラ20の一部又はすべての機能を単一の物理コンポーネントに結合されるか、複数の物理コンポーネントを使用して実現されることができる。これらの物理コンポーネントは、ハードワイヤード(hard-wired)またはプログラム可能なデバイス、またはこの2つの組み合わせを含んでもよい。いくつか実施形態アでは、少なくともいくつかの機能は、適切なソフトウェアの制御下でプログラム可能なプロセッサによって実行されてもよい。ソフトウェアは、例えばネットワークを介して電子形式でデバイスにダウンロードすることができる。なお、ソフトウェアは、光学、磁気、または電子メモリなどの有形の非一時的なコンピューター読み取り可能な記憶媒体に保存することができる。
【0096】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0097】
10…被保護システム
12…シリコンチップ
14…第1装置
15…第1機能プロセス
16…第2装置
17…第1保護プロセス
18…主コントローラ
20…攻撃処理コントローラ
22…第1装置の一部
24…第2装置の一部
26…組み合わせ倫理ゲート
28…メモリインターフェース
30…メモリレジスト
40…物理レーアウト
41…フリップフロップセット
42…第1装置の素子
43…入力マルチプレクサ
44…第2装置の素子
45…出力マルチプレクサ
46…フットプリント
47…マルチプレクサセレクタ
49…インバータ
51…インバータ
50…フローチャート
52、54、56、58、60、62、64、66、68、70、71、72、74、76、80、82、84、86、88、90、92、94、96、98、100、102、104、106、108、110…ステップ
80…保護方法