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

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

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

特許7383750故障注入攻撃を検出する改善されたシステムと方法
<>
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図1
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図2
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図3
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図4
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図5
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図6
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図7
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図8
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図9
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図10
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図11
  • 特許-故障注入攻撃を検出する改善されたシステムと方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-10
(45)【発行日】2023-11-20
(54)【発明の名称】故障注入攻撃を検出する改善されたシステムと方法
(51)【国際特許分類】
   G06F 21/50 20130101AFI20231113BHJP
【FI】
G06F21/50
【請求項の数】 20
(21)【出願番号】P 2022056032
(22)【出願日】2022-03-30
(65)【公開番号】P2022155571
(43)【公開日】2022-10-13
【審査請求日】2022-03-30
(31)【優先権主張番号】17/217472
(32)【優先日】2021-03-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】110000291
【氏名又は名称】弁理士法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】マルガリータ,イーラン
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2019/0188391(US,A1)
【文献】特開2003-058428(JP,A)
【文献】特表2019-510318(JP,A)
【文献】米国特許出願公開第2017/0286680(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00-88
(57)【特許請求の範囲】
【請求項1】
保護されるチップ上に配置されるセキュリティシステムであって、前記セキュリティシステムは、
前記チップ上に配備され、それぞれ、リアルタイムで複数の選択可能な感度レベルを有する少なくとも一つの故障注入検出サブシステムを有し、前記故障注入検出サブシステムは:
前記チップ上に配置される少なくとも一つのハードウェア故障注入検出器回路、および、
前記チップ上に配備され、且つ、リアルタイムで操作し、感度制御信号を生成することにより、前記故障注入検出サブシステムを、前記複数の選択可能な感度レベル中のその現在の感度レベルから、前記複数の選択可能な感度レベル中の次の感度レベルに転換するとともに、前記感度制御信号を、前記故障注入検出サブシステム中の少なくとも一つのハードウェア故障注入検出器回路に送る感度レベル制御ロジック、を有し、
前記チップは、少なくとも一つのアイドル状態、および、少なくとも一つの覚醒状態を含む複数の可能な電源状態を有し、前記感度レベル制御ロジックは、前記チップの新しい状態に対応して、前記次の感度レベルを選択し、前記新しい状態は、前記複数の可能な電源状態の一つを有することを特徴とするセキュリティシステム。
【請求項2】
前記故障注入検出サブシステムはさらに:
前記チップ上に配備され、リアルタイムで、出力信号を生成するとともに、前記出力信号を、前記感度レベル制御ロジックに送り、これにより、前記感度レベル制御ロジックに、前記複数の選択可能な感度レベルから、前記次の感度レベルを選択する指示を提供する少なくとも一つの機能モジュールを有することを特徴とする請求項1に記載のセキュリティシステム。
【請求項3】
前記機能モジュールは、少なくとも一つの出力信号を生成するとともに、前記感度レベル制御ロジックに送り、前記出力信号は、前記機能モジュールがアクティブであるか否かを示す状態表示を有し、前記感度レベル制御ロジックは、少なくとも部分的に、前記状態表示に基づいて、前記次の感度レベルを選択することを特徴とする請求項2に記載のセキュリティシステム。
【請求項4】
前記機能モジュール中の少なくとも一つの個別のモジュールがアクティブになるのに応答して、前記感度レベル制御ロジックは、少なくとも一度、さらに高い次のレベルを選択することを特徴とする請求項3に記載のセキュリティシステム。
【請求項5】
前記出力信号は、前記機能モジュールの現在のアクティビティに関連するリスクのレベルを表示し、および、前記感度レベル制御ロジックは、少なくとも部分的に、前記リスクのレベルから、前記次の感度レベルとして選択される感度レベルを導き出すことを特徴とする請求項3に記載のセキュリティシステム。
【請求項6】
前記機能モジュールがアクティブで、且つ、第一レベルのリスクを有する場合、前記感度レベル制御ロジックは、第一感度レベルを前記次の感度レベルとして選択し、前記機能モジュールがアクティブで、且つ、前記第一レベルのリスクより低い第二レベルのリスクを有する場合、第二感度レベルを、前記次の感度レベルとして選択し、前記機能モジュールが非アクティブである場合、第三感度レベルを、前記次の感度レベルとして選択することを特徴とする請求項5に記載のセキュリティシステム。
【請求項7】
前記機能モジュールは、前記複数の可能な電源状態間の転換をトリガーするファームウェアを有し、これにより、前記感度レベル制御ロジックに前記複数の可能な電源状態を知らせることを特徴とする請求項2に記載のセキュリティシステム。
【請求項8】
前記チップの電源状態が、前記新しい状態に転換する前、前記次の感度レベルが選択されることを特徴とする請求項1に記載のセキュリティシステム。
【請求項9】
前記チップの電源状態が、前記新しい状態に転換する前、前記ハードウェア故障注入検出器回路は前記次の感度レベルに設定されることを特徴とする請求項8に記載のセキュリティシステム。
【請求項10】
前記チップの電源状態が、前記新しい状態に転換した後、前記次の感度レベルが選択されることを特徴とする請求項1に記載のセキュリティシステム。
【請求項11】
前記チップの電源状態が、前記新しい状態に転換した後、前記ハードウェア故障注入検出器回路が前記次の感度レベルに設定されることを特徴とする請求項10に記載のセキュリティシステム。
【請求項12】
前記セキュリティシステムは、保護される前記チップ上に配備されることを特徴とする請求項1に記載のセキュリティシステム。
【請求項13】
前記故障注入検出サブシステムは、複数の故障注入検出サブシステムを有し、それぞれ、前記チップ上に配備され、且つ、それぞれ、ハードウェア故障注入検出器回路、および、ハードウェア故障注入検出器回路に結合される感度レベル制御ロジックを有することを特徴とする請求項2に記載のセキュリティシステム。
【請求項14】
前記セキュリティシステムは、保護される前記チップ上に配備され、前記機能モジュールは、少なくとも第一、および、第二機能モジュールを有し、前記故障注入検出サブシステムは、それぞれ、前記第一、および、第二機能モジュールを保護する第一、および、第二サブシステムを有し、前記第一機能モジュールは、前記第二機能モジュールより前記第一サブシステムに近く、前記第二機能モジュールは、前記第一機能モジュールよりも、前記第二サブシステムに近いことを特徴とする請求項13に記載のセキュリティシステム。
【請求項15】
前記故障注入検出サブシステム中の少なくとも一つのサブシステムは、前記チップ上の少なくとも一つの機能モジュールを保護し、前記故障注入検出サブシステムの対応するハードウェア故障注入検出器回路中の各個別の検出器は、前記個別の検出器により保護される少なくとも一つの機能モジュールにより、リアルタイムで選択される感度レベルを有することを特徴とする請求項13に記載のセキュリティシステム。
【請求項16】
前記検出器はそれぞれ、リアルタイムで選択可能な複数の感度レベルを有することを特徴とする請求項15に記載のセキュリティシステム。
【請求項17】
前記故障注入検出サブシステムは、複数の検出器を有し、前記故障注入検出サブシステムは、一時間点の前記故障注入検出サブシステムの前記感度レベルが、前記時間点で有効である前記ハードウェア故障注入検出器回路中の一数量のハードウェア故障注入検出器回路として実現され、前記感度レベル制御ロジックは、前記ハードウェア故障注入検出器回路の何個が、前記時間点で有効であるかを判断し、これにより、リアルタイムで配置可能な感度レベルに対策を提供し、よって、低い感度レベルは、少ない数量の作動された検出器回路により実現され、高い感度レベルは、大量の作動された検出器回路により実現されることを特徴とする請求項1に記載のセキュリティシステム。
【請求項18】
前記機能モジュールは、複数の機能モジュールを有し、前記感度レベル制御ロジックは、前記機能モジュールそれぞれからの出力指示を、一組の感度制御信号に結合することにより、前記次の感度レベルとして選択される感度レベルを導き出すことを特徴とする請求項2に記載のセキュリティシステム。
【請求項19】
少なくとも前記個別のモジュールが、少なくとも一度、非アクティブになるのに応答して、前記高い次のレベルより低いレベルに釈放することを特徴とする請求項4に記載のセキュリティシステム。
【請求項20】
前記機能モジュールは、高レベルのリスクに関連する暗号モジュールを有することを特徴とする請求項3に記載のセキュリティシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、装置セキュリティに関するものであって、特に、故障注入攻撃(fault injection attack)の検出に関するものである。
【背景技術】
【0002】
共同所有の米国特許第9523736号明細書、および、その先行技術は、故障注入試みを識別する現有の方法を記述する。
【0003】
感度レベルが調整可能である対策メカニズムは、既知のグリッチ検出器(glitch detector)であり、既知であるとともに、以下の http wwwリンク中で記述されている: invia.fr/detectors/voltage-glitch-detector.aspx 。これらは “配置可能な検出スレショルド”を有するものとして記述される; および、以下の https リンク: hal.inria.fr/emse-01099006/document、および、Josep Balasch,、Benedikt Gierlichs と Ingrid Verbauwhedeによる “An In-depth and Black-box Characterization of the Effects of Clock glitches on 8-bit MCUs”は、故障注入研究を記述するホワイトペーパーであり、IEEEから得られる。
【0004】
Martin S. Kelly等による“Characterising a CPU Fault Attack Model via Run-Time Data Analysis” は、故障注入研究を記述するホワイトペーパーで、IEEEから得られる。
【0005】
Nicolas Moro 等による“Experimental evaluation of two software countermeasures against fault attacks”は、ソフトウェア対策を評価するホワイトペーパーで、IEEEから得られる。
【0006】
Nicolas Moro等による“Electromagnetic fault injection: towards a fault model on a 32-bit microcontroller“ は、故障注入研究を記述するホワイトペーパーであり、IEEEから得られる。
【0007】
NCC Groupの2015年11月に発表された“Implementing Practical Electrical glitching Attacks”中、グリッチ攻撃に関する最新知識が描写され、インターネットにより、以下のhttps www リンクで得られる: blackhat.com/docs/eu-15/materials/eu-15-Giller-Implementing-Electrical-glitching-Attacks.pdf。ソフトウェア中の対策、たとえば、命令の重複は、インターネットにより、以下のhttpsリンクで記述される: hal-cea.archives-ouvertes.fr/cea-01296572/documentにより得られるThierno Barry、Damien Courousse、Bruno Robisson により書かれた“Compilation of a Countermeasure Against Instruction-Skip Fault Attacks”:および、インターネットにより、http://euler.ecs.umass.edu/research/bpbk-WESS-2010.pdfで得られる“Low-Cost Software Countermeasures Against Fault Attacks: Implementation and Performances Trade Offs”。
【0008】
CPUの実行の流れの追跡に基づいて操作する認証メカニズムが存在し、たとえば、共同所有の米国特許第9703945号明細書である。
【0009】
先行技術の図1は、Mike McDonald と Tony Jacobsによる"Basic Operation of a DLX Machine" からであり、以下の https www リンクから得られる:
cs.umd.edu/class/fall2001/cmsc411/projects/DLX/proj.html。
【0010】
このアーティクルhttps://www.nuvoton.com/support/technical-support/technical-articles/TSNuvotonTechBlog-000154/ は、"プロセスを実行する順序のランダム遅延、および、ランダム変化(random delays and random variations in the order of running processes)"を紹介し、両者は、予測不可能なシステム実行時間を生成し、故障注入攻撃に対する対策とする。
【0011】
一般のグリッチ検出器は、" Glitch detection..."という題名の米国特許第9729988号明細書、 https://www.chipestimate.com/log.php?from=%2FInvia%2FVoltage-Glitch-Detector%2Fdatasheet%2Fip%2F30894&logerr=1、https://www.design-reuse.com/sip/Glitch-detector-tsmc-n5-ip-48440/および、https://hal.archives-ouvertes.fr/lirmm-01096047/中で詳述される。
【0012】
明細書中で言及される全ての出版物、および、特許文献の公開内容、および、直接、または、間接的に引用される出版物、および、特許文献の公開内容は、どれも、引用によって本文に組み込まれる。ここで、この類の出版物と特許文献の特許性に対する重要度を承認しない。
【発明の概要】
【発明が解決しようとする課題】
【0013】
故障注入は、幅広く使用され、且つ、(ハッカーの視点で)非常に有効な技術である。ある実施形態は、故障注入攻撃や命令スキップ(instruction-skip)故障攻撃に対する改善された保護を提供する。
【課題を解決するための手段】
【0014】
セキュリティシステムの測定基準は、誤検出(false positive)、または、フォールスアラーム(誤認警報)、および、それらが提供するセキュリティレベルである。本発明のある実施形態は、一システムを提供し、このシステムは、通常、100%のシステム操作時間中、低セキュリティリスクの期間があるという事実を利用し、たとえば、これらに制限されないが、経験的に、ハッキング攻撃をあまり受けない時期がすでに観察されるとともに、高セキュリティリスクの期間があり、たとえば、これらに制限されないが、経験的に、ハッキング攻撃を受けやすい時期がすでに観察される。その後、システムは、セキュリティ脅威にさらに敏感な時期を、第二タイプの期間に制限し、これにより、全体で、システムのフォールスアラームに対する感受性を減少させ、システムをさらに安全にすると同時に、システムを、100%の時間内で、故障注入に対し高い感度を有することに対する可用性と使用性に影響しない。
【0015】
ある実施形態は、動的に、たとえば、リアルタイムで操作する感度レベルのリアルタイム調整を有し、且つ、故障注入検出器により保護されるCPUの単一の命令の復号-実行(decode-through-execution)周期より短い反応時間を有する故障注入検出器を提供する。通常、検出は、間隔的ではなく、連続的に行われる。
【0016】
チップの状態に基づいて、対策をオン、および、オフにするのは、たとえば、チップが、アクティブ状態、あるいは、スリープ状態であるかに基づき、本技術領域において、既知、あるいは、未知である。ここで示され、記述されるある実施形態は、感度レベルをリアルタイムで調整して、装置中、攻撃保護を提供し、いくつかの誤検出を犠牲にする固有のトレードオフを微調整する。通常、対策の制御は、単一のオペコードの判断で提供し、例えば、第一オペコードの検出時、おそらく低感度レベルの第一低感度レベルが提供され、低レベル検出を提供するとともに、低レベルのフォールスアラームに遭う第一トレードオフを生成し、第一オペコードに続く第二オペコードを検出時、おそらくさらに高い感度レベルの第二感度レベルが提供され、さらに高いレベルの検出を提供し、および、さらに高いレベルのフォールスアラームのトレードオフを生成する。
【0017】
本発明のある実施形態は、セキュリティシステム、および/または、方法、および/または、コンピュータプログラム製品を提供し、CPUの実行の流れに基づいて、動的に、故障注入対策回路を制御して、CPUを故障注入攻撃から保護する。たとえば、CPU、あるいは、プロセッサコアを提供し、その使用時、リアルタイムで、実行される少なくとも一つの条件付き分岐の出力指示を生成する。通常、条件付き分岐以外の少なくとも一つの命令が、プロセッサコアにより実行される場合、実行される条件付き分岐の出力指示に対応して、感度レベル配置モジュールは、感度レベル配置モジュールにより選択される少なくとも一つの感度レベルより高い次の感度レベルを選択する。
【0018】
さらに、すくなくとも以下の実施形態を提供する。
【0019】
実施形態1.セキュリティシステムであって、プロセッサコアの実行の流れに基づいて、動的に、故障注入対策回路を制御して、プロセッサコアを故障注入攻撃から保護する。本システムは以下を有する:
i.プロセッサコアは使用時、命令を実行するとともに、同時に、リアルタイムで、少なくともいくつかの実行される指令の出力指示を生成する。
ii.複数の選択可能な感度レベルを有する故障注入検出器を有する。および、
iii.出力指示を受信し、
少なくとも出力指示を入力として受信する感度レベル選択ロジックを用いて、複数の選択可能な感度レベルから、次の感度レベルを選択し、および故障注入検出器を、次の感度レベルに設定するように感度レベル制御モジュールがリアルタイムで作動する。
これにより、差異に敏感な故障注入対策回路を提供し、プロセッサコアを故障注入攻撃から保護するとき、少なくともいくつかの指令の出力指示に基づいて、プロセッサコア保護が、少なくともいくつかの指令の出力指示に無関係の感度レベルで提供された場合に生じる少なくとも一つのフォールスアラームを回避する。
【0020】
実施形態2.前述の実施形態中の任意の一つによるシステムは、感度レベル制御モジュールが、リスクレベルRに関連する個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、Rより低いリスクレベルと関連する少なくとも一つの命令に選択される感度レベルより高い。
【0021】
実施形態3.前述の実施形態中の任意の一つによるシステムは、感度レベル制御モジュールが、割り込みハンドラーから戻るプロセッサコアを決定する個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより高い。
【0022】
通常、CPUが、if-語句の実行を終了するとき、次に来るオペコードが、プロセッサコアにより実行される次に来る命令が、別の条件付き分岐である、あるいは、感度レベル配置モジュールが、高感度レベルを選択するその他のオペコードであることを示す場合を除いて、感度は、低レベルに回復する。一般的に、出力指示は、現時点で、プロセッサコアにより実行されるのが何か、および、感度レベルが、感度レベル配置モジュールにより適切に設定されることを示す信号である。次の、あるいは、次に来るオペコードの出力指示が出現するとき、感度レベルは、再度、適切に調整され、これにより、不変を維持するか、あるいは、変化させ、これは、次に来るオペコードが、前のオペコードと同じか否かに基づく (あるいは、ロジック上で対応して、感度レベルにとって、偶然、前のオペコードに対応するレベルと同じになる)。
【0023】
実施形態4.前述の実施形態中の任意の一つによるシステムにおいて、感度レベル制御モジュールは、ルーティンリターンアドレスを決定する個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより高い。
【0024】
実施形態5.前述の実施形態中の任意の一つによるシステムにおいて、感度レベル制御モジュールが、ループの停止条件を決定する個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより高い。
【0025】
実施形態6.前述の実施形態中の任意の一つによるシステムにおいて、感度レベル制御モジュールが、プロセッサコア実行モード変化を決定する個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより高い。
【0026】
たとえば、実行モード変化は、特権モード(コードが、ある制限されたリソースにアクセスする権利がある (たとえば、あるメモリゾーン、あるハードウェア機能、あるいは、その他の特定のリソース))と非特権モード(コードが、制限されたリソースにアクセスする権利がない)間の変化を有する。
【0027】
実施形態7.前述の実施形態中の任意の一つによるシステムにおいて、感度レベル制御モジュールが、メモリからデータを読み出す個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより低い。
【0028】
実施形態8.前述の実施形態中の任意の一つによるシステムにおいて、プロセッサコアはメモリを有するとともに、感度レベル制御モジュールが、メモリからデータを、ローカルストレージデバイス(たとえば、キャッシュ、あるいは、レジスタ)に読み出す個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより低い。
【0029】
実施形態9.前述の実施形態中の任意の一つによるシステムにおいて、感度レベル制御モジュールが、条件付き分岐を有する個別の命令の出力指示を受信するとき、感度レベル制御モジュールは、応答可能なように、次の感度レベルを選択し、次の感度レベルは、個別の命令以外の少なくとも一つの命令に選択される感度レベルより高い。
【0030】
理解できることは、条件付き分岐は、所定のコード中、価値のある標的を捜すハッカーにとって、攻撃するのに魅力的な標的であるので、条件付き分岐は、高リスクレベルに関連することである。たとえば、分岐は、コードフローを、エンドユーザーの秘密の情報を承認する第一オプション、あるいは、エンドユーザーの非認証を判断する第二オプションに送るので、条件付き分岐は、ハッカーにとって魅力的な標的であり、これにより、秘密の情報を提供しない。
【0031】
実施形態10.前述の実施形態中の任意の一つによるシステムにおいて、プロセッサコアが命令 Iを実行するとき、命令 Iに関連する少なくとも一つの出力指示が生成され、これにより、命令 Iの実行前、命令 Iが実行される出力指示を提供する。
【0032】
実施形態11.前述の実施形態中の任意の一つによるシステムにおいて、プロセッサコアは、適合する復号ロジックを有し、復号ロジックは、少なくとも一回、プログラムメモリからフェッチされる個別の命令を復号し、これにより、少なくとも一つのCPU内部信号を導き出し、信号は、続いて、CPUの少なくとも一つのユニットを操作し、これにより、個別の命令を実行する。復号ロジックはさらに、少なくとも一つのユニットが、プログラムメモリからフェッチされる個別の命令から導き出される少なくとも一つのCPU内部信号に反応して操作する前、個別の命令の出力指示を提供するのに適用し、これにより、個別の命令が実行された後ではなく、実行される前、故障注入検出器を次の感度レベルに設定するのを許可する。
【0033】
実施形態12.前述の実施形態中の任意の一つによるシステムにおいて、コアはオペコードを復号し、これにより、コアの実行ユニットへの命令を有する信号を生成するとともに、出力指示は、コアから出力される信号を有し、信号は、オペコードから復号される命令を表示し、これにより、感度レベル選択ロジックを、プロセッサコアによりまだ実行されていない一命令のプレビューに提供する。
【0034】
実施形態13.前述の実施形態中の任意の一つによるシステムにおいて、コアから出力される信号は、オペコードから復号される命令を有する。
【0035】
実施形態14.前述の実施形態中の任意の一つによるシステムにおいて、故障注入検出器は、それぞれ、複数の感度レベルに対応する複数の調整オプションを有するアナログ回路を有する。
【0036】
実施形態15.前述の実施形態中の任意の一つによるシステムにおいて、プロセッサコアは、適合する復号ロジックを有し、復号ロジックは、少なくとも一旦、プログラムメモリからフェッチされる個別の命令を復号し、これにより、少なくとも一つのCPU内部信号を導き出し、続いて、CPUの少なくとも一つのユニットを操作し、これにより、個別の命令を実行し、復号ロジックにより復号される全命令に対し、復号ロジックはさらに、少なくとも一つのユニットが、プログラムメモリからフェッチされる個別の命令から導き出される少なくとも一つのCPU内部信号に対応して操作する前、個別の命令の出力指示を提供するのに適用され、これにより、感度レベルロジックにより用いられ、特定の感度レベルを選択する一命令が実行された後ではなく、実行される前に、故障注入検出器が、常に、各特定の感度レベルに設定されるのを確保する。
【0037】
実施形態16.セキュリティ方法であって、プロセッサコアの実行の流れに基づいて、動的に、故障注入対策回路を制御して、プロセッサコアを故障注入攻撃から保護し、本方法は以下を有する:
i.プロセッサコアを提供し、使用時、プロセッサコアは、命令を実行するとともに、同時に、実行される少なくともいくつかの指令の出力指示を、リアルタイムで生成する。
ii.複数の選択可能な感度レベルを有する故障注入検出器を提供する;および、
iii.出力指示を受信し、少なくとも出力指示を入力として受信する感度レベル選択ロジックを用いて、複数の選択可能な感度レベルから、次の感度レベルを選択し、および、故障注入検出器を、次の感度レベルに設定するように、リアルタイムで、感度レベル制御モジュールを用いる。
これにより、プロセッサコアを故障注入攻撃から保護するとき、少なくともいくつかの指令の出力指示に基づいて、差異に敏感な故障注入対策回路を提供して、CPU保護が、少なくともいくつかの指令の出力指示に無関係の感度レベルで提供された場合に生じる少なくとも一つのフォールスアラームを回避する。
【0038】
実施形態17.前述の実施形態中の任意の一つによるシステムにおいて、さらに、検出器による故障注入の検出に対応する少なくとも一つの故障注入改善操作を実行する故障注入改善回路を有する。
【0039】
実施形態18.前述の実施形態中の任意の一つによる方法において、プロセッサコアは、適合する復号ロジックを有し、復号ロジックは、少なくとも一度、プログラムメモリからフェッチされる個別の命令を復号し、これにより、少なくとも一つのCPU内部信号を導き出し、続いて、CPUの少なくとも一つのユニットを操作し、これにより、個別の命令を実行する。復号ロジックはさらに、少なくとも一つのユニットが、プログラムメモリからフェッチされる個別の命令から導き出される少なくとも一つのCPU内部信号に対応して操作する前、個別の命令の出力指示を提供するのに適用し、これにより、個別の命令が実行された後ではなく、実行される前に、故障注入検出器が、次の感度レベルに設定されるのを許可する。
【0040】
実施形態19.前述の実施形態中の任意の一つによる方法において、組み合わせロジックを適用することにより、コアはオペコードを復号し、これにより、コアの実行ユニットへの命令を有する信号を生成するとともに、出力指示は、オペコードから復号される命令を表示するコアから出力される信号を有し、これにより、感度レベル選択ロジックを、プロセッサコアによりまだ実行されていない一命令のプレビューに提供する。
【0041】
実施形態20.前述の実施形態中の任意の一つによるシステムにおいて、プロセッサコアは、少なくとも一つの重複段階を有する複数の連続した命令を含む実行パイプラインを有し、感度レベル選択ロジックは、独立して、複数の感度レベル中の最高故障検出感度レベルと関連する少なくとも一つの命令 I にしたがって、故障注入検出器に、感度レベルを選択する指示を提供する。
【0042】
重複段階は、復号段階 および/または、実行段階を有する。
【0043】
実施形態21.前述の実施形態中の任意の一つによるシステムにおいて、最高検出感度レベルは、命令 Iの復号後、即時に開始するように設定されるとともに、命令 Iが完全に実行された後だけ終了し、復号されているその他の命令、および、実行されるその他の命令に関係なく、よって、少なくとも一つの命令 Iが一旦、復号されると、復号される全てのその他の命令より優先度が高く、実行される全てのその他の命令より優先度が高い。
【0044】
実施形態22.前述の実施形態中の任意の一つによるシステムにおいて、プロセッサコア出力指示は、どの操作コードが実行されるかの出力指示を有する。
【0045】
実施形態23.前述の実施形態中の任意の一つによるシステムにおいて、故障注入検出器が作動して、故障注入攻撃からCPUを保護し、単一の命令の復号-実行周期は、T個の時間単位長さであるとともに、故障注入検出器は、Tより短い反応時間を有する。
【0046】
実施形態24.前述の実施形態中の任意の一つによるシステムにおいて、故障注入検出器は、それぞれ、複数のプロセッサコア位置に配備される複数の故障注入検出器ユニットを有し、これにより、複数の全ての位置で、故障注入攻撃を検出する。
【0047】
実施形態25.前述の実施形態中の任意の一つによるシステムにおいて、位置Lに配備される少なくとも一つの検出器ユニットが、位置Lで、故障注入攻撃を検出する場合、故障注入検出器は警報を発する。
【0048】
実施形態101.保護されるチップに配置されるセキュリティシステムであって、システムは以下を有する:
少なくとも一つの故障注入検出サブシステムはチップ上に配備され、各故障注入検出サブシステムは、リアルタイムで選択可能な複数の感度レベルを有し、且つ、以下を有する:
少なくとも一つのハードウェア故障注入検出器回路が、チップ上に配置され、また、ハードウェア故障注入検出器回路と結合され、感度レベル制御ロジックは、チップ上に配備されるとともに、リアルタイムで操作し、感度制御信号(感度レベル選択とも称する)を生成するとともに、感度制御信号を、サブシステム中の少なくとも一つのハードウェア故障注入検出器に送ることにより、故障注入検出サブシステムを、複数の選択可能な感度レベル中の現在の感度レベルから、複数の選択可能な感度レベルから次の感度レベルに転換する。
故障注入検出サブシステムは、故障注入攻撃検出に配置される任意のロジックを有し、通常、リアルタイムで、チップの回路を改ざんする試みを識別するとともに、応答可能なように、リアルタイムで、この試みを警告することを含む。検出器の位置は、通常、攻撃を受けやすいチップの回路の位置を表示するとともに、検出器の性質は、通常、攻撃のタイプ、たとえば、グリッチ、温度、あるいは、その他である。
【0049】
実施形態102.前述の実施形態中の任意の一つによるシステムにおいて、少なくとも一つの故障注入サブシステムはさらに、少なくとも一つの機能モジュールを有し、機能モジュールはチップ上に配備され、リアルタイムで、出力信号を生成するとともに、出力信号を、感度レベル制御ロジックに送り、これにより、感度レベル制御ロジックに、複数の選択可能な感度レベルから選択される次の感度レベルに関する指示を提供する。
【0050】
実施形態103.前述の実施形態中の任意の一つによるシステムにおいて、少なくとも一つの機能モジュールは操作可能で、少なくとも一つの出力信号を生成するとともに、感度レベル制御ロジックに送信して、少なくとも一つの出力信号は、状態表示を有し、状態指示は、モジュールがアクティブであるか否かを示すとともに、ロジックは、少なくとも部分的に、状態表示に基づいて、次のレベルを選択する。
【0051】
実施形態104.前述の実施形態中の任意の一つによるシステムにおいて、ロジックは、少なくとも一回、アクティブになる機能モジュールから、少なくとも一つの個別のモジュールに対応する高い次のレベルを選択する。
【0052】
実施形態105.前述の実施形態中の任意の一つによるシステムにおいて、少なくとも一つの出力信号は、少なくとも一つの機能モジュールの現在のアクティビティと関連するリスクのレベルを表示し、感度制御ロジックは、少なくとも部分的に、リスクのレベルから、感度レベルを導き出して、次のレベルとして選択する。
【0053】
実施形態106.前述の実施形態中の任意の一つによるシステムにおいて、ロジックは、機能モジュールがアクティブで、且つ、第一レベルのリスクを有する場合、第一感度レベルを次のレベルとして選択し、機能モジュールがアクティブで、且つ、第一レベルのリスクより低い第二レベルのリスクを有する場合、第二感度レベルを次のレベルとして選択し、機能モジュールが非アクティブである場合、第三感度レベルを次のレベルとして選択する。
【0054】
実施形態107.前述の実施形態中の任意の一つによるシステムにおいて、チップは、少なくとも一つのアイドル状態、および、少なくとも一つの覚醒状態を含む複数の可能な電源状態を有し、ロジックは、チップの新しい状態に対応する次のレベルを選択し、新しい状態は、複数の可能な状態の一つを有する。
【0055】
実施形態108.前述の実施形態中の任意の一つによるシステムにおいて、機能モジュールはファームウェアを有し、ファームウェアは、可能な電源状態間で転換し、これにより、現在の状態を感度制御ロジックに知らせる。
【0056】
実施形態109.前述の実施形態中の任意の一つによるシステムにおいて、チップの電源状態が新しい状態に転換する前、次のレベルが選択される。
【0057】
実施形態110.前述の実施形態中の任意の一つによるシステムにおいて、チップの電源状態が新しい状態に転換する前、検出器は、次のレベルに設定される。
【0058】
実施形態111.前述の実施形態中の任意の一つによるシステムにおいて、チップの電源状態が新しい状態に転換した後、次のレベルが選択される。
【0059】
実施形態112.前述の実施形態中の任意の一つによるシステムにおいて、チップの電源状態が新しい状態に転換した後、検出器は次のレベルに設定される。
【0060】
実施形態113.前述の実施形態中の任意の一つによるシステムにおいて、システムは、保護されるチップに配置される。
【0061】
実施形態114.前述の実施形態中の任意の一つによるシステムにおいて、少なくとも一つの故障注入検出サブシステムは、複数の故障注入検出サブシステムを有し、各故障注入検出サブシステムは、チップ上に配備されて、それぞれ、ハードウェア故障注入検出器、および、ハードウェア故障注入検出器と結合される感度レベル制御ロジックを有する。
【0062】
実施形態115.前述の実施形態中の任意の一つによるシステムにおいて、システムは保護されるチップに配置され、少なくとも一つの機能モジュールは、少なくとも第一、および、第二機能モジュールを有し、複数のサブシステムは、それぞれ、第一、および、第二機能モジュールを保護する第一、および、第二サブシステムを有し、第一モジュールは、第二モジュールよりも第一サブシステムに近く、第二モジュールは、第一モジュールよりも第二サブシステムに近い。
【0063】
実施形態116.前述の実施形態中の任意の一つによるシステムにおいて、複数の故障注入検出サブシステム中の少なくとも一つのサブシステムSは、チップ上の少なくとも一つの機能モジュールを保護し、複数のサブシステムの対応するハードウェア故障注入検出器中の各個別の検出器は、個別の検出器により保護される少なくとも一つの機能モジュールにより、リアルタイムで選択される感度レベルを有する。
【0064】
実施形態117.前述の実施形態中の任意の一つによるシステムにおいて、各検出器は、リアルタイムで選択可能な複数の感度レベルを有する。
【0065】
実施形態118.前述の実施形態中の任意の一つによるシステムにおいて、サブシステムは複数の検出器を有し、時間点tのサブシステムの感度レベルは、時間点tで有効な複数の検出器中の検出器の数量として実現され、感度制御ロジックは、何個の複数の検出器が時間点tで有効かを判断し、これにより、リアルタイムで配置された感度レベルを有する対策を提供し、これにより、さらに低い感度レベルは、少ない数量の作動された検出器回路により実現され、さらに高い感度レベルは、さらに多い数量の作動された検出器回路により実現される。
【0066】
実施形態119.前述の実施形態中の任意の一つによるシステムにおいて、少なくとも一つの機能モジュールは、複数の機能モジュールを有し、感度制御ロジックは、複数の機能モジュールのそれぞれからの出力指示を組み合わせることにより、次のレベルとして選択される感度レベルを導き出し、一組の感度制御信号を組成する。
【0067】
実施形態120.前述の実施形態中の任意の一つによるシステムにおいて、ロジックは、少なくとも一度、非アクティブになる少なくとも個別のモジュールに対応し、さらに高い次のレベルより低い一レベルに釈放する。
【0068】
実施形態121.前述の実施形態中の任意の一つによるシステムにおいて、機能モジュールは、高レベルのリスクと関連する暗号モジュールを有する。
【0069】
理解できることは、必要であれば、ある実施形態は、コンピュータプログラム駆動のCM感度制御製品として実現され、この製品は、コンピュータプログラムを有し、コンピュータプログラムは、通常、保護されるプロセッサコアの実行よりもさらにリアルタイムであり、これにより、コンピュータプログラム製品を提供し、コンピュータ可読プログラムコードを有する一時的でない有形のコンピュータ可読媒体を有し、コンピュータ可読プログラムコードは、実行されて、セキュリティ方法を実現するのに適用され、セキュリティ方法は、動的に、プロセッサコアの実行の流れに基づいて、故障注入対策回路操作を制御して、プロセッサを故障注入攻撃から保護し、本方法は以下を有する:
i.プロセッサコアを提供し、プロセッサは、使用時、命令を実行するとともに、同時に、リアルタイムで、実行される少なくともいくつかの指令の出力指示を生成する;
ii.複数の選択可能な感度レベルを有する故障注入検出器を提供する;および
iii.出力指示を受信し、
少なくとも出力指示を入力として受信する感度レベル選択ロジックを用いて、複数の選択可能な感度レベルから、次の感度レベルを選択するとともに、故障注入検出器を、次の感度レベルに設定するようにリアルタイムで、感度レベル制御モジュールを用いる。
これにより、CPUを故障注入攻撃から保護するとき、故障注入対策回路を、少なくともいくつかの指令の出力指示に提供して応答し、CPU保護が、少なくともいくつかの指令の出力指示に無関係の感度レベルで提供された場合に生じる少なくとも一つのフォールスアラームを回避する。このほか、感度レベルが、完全に、フォールスアラームを回避するように設定される場合、故障注入対策回路は、CPU保護が、少なくともいくつかの指令の出力指示に無関係の感度レベルで提供された場合に検出されない少なくとも一つの故障注入を検出する。
【0070】
上記の実施形態、および、その他の実施形態は、次の段落中で詳細に記述される。
【0071】
本文、あるいは、図面中に出現する任意の商標は、所有者の財産であるとともに、単に、どのように、本発明の実施形態の一例を実施するかを解釈、あるいは、説明するために用いられる。
【0072】
特に説明がない限り、以下の討論中でよく見られるのは、明細書の討論中、理解できることは、使用される用語、たとえば、 "処理"、 "計算"、 "推定"、 "選択"、 "順位"、 "等級付け"、 "計算"、 "確定"、 "生成"、 "再評価"、 "分類"、 "生成"、 "産出"、 "ステレオマッチング"、 "記録"、 "検出"、 "関連"、 "重ね合わせ"、 "獲得" 等は、refer to 少なくとも一つのコンピュータ、あるいは、コンピュータシステム、あるいは、プロセッサ、あるいは、類似の電子コンピュータデバイスの操作、および/または、転換を、物理のデータの動作、および/または、過程として表示することを指し、たとえば、コンピュータシステムのレジスタ、および/または、メモリ中の電子量は、コンピュータシステムのメモリ、レジスタ、あるいは、その他のこのような情報ストレージ、送信、あるいは、ディスプレイ装置中の物理量として類似して表示される別のデータに転換される。用語“コンピュータ”は、データ処理能力を有する任意の種類の電子装置をカバーすると幅広く解釈されるべきで、これに制限されないが、パソコン、サーバー、埋め込みコア、コンピュータシステム、通信装置、プロセッサ (たとえば、デジタル信号プロセッサ(DSP)、マイクロコントローラー、フィールドプログラマブルゲートアレイ (FPGA)、特定用途向け集積回路 (ASIC)等)、および、その他の電子コンピュータデバイスを有する。
【0073】
ここで単独で列記される素子は、異なる素子である必要はないし、同じ構造でもよい。素子や特徴が存在する語句は、以下を含む (a)素子や特徴が実施形態中に存在する; (b)素子や特徴が実施形態中に存在しない;および (c) 素子や特徴は選択的に実施形態中に存在し、たとえば、ユーザーは、素子や特徴が存在する、あるいは、存在しないかを設定、あるいは、選択する。
本発明のある実施形態は以下の図面中で説明される。
【図面の簡単な説明】
【0074】
図1】一般のCPU操作周期の従来の技術、特に、フェッチングのプロセスを有し、その後、復号、そして実行されることを示す図である。
図2】ある実施形態によるシステムを構築する方法の簡潔な流れを示す図である。
図3】ある実施形態によるセキュリティシステムの簡潔なブロック図で、典型的な特徴は、プロセッサコア、あるいは、CPUにより実行される命令が、コアをこれらの攻撃(たとえば、ハックされる高リスクであると判断される条件付き分岐、あるいは、コードのその他の部分の実行)から保護する故障注入攻撃検出器を調整するトリガーとなり、且つ、リアルタイムで、検出器の調整をトリガーし、さらに敏感になることを示す図である。
図4】ある実施形態による動的感度レベル調整システムのリアルタイム操作の方法の簡潔な工程図である。
図5】ある実施形態による動的感度レベル調整システムを示す図で、3レベル感度を示し、デフォルトレベルとして定義される最低感度レベル、および、共に、デフォルトレベルより高い二個の追加レベルを有することを示す図である。
図6図5の故障検出器の一実施例を示す図である。
図7】命令復号信号、結合リスク等級 (たとえば、低、中、あるいは、高)、および、選択された感度レベル (たとえば、保守的、中、あるいは、挑戦的/高感度)を示す3レベル波形図である;理解できることは、3以外の任意の数のレベルが代替的に採用されることである。
図8】本発明の実施形態による複数の検出器ユニットの簡潔な図である。
図9】本発明の実施形態による単一-単一-単一の簡潔図である。
図10】本発明の実施形態による複数-単一-単一の簡潔図である。
図11】本発明の実施形態による複数-単一一複数の簡潔図である。
図12】本発明のさらに別の実施形態による構造、および、操作の複数の複数-単一-単一コンポーネンツを含む実施形態の簡潔図である。
【0075】
本発明の領域中に含まれる方法とシステムは、具体的に説明される実施例中で示される機能ブロックの一部(たとえば、任意の適当なサブセット)、あるいは、すべてを、任意の適当な順序で、たとえば図のように含み得る。
【0076】
ここで記述、および、説明される計算、機能、あるいは、ロジカルコンポーネンツは、各種形式で、たとえば、ハードウェア回路で実施され、たとえば、これに限定されないが、カスタムVLSI回路、あるいは、ゲートアレイ、あるいは、プログラマブルハードウェアデバイス、たとえば、これに限定されないが、FPGA、あるいは、少なくとも一つの有形、あるいは、無形のコンピュータ可読媒体上に保存され、且つ、少なくとも一つのプロセッサ、あるいは、任意の適当なそれらの組み合わせにより実行可能なソフトウェアプログラムコードである。特定の機能部品は、ソフトウェアコードの一個の特定のシーケンス、あるいは、複数のこのようなソフトウェアにより形成され、これらのソフトウェアコードは、共同で作用する、あるいは、表現される、あるいは、機能部品を参照してここで記述されるように作用する。たとえば、コンポーネントは、いくつかのコードシーケンス上に分布し、例えば、これに限定されないが、オブジェクト、工程、関数、ルーティン、および、プログラムであるとともに、通常、相乗的に操作するいくつかのコンピュータファイルに由来する。
【0077】
ここで記述される任意の論理機能は、適当な状況下で、リアルタイムアプリケーションとして実現されるとともに、任意の適当な機構オプションを採用し、例えば、これに限定されないが、ASIC、あるいは、DSP、あるいは、任意の適当なそれらの組み合わせである。ここで記述される任意のハードウェアコンポーネントは、実際、一つ以上のハードウェアデバイス、たとえば、チップを有し、それらは、同じ位置に位置してもよいし、互いに離れてもよい。
【発明を実施するための形態】
【0078】
Mike McDonald と Tony Jacobs による"Basic Operation of a DLX Machine" は、以下のhttps www インターネットリンクで得られ、html 拡張子を有する: cs.umd.edu/class/fall2001/cmsc411/projects/DLX/proj。
上述の文献は、DLXアーキテクチャ中の五個の実行段階を描写する:命令フェッチ(IF)、命令復号(ID)、実行 (EX)、メモリ (MEM)、および、ライトバック(WB)。完成にそれほど時間を必要としなくても、各段階は、最も遅い段階と同じ時間を必要とする。この時間は、一個のクロックサイクルである。これにより、各命令は、開始から終了まで、全部で、5個のクロックサイクルが必要である。各実行段階は、CPU中のハードウェアに対応し、Hennessy と Pattersonの図3.1で示される。データ経路に沿ったハードウェアの各"セクション"は、同時に、操作することができ、パイプラインは、これらの長所を利用して、巨大なパフォーマンス利益を得る。非常に特定の操作が各段階で実行される。
【0079】
1. 命令フェッチ (IR) - メモリから命令を読み取るとともに、それを命令レジスタに入れる (IR)。ニュープログラムカウンター (NPC)をアップデートして、次の命令 (PC + 4、あるいは、メモリ中の次の文字)を指し示す。
2.命令復号 (ID) -命令を復号する (オペコードに基づいて)。レジスタファイルからのレジスタ(Regs[IR6..10]) と Regs[IR11..15]) の出力は、一時的レジスタ"A" と "B"に配置される。符号拡張は、即値(immediate value)の命令部分であるとともに、この数値を一時的レジスタ "Imm"に入れる。
3.実行 (EX) - ここで発生したことは、実行される命令のタイプに基づく。ALUは、この周期で操作されて、所望の操作を実行する。
【0080】
図1は、一般のCPU操作周期の従来の技術、特に、フェッチングのプロセスを有し、その後、復号、そして実行されることを示す図である。
【0081】
故障注入対策感度調整のシステムは、以下で詳細に記述される。
【0082】
“If”語句、あるいは、条件付き分岐は、CPU命令の一例で、それらは、故障注入、すなわち、"故障注入攻撃(fault injection attack)"の影響を受けやすく、たとえば、故障注入のターゲットとなり、たとえば、プログラムの流れが故意にハックされる可能性がある点である。たとえば、条件付き分岐が配置されて、前の操作に基づいて、ユーザーに、ある秘密の情報を提供するコードセクションにジャンプする。たとえば、前の操作で、ユーザー認証の提供が成功しているユーザーを条件とし、あるいは、その他の場所にジャンプする、あるいは、全くジャンプせず、このような二種の状況は、ユーザーに要求される情報を提供しない (前の操作で、ユーザーが、ユーザー認証の提供に成功していない場合)。後の状況下で、ハッカーは、ある時間で、“故障”の注入を試み、必要なユーザー認証が、前の操作で、ユーザーにより提供されない場合でも、条件付き分岐命令を欺く試みは、秘密の情報を提供するコードにジャンプする。
【0083】
ある実施形態によると、セキュリティシステムが提供され、プロセッサコアは使用時(たとえば、リアルタイムで)、実行される操作コード/命令を示す。たとえば、CPUが、プログラムメモリから一命令をフェッチするとき、通常、まず、命令を復号する。命令の復号は、通常、オペコードを入力とするロジック機能を有し、通常、バイナリ形式(命令オペコードは、通常、連続して、対応するプログラムのバイナリーコードとして保存する数字を有し、それは、命令オペランドと交錯する)で、および、ロジック機能(“復号ロジック”とも称する)を応用して、CPUの各種ユニットを操作するのに用いるCPU-内部信号を生成して、各自機能を実行して、たとえば、CPUのALUを操作して、算術演算を実行する、などである。ある実施形態によると、復号ロジックが用いられて、復号された信号を、CPU外部のサブシステム (たとえば、感度レベル制御モジュール)に出力して、サブシステムが、CPUの外部であっても、CPUが、所定時間でする寸前であることを特徴づける予備知識(advance knowledge)に対応する動作を採取する(たとえば、感度レベルを選択する)ことができるようにする。
【0084】
理解できることは、通常、ビルトインCPU復号ロジックは、専門の設計により、CPUの操作ユニット、たとえば、ALUを制御し、処理される命令にしたがい、CPUは、どの命令が所定時間で実行されるのかを“知っている(know)” のではないことである。反対に、ある実施形態によると、復号ロジックは、通常、どの命令が現在実行されているかの表示を出力する。さらに、CPU命令内部は、重複した制御状態を有する。たとえば、一家族の二個の(あるいは、N個の)異なる命令は、二個の異なる命令は、同じCPUブロックを操作するので、同じ内部制御のいくつかを有する。
【0085】
外部サブシステムと通信する特定の長所は、関連するCPUユニット(たとえば、ALU)により、先だって復号された命令の実際のパフォーマンスを復号するので、外部サブシステムが、CPUがまだ実際に実行されていない命令をプレビューすることができることである。
【0086】
理解できることは、あるICは、低電力モードを実現することである。たとえば、ICは、コアが、ある特定の所定の命令を実行するのを検出するとき、低電力モードに進入し、たとえば、あるCPU中、WAIT命令、あるいは、ある別のタイプのHALT命令、あるいは、Wait-For-Interrupt、これらすべては、通常、CPUのコアを保持状態にし、この状況下で、コアは、通常、保留され、コアの保留状態からの退出をトリガーする一事件を待つ。どの操作コード/命令が実行されるかのリアルタイムの表示を含む。
【0087】
CPUの実行の流れの追跡に基づいて操作する認証メカニズム、たとえば、共同所有の米国特許第9703945号明細書が存在する。一組の特定の命令が実行されるとき、実行の流れが保留されて、コードを認証する。具体的には、米国特許第9703945号明細書は、CPUの実行の流れの追跡に基づいて操作する認証メカニズムを記述する。米国特許第9703945号明細書は、特定の操作、あるいは、命令(たとえば、メモリマップI/Oアドレスの特定空間にアクセスする)を記述する。システム設計者の決定に基づき、これらの操作、あるいは、命令は、コード認証方面で、さらに高いレベルのセキュリティが必要であると見なされる。よって、このような一命令、たとえば、I/Oアドレス空間に対する書き込み操作の検出時、実行の流れは、あるコード認証シーケンスが完了するまで、一時停止される。この操作が完成後、対応するコードが認証済みであると仮定すると、実行の流れが回復し、操作を実行する。これにより、この方法は、ある命令によりトリガーされ、プログラムの流れを変更して、ある所定の動作を採取し、即ち、コードの認証である。
【0088】
このほか、米国特許第9703945号明細書は処理コアを記述し、結合されて、入力ブリッジからプログラム命令を受信するとともに、これらのプログラム命令を実行し、プログラム命令は、出力ブリッジにより信号を出力することができるプログラム命令、および、データを一つ以上のシステム出力に送信しないプログラム命令を有し、出力ブリッジが第一状態であるとき、および、出力ブリッジが第二状態であるとき、処理コアは、データを、一つ以上のシステム出力に送信しないプログラム命令を実行することができる。
【0089】
用語 "感度レベル(sensitivity level)" は、任意のカットオフ、あるいは、スレショルドを含むことを意味し、故障注入検出器により、故障注入の任意の規範、あるいは、トリガー特性、あるいは、故障注入と関連する任意の規範、はるいは、トリガー特性に応用されて、故障注入検出器により反応し、故障注入検出器のロジックにより用いられて、故障と非故障間の区分をする。通常、故障注入検出器は、予期される、および、実際の状況間の差異を検出するように努力するとともに、差異が検出される度に、“故障”警報が提供される。
【0090】
異なるタイプの故障注入検出器は、異なるメカニズムを用いて実現されるので、各種感度制御メカニズムが採用されて、感度レベルを実現し、例えば、これに限定されないが、以下である:
a.故障注入検出器は、突然の変化を識別することができ、即ち、電源電圧、あるいは、チップ中の接地レベルのグリッチ(glitch)である。このような状況において、検出器を、実際の状況 (電圧が実際に検出される)と予期される電圧の差が、50mV、100mV、あるいは、300mV であるとき、異常状況を識別するように設定する。
b.期待される現実は、全ての位置が同じ状態にあることなので、同じ論理網上の異なる位置間で、電圧レベルの比較を実行して、局所的差異を検出する。
c.光線検出器は、光エネルギーを用いて、故障注入を識別することを試み、光線の強度に対応する電圧レベルに基づいて、故障注入検出を得る。
【0091】
理解できることは、任意の所定時間で、同じロジック状態(1、あるいは、0)であると仮定されるデジタル信号の電圧レベルを比較することが可能である。このような比較において、トリガー電圧差は、X、Y、あるいは、Zとして定義される。
【0092】
また、感度はまったく、電圧レベルに基づく必要はない。非電圧ベースの感度レベルを有する検出器は、たとえば、以下を有する:
1-直接、光線(レーザー、エネルギー)を検出するように設計される検出器。検出器が、光エネルギーを吸収される光線のエネルギーに比例する電圧レベルに変換する場合、それぞれ、光エネルギーレベルX、Y、および、Zに対応する電圧レベルA、B、あるいは、Cを検出することが可能である。
2-直接、光線以外の電磁気エネルギーを検出するように設計される検出器。検出器が、電磁気エネルギーを、吸収される電磁気エネルギーと比例する電圧レベルに変換する場合、それぞれ、電磁気エネルギーレベルX、Y、および、Zに対応する電圧レベルA、B、あるいは、Cを検出することが可能である。
【0093】
リアルタイムで操作しない非電圧ベースの感度レベルを有する検出器の一例は、周波数偏差検出器で、予期される周波数からの周波数偏差の幅の方面で、複数の感度レベルを有する。理解できることは、故障注入のターゲットは、この場合、通常、所定の周波数 ( “予期周波数”とも称される)を有するチップクロックを有することである。たとえば、所定チップのクロックが、250MHzの予期される周波数を有する、ならびに、値との瞬時偏差、たとえば、予期されるものに最も接近する二個のクロックパルスが検出される場合、これは、故障注入が発生することを表示する。
【0094】
あるグリッチ検出器(glitch detector)は、複数の感度レベルを有するように設計され、これらの感度レベルは、配置により選択されるとともに、システムアーキテクチャ決定に基づいて定義されるとともに、あらかじめ配置される (本発明の実施形態中で動的に配置されるのと反対である)。
【0095】
図2は、本発明の実施形態によるシステムの構築方法を記述し、システムは、プロセッサコア、あるいは、CPUから、オペコードインジケーターを受信し、リアルタイムで、相応の感度レベル決定を出し、その他の要素も、この決定に影響するが、その後、感度レベル制御を対策回路に提供する。
【0096】
上記のように、セキュリティ開発者が、高リスクのハードウェア故障注入を導入することを信じる状況や条件があり、例えば、これに限定されないが、条件付き分岐の実行である。
【0097】
一般的に、注入された故障は、最終的に、ICの電気事象に転化され、この事象は、ICのハードウェアの一致性と一貫性のある操作に影響する。たとえば、MCU/CPU実行コードの場合において、ICのハードウェアの一致性と一貫性のある操作の干渉を試みる故障注入は、通常、コードの実行の流れの干渉を試み、ICのハードウェアを攻撃して、ICのソフトウェア、および/または、ファームウェアの実行を妨害する。
【0098】
このような状況において、セキュリティ開発者は、動的に、セキュリティレベルとフォールスアラーム間で、異なるトレードオフを適用したいと考え得る。
【0099】
セキュリティ開発者がロジックを配置するとき、任意の適当な工程に従う。たとえば、設計者は、まず、予期される正常な現実生活情景と許可される操作条件下で、装置をシミュレート、および/または、操作して、許可される操作条件下で、メカニズムが、フォールスアラームをトリガーしない(あるいは、受け入れ可能な希少性のみ)ことを確保する。その後、設計者は装置を操作し、所定装置は、故障注入に耐えることを目的とするとともに、正確に、全て、あるいは、ほぼすべて故障注入をトリガーする故障注入検出レベル、たとえば、受け入れ可能なレベルの信頼性を決定する。その後、設計者は、この“適当なレベル”を、デフォルト検出レベルとして定義して、故障注入を検出することができる。その後、設計者はロジックを調整し、これにより、CPUが、設計者により、さらに高い故障攻撃リスクと関連すると判断する一命令を実行する出力指示に応答して、リアルタイムで、(少しさらに積極的な検出に対応する)選択されたさらに高い感度レベルが有効になる。
【0100】
通常、検出レベルは、開発者により調整されて、操作条件が、ハードウェアを不正確に操作させてしまうときトリガーされる(攻撃を検出する)。このようなレベルは、複数の装置変異上で開発者により特徴化されて、正常な操作期間中、故障注入の検出を少なく、あるいは、無いように確保する。
【0101】
通常、二個以上の設計者定義レベルで検出することができる回路を提供することが望まれ、たとえば、少なくとも二個の検出レベルで、二個のレベルの一つは、もう一つではなく、装置の正常な操作を不必要に干渉するリスク下で、軽度の故障注入を封じる。これらのレベルは二レベルを有する:
a.第一レベル:異常な状況 (たとえば、装置故障のリスクを生成する状況)を生じる攻撃的な故障注入を検出する; および、
b.第二レベル:攻撃的な故障注入だけでなく、非攻撃的な (軽度)故障注入を検出し、これは、予期できない状況を生じるが、装置は、故障がない状況下でも、操作を維持することができる。
【0102】
図2を参照すると、通常、プロセッサが提供され、各所定時刻で、どの命令/オペコード、あるいはオペコードの家族/群が実行されるかを示す信号を生成する。たとえば、信号は、プロセッサの復号ユニットが、サブセット命令/コマンドを識別する時間から、実行ユニットが、命令/コマンドの実行の完了を示す時間まで、信号は、所定命令がプロセッサにより実行されることを示す。実施形態において、この表示は、所定命令の“復号”と“実行”段階を含むが、これは必須ではない。あるいは、信号は、所定命令が“実行”段階中に実行され、所定命令の復号段階中ではないことを示す。別の可能な実施形態は、指示を、サブジェクト命令 I の“復号”段階から(含む)開始し、命令 I + 1 の“復号”段階 (プロセッサが命令 Iを実行した直後にプロセッサにより実行される命令)まで(含まない)維持する。
【0103】
理解できることは、上述の周期を制御するある制御信号(CPU-内部信号とも称する)は、CPUの内部設計の一部分であるが、全部、あるいは、多くのCPUにとって共通である。たとえば、
a.フェッチユニットに、メモリから命令を獲得するとともに、命令をローカルのどこかに保存することを通知する信号、
b.復号ユニットにより生成され、別のCPUユニットに、操作、および、命令の実行を命令、あるいは、告知する信号。
【0104】
さらに、また、図2に示されるように、システム設計者は、通常、少なくとも一つのオペコード、あるいは、一組のオペコードと関連するセキュリティリスクを関連付ける。通常、条件付き分岐オペコードは、Rより低いリスクと関連する条件付き分岐オペコード以外のいくつかの、あるいは、全部のオペコードに相対する高リスクR(Rはスカラーでも良い)と関連する。これは、条件付き分岐命令がプログラムの流れを制御し、これにより、故障注入は、プログラムを、正確、且つ、秩序のある流れからそらす点であるからである。
【0105】
代替的、あるいは、追加的に、ある実施形態によると、詳細なリスク分析が用いられて、各種異なるオペコードと関連する相対リスクを理解することができる。
【0106】
リスク分析を導入するため、設計者は、プロセッサの命令セットを研究する。一命令セット (ARM Cortex-M0)の例示的な描写は、ウェブで得られ、以下の http リンクにあり、html拡張子を有する: infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/CHDCICDF。
【0107】
少なくとも、命令セットは、プロセッサ間で類似する傾向があり、少なくとも類似するタイプのプロセッサ間、たとえば、RISCプロセッサ間、あるいは、CISCプロセッサ間で類似するので、ある程度において、このような分析はプロセッサ間で標準化される。たとえば、多くのプロセッサは、以下の全て、あるいは、大部分の命令のタイプ、あるいは、命令の群を有する:
1.メモリ、および、レジスタ処理- 通常は、命令をロード、保存、移動させる。
2.算術とロジック操作- 通常は、加法と減法、特に、乗法と除法、あるいは、算術シフト、および、ロジック計算、たとえば、Or、And、Xorを有する。
3.スタック管理 - 通常はpush/pop。
4.分岐 - 条件付き、および、無条件。
5.制御 - たとえば、状態管理に限定されないが、中断管理。
【0108】
それにもかかわらず、各特定のプロセッサは、プロセッサ以外の少なくともある異なる命令セットを有する傾向があるので、最終は、いくつかのプロセッサの個別のリスク分析を導入することができる。
【0109】
設計者は、さらに、アプリケーション、および、その実現方式を審査する (アプリケーションコードの分析を有する)とともに、対応して、特定の命令、あるいは、タイプの命令のリスクを定量化する。たとえば:
a.スタック管理命令は、スタック管理命令以外の少なくとも一つの命令に相対して、高リスクであると見なされる (および/または、上記の命令群3- 5中の少なくとも一つの少なくとも一つの命令と関連する、および/または、低リスクであると見なされる操作コードに関連するリスクレベルに関連する)。たとえば、スタックも、特に、サブルーティン呼び出しが関連するとき、プログラムの流れ中の役目がある;スタックは、通常、リターンアドレスを保留するので、故障注入操作を経たそれらも、プログラムを、秩序のある実行の流れからそらす。
b.算術/ロジック群(上記の第二組)中、コードの分析に基づいて、システム設計者は、特定の算術命令が、プログラムコード中の“重大な”位置に用いられ、プログラムの流れ、および/または、 “意思決定”に影響することを発見する。それらの特定の命令は、高リスクと関連し、たとえば、このリスクは、このような重要な位置にないコード算術命令より高い、あるいは、上記の命令群3 - 5中の少なくとも一つ中の少なくとも一つの命令と関連するリスクレベルより高い、および/または、低リスクであると見なされる操作コードより高い。
【0110】
また、さらに、図2に示されるように、少なくとも二個の感度レベル(L≧2)を有する故障注入検出器がある。一つは、さらに寛大であり (低い感度レベルを有する)、もう一つは、さらに敏感である(高い感度レベル)を有する。
【0111】
また、さらに、図2に示されるように、動的感度レベル調整 (たとえば、リアルタイムでのLレベルの一つの選択)は、任意の適当な方法で実施される。たとえば、復号ロジックが提供されて、プロセッサからそれらの信号を受信し、且つ、オペコードのセキュリティリスクレベルにしたがって、寛大な、あるいは、さらに敏感な検出レベルに基づいて、任意の時間で、対応する信号を生成して、故障注入検出器に、トリガーすべきかどうかを示す。図5は、一実施形態を示し、3レベル感度を表し、デフォルトレベルとして定義される最低感度レベル、および、二個ともデフォルトレベルより高い二個の追加レベルを有する。
【0112】
ある実施形態によると、検出器に対する指示は、命令を復号後すぐ、あるいは、直ちに消失し、よって、検出器は、コアによる命令の実行が開始される前に信号を得る。検出回路は、通常、自身は“拒絶”、あるいは、吸収、あるいは、その他の方式で、故障注入を処理しない。しかし、回路は、フラグ(flag)を生成して、故障注入の発生を示し、その他のモジュールが、任意の適当な方法で応答できるようにし、例えば、これに限定されないが、装置 (CPU、あるいは、プロセッサ)を既知の状態に回復させ、および、プログラムを流れ中の既知ポイントに回復させる。このような回復は、相対してゆっくりと発生し、たとえば、故障注入が発生した後だけである。しかし、コード中のある位置が到達するときだけ、到達すべきではない、且つ、実際は、故意注入ではなく、ある位置にも到達しない限り、故障注入によるダメージは直ちに発生しないので、これは容認できる。回復は、到達するコードが中のこの位置前で発生する。
【0113】
図2の方法は、通常、以下の操作のいくつか、あるいは、すべてを有し、以下のように適当に順序付けされる:
操作1.どれが故障注入の影響を受けやすいか、および、どれが、任意の所定の時間で、どの命令/オペコード、あるいは、家族/群オペコードを実行するかを示す信号を生成し、プロセッサコア/CPUに提供する。
操作2.リスク分析:システム設計者は、セキュリティリスク、たとえば、故障注入のリスクとオペコード、あるいは、オペコードの群のリストを関連付けるとともに、対応して、感度レベル決定/選択ロジックを生成する。たとえば: 条件付き分岐オペコードは、高リスク; その他の全オペコードは低リスクである。
操作3.少なくとも二個の感度レベルを有する故障注入検出器を提供する。
操作4.CM回路の感度レベル調整を実現し、たとえば、少なくとも二個のレベルの一つの動的選択により、たとえば、感度レベルがリアルタイムで調整可能なCM回路を提供する。通常、故障注入検出器は、動的調整、たとえば、感度レベルのリアルタイム調整をサポートし、リアルタイムで操作するとともに、その反応時間は、故障注入検出器により保護されるプロセッサ、あるいは、CPUの単一の命令の復号実行周期より短い。
【0114】
上述のように、通常、制御信号が感度制御ユニットを通過して検出器に伝わる時間は十分な時間を残し、検出器に反応させることを希望するので、反応時間は、通常、短い。たとえば:命令周期が40ns の長さである場合、オペコードの指示から、希望する感度レベルに設定されるまでの時間は、最多で10nsであり、一個の30 ns の時間窓を残し、検出器は、時間窓内で反応する。
【0115】
図3を参照すると、理解できることは、条件付き実行、および、条件付き分岐、すなわち、ソフトウェア決定点は、セキュリティコード中の弱点であると見なされ、つまり、故障注入攻撃が発生しやすい点である。図3は、本発明のある実施形態によるセキュリティシステムの簡潔なブロック図で、たとえば、図2の方法に基づいて提供される。図3のシステムは、通常、以下を有する:
操作コード、あるいは、その他のコード指示を有するプロセッサコア、あるいは、CPUで、特定の命令、あるいは、命令のカテゴリーの実行を示し、例えば、これに限定されないが、条件付き分岐、特定の比較等である; および、
CM(countermeasure)回路、たとえば、電気対策回路は、複数の選択可能な感度レベルを有するように設計された故障注入検出器を有する。回路は、調整可能な感度を有する故障注入検出器と結合される故障注入改善回路を有する。故障注入検出器が故障注入を検出する場合、故障注入改善回路が起動される。たとえば、故障注入検出器が故障注入を検出する度に、故障注入改善回路がトリガーされる。
【0116】
たとえば、このような回路のある例の設計問題が、以下のホワイトペーパー中で記述され、どちらも、ウェブ上で得られる:
Compilation of a Countermeasure Against
Instruction-Skip Fault Attacks
Thierno Barry, Damien Courouss_e, Bruno Robisson
および:
Low-Cost Software Countermeasures Against Fault
Attacks: Implementation and Performances Trade Offs.
【0117】
理解できることは、用語“対策(countermeasure)”が用いられて、故障注入攻撃の悪影響を改善する (たとえば、防止、あるいは、矯正)検出器、および/または、モジュールに言及することである。図3の内容において、CM回路は、このような攻撃を検出するとともに、任意の適当なモジュールをトリガーして、このような攻撃の悪影響を防止、あるいは、矯正する。
【0118】
一実施形態によると、既に識別された条件付き分岐を実行するセキュリティシステムは、対応する回路の検出レベルをさらに敏感なレベルに調整する。
【0119】
理解できることは、このような考慮がされない命令と比較して、各種命令、あるいは、それらのカテゴリーは、さらに高いリスクの故障注入が導入されると見なされる。いくつかの非制限の例を挙げると、以下の操作コードの任意、あるいは、すべては、さらに高いリスクの故障注入を導入するとみなされ (システム設計決定が、高セキュリティリスクを有する以下のオペコードの任意、あるいは、すべてと関連付けられ(たとえば、故障注入のリスクがとても高い)、つまり、リスクレベルは、オペコード(以下の内容ではなく、および/または、このような命令に遭遇するとき、故障注入検出器の感度レベルを増加させるロジックを提供する)と関連する感度レベルより高い:
a.条件付き分岐を示すオペコード、たとえば、条件付き分岐の前の二個のオペランド間の比較に基づいて、条件付き分岐の後に用いられる“結果” を生成して、分岐、あるいは、順序通りに継続されるRISC CPU分岐命令のbranch-if-equal、branch-if-not-equal を決定する。
b.比較、あるいは、その他の “テスト”を実行するオペコードは、各種フラグの設定を生じ、その後、 “決定”が所定の条件付き分岐を採用するか否かのロジックにより用いられる。たとえば、比較命令は、二個のオペランドを比較するとともに、二個が等しい状況下で(あるいは、二個が等しくない状況下で)、フラグを設定する。減法操作は、結果が負である、あるいは、ゼロではない状況下でフラグを設定して、オペランド、たとえば、数字を比較する。
c.オペコードは、特定のタイプの情報をプロセッサスタックに押し入れ、たとえば、重要な、あるいは、感度情報、あるいは、データ、あるいは、CPUサブシステムフラグのリターンアドレスを、条件付き操作に用いる。
d.オペコードも特徴は、ループの停止条件の実現として用いられる。たとえば、ループは、以下の https www リンクで可用なドキュメント中で記述され、htm 拡張子を有する: tutorialspoint.com/assembly_programming/assembly_loops。
【0120】
“loop” 命令は、ループカウンターが所定のCPUレジスタ中に保存されると仮定する。CPUが“loop”命令に遭うとき、CPUは、ループカウンターを減少させ、ループカウンターとゼロを比較するとともに、カウンターがゼロ以上である場合、ループの最初に戻り、これにより、ループ停止条件を実現する。
【0121】
ある状況下で、たとえば、使用される命令は、CPU-特定のコンパイラ選択に基づくので、どの命令が使用されるかを事前に知らない。たとえば、CPUは、ループに用いられるビルトイン命令を有し、指定されたレジスタ、あるいは、変量を処理し、自動的に、レジスタ、あるいは、変量を増加、および、減少させ、その後、ループカウンターが規定する場合、ループの最初にジャンプして戻る、あるいは、ループカウンターがすでに経過している場合、プログラムを連続的に継続させる。
【0122】
理解できることは、考慮されない命令と比較して、各種命令、あるいは、それのカテゴリーは、特に低いリスクの故障注入を導入することが考慮される。いくつかの非制限の例を挙げると、以下の任意、あるいは、すべては、特に低いリスクの故障注入の導入が考慮され (これは、システム設計決定が、以下のオペコードの任意、あるいは、すべてと低セキュリティリスクを関連付け、すなわち、リスクレベルが、以下のオペコード以外のオペコードと関連するリスクレベルより低い、および/または、このような命令に直面するとき、故障注入検出器の感度レベルを低下させるロジックを提供し、これにより、誤検出を減少させ、不利な影響がほぼない、または、ない):
a.メモリからデータを読み取るだけのオペコードをロードする、あるいは、
b.メモリ中のデータを保存するだけのオペコードを保存する。
故障注入は上記の問題を引き起こすが、ハッカーは、特定の保存/ロード命令の干渉に基づいて、有効な攻撃を定義するのは、実質上、不可能であると見なされる。
【0123】
図4は、ある実施形態による、たとえば、図2の方法、および/または、図3のシステムに従って提供されるシステムの操作方法を示す図である。
【0124】
図4の方法は、通常、コア実行命令と結合され、指示が、リアルタイムで、提供、復号、用いられて、故障注入検出器の感度レベルを選択する。通常、所定の感度レベルは、複数の命令、あるいは、命令の群/組のそれぞれと関連する。通常、システムの設計者は、設計者のリスク評価にしたがって、さらに高いリスクレベルとさらに高いレベルリスクに遭うと見なされる命令を関連付け、たとえば、ハッカーが、故障注入攻撃に適するターゲット位置を捜す視点から見ると、それらは魅力的なターゲットであるとみなされ、逆に言うと、低いリスクレベルに苦しむと見なされる低い感度レベルの命令であると見なされる。図4の方法を用いたシステムは、通常、構築されて、命令がリアルタイムで復号、および、応答する。命令は、たった今復号され、すぐ実行される命令と関連する、あるいは、対応する感度レベルに設定される。その後、命令の復号とコアによる実行間の時間ウィンドウ中に、感度レベルが設定される。
【0125】
図4の方法は、通常、以下の操作のいくつか、あるいは、すべてを有し、適当に順序付けられ、たとえば、以下のようである:
工程310において、CPUは、オペコードインジケーターIを、感度レベル制御モジュールにより用いられる感度レベル決定ロジック (感度レベル選択ロジックとも称する)に提供する。
工程320において、感度レベル決定ロジックは決定を生成する: CM回路の感度レベルは L_Iでなければならない。
工程330において、感度レベル制御モジュールは、感度レベル制御モジュールに対して信号(あるいは、命令)を発し、CM回路の感度レベルを L_I に調整する。
工程340において、応答可能なように、感度レベル制御モジュールは、感度レベル制御信号をCM回路に送る。
工程350において、CM回路は、その感度レベルを L_Iに調整し、レベルは、たとえば、適当な選択素子を用いて調整され、この選択素子の制御は、どのオペコードが実行されるかを示す感度レベル制御命令を有する、あるいは、それから派生する。
【0126】
図5、および、図6は、ある実施形態による動的感度レベル調整システムの3レベルの例を示す。装置の設計があらかじめ分析され、リスク分類を含み、その後、操作期間中、検出器は、前の実行されるリスク分類に基づいて、リアルタイムで応答する。
【0127】
具体的には、図5は、3レベル感度の動的感度レベル調整システムを示す図で、3レベル感度は、デフォルトレベルとして定義される最低感度レベル、および、両方ともデフォルトレベルより高い二個の追加レベルを有する。図6は、図5の故障検出器の実現の一例である。
【0128】
図7は、命令復号信号、結合リスク等級 (たとえば、低、中、あるいは、高)、および、選択された感度レベル (たとえば、保守的、中、あるいは、挑戦的/高感度)の3レベル波形図である;理解できることは、3以外の任意の数のレベルが代替的に採用されるとともに、図示されるようなデフォルトレベルである必要がないことである。
【0129】
CPUの実行パイプライン(execution pipeline)の例において、図示されるように、パイプラインが、一“低リスク”命令、および、一“ハイリスク”命令を処理する場合、一旦、ハイリスク命令が復号されると、検出器の感度レベルを優先的に設置する。たとえば、 “中リスク” フェッチが発生する点で、一旦、命令が復号されると(すぐに)、感度が増加する。同様に、 “ハイリスク”フェッチが発生するとき、命令が復号されるや否や、感度は、すぐに、さらにもっと増加する。さらに一般的に、図7のシステムが、現在の設定より高いリスクの命令を識別するとき、CPUがハイリスク命令の処理を終了するまで、新しく復号された (さらに高い)リスクは、優先度が高く、その後、前に処理された命令に回復する。
【0130】
理解できることは、図7中の“フェッチ”は、たとえば、 “復号”を含み、ここで簡潔にするため、図面中の “フェッチ”は、 “フェッチと復号”として解釈される。
【0131】
図8を参照する。ある実施形態によると、故障注入検出器は、それぞれ、複数のプロセッサコア位置に配備される複数の故障注入検出器ユニットを有し、よって、たとえば、図8の例に示されるように、ある従来の故障注入検出器の位置相関性を考慮すると同時に、複数の位置の全てで、故障注入攻撃を検出する。位置Lで配備される検出器ユニットの少なくとも一つが、位置Lで故障注入攻撃を検出する場合、故障注入検出器は警告を発する(および/または、位置Lに応用される故障注入改善操作をトリガーする)。よって、OR関数 (あるいは、その他の任意の適当な論理関数)が用いられて、複数のユニットの個別の一つにより決定される故障注入検出決定を結合する。任意の適当な数量のユニットが提供され、且つ、それらの間に任意の適当な距離があり、通常、以下の要素の少なくとも一つの機能として決定される: 各ユニットにより占有されるICダイ面積、保護される集積回路の物理特性、および、予期される故障注入攻撃の空間特徴。
【0132】
図8は、本発明の実施形態による各種プロセッサコア位置で配備され、それぞれ、複数のIC大面積を占有する複数の故障注入検出器ユニットの簡潔な図である。
【0133】
本発明のある実施形態に対し、使用方式はたくさんある。
【0134】
たとえば、共同所有の米国特許第9523736号明細書で、所定の電気ネットワークの異なる分岐間の状態差異を検出することが記述されている。IC中の電気論理網は、通常、全分岐により、同じ状態であると予期され、たとえば、1、あるいは、0のロジック状態である。よって、同じ論理(電気)ネットワーク上の二個の物理ポイント間で、電圧レベルの差異が検出されるとき、故障注入の試みが局部変化をもたらすことを示す可能性がある。設計者は、この位置とその他の位置間の差異(たとえば、二点の間の50mV )が正常であると判断し、300mV の差異のIC機能性に対するリスクにとっては十分に異常であり、200mV の差異は異常であるが、リスキーであるとはみなされない。ある実施形態によると、単に、300mVをターゲットとする検出器を設計するだけではなく、検出器は、感度の変化レベルに基づいて、ここで記述されるバーチャル制御により、200mV の差異、あるいは、300mVの差異を検出し、たとえば、リアルタイムで、設定制御信号が検出器に送信されて、検出器を、200mV 感度レベル、あるいは、300 mV レベルに設定する。よって、システムは、リアルタイムで、50mV、あるいは、200 mV、あるいは、300 mV を差異であると見なすか否かを判断し、差異の正検出(positive detection)は、故障注入がすでに検出されたことを示す。
【0135】
理解できることは、故障注入リスク以外に、その他の、あるいは、故障注入リスクよりさらに一般的な使用方式があり、これは、リアルタイムの感度レベルの調整が合理的であることを証明する。たとえば、ハッカーは、所定装置の故障注入に対する感度を研究、および、特徴づけると考えられている。これは、ハッカーの一部が、非常に特定の時間、および/または、特定の装置位置で、故障注入を集中して試みるよりも前に行われ得る。リアルタイムに、ランダムに、あるいは、リアルタイムで検出されるリスクに基づいて、感度レベルを変化させ、たとえば、ここで記述されるように、特定の命令と特定レベルのリスクを関連付けることにより、このような研究を混乱させ、あるいは、干渉し得る。
【0136】
代替的、あるいは、追加的に、特定の操作周期内で、装置が、リアルタイムで、大量の(スレショルド以上)の故障注入試みを検出する場合、例えば、Y時間内で、X回の検出を実行する場合、感度レベルが増加する。たとえば、100% のシステム操作時間で、低いセキュリティリスクの期間があり、例えば、これに限定されないが、経験的に、ハッキング攻撃をあまり受けないことが観察されるとともに、高いセキュリティリスクの期間があり、例えば、これに限定されないが、経験的に、ハッキングにさらにポピュラーな時期が確認される。
【0137】
検出された故障注入の時間スタンプ事象は記録され、その後、適当なコードが、時間とともに、故障注入の追跡を維持するとともに、特に高い、あるいは、特に低い故障注入発生率を有する外周時間帯を識別することができる。
【0138】
理解できることは、ここの故障検出器は、大きいシステムに整合され、これにより、それらの操作を改善することである。
【0139】
たとえば、理解できることは、ここで示され、記述される実施形態は、条件付き分岐操作をさらにハックされにくくする唯一の防御線になる必要はない。それどころか、ここで記述される故障検出器は、役立つように、従来のハッキング防止技術と結合されて、コードレベルで、故障注入の脆弱性に対抗する。たとえば:
a.故障注入の発生、あるいは、発生率を防止、あるいは、阻止、あるいは、減少させることにより、および/または、
b.故障注入の影響を回避、あるいは、改善することにより、一旦発生時、
どの一個も、ここで表示、あるいは、記述される故障注入検出技術によりトリガーされる。
【0140】
ここで表示、および、記述される故障注入を検出する任意の方法が用いられ、且つ、前のシステム中で用いられる前の故障注入検出技術を増加、あるいは、代替し、従来の技術は、一旦検出されると、故障注入の影響を回避、あるいは、改善するモジュールを有する。たとえば、二個のあるいは複数の故障注入検出器によりトリガーされるとき、モジュールが起動する。
【0141】
通常、カテゴリーbは、故障注入が検出されることを必要とする。これにより、ここで表示、および、記述される改善された、動的に制御される故障注入検出方法を用いることにより、カテゴリーb中の任意のハッキング防止措置が改善される。
【0142】
一旦、故障注入が検出されると、たとえば、ここで表示、および、記述されるように、任意の適当な故障注入影響改善操作がトリガーされるとともに、応答可能なように実行されて、改善、たとえば、少なくとも一つの影響を修正し、たとえば、故障注入の悪影響は、例えば、これに限定されないが、以下に適用されるモジュールである。
a.装置を不可逆の状態に置き、任意のさらなるオプションを阻止する。
b.プロセッサを指定のルーティンにジャンプさせ、たとえば、全体の整合性チェックを実行し、その後、通常、CPUをリセット、あるいは、再初期化する。
c.ウオッチドッグタイマーによりリセットされるまで、プロセッサを無限ループに置く。
d.特定の時間が経過するまで、装置を停止する。
e.感度レベルを所定時間上昇させた後、さらなる検出がない場合、感度は予設値に回復する。
f.ある期間内で、特定のあらかじめ指定された“リスク(risky)” 機能を無効にする。リスク機能は、認証の承認、感度データの開示、暗号キーの開示である。
g.パワーサイクルが応用される、あるいは、システム、あるいは、デバイスハードウェアがリセットされるまで、システムを中断する; ウオッチドッグタイマーリセット、あるいは、固まったCPUを釈放するその他の停止基準、あるいは、メカニズム。
【0143】
理解できることは、上記の故障注入改善操作は、故障注入攻撃の悪影響を改善するように設計されるモジュールに提供される機能性の単なる例であることである。改善操作、あるいは、機能は、故障注入の発生、あるいは、発生率を防止、あるいは、阻止、あるいは、減少させる、および/または、一旦、故障注入が発生すると、故障注入の影響を回避する、あるいは、改善することを含む。理解できることは、改善操作は、ハードウェア、および/または、ソフトウェアで実現されるとともに、プロセッサコアのプログラム/データメモリを用いる。
【0144】
理解できることは、二個以上のこのような故障注入改善操作が実行されることである。たとえば、上記の操作 e は、操作 a - d 、あるいは、f - gの一つと結合される。
【0145】
一連の条件付き分岐を実現する:たとえば、故障注入をさらに困難にする多くのこのような技術中の一種は、よって、たとえば、上記カテゴリー a により、条件付き分岐 n > 1 回を重複し、たとえば、二回(n = 2)を繰り返す可能性が低い。このような状況下で、第一分岐が第二分岐にジャンプし、第二分岐は、最終目的地にジャンプする分岐で、n= 2中の二個の分岐、あるいは、さらに一般的に、全n個の分岐は、同じ条件に基づく。これは、脆弱性を解決し、ここで、ハックされる分岐に対し、単一の故障は十分ではなく、むしろ、二個、あるいは、さらに多くの通常n個の点の各一個で故障注入されるので、これは、主題の実行の流れをハッキングする複雑性のレベルを増加させる。理解できることは、システム設計者により望まれる場合、ここで表示、および、記述される実施形態は、その他のハッキング防止措置と結合することができる(たとえば、任意の適当な措置により、たとえば、少なくとも一つの影響を修正、たとえば、故障注入の悪影響を改善する)。これにより、一緒に、条件付き分岐操作をさらにハックされにくくする。以上のImplementing A Sequence Of Conditional Branchesに関する技術は、故障注入をさらに困難にすることにより、故障注入を阻止し、これにより、たとえば、故障注入の影響、あるいは、悪影響を改善する任意の適当な技術と組み合わせる可能性は高くない。適当な技術は、たとえば、ここで表示、および、記述される任意の実施形態を用いて故障注入を検出する工程を有し、その後、故障注入が検出される場合、および、検出されるとき、任意の適当な故障注入影響改善措置を実施する。
【0146】
共同所有の米国特許第9523736号明細書中、さらに良い検出故障注入 (および、たとえば、パワーサイクルが応用されるまで、システムを停止することにより、その影響をさらに良く改善する)の既知の技術が記述され、この特許は、故障注入を検出する装置を記述し、装置は、集積回路 (IC)、および、回路に広がる高ファンアウトネットワークを有する。ICの機能操作中、高ファンアウトネットワークは連続して、非アクティブであり、且つ、回路が設置されて、高ファンアウトネットワーク中の複数のサンプリング点で、信号レベルを感知するとともに、感知された信号レベルに基づいて、高ファンアウトネットワーク中の信号異常を検出することにより、故障注入の試みを識別する。回路が設置されて、高ファンアウトネットワーク中の複数のサンプリング点で、信号レベルを感知して、感知された信号レベルに基づいて、ICの機能操作期間中に、高ファンアウトネットワーク中の合法の信号変化と信号異常を区別するとともに、信号異常を検出することにより故障注入を識別する。回路が設置されて、故障注入試みを識別するのに対応して、高ファンアウトネットワーク中の一つ以上の信号レベルを修正する。ALERT 信号の設置により、制御ユニット、あるいは、センサー48は、ネットワークルート40、あるいは、高ファンアウトネットワークの別の分岐上の信号レベルを修正する (たとえば、信号をアクティブ状態になるように強制する)。
【0147】
もう一つの例は、ハードウェアグリッチの検出で、たとえば、外部(たとえば、電磁気エネルギー源)により生じるIC中の電源/接地に対するグリッチである。電源グリッチによる故障注入は、IC装置をハッキングする従来の方法である。電磁気 (EM)グリッチは長年、ICに対する物理攻撃を達成する効果的な故障注入技術であると考えられてきた。故障注入の脆弱性を示し、且つ、セキュリティレベルとフォールスアラーム(誤検出)間のトレードオフを “抱える(suffer from)”ハードウェアグリッチの検出回路は、たとえば、以下の http位置でインターネットにより得られる回路を有する:
ieeexplore.ieee.org/document/5376828;
Zussa, L等による“Efficiency of a glitch detector against electromagnetic fault injection” ieeexplore.ieee.org/document/6800417/
および、以下の https www 位置:
blackhat.com/docs/eu-15/materials/eu-15-Giller-Implementing-Electrical-Glitching-Attacks.pdf。
【0148】
故障注入攻撃検出器に関する最新知識は、2016年12月16日の“Cheap & Cheerful: A Low Low-Cost Digital Sensor for Detecting laser fault injection attacks”中で記述されており、以下の http 位置でインターネットにより得られる: www-users.math.umn.edu/~math-sa-sara0050/space16/slides/space2016121602-37.pdf。提案される方策は、調整可能なである(“このセンサーは双方向検出能力を有し、且つ、後端段階(back-end stage)の感度が調整可能である)。別の箇所でも示されるように、本文献の公開内容、および、実際上ここで応用される全ての文献は、参照することにより組み込まれる。
【0149】
理解できることは、ここで述べられる実施形態を用いて、オペコード反応動的感度レベル調整を増加させて、上記の検出器が改善されることである。上述の“cheap and cheerful”の文献中のCPU設計は調整可能であり、随時実行される命令を示す出力信号を提供するのに適用される。たとえば、設計中に、複数の選択可能な調整を組み込む、あるいは、複数の回路を加えることができ、各回路は、異なる調整を有し、ここで表示、および、記述される決定ロジックにより示される感度レベルに基づいて、リアルタイムで、複数の回路の一個の一出力だけが選択される。
【0150】
一般的に、本領域で既存の任意の故障注入攻撃対策が、たとえば、以下で記述される:
Thierno Barry, Damien Courousse, Bruno RobissonによるCompilation of a Countermeasure Against Instruction-Skip Fault Attacks” は、以下の https 位置でインターネットにより得られる: hal-cea.archives-ouvertes.fr/cea-01296572/document; および
“Low-Cost Software Countermeasures Against Fault
Attacks: Implementation and Performances Trade Offs” は、以下の http 位置でインターネットにより得られる: euler.ecs.umass.edu/research/bpbk-WESS-2010.pdf
【0151】
本発明の実施形態と共存し、相補検出/保護層となる。これは、共同で、CPU、あるいは、類似装置の攻撃、たとえば、故障注入攻撃からの保護の総体度を増加させる。
【0152】
理解できることは、アナログ回路は通常、調整オプションが設計され、たとえば、複数の感度レベルの複数の検出レベル/スレショルドを提供し、よって、どのレベル/スレショルドが、実際の電気システム環境で最も有効なのかをあらかじめ予測することが困難である。一般的に、シリコン回路中で、テストが実行されて、どの配置が最も有効なのかを判断し、その後、ある実施例によると、回路は、一個の特定の “最適な(optimal)”あるいは、最も実行可能な設定に配置され、単一のテスト選択設定に配置されない。代わりに、複数の設置の全部、あるいは、二個以上が保留されるとともに、ここで表示、および、記述されるように、制御回路が加えられて、リアルタイムで、複数の設置中のどれを用いるかを選択する。テストは、その後、簡潔に実行されて、回路のリアルシリコン中でのパフォーマンスを確認する。
【0153】
ここで表示、および、記述される実施形態の特定の長所は、単一のオペコードの精度でも、故障注入検出のセキュリティレベルと誤検出レベル間のトレードオフを高度に調整可能にすることである。必要であるが、遺憾である誤検出の高い耐性 (あるいは、低セキュリティレベル)を、このような高い耐性を必要とするそれらのオペコードに制限するとともに、誤検出の耐性 (あるいは、低セキュリティレベル)を望ましく低下させて、このような高い耐性を必要としない全オペコードに適用することにより、トレードオフを小さくない程度に克服する。
【0154】
理解できることは、本文の特定の実施形態は、制限されることを意図しないことである。本発明は、たとえば、CPU、あるいは、プロセッサと結合して操作する任意の実施形態を有することを意図し、これらのCPU、あるいは、プロセッサは、内部で、実行される命令の復号結果である信号を有する。これらの実施形態によると、これらの信号は、CPUに送信され、これにより、CPU外部の少なくとも一つの操作ユニットを、これらの信号状態に基づいて作用させ、これにより、一個の環境中で、可用で、且つ、CPU内部目的に設計される信号をもう一つの環境に使用し、CPU外部目的は、通常、CPU外部位置、あるいは、環境に用いる。たとえば、どの操作コード/命令が実行されるかのリアルタイムの指示に対応して、セキュリティシステム中の感度レベル制御モジュールは、同時、たとえば、リアルタイムで調整し、故障注入攻撃に対抗する対策回路中の故障注入検出器機能の感度レベル (セキュリティレベル)を操作することができる。
【0155】
ここのある実施形態を実行するために用いられる場合、ファームウェアは、不揮発性メモリ、たとえば、フラッシュ、あるいは、ROM中に保存される。任意の適当な技術が用いられて、ファームウェアの位置の制限が、フラッシュ管理を干渉するのを防止する。
【0156】
あるいは、ここで記述されるある実施形態は、ハードウェア中で、部分的、あるいは、単独で (すなわち、ファームウェアがない)実現され、このような状況下で、本文が描写する変量、パラメータ、操作順序、および、計算中の一部、あるいは、全部は、ハードウェア中にある。
【0157】
ここで用いられる用語"対策(CM)" は、チップ上の操作の任意の方面を含むことを意図し、通常、リアルタイムで制御信号に反応し、これにより、通常は、ハードウェアで実現され、CPU、および/または、チップ中の任意のその他の操作を、故障注入攻撃、例えば、これに限定されないが、電源グリッチ攻撃、クロックグリッチ攻撃、および、信号グリッチ攻撃から保護する。
【0158】
いくつかの対策は“回避(evasive)”であり、それらは、敵や攻撃者が、いつどこで、故障を注入するかを混乱させるからである;理解できることは、攻撃者が"誤り" (攻撃の視点から見て)の位置や時間で故障を注入する場合、攻撃者は、予期する効果を生じる可能性がそれほどない。
【0159】
たとえば、このアーティクルhttps://www.nuvoton.com/support/technical-support/technical-articles/TSNuvotonTechBlog-000154/ は、 " ランダム遅延とランダム変化処理の工程順序(random delays and random variations in the order of running processes) "を紹介し、どちらも、予測不可能なシステム実行タイミングを生成し、故障注入攻撃に対する対策とし、"ハッカーに、内部システム作動のタイミングを簡単には理解させないことが、故障注入攻撃に対する効果的な対策である。このシンプルな方法は、予測不可能なシステム実行タイミングを構築し、攻撃者が、攻撃に適する時間を見つけにくくする。さらに、予測不可能なシステムタイミングが用いられて、ハッカーが、セキュリティ操作の重要な時間を捜すのを防止する。予測不可能なシステムタイミングの実現は、ランダム遅延とプロセスの実行順序のランダム変化処理により達成される"ことを説明する。
【0160】
ここで使用されるCM、あるいは、対策は、任意のメカニズム、回路、検出器、あるいは、その他のハードウェア、あるいは、ファームウェア、あるいは、ソフトウェアを有し、たとえば、反撃や行動の採取により、過去に、あるいは、今後、あるいは、すでに、あるいはこれから攻撃により起こりうる任意の危険や脅威に反撃する。対策は一メカニズム、たとえば、温度センサー、あるいは、グリッチ検出器を有し、攻撃 (“トラップ(trap)”や"トラップドア(trapdoor)") によりトリガーされ、これにより、攻撃を検出する;その後、このメカニズムも、適当な動作、たとえば、防御や決議をトリガーする。
【0161】
全体的、あるいは、部分的であっても、攻撃の前、あるいは、攻撃中であっても、たとえば、積極的に、あるいは、攻撃の後、たとえば、遡及的でも、CMは、攻撃によりトリガーされる、および/または、保護される回路を防御する動作をトリガーする任意のハードウェア、ファームウェア、あるいは、さらにはソフトウェアを有する。
【0162】
本文中の用語、グリッチは、IC中の特定の点、あるいは、ICIO端子/ピンで、外在の電気、磁気、レーザー、あるいは、その他のエネルギーを加えることを意図し、これは、各種可能な方式で、チップ機能を干渉し、例えば、これに限定されないが、CPUに、CPUが採取すべきではない条件付き分岐を採取させ、ロジック状態機器(logical state-machine)に、ロジック状態機器がしてはいけない状態変化を生じさせ、故意に、外発的に、レジスタ、あるいは、メモリビットの状態を変化させ、あるチップロジックに、(設計者視点で)不正確なロジック結果を生成させる。本領域中で使用される用語グリッチは、信号上で発生する任意の転換を含むことを意図する。これは、通常、信号がその予期される値に安定する前に、特に、デジタル回路中で発生する。通常、転換は、通常、持続時間が短い電気パルスを有し、たとえば、コモンソースから生成されるが、異なる遅延を有する複数の信号間の競争条件(race condition)のためである。ある電子素子、たとえば、フリップフロップは、少なくとも所定長さのパルスによりトリガーされる必要があり、そうでなければ、フリップフロップ (たとえば)は正常に作動しない。このような状況下で、最小長さより短いパルスも、グリッチであると見なされる。グリッチはさらに、ラントパルス(runt pulse)、あるいは、その幅が、正確に操作するのに必要な最小レベルより小さいパルス、および/または、たとえば、共鳴(ringing)やクロストークにより生じるスパイクを有する。グリッチは、たとえば、適当な調整タイミングの同期回路中で、無害、あるいは、良好な耐容性であるが、多くの状況下で、誤動作を生じ、よって、故障、あるいは、設計エラーであると見なされる。ここで使用される用語、グリッチは、通常、信号、および/または、電源/接地線上で発生するとともに、攻撃者に導入される転換を有し、その目的は、ICに故障を発生させる、および/または、ICにある操作を実行させる、あるいは、ある操作が実行できないようにすることで、それらの委託(commission)、あるいは、見落とし(omission)により、それぞれ、例えば、攻撃者に、秘密データ、たとえば、IC上に保存された社会保障番号を曝露する等、攻撃者が望む結果を生成する。
【0163】
ある実施形態によると、セキュリティシステムは、保護されるチップ上に配備され、セキュリティシステムは、少なくとも一つのチップ上に配備される故障注入検出サブシステムを有し、各故障注入検出サブシステムは、リアルタイムで選択可能な複数の感度レベルを有するとともに、チップ上に配備される少なくとも一つのハードウェア故障注入検出器回路、および、それと結合される感度レベル制御ロジックを有し、感度レベル制御ロジックは、チップ上に配備され、且つ、リアルタイムで操作して、感度制御信号(感度レベル選択とも称する)を生成することにより、故障注入検出サブシステムを、複数の選択可能な感度レベル中の現在の感度レベルから、複数の選択可能な感度レベル中の次の感度レベルに転換するとともに、感度制御信号を、サブシステム中の少なくとも一つのハードウェア故障注入検出器に送る。
【0164】
理解できることは、任意の適当なメカニズムは、状態変化をトリガーすることができることである。チップ状態転換は、たとえば、無活動の検出時、ハードウェアにより自動的に発生、あるいは、ファームウェアにより作動させる。
【0165】
理解できることは、チップ上に、一つ以上のサブシステムがあり、それぞれ、一つ以上のハードウェア故障注入検出器、一つ以上の感度レベル制御ロジック回路を有し、一つ以上の感度レベル制御ロジック回路はそれぞれ、一つ以上のハードウェア故障注入検出器に結合、あるいは、関連付けされ、および、一つ以上の機能モジュールは、それぞれ、異なる検出器と関連する。
【0166】
複数の感度レベルに用いる任意の適当な実施方法が採用される。複数の対応する検出レベルを有する電圧グリッチ検出器 (たとえば、本文中で詳細に記述/表示される)、あるいは、複数の対応する温度検出スレショルドを有する温度センサーが用いられる。
【0167】
用語"グリッチ検出器"は、電源線を監視するとともに、電源レベルが、名目の電源レベルより低いX% (あるいは、YmV)まで降下するとき毎回トリガーされる任意の回路を有することを意図する。このような降下が検出されるとき、これは、攻撃者が、悪意を持って、チップの電源を操作し、故障を注入しようと試みるからである。
【0168】
グリッチ検出器は、グリッチ検出器モニター上の電源、あるいは、信号をグリッチする(検出する)ことによりトリガーされる。同様に、センサーを配置するチップのある領域の温度が、“正常な”温度範囲(通常、所定)から離れるとき、温度センサーがトリガーされる。CMがトリガーされるとき発生するその他の事象は、たとえば、CPU実行の停止、および/または、あるチップメカニズムの選択的なリセット、および/または、あるメモリ領域へのアクセス防止、および/または、あるチップIOチャネルの機能の禁止、を有する。
【0169】
複数の感度レベルを有する対策を提供する別の実施形態は、所定サブシステムが複数の検出器を有し、複数の検出器中の各種サブセットは、アクティブであり(たとえば、100個の検出器中、25個のサブセットだけがアクティブであるか、あるいは、50個の検出器中の第二サブセットだけがアクティブであるか、あるいは、75個の検出器中の第三サブセットだけがアクティブであり、これにより、各種異なる時間点で、各サブシステムの複数個の (たとえば、この状況下で3個)感度レベルを生成する。
【0170】
さらに一般的に、サブシステムは複数の検出器を有するとともに、サブシステムの時間点tの感度レベルは、複数の検出器中の複数の検出器として実現され、これらの検出器は、時間点tで有効で、通常、感度制御ロジックは、複数の検出器中の何個が、時間点tで有効かを判断し、これにより、リアルタイムで設置可能な感度レベルの対策を提供し、少ない数量の作動された検出器回路により、低感度レベルが実現され、且つ、大量の作動された検出器回路により、高感度レベルが実現される。
【0171】
故障注入攻撃を検出するハードウェア検出器回路の複数の実施形態 (たとえば、グリッチ検出器、あるいは、温度センサー、あるいは、その他の対策)は、保護されるチップの少なくとも一部 (通常、所定)上に分布、あるいは、均等に分布、あるいは、所定のものを用いて、計画的に配置され、これは、とりわけ、チップ機能モジュールの位置、および/または、関連するセキュリティリスクに基づく。
【0172】
通常、少なくとも一つの故障注入サブシステムは、さらに、チップ上に配備される少なくとも一つの機能モジュールを有し、リアルタイムで、出力信号を生成するとともに、出力信号を感度レベル制御ロジックに送り、これにより、感度レベル制御ロジックに、複数の選択可能な感度レベル中から選択される次の感度レベルに関する指示を提供する。
【0173】
各機能モジュールは、たとえば以下を有する:
暗号アクセラレータ; および/または、
通信機能モジュール、例えば、UART、I2C、USBコントローラー、あるいは、任意の(通常、ハードウェア)モジュールは、一組の特定の信号を用いるとともに、所定のプロトコルに従い、別のチップ、および/または、同じシステムボード上に配備されるその他のサブシステムと通信する; および/または、
周辺機能、たとえば、タイマー、あるいは、機能モジュール制御は、不揮発性メモリ、たとえば、OTPにアクセスする; ウオッチドッグタイマー; 中断コントローラー; DMAコントローラー。
【0174】
所定の機能モジュールにより生成される各出力信号は、通常、機能モジュールの現在の状態、あるいは、機能モジュールの状態が何かを示す (たとえば、機能モジュールが転移された状態)。たとえば、機能モジュールはプロセッサコアを有し、プロセッサコアは、プロセッサコアに、どの命令が実行されるかを示す出力を生成する。機能モジュールは、機能モジュールに、どの状態(たとえば、アクティブ対非アクティブ)に転換するかを示す出力を生成する。機能モジュールは、特定のアクティビティ(例えば、暗号アクティビティ)が、機能モジュールにより実行が開始される、あるいは、機能モジュール中で暗号アクティビティが終了することを示す出力を生成する。
【0175】
通常、モジュールが同じ状態である度に (毎回、次の状態は、現在の状態に相対して変化しない)、出力信号は不変を保持する。このような状況において、サブジェクトモジュールにより影響される限りにおいて、選択される次の感度レベルは、現在の感度レベルである。
【0176】
理解できることは、チップは、任意の適当な数量の故障注入検出サブシステムを有し、それぞれ、感度レベル制御ロジックに結合される任意の適当な数量のハードウェア故障注入検出器回路を有し、任意の適当な数量の機能モジュールを有する。たとえば、図9は、単一の機能モジュール、および、単一の検出器を有する単一のサブシステムが配備されるチップを示す。図10において、単一の故障注入検出サブシステムはチップ上に配備される。しかし、図11のサブシステムは、一個ではなくて、3個の機能モジュールを有する。図12において、単一の故障注入検出サブシステムはチップ上に配備され、且つ、図10において、サブシステムは、一個ではなくて、3個の機能モジュールを有し、しかし、図11において、サブシステムは、一個ではなくて、二個の検出器回路を有する。図12は、二個のサブシステムが配備されるチップを示し、各サブシステムは、それぞれ、3個の機能モジュール、および、一個の検出器を有する。
【0177】
よって、たとえば、少なくとも一つの機能モジュールは、複数の機能モジュールを有し、感度制御ロジックは、複数の機能モジュールのそれぞれからの出力指示を、一組の感度制御信号に組み合わせることにより、次のレベルとして選択される感度レベルを導き出す。
【0178】
通常、各組の信号は、マルチビット感度制御信号を有する。
【0179】
通常、複数の故障注入検出サブシステムが提供され、それぞれ設置されて、チップ上に配備され、且つ、それぞれ、少なくとも一つのハードウェア故障注入検出器、および、ハードウェア故障注入検出器と結合される感度レベル制御ロジックを有する。
【0180】
ある実施形態によると、システムは、保護されるチップ上に配備され、少なくとも一つの機能モジュールは、少なくとも第一、および、第二機能モジュールを有する。通常、複数のサブシステムは、それぞれ、第一、および、第二機能モジュールを保護する第一、および、第二サブシステムを有し、第一モジュールは、第二機能モジュールより、第一サブシステムに近く、第二機能モジュールは、第一機能モジュールより、第二サブシステムに近い。
【0181】
理解できることは、故障注入は、ターゲットとなるチップの回路の付近に、電気的、および、物理的に加えられることである。よって、機能モジュールとモジュールを保護する"責任がある" 検出器間の接近が望まれて、検出器 (故障注入検出器回路)に、故障注入を試みる関連するアクティビティを効果的に阻止させる。必要であれば、機能モジュールと所定のサブシステムの検出器間の距離(たとえば、どの機能モジュールがどのサブシステムに近接するかを決定する)は、チップ上の検出器の位置と機能モジュールのロジックの "加重中心(weighted center)"間の距離として定義され、"加重中心" は、機能モジュールのロジック中の一点で、この点に対し、その点から、機能モジュール中に含まれる各素子 (たとえば、その中の各ロジックゲートに、所定の機能モジュール中に10k個のロジックゲートが含まれる)までの平方距離の総和の平方根のことであり、それぞれ、機能モジュールのロジック中のその他のすべての点の類似した平方根に相対して最小である。
【0182】
通常、複数の故障注入検出サブシステム中の少なくとも一つのサブシステムSは、チップ上の少なくとも一つの機能モジュールを保護する。通常、複数のサブシステムの対応するハードウェア故障注入検出器中の各個別の検出器は、単独の検出器により保護される少なくとも一つの機能モジュールにより、リアルタイムで選択された感度レベルを有する。
【0183】
特定機能モジュール特定の検出器間に、独占的結合がある。しかし、一般の状況において、各機能モジュールは、二個以上の検出器に影響し(たとえば、そのために、感度レベルを選択する)、各検出器は、二個以上の機能モジュールにより影響され、たとえば、所定の検出器の感度レベルは、複数の機能モジュールにより生成される出力を組み合わせることにより選択され、これらの機能モジュールは、通常、その検出器により保護される(たとえば、その検出範囲内)。
【0184】
通常、各検出器は、リアルタイムで選択可能な複数の感度レベルを有する。
【0185】
ある実施形態によると、感度レベル制御ロジックは、少なくとも部分的に、あるオンチップモジュールがアクティブか否かに基づいて、制御可能な感度レベルを、リアルタイムで選択する。
【0186】
たとえば、あるチップオンモジュールがアクティブであるとき、制御可能な感度レベルは、感度レベル制御ロジックにより、あるチップオンモジュールがアクティブでない時に、メカニズムにより選択される制御可能な感度レベルにより低くなるように選択される。
【0187】
および/または、制御可能な感度レベルは、たとえば、所定のオンチップモジュールがアクティブの時、感度レベル制御ロジックにより、所定のオンチップモジュールがアクティブでない時の感度レベル制御ロジックにより選択される制御可能な感度レベルより高くなるように選択される。
【0188】
オンチップモジュールは、たとえば以下を有する:
a.通信を実行する通信モジュールで、操作時、セキュリティクリティカルであると判断する、例えば、トランスミッタは、チップ外部の機密であると見なされるデータの送信に用いられる、あるいは、レシーバは、チップタスクの正確な実行に非常に影響するデータヲ受信するのに用いられる。
b.セキュリティクリティカルであると判断するGPIOモジュールは、あるIO信号を制御、および、監視し、例えば、たとえば、チップの出力信号を制御し、これらの信号は、チップ外のある機能を有効にし、カギとなるのは、あるセキュリティ基準、たとえば、パスワードの認証の成功を除き、これらの機能を有効にしないことである。
c.特定のメモリインターフェースモジュールは、所定のメモリゾーンを処理するとき、セキュリティクリティカルであると判断する。たとえば、重大な、あるいは、秘密の情報を保存するのに用いられる所定のメモリゾーンへのアクセスは、セキュリティクリティカルであると判断する。このゾーンは、アドレスAで開始、アドレスBで終了する;これらは両方、プログラム可能である。デコーダは、ゾーン内のアドレッシングがアクセスされることを知っている、あるいは、決定するとともに、応答可能なように、感度制御ロジックに送られる信号を出力して、感度制御ロジックに、その感度レベルが上昇することを通知し、そのメモリゾーンからデータをフェッチするとき、さらに高い安全性を生成する。
d.セルフテストモジュール、たとえば、操作時、あるメモリアレイの一テストは、セキュリティクリティカルであると判断する。理解できることは、メモリ障害は、セキュリティ問題を生じ、よって、いくつかの従来のセキュリティシステムは、テストされる素子の使用を開始する前、ある素子のセルフテストを実行する。このようなセルフテストの干渉は、テストされる素子の臨界に基づいて、セキュリティシステムを、非重大、あるいは、重大に故障させる。
【0189】
そのモジュールが干渉される、あるいは、ハックされるとき、チップのセキュリティに対し、重大な影響を生成する場合、モジュールは、通常、重要、あるいは、セキュリティクリティカルであると判断され、それは、チップの操作に対し、重大な不利な影響を生成し、リスクを生成するからである。
【0190】
理解できることは、任意の適当な段階で、何が重要かに関する決定をすることである。たとえば、チップの設計者は、どの素子、あるいは、機能モジュールが重要かを決定する、あるいは、どの素子、あるいは、機能モジュール(チップの素子、あるいは、機能モジュールの全部、あるいは、任意のサブセット)が重要であると見なされるか、を決定し、決定の自由度を、後の段階に残し、たとえば、チップのユーザー、たとえば、システムの設計者により、その後、何を有効にするかを決定する。
【0191】
ある実施形態によると、何が重要かに関する決定が、IC(集積回路)初期化期間中にプログラム化されるとともに、その後、設計の操作により固定を維持する。
【0192】
ある実施形態によると、たとえば、CMと感度制御を有するシステムにとって、ICのファームウェアにより別途に設置されるまで、感度は所定の(たとえば、最大)値に設定される。配置は重要な段階であるので、この実施形態は、CMを釈放する前、正常なレベルで機能する高度な保護に配置させ、正常なレベルは、通常、配置段階で設置されるセキュリティのレベルより低い。
【0193】
ある実施形態によると、ある素子、あるいは、機能モジュールは、現在、アクティブ、あるいは非アクティブであるか感度制御を示す能力を有するように設置される。たとえば、アクセラレータが自主的に、暗号アクティビティを実行する度に、所定の機能、例えば、暗号アクセラレータは、出力信号を生成する。この出力は感度制御ロジックに接続され、応答可能なように、対策回路感度のレベルを設定する。
【0194】
理解できることは、任意の適当な技術が用いられて、所定の素子、あるいは、機能モジュールが、それが、アクティブか否かを知れるように確保することである。たとえば、暗号アクセラレータは、通常、処理されるデータをロードし、その後、“開始” や “起動” ビットを設定することにより、動作を迫る。一旦、このデータがロードされる、あるいは、一旦、開始/起動が有効にされると、このようなアクセラレータはアクティブであると見なされるとともに、データがロードされる、あるいは、開始/起動が有効になるまで、非アクティブであると見なされる。その内部の状態機械中の状態 ( “送信開始(transmit-start)”状態) が到達するとき、通信モジュールは、それが通信を開始したことを知るとともに、通信モジュールが送信開始(transmit-start)状態でない場合、それがまだ通信していないことを知る。
【0195】
ある実施形態によると、少なくとも一つの機能モジュールは、少なくとも一つの出力信号を生成するとともに、感度レベル制御ロジックに送り、少なくとも一つの出力信号は、モジュールがアクティブか否かを示す状態表示を有する。通常、ロジックは、少なくとも部分的に、状態表示に基づいて、次のレベルを選択する。
【0196】
ある実施形態によると、モジュールがアクティブである場合のみ、次のレベルが選択される。その他の実施形態によると、次のレベルは、モジュールがアクティブであるか否かに基づき、また、別の要素、例えば、モジュールが、高リスクモジュール、あるいは、低リスクモジュールであるかに基づく (これは、たとえば、アクティブであっても、高リスクモジュールに相対し、少し低い高レベルの感度を必要とする)。
【0197】
ある実施形態によると、機能モジュール中の少なくとも一つの個別のモジュールがアクティブになるのに応答して、ロジックは、少なくとも一回、さらに高い次のレベルを選択する。
【0198】
ある実施形態によると、少なくとも個別のモジュールが非アクティブになるのに応答して、ロジックは、少なくとも一回、さらに高い次のレベルより低いレベルを釈放する。
【0199】
理解できることは、高い感度レベルを要求する別のモジュールがない場合、低い感度レベルへの釈放が発生するとともに、任意の別のモジュールが、高い(たとえば、現在の)感度レベルを要求しない場合、発生しない。反対に、感度レベルの上昇を必要とする単一モジュールは、感度を高レベルに上昇させる。
【0200】
よって、システムは、このような事実を利用して、100%のシステム操作時間中で、通常、低いセキュリティリスクの期間を有し、例えば、これに限定されないが、経験的に、ハッキング攻撃をあまり受けない期間、および/または、攻撃が発生しても、毎回の攻撃はマイナスの影響が少ない期間が観察されるとともに、高いセキュリティリスクの期間があり、例えば、これに限定されないが、経験的に、さらにハッキングを受けやすい時期、および/または、毎回の攻撃はマイナスの影響が大きい時期が観察される。その後、システムは、システムが、セキュリティ脅威に対しさらに敏感な時期を、第二タイプの期間内に制限し、これにより、システムのフォールスアラームに対する感受性を減少させ、システムが、100%の時間内で、故障注入に対し最高の感度を有する状況下で、システムをさらに安全にすると同時に、可用性と使用性に影響しない。
【0201】
ある実施形態によると、少なくとも一つの出力信号は、少なくとも一つの機能モジュールの現在のアクティビティと関連するリスクのレベルを表示する。通常、感度制御ロジックは、少なくとも部分的に、リスクのレベルから、感度レベルを導き出すとともに、次のレベルとして選択する。
【0202】
通常、チップ設計者と構築者は、事前に、適当なリスクランキングを決定し (たとえば、暗号アクティビティが最高リスクアクティビティであることの決定等)、その後、相応に設計されて、感度レベル制御ロジックに、状態信号、あるいは、出力信号を提供して、リアルタイムで監視し、ロジックに、対応して、リアルタイムで感度レベル制御信号を調整させる。たとえば、所定のモジュールがアクティブ/非アクティブであるかに基づいて、感度レベルを決定することが望まれる場合、これらのモジュールは、モジュールが今、何かをしているか否か、あるいは、任意の所定時間でアイドルであるか否かを示す単一バイナリ出力信号 (たとえば、リアルタイムで変化)を提供するように設計される。複数の(n > 2)レベルのリスク評価において、設計者は、複数のモジュールのそれぞれに、決定を提供し、これにより、各モジュールの状態が関連する情報を搭載する。
【0203】
ある実施形態によると、機能モジュールがアクティブで、且つ、第一レベルのリスクを有する場合、ロジックは、第一感度レベルを次のレベルとして選択する。機能モジュールがアクティブで、且つ、第二レベルのリスクを有する場合、第一レベルのリスクより低い第二感度レベルを次のレベルとして選択し、機能モジュールが非アクティブである場合、第三感度レベルを次のレベルとして選択する。
【0204】
理解できることは、任意の適当な数のリスクレベル、例えば、2、3、4、あるいは、それ以上のリスクレベルが提供され、通常、チップ設計が提供する感度レベルの数量に基づく (あるいは、チップが、十分な感度レベルを提供して、必要な任意のリスクレベリング方案に適応するように設計される)。
【0205】
理解できることは、攻撃者は時に、暗号アクティビティがいつ発生するかを知っている可能性があり、このような状況下で、CMはこの時、さらに敏感になることが重要であり、この状況下でさらに良い保護を提供する。よって、ある実施形態によると、感度レベル制御ロジックは、少なくとも部分的に、チップが暗号加速を実行するか否かに基づいて、制御可能な感度レベルをリアルタイムで選択する。
【0206】
ある実施形態によると、機能モジュールは、高レベルのリスクと関連する暗号モジュールを有する。
【0207】
CPUが暗号加速を実行するとき、制御可能な感度レベルは、たとえば、感度レベル制御ロジックにより、CPUが暗号加速を実行しない時、感度レベル制御ロジックにより強制される制御可能な感度レベルよりも高い感度レベルHに強制される。
【0208】
用語「さらに高い感度」というのは、システムの感度レベルが低いとき、故障注入であると診断されるよりも、さらに多くの事象が、故障注入であると診断されることを意味する。通常、攻撃者は、ターゲット装置がいつ各種操作 (例えば、これに限定されないが、暗号アクティビティ、感度通信アクティビティ、例えば、社会保障番号、あるいは、その他の感度データの送信;あるメモリ範囲へのアクセス- これは基本的に、さらに別の実施形態である;セキュリティに関連するある測定/感知を実行する;クロック回路をロック/調整状態にする)を実行するか研究することを試み、その後、攻撃者が成し遂げたいことに基づいて、いつ攻撃するかを決定する。たとえば、攻撃者が、システムに、あるソフトウェア (たとえば、攻撃者により注入される悪意のあるソフトウェア)が、認証されていないにもかかわらず認証済みであると思い込ませる場合、攻撃者は、暗号アクティビティの時間であることを知っている、あるいは、信じている時間に、彼の攻撃を実行する。通常、暗号アクティビティが実行されるとき、これが必要とする高いレベルの誤検出にもかかわらず、システムは高い感度レベルに切り換わるとともに、暗号アクティビティが実行された後、システムは低感度レベルに戻る。
【0209】
ある実施形態によると、感度レベル制御ロジックは、少なくとも部分的に、チップの電源状態に基づいて、制御可能な感度レベルをリアルタイムで選択する。
【0210】
CPUがアイドル電源状態であるとき、制御可能な感度レベルは、感度レベル制御ロジックにより、CPUがアクティブ電源状態であるときに、感度レベル制御ロジックにより選択される制御可能な感度レベルよりも、低いレベル、あるいは、高くレベルが選択される。システムは、アイドルモードの時、第一レベルの感度を強制し、アクティブの時、さらに高い第二レベルを強制し、たとえば、チップが休止状態の場合、それが攻撃を受ける心配があまりないからである。あるいは、システムは、アクティブ時、低レベルの第二感度を強制し、たとえば、不必要な故障検出改善動作を実行するのは、危険、あるいは、望ましくなく、これは、通常、チップの正常な操作に大きな負担であるからである。
【0211】
ある実施形態によると、CMは常にアクティブであるが、CMの感度レベルは時々、ここで表示、および、記述されるハードウェアにより自動で減少するので、その感度レベルは時間とともに変化する。
【0212】
理解できることは、ある電源状態転換は、ファームウェアに知られ、例えば、たとえば、ファームウェアによりトリガーされる電源状態転換は、たとえば、 ファームウェアは、制御レジスタに何かを書き込むことにより、チップを、あるアイドル状態にすることである。
【0213】
よって、実施形態によると、機能モジュールはファームウェアを有し、ファームウェアは、可能な電源状態間の転換をトリガーし、これにより、現在の状態を感度制御ロジックに知らせる。
【0214】
理解できることは、転換がファームウェアによりトリガーされなくても、電源状態転換は、ファームウェアに知らせることができることである。たとえば、低電源状態の退出は、通常、ハードウェア、たとえば、タイマー、あるいは、外部事象によりトリガーされる。この状況下で、この事象は中断をトリガーし、中断により、ファームウェアに起床を通知する。
【0215】
これらの場合、ファームウェアが、(たとえば、ファームウェア設計者により)少なくとも部分的に、既知の現在の電源状態に基づいて、リアルタイムで、感度レベルの選択を有するように配置されても良い。
【0216】
あるいは、たとえば、ファームウェアが電源状態のある変化を知らない場合、これらの変化(転換とも称する)は、感度レベルにより減少する制御信号を生成する。
【0217】
ある実施形態によると、チップは、少なくとも一つのアイドル状態、および、少なくとも一つの覚醒状態を有する複数の可能な電源状態を有する。通常、ロジックは、チップの新しい状態に対応する次のレベルを選択し、新しい状態は、複数の可能な状態の一つを有する。
【0218】
この実施形態において、機能モジュールは、電源管理モジュール、あるいは、電源制御モジュールと称される。このようなモジュールは、通常、任意のものを製造、あるいは、処理しない、あるいは、任意のものをある場所からもう一つの場所に移動させることはなく、チップ中に存在する各種指示を収集し、これにより、チップの状態、および、そのモジュールを制御する。たとえば、特定の、通常の所定の "スリープに進入する(go to sleep)" CPU命令の検出時、電源管理、あるいは、電源制御モジュール (ロジック)は、チップをスリープ状態に進入させる、および/または、ある別の機能を無効にする。通常、ファームウェアは、チップをスリープ状態にする。このような命令を実行するとき、CPUはそれ自身をスリープ状態にするとともに、電源管理ロジックが、チップの別の部分、あるいは、機能素子をスリープ状態にすることに応答して、さらに、信号を発信する。
【0219】
チップの電源状態が新しい状態に転換する前、次のレベルが選択される。チップの電源状態が新しい状態に転換する前、検出器は次のレベルに設定される。チップの電源状態が新しい状態に転換した後、次のレベルが選択される。
【0220】
チップの電源状態が新しい状態に転換した後、検出器は、次のレベルに設定される。
【0221】
理解できることは、専門用語、例えば、 "強制"、 "要求"、 "必要" および "必須" は、はっきりとさせるためにここで記述される特定の実現、あるいは、応用の上下文中で行われる実現の選択であるとともに、別の実現において、同じ素子は、非強制、および、非不可欠として定義され、あるいは、完全に消去することもできるので、制限することを意図していないことである。
【0222】
本発明の特徴は、単独の実施形態の上下文中で記述される操作を含み、さらに、単一の実施形態中で組み合わせて提供される。たとえば、システム実施形態は、対応するプロセス実施形態を含む。また、各システム実施形態は、システム、コンピュータ可読媒体、装置の全体の機能を有して、サーバー中心の “ビュー(view)”、あるいは、クライアント中心の “ビュー”、あるいは、システムの任意のその他のノードからの“ビュー”は、サーバー、あるいは、クライアント、あるいは、ノードで実行されるそれらの機能だけを有する。特徴はさらに、従来の技術と結合され、特に、背景部分、あるいは、言及される出版物中で記述されるものに制限されない。逆に、本発明の特徴は、単一の実施形態の上下文中、あるいは、ある順序で、簡潔に記述される操作を有し、単独で、あるいは、任意の適当なサブ結合で提供され、既知の特徴 (特に、背景部分、あるいは、言及される出版物で記述されるものに制限されない)、あるいは、異なる順序を有する。"たとえば、" が用いられて、実施形態が制限されないことを表示する。各方法は、説明、あるいは、記述される適当に順序付けられた、たとえば、ここで説明、あるいは、記述される適当に順序付けられた操作の一部、あるいは、全部を有する。
【0223】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の思想を脱しない範囲内で各種の変形を加えることができる。
【符号の説明】
【0224】
301…プロセッサコア
302…故障注入検出器
303… 故障注入改善回路
91、91a、91b、91c…機能モジュール
92…感度レベル制御ロジック
93、93a、93b…ハードウェア故障注入検出器
21~24、310~350…工程
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12