JP7406489B2 - 推測バリア命令 - Google Patents
推測バリア命令 Download PDFInfo
- Publication number
- JP7406489B2 JP7406489B2 JP2020535645A JP2020535645A JP7406489B2 JP 7406489 B2 JP7406489 B2 JP 7406489B2 JP 2020535645 A JP2020535645 A JP 2020535645A JP 2020535645 A JP2020535645 A JP 2020535645A JP 7406489 B2 JP7406489 B2 JP 7406489B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- speculative
- barrier
- cache
- conditional
- 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.)
- Active
Links
- 230000004888 barrier function Effects 0.000 title claims description 142
- 238000012545 processing Methods 0.000 claims description 91
- 238000000034 method Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 14
- 230000036316 preload Effects 0.000 claims description 10
- 238000003672 processing method Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 description 18
- 101000823796 Homo sapiens Y-box-binding protein 1 Proteins 0.000 description 11
- 102100022224 Y-box-binding protein 1 Human genes 0.000 description 11
- 238000013459 approach Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009897 systematic effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000000116 mitigating effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011012 sanitization Methods 0.000 description 1
- 230000009885 systemic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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
- G06F21/79—Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
・条件付き選択命令の結果に対するアドレス依存性を有するロード、ストア、データ、又は命令プリロードRW2が、推測バリア命令後にプログラム順に現れる場合、
○条件付き選択命令は、入力レジスタの1つについて、推測的に実行されたロードR1に対するレジスタ・データ依存性を有し、
〇条件付き選択命令は、他の入力レジスタについて、R1に対するレジスタ依存性を有さず、
〇条件付き選択命令の条件は、R1が体系的に実行されていない場合に、R1に依存しない入力が選択されるのであれば、
処理回路構成は、キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1から推測的にロードされた値の任意の部分の値を判定するために使用されることができるような、キャッシュ内のエントリの割当に影響を与えるRW2を阻止するように構成される。これにより、攻撃者は、後続する動作RW2のキャッシュへの効果を分析することにより、ロードR1によって推測的にロードされた値に関する任意の情報を導出できなくなる。
・条件付き移動命令の結果に対するアドレス依存性を有するロード、ストア、データ、又は命令プリロードRW2が、推測バリア命令後にプログラム順に現れる場合、
○条件付き移動命令は、その入力レジスタについて、推測的に実行されたロードR1に対するレジスタ依存性を有さず、
〇条件付き移動命令の条件は、R1が体系的に実行されていない場合に、条件を満たすのであれば、
処理回路構成は、キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1から推測的にロードされた値の任意の部分の値を判定するために使用されることができるような、キャッシュ内のエントリの割当に影響を与えるRW2を阻止するように構成される。繰り返すが、これにより、攻撃者が、ロードR1の不正な推測を悪用して、キャッシュ割当における後続する動作RW2の効果の分析に基づいて、R1によってロードされた値に関する情報を取得することを阻止する。
他の実例では、処理回路構成は、後続する動作の推測的実行を許可している間、後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止し得る。キャッシュ内のエントリの割当に対する影響は、キャッシュを割り当てるエントリを事前に有していなかった所与のアドレスに対する新たなエントリの割当、又は、所与のアドレスがもはやキャッシュされないように、所与のアドレスに関連付けられた、事前にキャッシュされたエントリの削除であり得る。
範囲チェックに関連付けられている分岐(上記のコードにおける7行目が意味する)を実行する前に、値を確立するために推測的にデータ・アクセス(上記のコードにおける9行目が意味する)を実行する場合がある。このコードを監視レベル(OS KernelやHypervisorなど)で実行しているプロセッサは、信頼できないソフトウェアによって渡された
の範囲外の値によって判定される、その監視レベルにアクセス可能な通常メモリ内の任意の場所から推測的にロードすることができる。これは体系的には問題ではなく、推測が正しくない場合、ロードされた値は、ハードウェアによって廃棄される。
と組み合わされた
から計算されたアドレスを使用してメモリからロードされたvalue(10行目)が、その後、さらなるメモリ・アクセスの基礎として使用される(13行目)。したがって、value2の推測的ロードは、
のために推測的にロードされたデータから導出されたアドレスから発生する。プロセッサによる
の推測的ロードが、キャッシュへの割当を引き起こす場合、そのロードのアドレスの一部は、標準的なキャッシュ・タイミング・サイド・チャネルを使用して推測できる。そのアドレスは
におけるデータに依存するため、値のデータの一部はサイド・チャネルを使用して推測できる。このアプローチを、様々な
のビットに適用することにより、(多くの推測的実行において)値のデータ全体を判定できる。
に対応し、より低下した権限レベルEL0で動作する信頼できないコードから取得される。変数yは上記の実例における
に対応し、これは、EL0にはアクセスできないが攻撃者がアクセスしたい秘密情報にアクセスできる、より高い権限レベルEL1で動作するコードによってロードされる。変数xは、アレイ1のサイズを示すサイズ・パラメータと比較され、信頼できないパラメータがアレイ・サイズより大きい場合、条件付き分岐は、後続するロード命令LD(上記の実例では、それぞれ10行目及び13行目におけるロードに対応する)を通過して分岐する。しかしながら、信頼できない変数xが、範囲外であると後で判定された場合でも、条件付き分岐が、不採用されたとの結果を判定すると仮定して、これらロードは推測的に実行される可能性がある。これにより、攻撃者が、#a+xを秘密のアドレスにマップするような手法で「x」を選択した場合、範囲外のアドレス#a+xにロードして、攻撃者がアクセスしてはならない秘密情報をロードし得る。その後、第2のロードは、秘密の一部に基づいて選択されたアドレスで、第2のアレイであるアレイ2から値をロードすることができる。この第2のロードにより、キャッシュ割当に変化が生じる可能性があり、より低下した権限レベル(EL0)で動作するより低い権限コードによって悪用される可能性がある。これは、キャッシュ・タイミング分析を使用して、第2のアレイのどの特定のアドレスがキャッシュされたかを調べ、それにより、秘密に関する情報を推測し得る。)
に範囲外の数量を提供することにより、監視ソフトウェアにアクセスできる場所であればどこにでもアクセスできるため、信頼できないソフトウェアがこのアプローチを使用して、監視ソフトウェアがアクセスできるメモリの値を復元できる。
をロードするために使用されるアドレス)は、秘密(
におけるデータ)のみを示すことを保証する。
をサニタイズするために)使用される条件に基づいて、条件付き選択又は条件付き移動命令を使用することで達成できる。これが機能しない実施では、[以下で定義する]新たなバリアを使用できる(この命令は、条件付き選択/条件付き移動が使用される実施ではNOPである)。したがって、条件付き選択/条件付き移動と、新たなバリアとの両方の組合せで、この問題に十分対処できる。新たなバリアの詳細については、このセクションで後述する。
新たなバリアの第1の実例:
バリアが終了するまで、
1)条件付き選択命令の結果に対するアドレス依存性を有するバリア後にプログラム順に現れる任意のロード、ストア、データ、又は命令のプリロードRW2の場合、
i.条件付き選択命令は、入力レジスタの1つについて、推測的に実行されたロードR1に対するレジスタ・データ依存性を有し、
ii.条件付き選択命令は、他の入力レジスタについて、R1に対するレジスタ依存性を有さず、
iii.条件付き選択命令の条件は、R1が体系的に実行されていない場合に、R1に依存しない入力が選択されるのであれば、
RW2の推測的実行は、キャッシュ内のエントリの割当に影響を与えず、キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1から推測的にロードされたデータ値の任意の部分の値を判定するために使用され得る。
2)バリア後にプログラム順に現れ、そのターゲット・アドレスが、条件付き選択命令の結果に対するレジスタ依存性を有する任意の間接的な分岐(B2)の場合、
i.条件付き選択命令は、入力レジスタの1つについて、推測的に実行されたロードR1に対するレジスタ・データ依存性を有し、
ii.条件付き選択命令は、他の入力レジスタについて、R1に対するレジスタ依存性を有さず、
iii.条件付き選択命令の条件は、R1が体系的に実行されていない場合、R1に依存しない入力が選択され、
B2の推測的実行は、キャッシュ内のエントリの割当に影響を与えず、キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1から推測的にロードされたデータ値の任意の部分の値を判定するために使用される。
バリアは、推測的に実行することはできないが、推測的ではないことが分かると終了することができる。
新たなバリアの第2の実例:
CSDBは、新たな条件付き推測バリアである。
バリアが終了するまで、
1.条件付き移動命令の結果に対するアドレス依存性を有するバリア後にプログラム順に現れるロード、ストア、データ、又は命令のプリロードRW2の場合、
i.条件付き移動命令は、その入力レジスタについて、推測的に実行されたロードR1に対するレジスタ依存性を有さず、
ii.条件付き移動命令の条件は、R1が体系的に実行されていない場合、条件を満たすのであれば、
RW2の推測的実行は、キャッシュ内のエントリの割当に影響を与えず、キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1から推測的にロードされたデータ値の任意の部分の値を判定するために使用される。
2.バリア後にプログラム順に現れ、そのターゲット・アドレスが、条件付き移動命令の結果に対するレジスタ依存性を有する任意の間接的な分岐(B2)の場合、
i.条件付き移動命令は、その入力レジスタについて、推測的に実行された、ロードR1に対するレジスタ依存性を有さず、
ii.条件付き移動命令の条件は、R1が体系的に実行されていない場合、R1に依存しない入力が選択され、
B2の推測的実行は、キャッシュ内のエントリの割当に影響を与えず、キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1から推測的にロードされたデータ値の任意の部分の値を判定するために使用される。
バリアは、推測的に実行することはできないが、推測的でないことが分かると終了することができる。
バリアの使用
これら実例は、プロセッサで実行されるアセンブリ・コードでバリアがどのように使用されるのかを示す。
以前に示した実例を採用する。
第1の実例では、これが、以下の形式のアセンブリにコンパイルされ得る。
この場合、このコードを次のように変更することで、サイド・チャネルを軽減できる。
第2の実例では、同等のコードは、以下の通り。
オリジナルのコード:
緩和が追加されたコード:
このサイド・チャネルが、データ・キャッシュ、命令キャッシュ、又は分岐予測キャッシュで作成されないようにするために、この緩和アプローチは、次の場合に使用され得る。
・データ・アドレスは、信頼できないオフセットから読み取られた値から判定される。
・間接的な分岐先は、信頼できないオフセットから読み取られた値から判定される。
・分岐の決定は、信頼できないオフセットから読み取られた値から判定される。
信頼できない値の使用を含む特定のコード・シーケンスに適用すると、この緩和策により、そのコード・シーケンスを使用して、このサイド・チャネルを悪用し、データにアクセスすることができなくなる。
任意の命令のデータ値予測、又は、
条件付き分岐命令以外の命令の条件コード42の予測、又は、
体系的に解決されていないCDSBの前にプログラム順に現れるベクトル命令のベクトル予測状態44の予測、
のいずれかの結果を使用して推測的に実行された後にプログラム順に現れる分岐命令以外の命令がないことである。
CSDBの定義のために、条件コード42とベクトル述語値44は、データ値とは見なされない。
この定義は、CSDBの前後の制御フローの推測と、CSDBの後の条件付きデータ処理命令の推測的実行とを許可するが、ただし、体系的に解決されていない、CSDBの前にプログラム順に現れる命令のデータ値又は条件コード予測の結果を使用する場合を除く。上記のコードの実例は、このバリア命令の実例でも使用できる。
であれば、このシーケンスにおける第2のロードは、第1のロードからX3に返された推測的値から導出されたX3の値を使用して、推測的に実行され得る。その推測的にロードされた値は、その値を上書きしたSTRよりもプログラム実行における早期から、第1のアドレスに保持された値から取得され得る。第2のロードの推測的実行によって生成されたキャッシュ割当は、X3に推測的にロードされたこの早期のデータに関するいくつかの情報を明らかにする。これは、その値の発見を阻止するために、ストアが、いくつかの前のデータを上書きしている状況を回避するために、攻撃者によって使用される可能性がある。この推測的バイパス・アプローチは、推測的ロードのチェーンを通じて拡張されて、このような場合、
その後、このシーケンスにおける第2及び第3のロードは、その値を上書きしたSTRよりも実行時における早期から、第1のアドレスに保持された値から取得されたX3の値を使用して、推測的に実行される。第3のロードの推測的実行によって生成されたキャッシュ割当は、X5におけるデータに関するいくつかの情報を明らかにする。この場合、攻撃者が、X2及びX4を指すアドレスに保持されている以前の値を制御している場合、それは後続する推測に影響を与え、第2の推測的ロードによるデータの選択と、第3のロードによって引き起こされたキャッシュ割当の調査によって選択されたデータの公開とを可能にする。
X3をオフセットとして使用してキャッシュに推測的にロードされた場所は、X2とX4が指す物理アドレスにあった、以前のデータ値を示している可能性がある。
これは、その後、第2のロードを使用するプロセッサのより高い権限のアドレス空間アドレスにおけるいずれかのデータの推測的ロードを指示するために、(恐らく、いくつかのデータの処理を要求するシステム・コールの結果として)ストアの前にスタックに保持されていた値を判定したより低い権限のコードのために制御チャネルを与えることができる。次に、その第2のロードの結果は、第3のロードのアドレスを形成するために使用されるという事実によって観測可能になり、キャッシュ割当が発生する。そのキャッシュ割当の存在は、これらすべてのサイド・チャネルに適用されるのと同じ手法で、従来のキャッシュ・タイミング分析によって検出できる。原則として、これにより、タイミング・サイド・チャネルを使用して、より低い権限コードによって、任意の権限データを読み取ることができる。
原則として、これにより、推測ガジェットを選択して、興味深いデータを明らかにすることができる。
これが発生した場合、第2のロードによるキャッシュ内の割当により、キャッシュ・タイミング・サイド・チャネルを使用して、後でストアされた値が観察される可能性がある。
これは通常、次のような命令のシーケンスを、処理パイプラインで実行するように変換する。
通常、(a<b)が当てはまる場合、最終的に予測器は、a<bであると高い信頼度で予測し、機密コードを実行する必要があると推測し得る。これにより、上記のようなサイド・チャネル・タイミング攻撃が発生する可能性がある。
であり、ここで、「bpt」が、「branch-only-predict-taken」(予測が採用された場合のみの分岐)のアセンブリ・ニーモニックである場合、マイクロ・アーキテクチャは、分岐予測器を使用して、分岐が採用されるという高い信頼度がある場合にのみ推測を行うことができる。採用された予測に対する信頼度が不十分であるか、不採用とされた予測に対する信頼度が高い場合、予測器は、分岐が解決されるまで、実行を停止する。これにより、機密コード領域への推測を阻止する。bpn(予測が不採用された場合のみの分岐:branch-only-predict-not-taken)の直交アプローチは、他の方向の予測をガードする可能性がある。
1.データ処理を実行する処理回路構成と、データ処理を実行するように処理回路構成を制御する命令を復号する命令復号回路構成とを備え、命令復号回路構成は、条件付き推測バリア命令に応答する、装置。
2.ターゲット・プログラム・コードの命令を実行する命令実行環境を提供するホスト処理装置を制御するコンピュータ・プログラムであって、データ処理を実行するように処理プログラム・ロジックを制御するターゲット・プログラム・コードの命令を復号する命令復号プログラム・ロジックを備え、命令復号プログラム・ロジックは、条件付き推測バリア命令に応答する、コンピュータ・プログラム。
3.条件付き推測バリア命令を復号することと、条件付き推測バリア命令の復号に応答して、処理回路構成を制御することとを備える、データ処理方法。
Claims (7)
- データ処理を実行する処理回路構成と、
前記データ処理を実行するように前記処理回路構成を制御する命令を復号する命令復号回路構成と
を備え、
前記命令復号回路構成は、推測バリア命令に応答して、前記推測バリア命令後にプログラム順に現れ、前記推測バリア命令に前記プログラム順に先行する前の命令に対するアドレス依存性を有する後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止するように、前記処理回路構成を制御し、
前記推測バリア命令が終了するまで、
条件付き選択命令の結果に対するアドレス依存性を有する、ロード、ストア、データ、又は命令のプリロード命令RW2が、前記推測バリア命令後にプログラム順に現れ、そして、
前記条件付き選択命令が、前記条件付き選択命令の入力レジスタの1つについて、推測的に実行されているロード命令R1に対するレジスタ・データ依存性を有し、且つ
前記条件付き選択命令が、前記条件付き選択命令の別の入力レジスタについて、R1に対するレジスタ・データ依存性を有さず、且つ
前記条件付き選択命令の条件が、R1がアーキテクチャ上実行されていないならば、R1に依存しない入力レジスタが選択されるようになる場合に、
前記キャッシュ内のエントリの割当が、前記キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1からの推測的にロードされた値の任意の部分の値を判定するために使用されることができる場合に、前記処理回路構成は、前記エントリの割当に影響を与えるRW2を阻止するように構成されている、装置。 - データ処理を実行する処理回路構成と、
前記データ処理を実行するように前記処理回路構成を制御する命令を復号する命令復号回路構成と
を備え、
前記命令復号回路構成は、推測バリア命令に応答して、前記推測バリア命令後にプログラム順に現れ、前記推測バリア命令に前記プログラム順に先行する前の命令に対するアドレス依存性を有する後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止するように、前記処理回路構成を制御し、
前記推測バリア命令が終了するまで、
条件付き移動命令の結果に対するアドレス依存性を有する、ロード、ストア、データ、又は命令のプリロード命令RW2が、前記推測バリア命令後にプログラム順に現れ、そして、
前記条件付き移動命令は、前記条件付き移動命令の入力レジスタについて、推測的に実行されているロード命令R1に対するレジスタ依存性を有さず、且つ
前記条件付き移動命令の条件は、R1がアーキテクチャ上実行されていないならば、前記条件を満たすようになる場合に、
前記キャッシュ内のエントリの割当が、前記キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1からの推測的にロードされた値の任意の部分の値を判定するために使用されることができる場合に、前記処理回路構成は、前記エントリの割当に影響を与えるRW2を阻止するように構成されている、装置。 - 前記キャッシュは、
データ・キャッシュ、
命令キャッシュ、及び
分岐予測キャッシュ
のうちの1つである、請求項1又は2に記載の装置。 - ターゲット・プログラム・コードの命令を実行する命令実行環境を提供するホスト処理装置を制御するコンピュータ・プログラムであって、
データ処理を実行するように処理プログラム・ロジックを制御する前記ターゲット・プログラム・コードの命令を復号する命令復号プログラム・ロジックを備え、
前記命令復号プログラム・ロジックは、推測バリア命令に応答して、前記推測バリア命令後にプログラム順に現れ、前記推測バリア命令に前記プログラム順に先行する前の命令に対するアドレス依存性を有する後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止し、
前記推測バリア命令が終了するまで、
条件付き選択命令の結果に対するアドレス依存性を有する、ロード、ストア、データ、又は命令のプリロード命令RW2が、前記推測バリア命令後にプログラム順に現れ、そして、
前記条件付き選択命令が、前記条件付き選択命令の入力レジスタの1つについて、推測的に実行されているロード命令R1に対するレジスタ・データ依存性を有し、且つ
前記条件付き選択命令が、前記条件付き選択命令の別の入力レジスタについて、R1に対するレジスタ・データ依存性を有さず、且つ
前記条件付き選択命令の条件が、R1がアーキテクチャ上実行されていないならば、R1に依存しない入力レジスタが選択されるようになる場合に、
前記キャッシュ内のエントリの割当が、前記キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1からの推測的にロードされた値の任意の部分の値を判定するために使用されることができる場合に、前記命令復号プログラム・ロジックは、前記エントリの割当に影響を与えるRW2を阻止するように構成されている、コンピュータ・プログラム。 - ターゲット・プログラム・コードの命令を実行する命令実行環境を提供するホスト処理装置を制御するコンピュータ・プログラムであって、
データ処理を実行するように処理プログラム・ロジックを制御する前記ターゲット・プログラム・コードの命令を復号する命令復号プログラム・ロジックを備え、
前記命令復号プログラム・ロジックは、推測バリア命令に応答して、前記推測バリア命令後にプログラム順に現れ、前記推測バリア命令に前記プログラム順に先行する前の命令に対するアドレス依存性を有する後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止し、
前記推測バリア命令が終了するまで、
条件付き移動命令の結果に対するアドレス依存性を有する、ロード、ストア、データ、又は命令のプリロード命令RW2が、前記推測バリア命令後にプログラム順に現れ、そして、
前記条件付き移動命令は、前記条件付き移動命令の入力レジスタについて、推測的に実行されているロード命令R1に対するレジスタ依存性を有さず、且つ
前記条件付き移動命令の条件は、R1がアーキテクチャ上実行されていないならば、前記条件を満たすようになる場合に、
前記キャッシュ内のエントリの割当が、前記キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1からの推測的にロードされた値の任意の部分の値を判定するために使用されることができる場合に、前記命令復号プログラム・ロジックは、前記エントリの割当に影響を与えるRW2を阻止するように構成されている、コンピュータ・プログラム。 - 推測バリア命令を復号するステップと、
前記推測バリア命令の復号に応答して、前記推測バリア命令後にプログラム順に現れ、前記推測バリア命令に前記プログラム順に先行する前の命令に対するアドレス依存性を有する後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止するように、処理回路構成を制御するステップと
を含むデータ処理方法であって、
前記推測バリア命令が終了するまで、
条件付き選択命令の結果に対するアドレス依存性を有する、ロード、ストア、データ、又は命令のプリロード命令RW2が、前記推測バリア命令後にプログラム順に現れ、そして、
前記条件付き選択命令が、前記条件付き選択命令の入力レジスタの1つについて、推測的に実行されているロード命令R1に対するレジスタ・データ依存性を有し、且つ
前記条件付き選択命令が、前記条件付き選択命令の別の入力レジスタについて、R1に対するレジスタ・データ依存性を有さず、且つ
前記条件付き選択命令の条件が、R1がアーキテクチャ上実行されていないならば、R1に依存しない入力レジスタが選択されるようになる場合に、
前記キャッシュ内のエントリの割当が、前記キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1からの推測的にロードされた値の任意の部分の値を判定するために使用されることができる場合に、前記データ処理方法は、前記エントリの割当に影響を与えるRW2を阻止するステップを含む、データ処理方法。 - 推測バリア命令を復号するステップと、
前記推測バリア命令の復号に応答して、前記推測バリア命令後にプログラム順に現れ、前記推測バリア命令に前記プログラム順に先行する前の命令に対するアドレス依存性を有する後続する動作が、キャッシュ内のエントリの割当に推測的に影響を与えることを阻止するように、処理回路構成を制御するステップと
を含むデータ処理方法であって、
前記推測バリア命令が終了するまで、
条件付き移動命令の結果に対するアドレス依存性を有する、ロード、ストア、データ、又は命令のプリロード命令RW2が、前記推測バリア命令後にプログラム順に現れ、そして、
前記条件付き移動命令は、前記条件付き移動命令の入力レジスタについて、推測的に実行されているロード命令R1に対するレジスタ依存性を有さず、且つ
前記条件付き移動命令の条件は、R1がアーキテクチャ上実行されていないならば、前記条件を満たすようになる場合に、
前記キャッシュ内のエントリの割当が、前記キャッシュ内のどのエントリが割り当てられているか、又は削除されているかを評価することにより、R1からの推測的にロードされた値の任意の部分の値を判定するために使用されることができる場合に、前記データ処理方法は、前記エントリの割当に影響を与えるRW2を阻止するステップを含む、データ処理方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862613280P | 2018-01-03 | 2018-01-03 | |
US62/613,280 | 2018-01-03 | ||
US16/208,701 US10866805B2 (en) | 2018-01-03 | 2018-12-04 | Speculation barrier instruction |
US16/208,701 | 2018-12-04 | ||
PCT/GB2018/053636 WO2019135063A1 (en) | 2018-01-03 | 2018-12-14 | Speculation barrier instruction |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2021509743A JP2021509743A (ja) | 2021-04-01 |
JPWO2019135063A5 JPWO2019135063A5 (ja) | 2023-11-14 |
JP7406489B2 true JP7406489B2 (ja) | 2023-12-27 |
Family
ID=67058912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020535645A Active JP7406489B2 (ja) | 2018-01-03 | 2018-12-14 | 推測バリア命令 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10866805B2 (ja) |
EP (1) | EP3735633B1 (ja) |
JP (1) | JP7406489B2 (ja) |
KR (1) | KR20200101943A (ja) |
CN (1) | CN111433740B (ja) |
WO (1) | WO2019135063A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2554096B (en) * | 2016-09-20 | 2019-03-20 | Advanced Risc Mach Ltd | Handling of inter-element address hazards for vector instructions |
US11265291B2 (en) | 2017-08-25 | 2022-03-01 | Red Hat, Inc. | Malicious packet filtering by a hypervisor |
US11675594B2 (en) * | 2018-04-19 | 2023-06-13 | Intel Corporation | Systems, methods, and apparatuses to control CPU speculation for the prevention of side-channel attacks |
JP7064135B2 (ja) * | 2018-05-15 | 2022-05-10 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US11106466B2 (en) * | 2018-06-18 | 2021-08-31 | International Business Machines Corporation | Decoupling of conditional branches |
US11119784B2 (en) * | 2018-06-29 | 2021-09-14 | Intel Corporation | Efficient mitigation of side-channel based attacks against speculative execution processing architectures |
US11334495B2 (en) * | 2019-08-23 | 2022-05-17 | Arm Limited | Cache eviction |
US11709716B2 (en) * | 2019-08-26 | 2023-07-25 | Red Hat, Inc. | Hardware offload support for an operating system offload interface using operation code verification |
US11443044B2 (en) * | 2019-09-23 | 2022-09-13 | International Business Machines Corporation | Targeted very long delay for increasing speculative execution progression |
US20210096872A1 (en) * | 2019-09-27 | 2021-04-01 | Intel Corporation | Hardware for eliding security checks when deemed safe during speculative execution |
US12079197B2 (en) * | 2019-10-18 | 2024-09-03 | Dover Microsystems, Inc. | Systems and methods for updating metadata |
US10990393B1 (en) | 2019-10-21 | 2021-04-27 | Advanced Micro Devices, Inc. | Address-based filtering for load/store speculation |
CN111857825A (zh) | 2020-07-20 | 2020-10-30 | 北京百度网讯科技有限公司 | 指令执行方法、装置、电子设备和计算机可读存储介质 |
US20220091851A1 (en) * | 2020-09-23 | 2022-03-24 | Intel Corporation | System, Apparatus And Methods For Register Hardening Via A Micro-Operation |
US20220207147A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Hardening registers against speculation vulnerabilities |
CN113703842B (zh) * | 2021-09-10 | 2024-03-26 | 中国人民解放军国防科技大学 | 一种基于分支预测的值预测方法、装置及介质 |
US12067399B2 (en) | 2022-02-01 | 2024-08-20 | Apple Inc. | Conditional instructions prediction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003515214A (ja) | 1999-11-16 | 2003-04-22 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 計算を狭いオペランドで実施するための方法と装置 |
US20030084259A1 (en) | 1999-12-30 | 2003-05-01 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
JP2005504390A (ja) | 2001-10-02 | 2005-02-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ジャバハードウェアアクセラレータ用の投機的実行 |
JP2006507594A (ja) | 2002-11-22 | 2006-03-02 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マイクロコントローラ、及びマイクロコントローラのプログラミングを処理するための割当方法 |
US20090089564A1 (en) | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
US6484230B1 (en) | 1998-09-28 | 2002-11-19 | International Business Machines Corporation | Method and system for speculatively processing a load instruction before completion of a preceding synchronization instruction |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US8516201B2 (en) | 2006-12-05 | 2013-08-20 | Intel Corporation | Protecting private data from cache attacks |
GB2501582B (en) * | 2013-02-11 | 2014-12-24 | Imagination Tech Ltd | Speculative load issue |
US9361144B2 (en) * | 2013-06-28 | 2016-06-07 | Globalfoundries Inc. | Predictive fetching and decoding for selected return instructions |
CN105005737A (zh) * | 2015-07-31 | 2015-10-28 | 天津大学 | 一种面向分支预测攻击的微体系结构级安全防护方法 |
-
2018
- 2018-12-04 US US16/208,701 patent/US10866805B2/en active Active
- 2018-12-14 JP JP2020535645A patent/JP7406489B2/ja active Active
- 2018-12-14 CN CN201880078157.2A patent/CN111433740B/zh active Active
- 2018-12-14 WO PCT/GB2018/053636 patent/WO2019135063A1/en unknown
- 2018-12-14 KR KR1020207020303A patent/KR20200101943A/ko active IP Right Grant
- 2018-12-14 EP EP18822465.3A patent/EP3735633B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003515214A (ja) | 1999-11-16 | 2003-04-22 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 計算を狭いオペランドで実施するための方法と装置 |
US20030084259A1 (en) | 1999-12-30 | 2003-05-01 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
JP2005504390A (ja) | 2001-10-02 | 2005-02-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ジャバハードウェアアクセラレータ用の投機的実行 |
JP2006507594A (ja) | 2002-11-22 | 2006-03-02 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | マイクロコントローラ、及びマイクロコントローラのプログラミングを処理するための割当方法 |
US20090089564A1 (en) | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
Non-Patent Citations (1)
Title |
---|
米田 聡,LINUXレポート「CPUの脆弱性対応で大騒ぎLinuxカーネルも修正を急ぐ」,日経Linux 2018年3月号,日経BP社,2018年02月08日,第20巻 第2号,第7頁 |
Also Published As
Publication number | Publication date |
---|---|
WO2019135063A1 (en) | 2019-07-11 |
CN111433740A (zh) | 2020-07-17 |
EP3735633A1 (en) | 2020-11-11 |
JP2021509743A (ja) | 2021-04-01 |
KR20200101943A (ko) | 2020-08-28 |
EP3735633B1 (en) | 2022-10-12 |
US20190205140A1 (en) | 2019-07-04 |
US10866805B2 (en) | 2020-12-15 |
CN111433740B (zh) | 2024-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7406489B2 (ja) | 推測バリア命令 | |
Kocher et al. | Spectre attacks: Exploiting speculative execution | |
Fustos et al. | Spectreguard: An efficient data-centric defense mechanism against spectre attacks | |
JP7416727B2 (ja) | 投機制限メモリ領域タイプ | |
Oleksenko et al. | You shall not bypass: Employing data dependencies to prevent bounds check bypass | |
JP7377211B2 (ja) | 投機的サイド・チャネル・ヒント命令 | |
US20200410088A1 (en) | Micro-instruction cache annotations to indicate speculative side-channel risk condition for read instructions | |
KR20210070936A (ko) | 민감성으로서 명령들의 동적 지정 | |
JP2019197442A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
Le et al. | A cross-process spectre attack via cache on RISC-V processor with trusted execution environment | |
Kvalsvik et al. | Doppelganger loads: A safe, complexity-effective optimization for secure speculation schemes | |
Hayes et al. | {GPU} Taint Tracking | |
CN116368465A (zh) | 用于使用能力约束对存储器的访问的技术 | |
US11307856B2 (en) | Branch target variant of branch-with-link instruction | |
Taram et al. | Mitigating speculative execution attacks via context-sensitive fencing | |
Fuchs | Analysis of Transient-Execution Attacks on the out-of-order CHERI-RISC-V Microprocessor Toooba | |
CN113316764A (zh) | 控制由待解析推测性操作确定的数据的使用 | |
US12008149B2 (en) | Method and system for on demand control of hardware support for software pointer authentification in a computing system | |
Guanhua | Defense against Micro-Architecture Level Transient Execution Based Attacks via Program Analysis | |
Mohammadian Koruyeh | Architectural Support for Securing Systems Against Micro-Architectural Attacks | |
Koruyeh | Architectural Support for Securing Systems Against Micro-Architectural Attacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211207 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230125 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230425 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230803 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20231102 |
|
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: 20231121 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231215 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7406489 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |