(57)【要約】【課題】被保護システム及び保護方法を提供する。【解決手段】シリコンチップと、シリコンチップ上に配置され、第１機能プロセスを実行するように構成された第１装置と、第１検証可能なテスト結果を有する第１保護プロセスを実行するように構成され第１装置の少なくとも一部と少なくとも一部がインターリーブする（交錯する）物理レイアウトを有し、第１装置の少なくとも一部に対する攻撃が少なくとも一部にも発生する第２装置と、第１装置が第１機能プロセスを実行している１つの期間中に第１保護プロセスを実行するように第２装置に信号を送るように構成される主コントローラと、少なくとも第１保護プロセスが攻撃が実行されていることを示す第１検証可能なテスト結果を提供することに失敗した場合に応答して、第１機能プロセスを保護する保護措置を実行するように構成された攻撃処理コントローラーとを備える。【選択図】図１
2020109967.tif 000002
【特許請求の範囲】
【請求項１】
シリコンチップと、
前記シリコンチップ上に配置され、第１機能プロセスを実行するように構成された第１装置と、
前記シリコンチップ上に配置され、第１検証可能なテスト結果を有する第１保護プロセスを実行するように構成され、前記第１装置の少なくとも一部と少なくとも一部がインターリーブする（交錯する）物理レイアウトを有し、前記第１装置の前記少なくとも一部に対する攻撃が前記少なくとも一部にも発生する第２装置と、
前記シリコンチップ上に配置され、前記第１装置が前記第１機能プロセスを実行している１つの期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送るように構成される主コントローラと、
前記シリコンチップ上に配置され、少なくとも前記第１保護プロセスが攻撃が実行されていることを示す前記第１検証可能なテスト結果を提供することに失敗した場合に応答して、前記第１機能プロセスを保護する保護措置を実行するように構成された攻撃処理コントローラーと、
を備える被保護システム。
【請求項２】
前記第２装置の前記少なくとも一部とインターリーブする前記第１装置の前記少なくとも一部は、前記第１装置によって占有される前記シリコンチップ上の面積の少なくとも２０％を含む請求項１に記載の被保護システム。
【請求項３】
前記第１装置と前記第２装置によって共有される複数のメモリレジスタを含み、前記主コントローラは、前記第１装置と前記第２装置との間で前記複数のメモリレジスタの使用を割り当てるように構成される請求項１に記載の被保護システム。
【請求項４】
前記主コントローラは、前記第１装置が前記第１機能プロセスを実行している全期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送るように構成される請求項１に記載の被保護システム。
【請求項５】
前記第１機能プロセスと前記第１保護プロセスは、異なるプロセスである請求項１に記載の被保護システム。
【請求項６】
前記第１保護プロセスは、所定のランタイムを有し、前記攻撃処理コントローラは、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第１機能プロセスを保護するように構成される請求項１に記載の被保護システム。
【請求項７】
前記第１保護プロセスは、複数の処理サイクルにわたって周期的に実行され、前記主コントローラは、前記第１機能プロセスの完了時に応じて前記第１保護プロセスの実行を中断するように構成される請求項１に記載の被保護システム。
【請求項８】
前記主コントローラは、前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが第２結果を公開するように制御する請求項１に記載の被保護システム。
【請求項９】
前記主コントローラは、前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが前記第２結果に基づく動作制御を行う請求項１に記載の被保護システム。
【請求項１０】
前記第１装置は、前記第２装置が第２機能プロセスを実行している間に、前記第２装置を攻撃から保護するように第２検証可能なテスト結果を有する第２保護プロセスとして前記第１機能プロセスを実行する請求項１に記載の被保護システム。
【請求項１１】
第１保護プロセスは、第２機能への入力として用いられる出力を提供する第１機能を実行することを含み、前記第２機能の出力が前記第１機能への入力に等しくなるように、前記第２機能が定義されている請求項１に記載の被保護システム。
【請求項１２】
シリコンチップ上に配置された第１装置によって第１機能プロセスを実行し、
前記シリコンチップ上に配置された第２装置によって第１検証可能なテスト結果を有する第１保護プロセスを実行し、前記第1装置の少なくとも一部と少なくとも一部がインターリーブする物理レイアウトを有し、前記第１装置の前記少なくとも一部に対する攻撃が前記少なくとも一部にも発生し、
前記第１装置が前記第１機能プロセスを実行している１つの期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送り、
少なくとも前記第１保護プロセスが攻撃が実行されていることを示す前記第１検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行することを含む保護方法。
【請求項１３】
前記第２装置の前記少なくとも一部とインターリーブする前記第１装置の前記少なくとも一部は、前記第１装置によって占有される前記シリコンチップ上の面積の少なくとも２０％を含む請求項１２に記載の保護方法。
【請求項１４】
前記第１装置と前記第２装置との間で、前記第１装置と前記第２装置によって共有される複数のメモリレジスタの使用を割り当てることを含む請求項１２に記載の保護方法。
【請求項１５】
前記第１装置が前記第１機能プロセスを実行している全期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送ることを含む請求項１２に記載の保護方法。
【請求項１６】
前記第１機能プロセスと前記第１保護プロセスは、異なるプロセスである請求項１２に記載の保護方法。
【請求項１７】
前記第１保護プロセスは、所定のランタイムを有し、保護方法は、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第１機能プロセスを保護することを含む請求項１２に記載の保護方法。
【請求項１８】
前記第１保護プロセスは、複数の処理サイクルにわたって周期的に実行され、保護方法は、前記第１機能プロセスの完了時に応じて前記第１保護プロセスの実行を中断することを含む請求項１２に記載の保護方法。
【請求項１９】
前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが第２結果を公開するように制御することを含む請求項１２に記載の保護方法。
【請求項２０】
前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが前記第２結果に基づく動作制御を行うことを含む請求項１２に記載の保護方法。
【請求項２１】
前記第２装置が第２機能プロセスを実行している間に、前記第２装置を攻撃から保護するように第２検証可能なテスト結果を有する第２保護プロセスとして前記第１機能プロセスを実行することを含む請求項１２に記載の保護方法。
【請求項２２】
第１保護プロセスは、第２機能への入力として用いられる出力を提供する第1機能を実行することを含み、前記第２機能の出力が前記第１機能への入力に等しくなるように、前記第２機能が定義されている請求項１２に記載の保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、チップセキュリティに関し、特に、限定的ではないが、フォールトインジェクション攻撃（故障注入攻撃）に対する被保護システム及び保護方法に関する。
【背景技術】
【０００２】
フォールトインジェクション攻撃は、暗号化回路などの安全な電子回路から情報にアクセス、分析、又は抽出するために使用される一連の技術である。フォールトインジェクション攻撃は、通常、信号線に物理的に接触したり、高出力レーザーや電磁パルスを適用したり、電源やその他の外部インターフェイスにグリッチを発生させたりして、回路に障害を引き起こすことが挙げられる。この障害により、回路が機密情報を出力するか、又は攻撃者が回路又は格納する情報に侵入するのを支援する。
【０００３】
フォールトインジェクション攻撃を検出及び軽減するためのさまざまな技術が当技術分野で知られている。例えば、米国特許第8,375,253号（特許文献１）においては、その発明者のBenoit氏は、電子デバイスでのコンピュータ化されたコードの実行中の摂動によって障害を検出する方法を開示している。コンピューターコードには機密プロセスが含まれている。この方法は、機密プロセスの冗長化処理を実行するステップと、機密プロセスと冗長化処理の間に遅延を挿入するステップを含む。遅延中にトラップング処理が実行される。トラッピング処理は摂動と供給に敏感なので、摂動がない場合は予測可能な結果が提供される。
【０００４】
また、米国特許公開2004/0186979（特許文献２）においては、Janke氏らは、第1計算ユニットと、第2計算ユニットと、2つの計算ユニットを制御するための制御手段とを備えるプロセッサを開示している。当該制御手段により、それらの計算ユニットが、補完データを処理するハイセキュリティモードと、又は独立したデータを処理する並列動作モードと、又は同じデータを処理するセキュリティ動作モードと、又は計算ユニットの1つがオフになっている省電力動作モードと、の間で動作可能となるように選択的に制御されている。
【０００５】
また、英国特許出願GB 2,431,258（特許文献３）においては、Pomaranski氏らは、同じタイプの複数の実行ユニットと、モードレジスタの値を設定して、フォールトトレランス機能を選択的にオン又はオフにするために使用されるモードレジスタと、を含むマイクロプロセッサを開示している。これにより、マイクロプロセッサは、プログラムにフォールトトレランスが必要かどうかに応じて、フォールトトレラントモード又はパフォーマンスモード（フォールトトレランス動作がオフ）で選択的に動作できる。フォールトトレラントモードでは、命令発行/デコードユニットが両方の浮動小数点ユニット（FPU）に同じ命令を発行する。つまり、FPUの1つが冗長処理ニットとして使用される。実行後、コンパレータはFPUのそれぞれの出力を比較する。出力が一致しない場合、コンパレータはエラーを示す信号を比較フラグに提供する。
【０００６】
また、米国特許公開2011/0029828（特許文献４）においては、Bancel氏らは、集積回路のフォールトインジェクションを検出する回路であって、前記集積回路の論理機能を実行する少なくとも1つの論理ステップと、処理待ち信号及び論理ステップの機能フェーズと検出フェーズを示す分離イネーブル信号を受信するために接続され、機能フェーズ中に処理待ち信号を論理ステップの少なくとも1つの入力に転送し、検出フェーズ中に定数値を論理ステップの入力に転送する隔離ステップと、検出段階中に、論理ステップの出力信号の状態を監視し、出力信号の状態が変化した場合に警告信号を生成するように構成された検出ステップと、を備える回路を開示している。
【０００７】
また、米国特許第１０，０１３，５８１号（特許文献５）においては、Ｈｅｒｓｈｍａｎ氏は、機能回路及び故障検出回路を含むフォールトインジェクションを検出するための装置を開示している。機能回路は、１つ以上の機能入力信号を受信し、機能入力信号を処理して、１つ以上の機能出力信号を生成するように構成される。機能回路は、最初の時間間隔中の1つ以上の機能入力信号の指定されたセットの安定性が、２番目の時間間隔中の1つ以上の機能出力信号の指定されたセットの安定性を保証することを指定する安定条件を有し、これは初回の間隔から導出される。障害検出回路は、指定された機能入力及び出力信号を監視し、監視された機能入力及び出力信号に基づいて安定性条件を評価し、安定条件からの逸脱の検出に応じて障害投入の試みを検出するように構成されている。
【０００８】
また、米国特許第９，５２３，７３６号（特許文献６）においては、Ｈｅｒｓｈｍａｎ氏らは、集積回路（ＩＣ）及び回路にまたがる高ファンアウトネットワークを含む故障注入を検出するための装置を開示している。 いくつかの実施形態では、高ファンアウトネットワークは、ICの機能動作中は継続的に非アクティブであり、回路は、高ファンアウトネットワーク内の複数のサンプリングポイントで信号レベルを検知し、検知された信号レベルで、ファンアウトの多いネットワークの信号異常。いくつかの実施形態では、回路は、高ファンアウトネットワークの複数のサンプリングポイントで信号レベルを感知し、感知された信号レベルに基づいて、機能的動作中に正当な信号変動と高ファンアウトネットワークの信号異常を区別するように構成される IC、及び信号の異常を検出することにより、障害挿入の試みを識別する。
【０００９】
また、米国特許公開2011/0225432（特許文献７）においては、Trichina氏は、暗号化操作中に少なくとも1つのルックアップテーブルを使用してフォールト攻撃を検出する方法を開示している。このルックアップテーブルには複数のサブテーブルが含まれ、各サブテーブルは同じ数の固定ビット長値を持ち、複数のサブテーブル内の同じ位置の値の間には固定関係があります。この方法には、ルックアップテーブルの各サブテーブルの同じ位置からデータ値を取得するロード操作を実行する、2つ以上のデータ値間の固定関係を確認する、確認結果に応じて出力信号を生成することが含まれる。
【００１０】
また、米国特許第7,590,880号（特許文献８）では、発明者のHershman氏は、ハードウェアモジュールのオーバークロック攻撃を検出して防止するための回路について開示している。回路には、テスト信号と、テスト信号の遅延信号の1つを提供する遅延パスと、テスト信号と遅延信号の論理状態を比較し、両者が異なる場合に、攻撃を回路指示を発行する。また、米国特許第9,716,502号（特許文献９）においては、発明者のSarafianos氏は、マトリックス配列に分布した放射線検出素子のグループと、列と行に配置された検出要素の出力を結合する複数の論理ゲートと、論理ゲートによって提供され、イベントカウンターと遅延要素を含む信号を解釈するための回路とを含み、検出要素の各出力は、行を結合するゲートと列を結合するゲートに接続されている集積回路保護デバイスを開示している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第８,３７５,２５３号
【特許文献２】米国特許公開２００４/０１８６９７９号公報
【特許文献３】英国特許出願GB ２,４３１,２５８号公報
【特許文献４】米国特許公開２０１１/００２９８２８号公報
【特許文献５】米国特許第１０,０１３,５８１号公報）
【特許文献６】米国特許第９,５２３,７３６号公報
【特許文献７】米国特許公開２０１１/０２２５４３２号公報
【特許文献８】米国特許第７,５９０,８８０号号公報
【特許文献９】米国特許第９,７１６,５０２号号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、下記の被保護システム及び保護方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の実施例にかかる被保護システムは、シリコンチップと、前記シリコンチップ上に配置され、第１機能プロセスを実行するように構成された第１装置と、前記シリコンチップ上に配置され、第１検証可能なテスト結果を有する第１保護プロセスを実行するように構成され、前記第１装置の少なくとも一部と少なくとも一部がインターリーブする（交錯する）物理レイアウトを有し、前記第１装置の前記少なくとも一部に対する攻撃が前記少なくとも一部にも発生する第２装置と、前記シリコンチップ上に配置され、前記第１装置が前記第１機能プロセスを実行している１つの期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送るように構成される主コントローラ（primary controller）と、前記シリコンチップ上に配置され、少なくとも前記第１保護プロセスが攻撃が実行されていることを示す前記第１検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行するように構成された攻撃処理コントローラーと、を備える。
【００１４】
また、本発明の被保護システムにおいて、前記第２装置の前記少なくとも一部とインターリーブする前記第１装置の前記少なくとも一部は、前記第１装置によって占有される前記シリコンチップ上の面積の少なくとも２０％を含む。
【００１５】
また、本発明の被保護システムは、前記第１装置と前記第２装置によって共有される複数のメモリレジスタを含み、前記主コントローラ（primary controller）は、前記第１装置と前記第２装置との間で前記複数のメモリレジスタの使用を割り当てるように構成される。
【００１６】
また、本発明の被保護システムにおいて、前記主コントローラは、前記第１装置が前記第１機能プロセスを実行している全期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送るように構成される。
【００１７】
また、本発明の被保護システムにおいて、前記第１機能プロセスと前記第１保護プロセスは、異なるプロセスである。
【００１８】
また、本発明の被保護システムにおいて、前記第１保護プロセスは、所定のランタイムを有し、前記攻撃処理コントローラは、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第１機能プロセスを保護するように構成される。
【００１９】
また、本発明の被保護システムにおいて、前記第１保護プロセスは、複数の処理サイクルにわたって周期的に実行され、前記主コントローラは、前記第１機能プロセスの完了時に応じて前記第１保護プロセスの実行を中断するように構成される。
【００２０】
また、本発明の被保護システムにおいて、前記主コントローラは、前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが第２結果を公開するように制御する。
【００２１】
また、本発明の被保護システムにおいて、前記主コントローラは、前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが前記第２結果に基づく動作制御を行う。
【００２２】
また、本発明の被保護システムにおいて、前記第１装置は、前記第２装置が第２機能プロセスを実行している間に、前記第２装置を攻撃から保護するように第２検証可能なテスト結果を有する第２保護プロセスとして前記第１機能プロセスを実行する。
【００２３】
また、本発明の被保護システムにおいて、第１保護プロセスは、第２機能への入力として用いられる出力を提供する第１機能を実行することを含み、前記第２機能の出力が前記第１機能への入力に等しくなるように、前記第２機能が定義されている。
【００２４】
本発明の実施例にかかる保護方法は、シリコンチップ上に配置された第１装置によって第１機能プロセスを実行し、前記シリコンチップ上に配置された第２装置によって第１検証可能なテスト結果を有する第１保護プロセスを実行し、前記第1装置の少なくとも一部と少なくとも一部がインターリーブする物理レイアウトを有し、前記第１装置の前記少なくとも一部に対する攻撃が前記少なくとも一部にも発生し、前記第１装置が前記第１機能プロセスを実行している１つの期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送り、少なくとも前記第１保護プロセスが攻撃が実行されていることを示す前記第１検証可能なテスト結果を提供することに失敗した場合に応答して、前記第1機能プロセスを保護する保護措置を実行することを含む。
【００２５】
また、本発明の保護方法は、前記第２装置の前記少なくとも一部とインターリーブする前記第１装置の前記少なくとも一部は、前記第１装置によって占有される前記シリコンチップ上の面積の少なくとも２０％を含む。
【００２６】
また、本発明の保護方法は、前記第１装置と前記第２装置との間で、前記第１装置と前記第２装置によって共有される複数のメモリレジスタの使用を割り当てることを含む。
【００２７】
また、本発明の保護方法は、前記第１装置が前記第１機能プロセスを実行している全期間中に、前記第１保護プロセスを実行するように前記第２装置に信号を送ることを含む。
【００２８】
また、本発明の保護方法において、前記第１機能プロセスと前記第１保護プロセスは、異なるプロセスである。
【００２９】
また、本発明の保護方法は、前記第１保護プロセスは、所定のランタイムを有し、保護方法は、少なくとも前記第1保護プロセスが前記所定のランタイムの所定許容範囲内で実行されなかった場合、前記保護措置を実行して前記第１機能プロセスを保護することを含む。
【００３０】
また、本発明の保護方法においては、前記第１保護プロセスは、複数の処理サイクルにわたって周期的に実行され、保護方法は、前記第１機能プロセスの完了時に応じて前記第１保護プロセスの実行を中断することを含む。
【００３１】
また、本発明の保護方法は、前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが第２結果を公開するように制御することを含む。
【００３２】
また、本発明の保護方法は、前記第１保護プロセスの前記第１検証可能なテスト結果が期待の結果に等しいことを条件として、前記第１機能プロセスが前記第２結果に基づく動作制御を行うことを含む。
【００３３】
また、本発明の保護方法は、前記第２装置が第２機能プロセスを実行している間に、前記第２装置を攻撃から保護するように第２検証可能なテスト結果を有する第２保護プロセスとして前記第１機能プロセスを実行することを含む。
【００３４】
また、本発明の保護方法において、第１保護プロセスは、第２機能への入力として用いられる出力を提供する第1機能を実行することを含み、前記第２機能の出力が前記第１機能への入力に等しくなるように、前記第２機能が定義されている。
【図面の簡単な説明】
【００３５】
【図１】Ｆｉｇ１は、本発明の実施例にかかる被保護システムの構築及び動作を示すステップ図である。
【図２】Ｆｉｇ２Ａ〜Ｆｉｇ２Ｂは、Ｆｉｇ１の被保護システムにおけるインターリーブされた物理レイアウトを示す図である。
【図３】Ｆｉｇ２Ｃは、Ｆｉｇ１の被保護システムで使用される共有されたメモリーレジスタの概略構成図である。
【図４】Ｆｉｇ３は、Ｆｉｇ１の被保護システムが第１保護方法の動作時の一例を示すフローチャートである。
【図５】Ｆｉｇ４は、Ｆｉｇ１の被保護システムが第２の保護方法の動作時の一例を示すフローチャートである。
【図６】Ｆｉｇ５は、逆方向保護機能を有するＦｉｇ１の被保護システムを示すステップ図である。
【発明を実施するための形態】
【００３６】
以下、本発明について、図に示す実施形態に基づいて説明する。
【００３７】
フォールトインジェクション攻撃では、通常、信号線と物理的に接触したり、高出力レーザーや電磁パルスを利用したり、電源やその他の外部インターフェイスにグリッチを発生させたりして、回路に障害を引き起こす。この障害により、回路が機密情報を出力してしまったり、攻撃者が回路に格納されている情報へ侵入することに対する支援が意図されます。
【００３８】
本発明の実施形態では、物理的及び論理的保護の組み合わせを使用した相乗効果によって、フォールトインジェクション攻撃を抑制することができるに被保護システムについて説明する。機能プロセスを実行する被保護装置と並行して、保護装置が検証可能なテスト結果を有する保護プロセスを実行する。保護装置及び被保護装置は、シリコンチップ上に配置され、保護装置の少なくとも一部と被保護装置の少なくとも一部とがインターリーブする物理レイアウトを有し、被保護装置の少なくとも一部に対する攻撃が保護装置の少なくとも一部にも発生するように構成されている。
【００３９】
従って、被保護装置のインターリーブ部分が攻撃された（例えば、グリッチ又は電磁（EM）場又はレーザービームなどにより）場合、保護装置も攻撃されることになる。その結果、保護プロセスが検証可能なテスト結果を提供できず、それにより攻撃が検出される。通常、保護措置が実行された後に攻撃の検出が開始される。
【００４０】
主コントローラは、シリコンチップ上に配置され、被保護装置が機能プロセスを実行している１つの期間中に、保護プロセスを実行するように保護装置に信号を送る。
【００４１】
攻撃処理コントローラー（主コントローラーによる代用もできる）は、シリコンチップ上に配置され、保護プロセスが攻撃が実行されていることを示す検証可能なテスト結果を提供することに失敗した場合に応答して、機能プロセスを保護する保護措置を実行する。保護措置には、機能プロセスの結果の公表の拒否及び/又は保留が含まれる。いくつかの実施形態では、保護プロセスの検証可能なテスト結果の検証が成功するまで、機能プロセスの結果の公開が実行されないようになっている。例えば、機能プロセスの結果は、（別のプロセス、機密又はセキュリティーリソースなど）へのアクセスを許可又は拒否したり、又はパスワードの認証結果に基づいて物理的ロックを解除するI/O信号のトグルを生成する。その場合、別のプロセスなどへのアクセスの承認は、保護プロセスの検証可能なテスト結果の検証が成功するまで延期される。
【００４２】
各装置の素子間のインターリーブは、少なくとも部分的に、保護装置の素子によって覆われる被保護装置の素子を含んでもよい。被保護素子は、組み合わせ論理ゲート、メモリインターフェイスの一部、（ラッチ、フリップフロップ、ランダムアクセスメモリ（RAM）など）の揮発性メモリ素子（例えば、メモリレジスタ）、（ワンタイムプログラマブル（OTP）、電気（電圧）の操作によってデータの消去や書き換えが可能となっているメモリ（EEPROM）、フラッシュメモリなど）の不揮発性メモリ素子、又は被保護装置内の他の機密素子を含んでもよい。保護装置と被保護装置によって共有（例えば、時方式によって共有）される複数のメモリレジスタを含んでもよい。主コントローラーは、通常、各装置間の複数のメモリレジスタの使用を割り当てる。この共有されたメモリ複数のを使用することで、敏感な素子間のインターリーブが強化され、その結果、攻撃者が攻撃する必要があるターゲットとなる装置を推測し続けなればならなくなる。
【００４３】
また、本発明のいくつかの実施形態では、保護プロセスと機能プロセスは異なるプロセスである。例えば、保護プロセスはRivest?Shamir?Adleman（RSA）暗号化プロセスを、機能プロセスはAdvanced Encryption Standard（AES）暗号化を実行するようになっている。
【００４４】
また、保護プロセスは、検証可能な所定のランタイムを有してもよい。攻撃処理コントローラーは、保護プロセスが所定のランタイムの所定許容範囲内で実行されなかった場合、保護措置を実行して機能プロセスを保護するようになっている。
【００４５】
また、本発明のいくつかの実施形態では、保護プロセスは複数の処理サイクルにわたって周期的に実行されることができ、１つの処理サイクルの出力を次の処理サイクルの入力に提供する。機能プロセスが完了すると、保護プロセスの周期的な実行が中断される。また、他の実施形態では、保護プロセスは、被保護装置上で実行される機能プロセスの予想実行期間に対応する所定の数の処理サイクルの間で実行するように設定されてもよい。保護プロセスが周期的に実行される場合、すべての処理サイクルの完了するたびに、又は最後の処理サイクルの完了時に検証可能なテスト結果を確認できる。本明細書及び請求の範囲で使用される「処理サイクル」とは、データ値に対する1つ以上の操作が含まれる保護プロセスの１回の実行を意味する。例えば、データ値に対する最初の操作の後、最初の操作の結果データ値に対して逆操作を実行する。
【００４６】
便宜上、検証可能なテスト結果が最後の処理サイクルの終了時に検証される場合、通常、保護プロセスは、第２機能への入力として用いられる出力を提供する第１機能を実行することを含み、第２機能の出力が第１機能への入力に等しくなるように、第２機能が定義されている。例えば、出力を提供するデータ値を暗号化してから、当該出力を復号化することで元のデータ値を提供する。同様の機能として、加算して減算する、乗算して除算する、逆数を実行の後に他の逆数を求めるなどが含まれる。各処理サイクルの第１機能への入力は、同じ値、カウンター値、ランダム値、又はその他の任意の適切な値であってもよい。上記機能は、各処理サイクルの終了時の検証可能なテスト結果を検証される場合にも適用できる。いくつかの実施形態では、検証可能なテスト結果は、事前に計算された予想結果と比較することができる。
【００４７】
また、いくつかの実施形態では、保護装置と被保護装置の役割を入れ替えて、被保護装置であった保護装置が、保護装置であった被保護装置を保護するようにしてもよい。一例として、RSAを実行している保護装置が、チップの機能動作の一部としてAESを実行している装置を保護していた場合、今度は、AESを実行している装置がチップの機能動作の一部としてのRSAを実行している装置を保護するように役割を逆にすることができる。
【００４８】
Ｆｉｇ１は、本発明の実施例にかかる被保護システムの構成及び動作を示すステップ図である。被保護システム１０は、シリコンチップ１２と、第１装置１４と、第２装置１６と、主コントローラー１８と、攻撃処理コントローラー２０と、を備える。
【００４９】
第１装置１４は、シリコンチップ１２上に配置され、第１機能プロセスを実行するための装置である。第１機能プロセス１５は、オリジナルデータ値を別のデータ値に変換し、オプションとしてこの別のデータ値を上記オリジナルデータ値に戻すデータ変換プロセスである。また、第１機能的プロセス１５は、フォールトインジェクションによって攻撃された場合、機密データを漏洩する可能性がある。具体的には、第１装置１４は、第１機能プロセス１５を実行するＣＰＵを有し、第１機能プロセス１５は、暗号化キーをある素子から別の素子に移動する、及び/又は１つの文字列を別の文字列と比較してパスワードの正当性を確認する、及び/又は操作を許可するか拒否するかを決定するために検証する。また、第１の機能プロセス１５は、RSA、AES、キー付きハッシュメッセージ認証などの暗号化プロセスコード（HMAC）、又はSHA-256、SHA-3などの暗号化ハッシュ関数などを含む暗号化プロセスであってもよい。Ｆｉｇ１〜Ｆｉｇ４に示すように、被保護装置である第１装置１４は、保護装置である第２装置１６によって保護されている。また、いくつかの実施形態では、第１装置１４と第２装置１６は、保護する役と保護された役の役割を選択的に逆にすることもできる。詳細は、Ｆｉｇ５を参照してまた後述する。
【００５０】
第２装置１６は、シリコンチップ１２上に配置され、第１保護プロセス１７を実行するための装置である。第１保護プロセス１７は、第１検証可能なテスト結果、及びオプションとして後述する所定のランタイムを有してもよい。一例として、第１保護プロセス１７は、（１）定義されたキーとデータを使用したRSA復号化プロセス、（２）AES、HMAC、SHA256又はSHA-3などの暗号化ハッシュ関数を使用した循環暗号化プロセス、（３）今サイクルの巡回プロセスが提供した出力が所定の回数又は巡回プロセスが中断されるまで次のサイクルの巡回プロセス入力に提供される巡回冗長検査（ＣＲＣ）、及び／又は（４）予め定義された結果を持つコードセクションを実行する中央処理装置（ＣＰＵ）を含んでもよい。第１保護プロセス１７は自己検証可能であってもよい。例えば、データ値が周期的に暗号化及び複合化できるため、任意の入力データ値を使用でき、複合化したデータ値が入力データ値に対する検証に使用できる。
【００５１】
また、いくつかの実施形態では、第１機能プロセス１５及び第１保護プロセス１７は、異なるプロセスを実行する。
【００５２】
第１装置１４と第２装置１６は、第１装置１４の少なくとも一部２２と第２装置１６の少なくとも一部２４がインターリーブする（交錯する）物理レイアウトを有するため、第１装置１４の一部２２に対する攻撃が第２装置１６の一部２４にも発生する。シリコンチップ１２は、２つ以上のインターリーブされた装置を含むことができる。
【００５３】
また、いくつかの実施形態では、第２装置１６の一部２４とインターリーブする第１装置１４の一部２２は、第１装置１４によって占有されるシリコンチップ１２上の面積の少なくとも２０％を含む。
【００５４】
いくつかの実施形態では、主コントローラ１８の機能は、第２装置１６と組み合わされることで、主コントローラ１８の少なくとも一部が第１装置１４の一部２２とインターリーブされるようにしてもよい。
【００５５】
第１装置１４及び第２装置１６の素子間のインターリーブは、少なくとも部分的に、第２装置１６の素子によって覆われる第１装置１４の素子を含んでももよい（逆の場合でも可）。また、保護を受けるためにインターリーブされる素子は、組み合わせ論理ゲート２６、メモリインターフェース２８の一部、（ラッチ、フリップフロップ、ランダムアクセスメモリ（RAM）など）の揮発性メモリ要素（例えばメモリレジスタ）、（ワンタイムプログラマブル（OTP）、電気（電圧）の操作によってデータの消去や書き換えが可能となっているメモリ（EEPROM）、フラッシュメモリなど）の不揮発性メモリ素子、又は第１装置（又は第２装置）内の他の機密素子、次のうちの1つ以上を含んでも良い。また、第１装置１４の１つの論理ゲートは、第２装置１６の複数のコンポーネントとインターリーブしてもよい。
【００５６】
第１装置１４及び第２装置１６は、第１装置１４及び第２装置１６によって共有（例えば、時分割方式によって共有）される複数のメモリレジスタ３０を含んでもよい。主コントローラ１８は、第１装置１４と第２装置１６の間で複数のメモリレジスタ３０の使用を周期的に割り当てることができる。
【００５７】
この共有された複数のメモリレジスタ３０を使用することで、敏感な素子（Ｆｉｇ２Ａ〜Ｆｉｇ２Ｃを参照）間のインターリーブが強化され、その結果、攻撃者が攻撃する必要があるターゲットとなる装置を推測し続けなればならなくなる。
【００５８】
主コントローラ１８は、第1装置１４と第２装置１６に割り当てられたそれぞれのレジスタが第１装置１４と第２装置１６の間でインターリーブ又は混合されるように複数のメモリレジスタ３０を割り当てることができ、その結果、第１装置１４に割り当てられたレジスタへの攻撃は、第２装置１６に割り当てられたレジスタによって検出されることができる。
【００５９】
例えば、複数のメモリレジスタ３０のうちの２組以上の交換可能なレジスタのうち、第１装置１４にサービスを提供する１組以上のレジスタと、第２装置１６にサービスを提供する１組以上のレジスタとなるように定義されており、このうちの２組以上のレジスタは、第１装置１４と第２装置１６の間で周期的に割り当てられるようになっている。
【００６０】
次に、メモリレジスタ３０について、Ｆｉｇ２Ｃを参照しながら詳細に説明する。
【００６１】
第１装置１４及び第２装置１６は、ステータスの保存及び／又はプロセスの実行のために、それぞれ別のメモリ、マイクロプロセッサ、及び／又は論理ゲートを含んでも良い。第１装置１４及び第２装置１６の様々な素子は、他の第１装置１４及び第２装置１６の素子とインターリーブされてもよいし、されなくてもよい。
【００６２】
また、一般的には、主コントローラ１８は、シリコンチップ１２に設けられ、第１装置１４が第１機能プロセス１５を実行している１つの期間中に、第１保護プロセス１７を実行するように第２装置１６に信号を送る。また、主コントローラ１８は、ファームウェアを実行してさまざまなプロセスを管理できる。また、他の実施形態においては、主コントローラ１８は、アプリケーション専用のハードウェアプロセッサを含む。また、いくつかの実施形態では、主コントローラ１８は、第１装置１４が第１機能プロセス１５を実行している間、第１保護プロセス１７を実行するように第２装置１６に信号を送る。また、主コントローラ１８は、第１保護プロセス１７が実行される期間を管理できる。また、主コントローラ１８は、第１機能プロセス１５の持続時間に基づいて、第１保護プロセス１７を所定期間で、又は所定の数の処理サイクルで実行するように第２装置１６に指示できる。ここの「処理サイクル」とは、データ値に対する1つ以上の操作が含まれる保護プロセスの１回の実行を意味する。例えば、データ値に対する最初の操作の後、最初の操作の結果データ値に対して逆操作を実行する。
【００６３】
また、主コントローラ１８は、第１保護プロセス１７が周期的に実行されるように第２装置１６に指示でき、第１機能プロセス１５の完了時に応じて第１保護プロセス１７の実行を中断させることができる。検証可能なテスト結果は、各処理サイクルの終了時、又は循環プロセスの完了時に（プロセスが自然に終了するか、中断により終了するか）主コントローラ１８によって、又は第２装置１６によって、又は包装回路によって検証できる。いくつかの実施形態では、１つの処理サイクルの出力は、次の処理サイクルへの入力として提供される。便宜上、検証可能なテスト結果が循環サイクルの完了時に検証される場合、第１保護プロセス１７は、第２機能への入力として用いられる出力を提供する第１機能を実行することを含み、第２機能の出力が第１機能への入力に等しくなるように、第２機能が定義されている。例えば、出力を提供するデータ値を暗号化してから、当該出力を復号化することで元のデータ値を提供する。同様の機能として、加算して減算する、乗算して除算する、逆数を実行の後に他の逆数を求めるなどが含まれる。
【００６４】
上記の機能は、各処理サイクルの終了時に検証可能なテスト結果が検証される場合にも使用できる。上記の機能を使用することで、検証可能なテスト結果がいつどのように検証されるかに関係なく、入力データは各第１保護プロセス１７の処理サイクルで変更されることができる（例えば、増分データ値又はランダムデータ）ため、毎回異なる入力値が使用される。また、いくつかの実施形態では、検証可能なテスト結果は、事前に計算された予想結果と比較できる。例えば、保護装置１６がＡＥＳエンジンである場合、保護された機能プロセス１５の実行が完了するまで、同一ＡＥＳキー及び入力データの暗号化処理サイクルを実行してもよい。
【００６５】
主コントローラ１８は、テストデータ及び／又はテスト結果を第２装置１６に提供できる。第１機能プロセス１５及び第１保護プロセス１７の実行について、Ｆｉｇ３及びＦｉｇ４を参照してまた後述する。
【００６６】
攻撃処理コントローラ２０は、通常、シリコンチップ１２上に配置され、ファームウェアを実行することにより様々なプロセスを管理することができる。他の実施形態では、攻撃処理コントローラ２０は、アプリケーション専用のハードウェアプロセッサを含む。また、攻撃処理コントローラ２０は、少なくとも第１保護プロセス１７が第１検証可能なテスト結果を提供することに失敗した場合に応答して、第１機能プロセス１５を保護する保護措置を実行する。第１保護プロセス１７が第１検証可能なテスト結果の提供に失敗した場合は、つまり攻撃が実行されていることを示す。フォールトインジェクションハンドリング処理を提供する保護動作には、第１装置１４のリセット、第１装置１４の処理の中断、及び/又は第１装置１４のメモリへのアクセスの遮断が含まれてもよい。
【００６７】
第１保護プロセス１７が所定のランタイムを有する実施形態では、攻撃処理コントローラー２０は、第１保護プロセス１７が所定のランタイムの所定許容範囲内で実行できない、及び/又は第１検証可能なテスト結果を提供できなかった場合、第１機能プロセス１５を保護するように保護措置を実行する。
【００６８】
一例として、第１保護プロセス１７がＲＳＡプロセスである場合、ＲＳＡプロセスを実行する素子は、第１装置１４の素子（例えば、セキュリティに敏感な素子）とインターリーブされる。具体的には、第１装置１４の素子としては、メモリインターフェイス２８、組み合わせ論理ゲート２６、揮発性メモリコンポーネント（メモリレジスタなど）、ラッチ、フリップフロップ、ランダムリードメモリ（RAM）、不揮発性メモリコンポーネント（ワンタイムプログラミングコンポーネント（OTP）、電子的に消去可能なプログラム可能な読み取り専用メモリ（EEPROM）、フラッシュメモリ）のうちの１つ以上である。主コントローラ１８は、第１保護プロセス１７の実行に必要な時間を計算し、ＲＳＡキーのサイズ、暗号キー及びデータシードを選択する。また、主コントローラ１８は、選択されたデータでＲＳＡプロセスを実行するように第１保護プロセス１７に指示する。第１保護プロセス１７が実行され、結果が生成される。そして、生成された結果又はその結果の一部（例えば、１つのダブルキャラクタ（Ｄ-word）など）が記録される。ＲＳＡプロセスは周期的に実行でき、各処理サイクルの終了時に、記録された結果又は予想結果（又はその結果の一部）と生成された結果が比較される。
【００６９】
第１保護プロセス１７の実行は、例えば、第１保護プロセス１７が主コントローラ１８によって中断されるかどうか、処理サイクル数が検証されるかどうか、及び/又は検証可能なテスト結果が第２装置１６又は主コントローラ１８によって検証されるかどうか、の複数のオプションを含むことができるが、これらオプションに限定されない。
【００７０】
Ｆｉｇ２Ａ〜Ｆｉｇ２Ｂは、Ｆｉｇ１の被保護システム１０におけるインターリーブされた物理レイアウト４０を示す図である。物理レイアウト４０は、Ｆｉｇ１における第１装置１４と第２装置１６とのインターリーブを示している。Ｆｉｇ２Ａ及びＦｉｇ２Ｂに示すように、第１装置１４の素子４２は、影付きステップで表示されており、第２装置１６の素子４４は、陰影のないステップで表示されている。Ｆｉｇ２Ａ及びＦｉｇ２Ｂに示すように、攻撃のフットプリント４６が、第１装置１４の素子４２の１つを攻撃した場合、第２装置１６の素子４４の１つも同時に攻撃を受けることになる。また、図面での表示を簡単にするために、Ｆｉｇ２Ａ及びＦｉｇ２Ｂには、一部の素子４２、４４しか示されていない。物理レイアウト４０は、通常、フットプリント４６がセル（例えば、素子４２）よりも大きい攻撃から装置を保護する。Ｆｉｇ２Ａは、素子４２と素子４４とが完全にインターリーブされ（素子４２が素子４４によって完全に囲まれている）、攻撃に対する高度の保護を提供する物理レイアウト４０を示している。Ｆｉｇ２Ｂは、一部の素子４２のみが素子４４によって囲まれているが、残りの素子４２は素子４４に隣接していないため、低レベルのインターリーブを示している。Ｆｉｇ２Ｂに示す配置は、攻撃に対するある程度の保護を提供できるが、Ｆｉｇ２Ａの配置に比べて低い保護能力となっている。シリコンチップ１２上に配置されたさまざまな素子のセキュリティ敏感度に応じて、単一の配置でさまざまなレベルの保護を提供することができる。
【００７１】
第１装置１４と第２装置１６とのインターリーブは、回路設計及び上記の配置によって実現できる。保護を受ける必要がある倫理回路は、ＣＰＵやメモリインターフェイスを含む暗号化モジュールなどの敏感な集積回路部品、ラッチ、フリップフロップ、ランダムアクセスメモリ（RAM）などの揮発性メモリ素子（メモリレジスタなど）、及び/又はワンタイムプログラマブル（OTP）、電気的消去可能プログラマブルリードオンリーメモリ（EEPROM）、フラッシュメモリなどの不揮発性メモリ素子のうちの１つ以上であってもよい。例えば、配置ツール（placement tool）の最大面積使用率を４０％に制約する（つまり、ロジックセルによって占められる指定されたレイアウト領域がシリコン領域の４０％を超えないように制約する）ことにより、第１の装置１４をゆるい密度で、所定のチップレイアウト領域に配置する。又は、対応するロジックセルを配置前に人為的に拡大し、配置ツールで配置座標を設定した後、元のサイズに縮小することができる。第２装置１６がシリコンチップ１２の同じチップレイアウト領域に配置される際に、第１装置１４の素子が動かないように、第１装置１４の素子に対して「触れない（do not touch）」属性が設定される。また、シリコンチップ１２のレイアウト領域は、第１装置１４と第２装置１６の素子をインターリーブするために、より高い密度（例えば、８０％）で提供することができる。次に、チップのレイアウト設計の際に、第２装置１６の素子がチップ内の第１装置１４の素子の間に配置されるように、第２装置１６の素子（モジュール）をシリコンチップ１２の第１装置１４の同じレイアウト領域に配置する。シリコンチップ１２を製造する前に、設計でのチップレイアウトを必要に応じて修正することができる。チップレイアウト領域の利用率は、第１装置１４と第２装置１６のサイズの比率に従って調整できることに留意する必要がある。なお、第１装置１４と第２装置１６とのインターリーブは、タイミング及び面積（サイズ）の含意に優先することができる。インターリーブの粒度は、回路の安全性（高度なインターリーブ）と回路効率（低レベルのインターリーブ）との間でバランス取りすることができる。
【００７２】
Ｆｉｇ２Ｃは、Ｆｉｇ１の被保護システム１０で使用される共有されたメモリーレジスタ３０の一例を示す概略構成図である。メモリレジスタ３０は、２つのフリップフロップセット４１、「ＦＦ ＳＥＴ１」及び「ＦＦ ＳＥＴ２」を含み、第１装置１４の組み合わせ論理ゲート２６及び第２装置１６の組み合わせ論理ゲート２６からの「ｎ」個のデータパスに関連する状態を格納する。フリップフロップセット４１のそれぞれは、入力マルチプレクサ４３及び出力マルチプレクサ４５に結合（coupled to）されている。マルチプレクサセレクタ４７（ＳＥＬ＿ｉ及びＳＥＬ＿ｏ）は、被保護システム１０の実行時に主コントローラ１８（Ｆｉｇ１）により制御される。また、メモリレジスタ３０は、ＳＥＬ＿ｉと入力マルチプレクサ４３の１つとの間に配置された１つのインバータ４９と、ＳＥＬ＿ｏと出力マルチプレクサ４５の１つとの間に配置された別のインバータ５１をさらに含む。いくつかの実施形態では、インバータ４９、５１の１つ以上は、Ｆｉｇ２Ｃの上半部の入力マルチプレクサ４３及び出力マルチプレクサ４５への接続を切り替えることにより、又はコンポーネントの別の同等の配置により取り代わることができる。
【００７３】
マルチプレクサセレクタ４７、ＳＥＬ＿ｉ及びＳＥＬ＿ｏは、主コントローラ１８によって制御されることにより、第１の装置１４の組み合わせ論理ゲート２６の間及び第２の装置１６の組み合わせ論理ゲート２６の間で異なるデータパスを可能にするようにコーディネード（協調）されている。第１装置１４及び第２装置１６の組み合わせ論理ゲート２６は、物理的にインターリーブされてもよい。ＳＥＬ＿ｉは、どのフリップフロップセット４１が、第２装置１６に対する第１装置１４のどの組み合わせ論理ゲート２６をサンプリングするかを制御する。ＳＥＬ＿ｏは、次のクロックサイクルで正しいフリップフロップセット４１を対応する組み合わせ論理ゲート２６に接続するように設定される。一実施形態では、ＳＥＬ＿ｏは、ＦＦ ＳＥＴ４１のクロックに従ってＳＥＬ＿ｉをサンプリングすることにより生成することができる。例えば、Ｆｉｇ２Ｃに示すように、1つのクロックサイクルでSEL_iが「１」であった場合、次のクロックサイクルでSEL_oは「１」となり、1つのクロックサイクルでSEL_iが「０」であった場合、次のクロックサイクルでSEL_o 「０」となる。したがって、Ｆｉｇ２Ｃの例では、ＳＥＬ＿ｉは一主コントローラ１８により任意に制御され、ＳＥＬ＿ｏは主コントローラ１８により適宜設定される。なお、Ｆｉｇ２Ｃは、あくまでも概略回路図であるため、インターリーブ又は共有されてもされなくてもよい装置の他の部分、及び被保護システム１０の他のインターフェースロジックに対する第１装置１４及び第２装置１６のすべての入力及び出力について図示されていない。
【００７４】
Ｆｉｇ３は、Ｆｉｇ１の被保護システムが第１保護方法の動作時の一例を示すフローチャート５０である。Ｆｉｇ１にも示すように、シリコンチップ１２がメモリレジスタ３０を含む場合、まず、主コントローラ１８は、第１の装置１４と第２の装置１６との間でメモリレジスタ３０の使用を割り当てる（ステップ５２）。次に、主コントローラ１８は、第１装置１４が第１機能プロセス１５を実行している１つの期間中に、第１保護プロセス１７を実行するように第２装置１６に信号を送る（ステップ５４）。また、いくつかの実施形態では、主コントローラ１８は、第１装置が第１機能プロセス１５を実行している全期間中に、第１保護プロセス１７を実行するように第２装置に信号を送る。
【００７５】
いくつかの実施形態では、主コントローラ１８は、第２装置１６に、所定の数の処理サイクル（繰り返し）で（又は所定の期間で）第１保護プロセス１７を実行し、各処理サイクルで検証可能なテスト結果を検証するように指示することができる。他の実施形態では、主コントローラ１８は、第１機能プロセス１５が実行完了するまで第１保護プロセス１７を実行するように第２装置１６に指示してもよい。第１装置１４による第１機能プロセス１５の実行完了は、主制御装置１８により直接的に、又は主制御装置１８が第２装置１６に信号を送ることによって間接的に監視することができる。
【００７６】
第１装置１４は、第１機能プロセス１５を実行し（ステップ５６）、第２装置１６は、第１保護プロセス１７を実行するようになっている（ステップ５８）。第１機能プロセス１５と第１保護プロセス１７は、通常、並行して実行される。
【００７７】
第２装置１６及び／又は主コントローラ１８は、検証可能なテスト結果を検証する（ステップ６０）。
【００７８】
ステップ６２では、もし検証可能なテスト結果が肯定的に検証された場合（分岐６４（ＹＥＳ））、処理はを経由してステップ６６に進む。ステップ６６では、第１機能プロセス１５の結果の準備ができているかどうかを検証する。もし結果の準備ができている場合（分岐７２（ＹＥＳ））、第１装置１４又は主コントローラ１８は、第１機能プロセス１５の結果を公開する（ステップ７４）、又は第１機能プロセス１５の結果に基づく動作をする。例えば、機能プロセスの結果は（例えば、別のプロセス、シークレット、又はその他のセキュリティで保護されたリソース）へのアクセスの許可又は拒否したり、又はパスワードの認証に基づいて物理ロックを解除するI / O信号のトグルを提供する。その場合、他のプロセスなどへのアクセスの承認は、保護プロセスの検証可能なテスト結果の検証が成功するまで延期される。もし第１機能プロセス１５の結果の準備ができていない場合（分岐７６（ＮＯ））、ステップ５８に処理を戻して第１保護プロセス１７を別の処理サイクルで処理するようにステップ５８、６０、６２のプロセルを繰り返す。
【００７９】
第２装置１６が所定の数の処理サイクル（または所定の期間）で第１保護プロセス１７を実行するように指示された実施形態では、決定ステップ６６は不要であり、第１機能プロセス１５の結果は、第２装置１６が所定の数の処理サイクル（または所定の期間）で実行された後、及び検証可能なテスト結果が各処理サイクルの完了時に肯定的に検証され後に、自動的に公開又は実行される（例えば、制限されたリソースへのアクセスを提供する）。
【００８０】
もし検証可能なテスト結果が肯定的に検証されなかった場合（即ち、第１保護プロセス１７が正しい検証可能なテスト結果を提供できなかった場合）（分岐６８（ＮＯ））、攻撃処理コントローラ２０は第１機能プロセス１５を保護するように保護動作を実行する（ステップ７０）。この場合、主コントローラ１８は、通常、第１機能プロセス１５の結果の公開を保留する（ステップ７１）か、公開された結果に基づいて後続的に動作することを回避（例えば、制限されたリソースへのアクセスを回避する）。従って、主コントローラ１８は、第１保護プロセス１７の第１検証可能なテスト結果が期待の結果に等しいことを条件として、第１機能プロセス１５の結果を公開又は公開された結果に基づく動作をするように制御する（ステップ７４）。
【００８１】
Ｆｉｇ４は、Ｆｉｇ１の被保護システムが第２保護方法の動作時の一例を示すフローチャート８０である（Ｆｉｇ１にも参照）。
【００８２】
シリコンチップ１２がメモリレジスタ３０を含む場合、まず、主コントローラ１８は、第１の装置１４と第２の装置１６との間でメモリレジスタ３０の使用を割り当てる（ステップ８２）。次に、主コントローラ１８は、第１装置１４が第１機能プロセス１５を実行している１つの期間中に、第１保護プロセス１７を実行するように第２装置１６に信号を送る（ステップ８４）。また、いくつかの実施形態では、主コントローラ１８は、第１装置が第１機能プロセス１５を実行している全期間中に、第１保護プロセス１７を実行するように第２装置に信号を送る。
【００８３】
いくつかの実施形態では、主コントローラ１８は、所定の数の処理サイクル又は所定の期間にわたって第１保護プロセス１７を実行するように第２装置１６に指示することができる。他の実施形態では、主コントローラ１８は、第１機能プロセス１５が完了するまで第１保護プロセス１７を実行するように第２装置１６に指示してもよい。また、第１装置１４による第１機能プロセス１５の完了は、出コントローラ１８によって監視され、主コントローラ１８によって第２装置１６に信号を送られて、循環処理を停止させることができる。
【００８４】
第１装置１４は第１機能プロセス１５を実行する（ステップ８６）、第２装置１６は複数の処理サイクルにわたって周期的に第１保護プロセス１７を実行する（ステップ８８）。第１機能プロセス１５および第１保護プロセス１７は、通常、並行して実行される。第１保護プロセス１７は、第１機能プロセス１５に先んじて、又は第１機能プロセス１５と同時に開始されることが好ましい。
【００８５】
ステップ９０では、主コントローラ１８は、第１機能プロセス１５の結果が準備ができているかどうかを検証する。もし第１機能プロセス１５の結果の準備ができていない場合（分岐９２（ＮＯ））、処理がステップ８８に戻され、第１保護プロセス１７が繰り返される。
【００８６】
もし結果の準備ができている場合（分岐９４（ＹＥＳ））、主コントローラ１８は、第１機能プロセス１５の処理の完了に応答して、第１保護プロセス１７の実行を中断する（ステップ９６）。第１保護プロセス１７が現在の処理サイクル内で完了する場合、第２装置１６又は主コントローラ１８は、検証可能なテスト結果を検証するための待機期間が設けられている（ステップ９８）。
【００８７】
第２装置１６が所定数の処理サイクルまたは所定の期間で第１保護プロセス１７を実行するように指示された実施形態では、ステップ９０及びステップ９６の処理は不要であり、第１保護プロセス１７は所定数の処理サイクルで（又は所定の期間が終わるまで）繰り返された後、処理をステップ９８に進む。
【００８８】
ステップ１００では、もし検証可能なテスト結果が肯定的に検証された場合（分岐１０２（ＹＥＳ））、第１装置１４又は主コントローラ１８は、第１機能プロセス１５の結果を公開する（ステップ１０４）、又は第１機能プロセス１５の結果に基づく動作をする。
【００８９】
もし検証可能なテスト結果が肯定的に検証されなかった場合（即ち、第１保護プロセス１７が正しい検証可能なテスト結果を提供できなかった場合）（分岐１０６（ＮＯ））、攻撃処理コントローラ２０は第１機能プロセス１５を保護するように保護動作を実行する（ステップ１０８）。この場合、主コントローラ１８は、第１機能プロセス１５の結果の公開を保留する（ステップ１１０）か、公開された結果に基づいて後続的に動作することを回避（例えば、制限されたリソースへのアクセスを回避する）。従って、主コントローラ１８は、第１保護プロセス１７の第１検証可能なテスト結果が期待の結果に等しいことを条件として、第１機能プロセス１５の結果を公開又は公開された結果に基づく動作をするように制御する。
【００９０】
Ｆｉｇ５は、逆方向保護機能を有するＦｉｇ１の被保護システムを示すステップ図である。
【００９１】
また、いくつかの実施形態では、第１装置１４と第２装置１６の役割を選択的に入れ替えて、第２装置１６が第１装置１４を保護する代わりに、第１装置１４が第２装置１６を保護するようにしてもよい。また、機能モジュールを使用して第１装置１４および第２装置１６が互いに保護機能を選択的に提供できるようにすることで、互いに保護することを可能にしてもよい。第１装置１４及び第２装置１６の役割を制御するためにいくつかの論理回路を追加することで、シリコンチップ１２上のスペースを節約する。これらの実施形態では、被保護システム１０の主な動作方式として、必要に応じて第１機能プロセス１５が第２「保護」プロセスとして使用され、第１保護プロセス１７が生産データを処理する第２「機能」プロセスとして使用される。
【００９２】
いくつかの実施形態では、主コントローラ１８は、第２装置１６が第１保護プロセス１７を使用して第２機能プロセスを実行している間に、第２検証可能なテスト結果を有する第２保護プロセスとして第１機能プロセス１５を実行するように第１装置１４に信号を送る。これにより、第１装置１４が攻撃から第２装置１６を保護することができる。
【００９３】
また、一部の保護プロセスは、例えば、暗号化とそれに続く復号化などの逆演算を実行することにより、自身で結果を検証することができる。また、第１装置１４と第２装置１６の両方が機能的計算を実行している間に、第１装置１４と第２装置１６のうちの一方が他方を保護するようにインターリーブされてもよい。この場合、第１装置１４はいずれにしても機能プロセスとして第１機能プロセス１５を実行しているので、主コントローラ１８は第２保護プロセスとして第１機能プロセス１５を実行するように第１装置１４に信号を送る必要はない。例えば、ＣＰＵがＡＥＳエンジンとインターリーブされた場合、ＡＥＳエンジンが逆操作を実行した結果を元の入力データと比較するため、ＡＥＳが機能的なＣＰＵ操作と同時に実行される機能的なプロセスを実行している間でも、ＣＰＵは、ＡＥＳエンジンの保護から恩恵を受けることができる。
【００９４】
上記の態様はあくまでも例として説明されている。第１装置１４は、ＲＳＡプロセスを実行するように構成され、第２装置１６は、ＡＥＳプロセスを実行するように構成されてもよい。被保護システム１０がＲＳＡプロセスを使用してデータを処理する必要があった場合、第１装置１４はＲＳＡプロセスを実行し、第２装置１６はＡＥＳプロセスを使用してＲＳＡプロセスを保護する。被保護システム１０がＡＥＳプロセスを使用してデータを処理する必要があった場合、第２装置１６はＡＥＳプロセスを実行し、第１装置１４はＲＳＡプロセスを使用してＡＥＳプロセスを保護する。
【００９５】
実際には、主コントローラ１８及び／又は攻撃処理コントローラ２０の一部又はすべての機能を単一の物理コンポーネントに結合されるか、複数の物理コンポーネントを使用して実現されることができる。これらの物理コンポーネントは、ハードワイヤード（hard-wired）またはプログラム可能なデバイス、またはこの２つの組み合わせを含んでもよい。いくつか実施形態アでは、少なくともいくつかの機能は、適切なソフトウェアの制御下でプログラム可能なプロセッサによって実行されてもよい。ソフトウェアは、例えばネットワークを介して電子形式でデバイスにダウンロードすることができる。なお、ソフトウェアは、光学、磁気、または電子メモリなどの有形の非一時的なコンピューター読み取り可能な記憶媒体に保存することができる。
【００９６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００９７】
１０…被保護システム
１２…シリコンチップ
１４…第１装置
１５…第１機能プロセス
１６…第２装置
１７…第１保護プロセス
１８…主コントローラ
２０…攻撃処理コントローラ
２２…第１装置の一部
２４…第２装置の一部
２６…組み合わせ倫理ゲート
２８…メモリインターフェース
３０…メモリレジスト
４０…物理レーアウト
４１…フリップフロップセット
４２…第１装置の素子
４３…入力マルチプレクサ
４４…第２装置の素子
４５…出力マルチプレクサ
４６…フットプリント
４７…マルチプレクサセレクタ
４９…インバータ
５１…インバータ
５０…フローチャート
５２、５４、５６、５８、６０、６２、６４、６６、６８、７０、７１、７２、７４、７６、８０、８２、８４、８６、８８、９０、９２、９４、９６、９８、１００、１０２、１０４、１０６、１０８、１１０…ステップ
８０…保護方法
【図１】
2020109967.tif 000003
【図２】
2020109967.tif 000004
【図３】
2020109967.tif 000005
【図４】
2020109967.tif 000006
【図５】
2020109967.tif 000007
【図６】
2020109967.tif 000008