JP2022105981A - 帯域内フォールトインジェクション検出機能を備えたプロセッサ - Google Patents

帯域内フォールトインジェクション検出機能を備えたプロセッサ Download PDF

Info

Publication number
JP2022105981A
JP2022105981A JP2021180955A JP2021180955A JP2022105981A JP 2022105981 A JP2022105981 A JP 2022105981A JP 2021180955 A JP2021180955 A JP 2021180955A JP 2021180955 A JP2021180955 A JP 2021180955A JP 2022105981 A JP2022105981 A JP 2022105981A
Authority
JP
Japan
Prior art keywords
error detection
code
bit
instruction
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021180955A
Other languages
English (en)
Other versions
JP7413335B2 (ja
Inventor
ハーシュマン,ジヴ
Hershman Ziv
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nuvoton Technology Corp
Original Assignee
Nuvoton Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nuvoton Technology Corp filed Critical Nuvoton Technology Corp
Publication of JP2022105981A publication Critical patent/JP2022105981A/ja
Application granted granted Critical
Publication of JP7413335B2 publication Critical patent/JP7413335B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Detection And Correction Of Errors (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Nitrogen Condensed Heterocyclic Rings (AREA)

Abstract

【課題】 マイクロプロセッサ回路内の帯域内エラー検出のための方法とシステムを提供する。【解決手段】 プロセッサを保護するための装置であって、前記装置は、前記プロセッサによって処理されたコード命令を監視するように構成され、その1つ以上のコード命令は、1つ以上のエラー検出ビットを含む入力インターフェース、および前記エラー検出ビットを用いて前記プログラムコードのエラーを検出するように構成され、前記エラーの検出に応答して応答アクションを開始する保護回路を含む装置。【選択図】 図1

Description

本発明は、マイクロプロセッサに関するものであり、特に、マイクロプロセッサ回路内の帯域内エラー検出のための方法とシステムに関するものである。
フォールトインジェクション攻撃は、暗号回路などの安全な電子回路から情報にアクセス、分析、または抽出するように用いられる一連の技術である。フォールトインジェクション攻撃は通常、回路またはその一部に、攻撃者が回路またはそれが格納している情報に侵入するのをアシストするようにその論理状態を変え、その動作を変えさせることを含んでいる。フォールトインジェクション攻撃は、例えば、信号線に物理的に接触することによって、高出力レーザーまたは電磁パルスを照射することによって、または電源またはその他の外部インターフェースにグリッチを発生させることによって始められる可能性がある。フォールトインジェクション攻撃を検出および/または軽減するための様々な技術は当技術分野で知られている。
マイクロプロセッサ回路内の帯域内エラー検出のための方法とシステムを提供する。
本明細書に記載された実施形態は、プロセッサを保護するための装置を提供する。この装置は、入力インターフェースおよび保護回路を含む。入力インターフェースは、プロセッサによって処理されたコード命令を監視するように構成され、その1つ以上のコード命令は、1つ以上のエラー検出ビットを含む。保護回路は、エラー検出ビットを用いてプログラムコードのエラーを検出するように構成され、エラーの検出に応答して応答アクションを開始する。
いくつかの実施形態では、エラーの検出では、保護回路は、フォールトインジェクション攻撃を検出するように構成される。一実施形態では、1つ以上のエラー検出ビットは、1つ以上のコード命令の予約済みビット位置に挿入され、保護回路は、予約済みビット位置からエラー検出ビットを抽出するように構成される。他の実施形態では、1つ以上のエラー検出ビットが、コード命令の実行に影響を与えない事実上予約済みビット位置において1つ以上のコード命令に挿入され、保護回路は、事実上予約済みビット位置からエラー検出ビットを抽出するように構成される。
さらに他の実施形態では、1つ以上のエラー検出ビットが、(i)ジャンプオフセットを示すように指定されているが、(ii)プロセッサが無視するように構成されている、1つ以上のビット位置において1つ以上のジャンプ命令に挿入される。さらに他の実施形態では、1つ以上のエラー検出ビットが、エラー検出のためにプログラムコードに追加された1つ以上の専用コード命令に挿入され、保護回路は、専用コード命令を識別し、専用コード命令からエラー検出ビットを抽出するように構成される。
開示された実施形態では、保護回路は、コード命令内のエラー検出ビットの位置の定義を保持し、その定義に従ってコード命令からエラー検出ビットを抽出するように構成される。例示的な実施形態では、1つ以上のエラー検出ビットの所与のセットは、所与のコード命令の少なくとも一部を介して計算され、所与のコード命令に挿入される。
いくつかの実施形態では、1つ以上のエラー検出ビットの所与のセットは、プログラムコード内の複数の選択されたビットを介して計算され、少なくとも1つの選択されたビットおよびセット内の少なくとも1つのエラー検出ビットは、異なるコード命令に配置される。一実施形態では、複数の選択されたビットは、決定論的コードフローを有するプログラムコードのセクションに限定される。例示的な実施形態では、複数の選択されたビットは、ジャンプ命令またはジャンプ宛先命令をトラバースしないプログラムコードのセクションに限定される。
いくつかの実施形態では、この装置は、1つ以上のエラー検出ビットを、処理のためにプロセッサに提供された1つ以上のコード命令に挿入するように構成された挿入回路をさらに含む。
本発明の一実施形態による、命令パイプラインおよび保護回路を含むプロセッサがさらに提供される。命令パイプラインは、コード命令を含むプログラムコードをフェッチして実行するように構成され、その1つ以上のコード命令は1つ以上のエラー検出ビットを含む。保護回路は、少なくともコード命令内のエラー検出ビットを監視するように構成され、エラー検出ビットを用いて、プログラムコード内のエラーの検出に応答して応答アクションを開始する。
本発明の一実施形態による、プロセッサを保護する方法も提供される。
この方法は、プロセッサによって処理されたコード命令を監視するステップを含み、その1つ以上のコード命令は、1つ以上のエラー検出ビットを含む。プログラムコードのエラーは、エラー検出ビットを用いて検出され、応答アクションがエラーの検出に応答して開始される。
添付の図面とともに以下の詳細な説明及び実施例を検討することで、本発明をより完全に理解できる。
図1は、本発明の実施形態による、安全なプロセッサを模式的に示すブロック図である。 図2は、本発明の実施形態による、プロセッサを保護するための方法を模式的に示すフローチャートである。
本明細書で説明された本発明の実施形態は、コード命令で発生するビットエラーからプロセッサを保護するための方法および装置を提供する。コード命令のエラーは、例えば、プロセッサを異常に動作させることによって機密情報を引き出そうとするフォールトインジェクション攻撃によって引き起こされる可能性がある。しかしながら、一般的に、開示された技術は、任意の故意に(hostile)または意図的でない(innocent)のメカニズムによって引き起こされるエラーからプロセッサを保護するのに有用である。本文脈では、「プロセッサ」という用語は、中央処理装置(CPU)、マイクロコントローラユニット(MCU)、組み込みコントローラ、処理コアなどの様々なタイプのプロセッサを指す。
プロセッサは通常、メモリからコード命令をフェッチし、フェッチされた命令を実行するように構成された命令パイプラインを含む。各コード命令は、プロセッサの特定の命令セットアーキテクチャ(ISA)から取り出され、ビットのグループとして表され、メモリに格納される。ビットは、命令のオペコード、および場合によっては1つ以上のオペランドを定義する。理解できるように、命令の任意のビットにおけるビットエラーは、予測できない結果を引き起こす可能性があり、非常に望ましくない。
本発明のいくつかの実施形態は、プロセッサをビットエラーから保護する保護回路を提供する。保護回路は、1つ以上のコード命令に挿入された1つ以上のエラー検出ビットを監視する。エラー検出ビットを用いてプログラムコードのエラーを検出すると、保護回路は適切な応答動作を開始する。
いくつかの実施形態では、保護回路は、プロセッサの不可欠な部分として実装される。代替の実施形態では、保護回路はプロセッサの外部にある。いくつかの実施形態では、エラー検出ビットは、例えば、コンパイラまたはポストプロセッサによって、予めコード命令内に挿入され、その結果、メモリに格納されたプログラムコードが、すでにエラー検出ビットを含むことになる。代替の実施形態では、エラー検出ビットは、実行時にコード命令内に挿入される。例えば、専用の挿入回路は、メモリからフェッチされてプロセッサに提供されたコード命令内にエラー検出ビットを挿入することができる。
いくつかの実施形態では、エラー検出ビットは、プロセッサの特定のISAを変えることなく、且つ命令サイズ(「幅(width)」)を拡張することなく、命令内の既存のビット位置内に挿入される。この機能は、例えば、プロセッサの命令スループットを保持し、且つ従来のプロセッサとの後方互換性のためにも重要である。エラー検出ビットに既存のビット位置を再利用するための様々な技術が本明細書で説明される。
いくつかの実施形態では、エラー検出は、命令ごとに独立して適用される。このような実施形態では、特定の命令のエラー検出ビットは、同じ命令の(一部または全ての)ビットを介してのみ計算される。他の実施形態では、エラー検出は、命令の境界にわたって、例えば、プログラムコードの全てのセクションにわたって適用される。いくつかの実施形態では、エラー検出のために、追加のコマンドがプログラムコード内に挿入される。
本明細書に記載の実施形態は、主にパリティに言及しているが、任意の他の適切なエラー検出スキームを代替の実施形態で用いることもできる。エラー検出ビットは、簡潔にするために、本明細書ではエラー検出コード(EDC)ビットとも呼ばれる。
開示された技術は、コード命令内のビットエラーからプロセッサを保護するための効率的で、且つコスト効率の高い手段を提供する。
システム記述
図1は、本発明の実施形態による、安全なプロセッサ20を模式的に示すブロック図である。図1の実施形態では、プロセッサ20は、プログラムコードをフェッチして実行する命令パイプライン24、プログラムコードを格納するメモリ32、およびプログラムコードで発生する可能性のあるビットエラーからプロセッサを保護する保護回路28を含む。
命令パイプライン24は、複数のパイプラインステージを含む。この例では、命令パイプライン24は、フェッチユニット36、復号化ユニット40、および1つ以上の実行ユニット44を含む。フェッチユニット36はメモリ32からコード命令をフェッチする。復号化ユニット40は、フェッチされた命令を復号化する。実行ユニット44は、決定された命令を実行する。実行ユニット44は、例えば、1つ以上のロードストアユニット(LSU)、算術論理ユニット(ALU)、分岐ユニット、または任意の他の適切な実行ユニットを含み得る。
保護回路28は、1つ以上のコード命令の所定のビット位置に挿入されたエラー検出ビット(EDCビットとも呼ばれる)を用いて、プログラムコード内のビットエラーを識別する。本文脈では、「プログラムコード(program code)のビットエラー」および「コード命令(cord instruction)のビットエラー」という用語は、プログラムコードがシステムまたはプロセッサに提供された後(例えば、元のプログラムコードがメモリ32に格納された後)に、故意にまたは意図的にでないにかかわらず、コードに導入されたエラーを指している。言い換えれば、開示された技術では、システムまたはプロセッサに提供された元のプログラムコード(例えば、メモリ32に元々格納されているプログラムコード)は、開示された技術によってエラーが軽減される。
以下の説明は、主にパリティビットを例に挙げて説明している。パリティを用いるとき、各パリティビットは、コード命令の所定のビットセットを介して計算される。セット内の「1」の数が奇数の場合、パリティビットは「1」に設定され、セット内の「1」の数が偶数の場合、パリティビットは「0」に設定される。パリティチェックは、例えばハミングコードなどで複数のエラー複数のエラーを検出するように用いられることができる。CRC、ハッシュ、sha、マルチビットパリティ、または任意の他の適切なスキームなどの他のエラー検出スキームが用いられて、開示された技術を実施することができる。
いくつかの実施形態では、メモリ32に格納されたプログラムコードは、すでにEDCビットを含む。例えば、EDCビットは、コンパイラによって、またはコンパイラによって生成されたコンパイル済みプログラムコードを処理するポストプロセッサによって挿入されることができる。他の実施形態では、メモリ32に格納されたプログラムコードは、EDCビットを含まず、プロセッサ20は、実行時にEDCビットをプログラムコードに挿入するEDC挿入回路48をさらに含む。一実施形態では、EDC挿入回路は、メモリ32と命令パイプライン24との間に一線状(in-line)に配置され、フェッチユニット36がメモリからフェッチする1つ以上のコード命令内にEDCビットを挿入する。
図1の実施形態では、保護回路28は、インターフェース50を用いて命令パイプライン24を通過するコード命令を受信する。保護回路28は、通常、EDCスキームの定義、例えば、(i)コード命令内のEDCビットの位置、および(ii)EDCビットが計算される対応するビットの位置の定義を保持する。この定義を用いて、保護回路28は、EDCビットの値がプログラムコード内の1つ以上のビットエラーを示しているかどうかを識別する。
本例では、EDCスキームはコード命令ごとに最大1つのEDCビットを定義する。コード命令がEDCビットを含んでいるとき、EDCビットは、命令の他の全てのビットを介して、または命令の所定の部分を介してパリティとして計算される。本例の保護回路28は、EDCスキームを指定するルックアップテーブル(LUT)52を含む。インターフェース50を介して監視される各命令には、LUT52は2つの出力、(i)この命令がEDCビットを含むかどうかを指定する「EDC存在(exist)」ビット、および(ii)EDCビットの位置を指定する「EDC位置(location)」ビットを生成する。代替の実施形態では、LUT52は、他のタイプのEDCスキームをサポートするための任意の他の適切な構造および出力を有することができる。さらに代替的に、EDCスキームは、LUTに限らず、任意の他の適切な回路またはデータ構造を用いて定義および格納されることもできる。
保護回路28は、EDCビットがプログラムコード内の任意のビットエラーを示しているかどうかを検証するEDCチェック論理56をさらに含む。本例では、論理56は、インターフェース50を介して監視されたコード命令を入力として受け取る。各命令には、論理56は、LUT52によって生成された対応する「EDC存在」および「EDC位置」ビットを受け取る。所定の命令には、対応する「EDC存在」ビットが「1」の場合、論理56は、命令内の適切なビットのパリティ(奇数/偶数)を計算し、それを位置「EDC位置」のビットの値と比較する。命令の適切なビットを介して計算されたパリティ(奇数/偶数)が位置「EDC位置」のビットの値と一致しない場合、論理56は、命令でビットエラーが発生したと判断し、適切な応答動作を開始する。
様々な実施形態では、論理56は、様々なタイプの応答動作を開始することができる。例えば、論理56は、フォールトインジェクション攻撃が進行中である可能性があることを示すアラート(alert)を発することができる。追加的または代替的に、論理56は、プロセッサまたはその一部を無効にする、プロセッサから機密データを消去する、または任意の他の適切な動作を開始することができる。
図に見られるように、「EDC位置」ビットは、命令パイプライン24(通常、復号化ユニット40)にも提供される。いくつかの実施形態では、命令パイプライン24の構成要素(例えば、復号化ユニット40)は、EDCビットを無視するために、命令内のEDCビットの位置を知る必要がある。この点については、以下でさらに詳しく説明する。いくつかの実施形態では、論理56は、現在監視されている命令がジャンプ命令またはジャンプ先(jump-destination)命令(ジャンプが行われる「ターゲット(target)」または「ランディング(landing)」命令)であるときにアサートされる「ジャンプ(JUMP)」入力も受け取る。いくつかの実施形態では、論理56は、プロセッサで例外が発生したときにアサートされる「例外(EXCEPTION)」入力をさらに受け取る。「ジャンプ(JUMP)」入力は、EDCビットが個別にチェックされる個別のコードセクション間の境界を示す(marking)ために用いられる。「EXCEPTION」入力は、エラー検出チェックを一時的に無効または中断するために用いられる。これらの点についても、以下で詳しく説明する。
図1に示されたプロセッサ20および保護回路28の構成は、単に概念を明確にするために示された例示的な構成である。代替的な実施形態では、任意の他の適切な構成が用いられ得る。
例えば、図1では、メモリ32はプロセッサの一部として示されている。代替的な実施形態では、メモリ32は、プロセッサの外部にあり、および/または適切な命令キャッシュを介してアクセス可能であり得る。
他の例として、図1では、保護回路28がプロセッサ20の一体化した部分として示されている。あるいは、保護回路28は、プロセッサの外部にあってもよい。同様に、EDC挿入回路48(用いられる場合)は、プロセッサの外部にあってもよい。従って、開示された技術は、外部回路を結合することにより、従来の汎用プロセッサとの使用に適している。
さらに他の例として、図1では、命令は、フェッチユニット36の出力から保護回路28に提供されているが、開示された技術は、この構成に限定されない。代替的な実施形態では、インターフェース50は、命令パイプライン24内の任意の他の適切なポイントから、例えば、復号化ユニット40の出力から、または実行ユニット44の出力からでも、命令を保護回路に転送することができる。一実施形態では、パイプラインの後の段階から命令を得る場合、保護回路28は、EDCビットを命令の他のビットと相関させるために、フェッチした後に命令の元のフォーマット(命令がメモリ32に格納されていたフォーマット)を再構築する必要があり得る。代替の実施形態では、コンパイラまたはポストプロセッサは、インターフェース50のサンプリングポイントにおける命令の構造を考慮しながら、EDCビットをコードに挿入することができる。この技術を用いるとき、命令パイプライン24の構成要素はそれらがインターフェース50に到達する前にEDCビットを破棄しないように注意する必要がある。
命令パイプライン24の構造は、明確にするために非常に単純化されている。実際のプロセッサは、より複雑な命令パイプラインを含むことができる。さらに、開示された技術は、パイプライン化されたプロセッサと用いられることに限定されるものではなく、任意の他の適切なマイクロアーキテクチャを有するプロセッサと用いられることもできる。一般に、開示された技術を理解するために必須ではない構成要素は、明確にするために省略されている。
様々な実施形態において、任意の開示された回路は、任意の適切なハードウェアまたはファームウェアを用いて、例えば、1つ以上の個別の部品、1つ以上の特定用途向け集積回路(ASIC)、および/または1つ以上のフィールドプログラマブルゲートアレイ(FPGA)を用いて実装され得る。
いくつかの実施形態では、保護されているプロセッサは、本明細書で説明された機能を実行するようにソフトウェアにプログラムされた汎用プロセッサを含むことができる。例えば、ソフトウェアは、インターネットを介して電子形式でプロセッサにダウンロードされてもよく、または、代替的または追加的に、磁気メモリ、光メモリ、または電子メモリなどの非一時的な有形媒体に提供および/または格納されてもよい。
図2は、本発明の一実施形態による、プロセッサ20を保護するための方法を模式的に示すフローチャートである。この方法は、フェッチユニット36が、フェッチステップ60で、メモリ32から1つ以上のコード命令をフェッチすることから始まる。フェッチされた命令は、復号化ユニット40と保護回路28の両方に提供される。従って、この方法のフローは2つの並列分岐に分かれる。
復号化ステップ64では、復号化ユニット40は、フェッチされた命令を復号する。実行ステップ68では、実行ユニット44は命令を実行し、この方法のフローは、ステップ60に戻り、メモリから次の命令をフェッチする。
識別ステップ72では、保護回路28は、どのコード命令にEDCビットが含まれており、且つこれらの命令内のEDCビットの位置を識別する。抽出ステップ76では、保護回路28は、命令からEDCビットを抽出する。EDCチェックステップ80では、保護回路28は、EDCビットの値がコード命令の任意のビットエラーを示しているかどうかをチェックする。
EDCビットがエラーを示さない場合(「EDC通過(PASS)」)、方法のフローはステップ60に戻る。そうでなければ、EDCビットがビットエラー(「EDC未通過(FAIL)」)を示す場合、保護回路28は、動作トリガー(action triggering)ステップ84で応答動作(responsive action)を開始する。
図2のフローは、概念を明確にするためだけに描かれた例示的なフローである。代替の実施形態では、任意の他の適切なフローが用いられ得る。
例えば、プロセッサ20は、EDCの挿入およびチェックが有効な「安全(secure)」な動作モード、およびEDCの挿入とチェックが無効な「正常(normal)」の操作モードをサポートすることができる。モードは、例えば、コードアドレス範囲ごとに構成されることができる。
EDCビットのビット位置
様々な実施形態では、保護回路28によって用いられるEDCスキームは、例えば、コード命令およびプログラムコード全体におけるEDCビットの位置において、互いに異なってもよい。
いくつかの実施形態では、1つ以上のEDCビットは、プロセッサのISAに従って「予約済み(reserved)」として定義されたビット位置に(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって)挿入される。「予約済み」の位置にあるビット値は命令パイプライン24により無視されるため、そのようなビット値を変更してもコードの実行には影響しない。
いくつかの実施形態では、1つ以上のEDCビットは、「事実上予約済み(de-facto reserved)」のビット位置に(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって)挿入される。本文脈では、「事実上予約済みのビット位置」という用語は、プロセッサのISAで予約済みとして定義されていないが、命令パイプライン24により無視され、コードの実行に影響を与えないビット位置を指している。事実上予約済みのビット位置の非限定的な例の1つは、プロセッサの適用可能なアドレス範囲を超えるアドレスビットである。例えば、命令構造がnビットアドレスを指定しているが、プログラムコードで実際に用いられているアドレス空間がn-1ビットのみを用いている場合を考えてみる。このような場合、アドレスのn番目のビットは、ISAで「予約済み」として正式に定義されていなくても、EDCビットとして安全に用いられることができる。
他の例として、いくつかのISAは、ジャンプの最大サイズ(ジャンプオフセットのサイズ)が異なる複数のジャンプコマンドをサポートしている。この機能は、オフセットが小さいジャンプを実行するときに命令サイズを縮小するのに役立つ。いくつかの実施形態では、コンパイラまたはポストプロセッサは、ジャンプコマンドを用いるように設定されており、ジャンプアドレスまたはオフセットは、実際に必要なサイズよりも大きい、大きなオフセットサイズを有する命令オペランド(可能であればレジスタでなく)で定義され、これによりオフセット値の1つ以上の最上位ビット(MSB)がEDCビットとして用いられることができるようになる。これらの実施形態では、プロセッサもこの仕様を認識している必要があり、これにより、命令パイプライン24(例えば、分岐実行ユニット)がEDCビットを無視するようになる。
例えば、最大±24ビットのジャンプオフセットを可能にする「正常」ジャンプ、および最大±16ビットのジャンプオフセットを可能にする「近接(near)」ジャンプをサポートする2つのタイプのジャンプコマンド、ISAについて考えてみる。一実施形態では、コンパイラまたはポストプロセッサは、(i)常に最大±16ビットのジャンプオフセットのみを可能にするが、(ii)常に「正常」ジャンプ命令のタイプを用いるように構成される。この構成は、ジャンプオフセットの8つのMSBを未使用のままにし、事実上予約済みがEDCビットとして用いられる(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって挿入される)。
追加的または代替的に、様々な他の命令割り当て(instruction-assignment)設定がコンパイラまたはポストプロセッサに用いられ、EDCに用いられ得る事実上未使用のビット位置を生成することができる。追加的または代替的に、コンパイラまたはポストプロセッサは、一般に、冗長性を有する命令を優先するように設定されることができる。この機能は、EDCに利用されることができるより多くの事実上未使用のビットを生成する。このような命令を優先することは、適用可能な安全性/効率性のトレードオフに適合するように有効化、無効化、または構成されることができる。
いくつかの実施形態では、コンパイラまたはポストプロセッサは、EDC用に1つ以上の専用コード命令をプログラムコードに追加し、これらの命令にEDCビットを挿入する。コンパイラまたはポストプロセッサは、例えば、プログラムコード内で定期的な間隔でそのようなNOP命令を生成することができる。これらの実施形態における保護回路28は、専用命令を識別し、そこからEDCビットを抽出するように構成される。専用命令は、例えば、プロセッサにより無視されるようにISAで指定されている「不操作(No-Operation; NOP)」コマンドを含み得るが、通常、予約済み、または事実上予約済みのビット用にいくらかのスペースを有する。
追加的または代替的に、命令は、保護回路28およびコンパイラまたはポストプロセッサとの調整により、「事実上NOP(de-facto NOP)」または「NOP類似(NOP-like)」に設定されることができる。例えば、プロセッサの特定のレジスタは、実際のプログラムコードで用いられないように設定できる。コンパイラまたはポストプロセッサは、例えばプログラムコード内で定期的な間隔でこのレジスタに関わる命令を生成し、これらの命令にEDCビットを挿入することができる。これらの実施形態の保護回路28は、当該レジスタに関する命令を識別し、そこからEDCビットを抽出するように構成される。様々な他の調整スキームが、通常のコード実行に影響を与えない方法でEDCに様々なコマンドを割り当てるように用いられることができる。
NOPまたはNOP類似の命令を用いるとき、コンパイラまたはポストプロセッサがNOPまたはNOP類似の命令を(例えば、定期的な間隔で)生成するが、それらにEDCビットを挿入しないハイブリッドスキーム(hybrid scheme)も可能である。実行時に、挿入回路48は、EDCビットをコンパイラまたはポストプロセッサにより生成された1つ以上のNOPまたはNOP類似の命令に挿入する。
上述のスキームは、単に例として選択されたものである。代替の実施形態では、任意の他の適切なビット位置がEDCビットに用いられることができる。
EDCスキームによるコードカバレッジ
様々な実施形態では、保護回路28により用いられるEDCスキームは、例えば、EDCにより保護されたコードの部分において、互いに異なる可能性がある。
例えば、いくつかの実施形態では、EDCスキームは「内部命令(intra-instruction)」であり、即ち、所与の命令に挿入されたEDCビットは、同じコード命令の他の1つ以上の他のビットのみを介して計算される(従って、保護する)。例えば、EDCビットは、命令内の他の全てのビットのパリティとして、または命令の所定の部分を介して(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって)計算されることができる。他の実施形態では、EDCスキームは、所与のEDCビットが複数のコード命令で選択された複数のビットを介して計算される(従って、保護する)ことができるという意味で、命令境界をまたがっている。
いくつかの実施形態では、EDCスキームは、全てのプログラムコード、または少なくともコードの大部分を保護することができる。例えば、プログラムコードがセクションに分割され、1つ以上のEDCビットのグループが各セクションに挿入された(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって)実施形態を考えてみる。1つ以上のEDCビットの各グループは、その全てのコードセクションを介して計算される(従って、保護する)。
理解できるように、上述のスキームが適切に機能するために、保護されている各コードセクションは、決定論的(即ち、データ依存しない、または可変であるまたは予測不可能な)コードフローを有する必要がある。本文脈では、「決定論的コードフローを有するコードセクション(code section having a deterministic code flow)」という用語は、コードセクションの実行が常に同じ順序で同じ命令のシーケンスに従うことを意味している。当該順序は、EDCチェック用の保護回路に到達する命令の順序である。例えば、EDCチェックがフェッチユニットの出力に実行された場合、プロセッサパイプラインが命令を順不同で復号化して実行させることができる。一方、フェッチが順不同で実行された場合、命令はEDCの計算およびチェックの前に、再順序付けされる(例えば保護回路により)必要がある。
例示的な実施形態では、この要件は、各セクションを連続したジャンプ命令および/またはジャンプ先命令間のセクションとして定義することによって満たされる。「ジャンプ先(jump-destination)」命令は、プログラムコード内でジャンプ命令によりジャンプ先にジャンプする命令である。言い換えると、1つ以上のEDCビットの各グループは、任意のジャンプまたはジャンプ先命令をトラバースしないコードセクションを介して計算される(従って、保護する)。本文脈では、「トラバースしない(does not traverse)」という用語は、セクションの最初の命令と最後の命令を除外しており、これらは通常、ジャンプまたはジャンプ先命令である。
一実施形態では、条件付き分岐命令、無条件ジャンプ命令、およびリターン命令も全て、コードをセクションに分割するためのジャンプ命令とみなされる。このように分割すると、保護されている各コードセクションは、任意のジャンプまたはジャンプ先命令をトラバースしない。
いくつかの実施形態では、1つ以上のEDCビットの各グループは、前のジャンプまたはジャンプ先命令より先(場合によっては後)に開始するそれぞれのコードセクションを介して計算される(従って、保護する)。このセクションは、次のジャンプまたはジャンプ先命令までに(場合によっては先に)終了する。
ジャンプ先命令を考慮に入れるために、いくつかの実施形態では、コンパイラ(またはポストプロセッサ)が、プログラムコードを分析し、様々な可能なジャンプ先命令をマークする。様々な実施形態では、様々な技術がジャンプ先命令を識別するために用いられ得る。
一実施形態では、ポリシーは、コンパイラまたはポストプロセッサが、全てのジャンプ命令がこの目的のためにプログラムコードに挿入された特定のタイプの命令にジャンプすることを保証するように定義されることができる(即ち、全てのジャンプ先命令は、特定の識別可能なタイプである)。この規約を用いるとき、任意のジャンプ命令および特定のタイプの命令がセクション境界として用いられ得る。例えば、このポリシーは、全てのジャンプ先の命令がNOP命令、または特定のレジスタとして機能する命令であることを特定することができる。他の例として、ポリシーは、コンパイラまたはポストプロセッサがアドレスのサブセットへのジャンプのみを許可するように特定することができる(例えば、N LSB(Least Significant Bit)==0を有するアドレスへのみ)。追加的または代替的に、任意の他の適切な規約がジャンプ先命令を定義するために、用いられることができる。一般に、冗長なジャンプ先命令を定義することは許容されており、これは、この定義は、より細かいセグメンテーションがより小さなセクションとなることがほとんどないためである。一方、パーティショニングに用いられた実際のジャンプ先命令がないことは問題がある。
さらに代替的に、各コードセクションが決定論的なコードフローを有する限り、セクションに分割する他の形式も可能である。
一実施形態では、1つ以上のEDCビットのグループが、各ジャンプ命令およびジャンプ先命令に挿入され(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって)、前のジャンプまたはジャンプ先命令より、全てのコードセクションを介して計算される(従って、保護する)。このようなスキームは、プログラムコードの大部分を保護する。
一実施形態では、1つ以上のEDCビットのグループが、決定論的コードフローを有する各セクション(例えば、連続したジャンプ/ジャンプ先命令間の各セクション内の任意の場所)の少なくとも1つの命令に挿入される(例えば、コンパイラまたはポストプロセッサによって、または挿入回路48によって)。所与のセクションのEDCビットは、コードセクションで選択された複数のビットを介して計算され(従って、保護する)、EDCビットの先行の命令のビットおよび/またはEDCビットの後続の命令のビットを含むことができる。
他の実施形態では、所与の命令(例えば、隣接するコードセクション間を分けるジャンプまたはジャンプ宛先命令)は、2つのタイプのEDCビットを含む。1つのEDCビットは、命令自体を介して計算される(従って、保護する)。第2のEDCビットは、前のジャンプ/ジャンプ先より、コードセクションを介して計算される(従って、保護する)。
上述の実施形態では、保護回路28は、EDCチェック論理56(図1)の「ジャンプ」入力を用いて、保護されているコードセクションの開始位置をマークすることができる。これらの実施形態では、EDCチェック論理56は、「ジャンプ」入力の各アサーションでEDC(例えば、パリティ)の計算をリセットし、再スタートする。
非決定論的コードフローのもう1つの原因は、プロセッサ20での例外の発生である。従って、いくつかの実施形態では、保護回路28は、各例外および例外コードの実行からの各リターン時に、EDCチェック論理56(図1)の「例外」入力をアサートする。「例外」入力がアサートされたとき、EDCチェック論理56は、決定論的コードフローを有する次のコードセクションの開始まで、現在のEDC計算を中止し、エラーのチェックも一時停止する(例えば、「ジャンプ」入力の次のアサーションまで)。
いくつかの実施形態では、プロセッサ20に割り込みが発生したとき、保護回路28は、メインコードでEDCチェックの状態(「コンテキスト(CONTEXT)」)を記録することができる。割り込みコードの実行が完了し、プロセッサがメインコードの実行にリターンすると、保護回路28は、記録された状態(「コンテキスト」)を復元し、中断されたポイントからEDCチェックを再開する。
上述の実施形態は、例として引用されており、以下の特許請求の範囲は、上述に具体的に開示および記載された内容に限定されないことに留意されたい。むしろ、この範囲は、上述の様々な特徴のコンビネーションおよびサブコンビネーションの両方、ならびに前述の説明を読んで当業者が知るであろう、先行技術に開示されていないその変形および修正を含む。参照することにより本特許出願に組み込まれた文書は、組み込まれた文書の用語の定義が本明細書で明示的または暗黙的になされた定義と矛盾する場合を除いて、本出願の不可欠な部分と見なされ、本明細書の定義のみが考慮されるべきである。
20 プロセッサ
24 命令パイプライン
28 保護回路
32 メモリ
36 フェッチユニット
40 復号化ユニット
44 実行ユニット
48 挿入回路
50 インターフェース
52 ルックアップテーブル
56 論理(EDCチェック論理)
60、64、68、72、76、80、84 ステップ

Claims (25)

  1. プロセッサを保護するための装置であって、前記装置は、
    前記プロセッサによって処理されたコード命令を監視するように構成され、その1つ以上のコード命令は、1つ以上のエラー検出ビットを含む入力インターフェース、および
    前記エラー検出ビットを用いてプログラムコードのエラーを検出するように構成され、前記エラーの検出に応答して応答アクションを開始する保護回路を含む装置。
  2. 前記エラーの検出では、前記保護回路は、フォールトインジェクション攻撃を検出するように構成される請求項1に記載の装置。
  3. 前記エラー検出ビットは、前記コード命令の予約済みビット位置に挿入され、前記保護回路は、前記予約済みビット位置から前記エラー検出ビットを抽出するように構成される請求項1に記載の装置。
  4. 前記エラー検出ビットが、前記コード命令の実行に影響を与えない事実上予約済みビット位置において前記コード命令に挿入され、前記保護回路は、前記事実上予約済みビット位置から前記エラー検出ビットを抽出するように構成される請求項1に記載の装置。
  5. 前記エラー検出ビットが、(i)ジャンプオフセットを示すように指定されているが、(ii)前記プロセッサが無視するように構成されている、1つ以上のビット位置において1つ以上のジャンプ命令に挿入される請求項1に記載の装置。
  6. 前記エラー検出ビットが、エラー検出のために前記プログラムコードに追加された1つ以上の専用コード命令に挿入され、前記保護回路は、前記専用コード命令を識別し、前記専用コード命令から前記エラー検出ビットを抽出するように構成される請求項1に記載の装置。
  7. 前記保護回路は、前記コード命令内の前記エラー検出ビットの位置の定義を保持し、前記定義に従って前記コード命令から前記エラー検出ビットを抽出するように構成される請求項1に記載の装置。
  8. 前記エラー検出ビットの所与のセットは、所与のコード命令の少なくとも一部を介して計算され、前記所与のコード命令に挿入される請求項1に記載の装置。
  9. 前記エラー検出ビットの所与のセットは、前記プログラムコード内の複数の選択されたビットを介して計算され、少なくとも1つの前記選択されたビットおよび前記セット内の少なくとも1つの前記エラー検出ビットは、異なるコード命令に配置される請求項1に記載の装置。
  10. 前記選択されたビットは、決定論的コードフローを有する前記プログラムコードのセクションに限定される請求項9に記載の装置。
  11. 前記選択されたビットは、ジャンプ命令またはジャンプ宛先命令をトラバースしない前記プログラムコードのセクションに限定される請求項9に記載の装置。
  12. 前記エラー検出ビットを、処理のために前記プロセッサに提供された前記コード命令に挿入するように構成された挿入回路をさらに含む請求項1に記載の装置。
  13. コード命令を含むプログラムコードをフェッチして実行するように構成され、その1つ以上のコード命令は1つ以上のエラー検出ビットを含む命令パイプライン、および
    少なくとも前記コード命令内の前記エラー検出ビットを監視するように構成され、前記エラー検出ビットを用いて、前記プログラムコード内のエラーの検出に応答して応答アクションを開始する保護回路を含むプロセッサ。
  14. プロセッサを保護する方法であって、前記方法は、
    前記プロセッサによって処理されたコード命令を監視するステップを含み、その1つ以上のコード命令は、1つ以上のエラー検出ビットを含むステップ、
    前記エラー検出ビットを用いてプログラムコードのエラーを検出するステップ、および
    前記エラーの検出に応答して応答アクションを開始するステップを含む方法。
  15. 前記エラーを検出するステップは、フォールトインジェクション攻撃を検出するステップを含む請求項14に記載の方法。
  16. 前記エラー検出ビットは、前記コード命令の予約済みビット位置に挿入され、前記コード命令の監視は、前記予約済みビット位置から前記エラー検出ビットを抽出するステップを含む請求項14に記載の方法。
  17. 前記エラー検出ビットが、前記コード命令の実行に影響を与えない事実上予約済みビット位置において前記コード命令に挿入され、前記コード命令の監視は、前記事実上予約済みビット位置から前記エラー検出ビットを抽出するステップを含む請求項14に記載の方法。
  18. 前記エラー検出ビットが、(i)ジャンプオフセットを示すように指定されているが、(ii)前記プロセッサが無視するように構成されている、1つ以上のビット位置において1つ以上のジャンプ命令に挿入される請求項14に記載の方法。
  19. 前記エラー検出ビットが、エラー検出のために前記プログラムコードに追加された1つ以上の専用コード命令に挿入され、前記コード命令の監視は、前記保護回路は、前記専用コード命令を識別し、前記専用コード命令から前記エラー検出ビットを抽出するステップを含む請求項14に記載の方法。
  20. 前記コード命令の監視は、前記コード命令内の前記エラー検出ビットの位置の定義を保持し、前記定義に従って前記コード命令から前記エラー検出ビットを抽出するステップを含む請求項14に記載の方法。
  21. 前記エラー検出ビットの所与のセットは、所与のコード命令の少なくとも一部を介して計算され、前記所与のコード命令に挿入される請求項14に記載の方法。
  22. 前記エラー検出ビットの所与のセットは、前記プログラムコード内の複数の選択されたビットを介して計算され、少なくとも1つの前記選択されたビットおよび前記セット内の少なくとも1つの前記エラー検出ビットは、異なるコード命令に配置される請求項14に記載の方法。
  23. 前記選択されたビットは、決定論的コードフローを有する前記プログラムコードのセクションに限定される請求項22に記載の方法。
  24. 前記選択されたビットは、ジャンプ命令またはジャンプ宛先命令をトラバースしない前記プログラムコードのセクションに限定される請求項22に記載の方法。
  25. 前記エラー検出ビットを、処理のために前記プロセッサに提供された前記コード命令に挿入するように構成された挿入回路をさらに含む請求項14に記載の方法。
JP2021180955A 2021-01-05 2021-11-05 帯域内フォールトインジェクション検出機能を備えたプロセッサ Active JP7413335B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/141,249 US11783026B2 (en) 2021-01-05 2021-01-05 Processor with in-band fault-injection detection
US17/141249 2021-01-05

Publications (2)

Publication Number Publication Date
JP2022105981A true JP2022105981A (ja) 2022-07-15
JP7413335B2 JP7413335B2 (ja) 2024-01-15

Family

ID=82219690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021180955A Active JP7413335B2 (ja) 2021-01-05 2021-11-05 帯域内フォールトインジェクション検出機能を備えたプロセッサ

Country Status (4)

Country Link
US (1) US11783026B2 (ja)
JP (1) JP7413335B2 (ja)
CN (1) CN114722436A (ja)
TW (1) TWI803927B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768987B2 (en) * 2020-04-01 2023-09-26 Nxp Usa, Inc. System for facilitating secure communication in system-on-chips
EP4016343A1 (en) * 2020-12-17 2022-06-22 Accemic Technologies GmbH Processor arrangement for monitoring control-flow integrity
US11783026B2 (en) * 2021-01-05 2023-10-10 Nuvoton Technology Corporation Processor with in-band fault-injection detection
US20240020383A1 (en) * 2022-07-13 2024-01-18 Nxp B.V. Method and circuit for protecting an electronic device from a side-channel attack

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5798047A (en) * 1980-12-10 1982-06-18 Nec Corp Data processor
JP2009187438A (ja) * 2008-02-08 2009-08-20 Dainippon Printing Co Ltd Icカードへの攻撃検知方法、icカードおよびicカード用プログラム
JP2009288908A (ja) * 2008-05-28 2009-12-10 Dainippon Printing Co Ltd メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353400B1 (en) * 1999-08-18 2008-04-01 Sun Microsystems, Inc. Secure program execution depending on predictable error correction
US6775763B2 (en) * 2001-03-09 2004-08-10 Koninklijke Philips Electronics N.V. Bytecode instruction processor with switch instruction handling logic
DE50204119D1 (de) * 2001-10-17 2005-10-06 Infineon Technologies Ag Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus
US7152942B2 (en) * 2002-12-02 2006-12-26 Silverbrook Research Pty Ltd Fixative compensation
US7428694B2 (en) * 2004-03-02 2008-09-23 Stmicroelectronics S.A. Device for protection against error injection into a synchronous flip-flop of an elementary logic module
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
FR2915007A1 (fr) * 2007-04-12 2008-10-17 St Microelectronics Sa Protection de l'execution d'un programme
EP1993057B1 (fr) * 2007-05-18 2010-10-20 STMicroelectronics (Rousset) SAS Détection d'une perturbation d'état d'une bascule d'un circuit électronique
FR2935059B1 (fr) * 2008-08-12 2012-05-11 Groupe Des Ecoles De Telecommunications Get Ecole Nationale Superieure Des Telecommunications Enst Procede de detection d'anomalies dans un circuit de cryptographie protege par logique differentielle et circuit mettant en oeuvre un tel procede
US8069376B2 (en) * 2009-05-20 2011-11-29 Intel Corporation On-line testing for decode logic
DE102010040035A1 (de) * 2010-03-04 2011-09-08 Robert Bosch Gmbh Verbesserungen der Rückwärts-Analyse zur Bestimmung von Fehlermaskierungsfaktoren
US20110219266A1 (en) * 2010-03-04 2011-09-08 Qualcomm Incorporated System and Method of Testing an Error Correction Module
KR101978984B1 (ko) * 2013-05-14 2019-05-17 한국전자통신연구원 프로세서의 오류를 검출하는 장치 및 방법
US20160196427A1 (en) * 2014-07-08 2016-07-07 Leviathan, Inc. System and Method for Detecting Branch Oriented Programming Anomalies
US10013581B2 (en) * 2014-10-07 2018-07-03 Nuvoton Technology Corporation Detection of fault injection attacks
US9934090B2 (en) * 2015-12-22 2018-04-03 Intel Corporation Apparatus and method for enforcement of reserved bits
FR3047585B1 (fr) * 2016-02-09 2018-03-09 Stmicroelectronics (Rousset) Sas Procede et dispositif de surveillance de l'execution d'un code programme
US10303544B1 (en) * 2016-11-08 2019-05-28 Barefoot Networks, Inc. Data plane error detection for ternary content-addressable memory (TCAM) of a forwarding element
US10990682B2 (en) * 2017-12-18 2021-04-27 Nuvoton Technology Corporation System and method for coping with fault injection attacks
KR102331835B1 (ko) * 2020-10-28 2021-12-01 국민대학교산학협력단 오류 주입 공격 시스템
US11783026B2 (en) * 2021-01-05 2023-10-10 Nuvoton Technology Corporation Processor with in-band fault-injection detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5798047A (en) * 1980-12-10 1982-06-18 Nec Corp Data processor
JP2009187438A (ja) * 2008-02-08 2009-08-20 Dainippon Printing Co Ltd Icカードへの攻撃検知方法、icカードおよびicカード用プログラム
JP2009288908A (ja) * 2008-05-28 2009-12-10 Dainippon Printing Co Ltd メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム

Also Published As

Publication number Publication date
US20220215089A1 (en) 2022-07-07
CN114722436A (zh) 2022-07-08
US11783026B2 (en) 2023-10-10
JP7413335B2 (ja) 2024-01-15
TW202227971A (zh) 2022-07-16
TWI803927B (zh) 2023-06-01

Similar Documents

Publication Publication Date Title
JP7413335B2 (ja) 帯域内フォールトインジェクション検出機能を備えたプロセッサ
EP3433725B1 (en) Program loop control
KR102075369B1 (ko) 데이터 처리장치와, 안전한 도메인 및 덜 안전한 도메인 사이에서 전환될 때 데이터 및 프로그램 코드를 안전하지 않은 액세스로부터 보호하는 방법
US10768938B2 (en) Branch instruction
TWI749000B (zh) 程式迴圈控制
US10223117B2 (en) Execution flow protection in microcontrollers
JP6435834B2 (ja) 命令実行制御装置、命令実行制御方法
CN111771188B (zh) 数据处理装置及数据处理方法
US9323920B2 (en) Data processing arrangement and method for ensuring the integrity of the execution of a computer program
US20230401313A1 (en) Processor with In-Band Fault-Injection Detection in the Presence of Exceptions
JP2008287449A (ja) データプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231010

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20231025

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231227

R150 Certificate of patent or registration of utility model

Ref document number: 7413335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150