JP7460529B2 - タグ保護されたメモリ・システムのためのランダム・タグ設定命令 - Google Patents
タグ保護されたメモリ・システムのためのランダム・タグ設定命令 Download PDFInfo
- Publication number
- JP7460529B2 JP7460529B2 JP2020548809A JP2020548809A JP7460529B2 JP 7460529 B2 JP7460529 B2 JP 7460529B2 JP 2020548809 A JP2020548809 A JP 2020548809A JP 2020548809 A JP2020548809 A JP 2020548809A JP 7460529 B2 JP7460529 B2 JP 7460529B2
- Authority
- JP
- Japan
- Prior art keywords
- tag
- value
- address
- random
- values
- 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
- 238000012545 processing Methods 0.000 claims description 55
- 230000007717 exclusion Effects 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 36
- 238000000034 method Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013519 translation Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 4
- 101100456831 Caenorhabditis elegans sams-5 gene Proteins 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 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
-
- 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/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- 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
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Radar Systems Or Details Thereof (AREA)
Description
データ処理装置によって実行されるソフトウェアは、典型的には、高水準プログラミング言語で書き、次いで、ソフトウェアが実行されることになっている装置によってサポートされる命令セット・アーキテクチャに従ってコードにコンパイルすることができる。例えば、ソフトウェアは、最初はJava、C、C++などのより高い水準の言語で書き、次いで、x86やArm(R)などのネイティブにサポートされる命令セット・アーキテクチャにコンパイルすることができる。
・ コードによって供給される配列の添え字が配列の正当な境界の外側にある、境界違反、
・ メモリ位置へのアクセスが、そのメモリ位置がすでに割当てを解除され又は解放されてしまった後に行われる、解放済みメモリ使用エラー、
・ 関数内で使用された変数(スタック上の値などの)に関連付けられたアドレスへのメモリ・アクセスがすでに関数から復帰した後に行われる、復帰後の使用、
・ 変数がそれらの宣言された範囲外でアクセスされる、範囲外使用エラー、及び
・ 変数に関連付けられたメモリ・アドレスが、変数が初期化されてしまう前にアクセスされる、初期化前使用エラー
を含み得る。
・ 候補タグ値のセットの少なくともN+1のタグ値をランダムに選択する、
・ 選択されたタグ値のそれぞれを各除外タグ値に対して比較する、及び、
・ タグ設定宛先アドレスに関連付けられたアドレス・タグに設定するべきランダム・タグ値として少なくとも1つの除外タグ値のすべてに対して不一致である、選択されたタグ値のうちの1つを選択する
べく処理回路を制御することができる。
・ 候補タグ値のセットの1つを、選択されたタグ値としてランダムに選択する、
〇 選択されたタグ値が、所定の除外タグ値及び候補タグ値のセットの他の所定のタグ値の両方と不一致であるときには、選択されたタグ値、及び
〇 選択されたタグ値が所定のタグ値及び他のタグ値のうちの一方と一致するときには、選択されたタグ値のランダムに選択されたビットを反転させることによって取得された値
・ の1つである中間値に対して追加の除外タグ値の比較を実施する、
・ 比較により、追加の除外タグ値と中間値との不一致が検出されたとき、タグ設定宛先アドレスに関連付けられたアドレス・タグに設定するべきランダム・タグ値として中間値を出力する、及び、
・ 比較により、追加の除外タグ値と中間値との一致が検出されたとき、タグ設定宛先アドレスに関連付けられたアドレス・タグに設定するべきランダム・タグ値として他の所定のタグ値を出力する
べく処理回路を制御することができる。
「pos」がLFSR72から抽出された4ビットであるとする。LUTレジスタ70は「pos*4」ビットだけ回転される。この後に、それぞれが必要に応じLFSRからの追加のビットに基づいて複数の独立した値のうちの1つをLUTから選択する、「N+1」のマルチプレクサ74が続く。理想的には、これらのマルチプレクサ74のすべてが、同じ数の入力を有するべきであるが、これは図9A及び図9Bに示すように不可欠ではない。ビット回転は、いずれにせよ、ハードウェア内のマルチプレクサとして実装されるので、これらのステップの両方とも折り畳められ、簡略化され得る。
乱数器80からの「N」の入力のそれぞれは、「N」の禁止された値のそれぞれとの等価性に関して比較される。あらゆる乱数器出力の結果は、出力マスク88を作り出すために互いにNORされる。
セレクタ90は、マスク88によって可能とされる第1の乱数器出力を単純に選択することができる。
本実装形態は、入力のうちのいくつかが同一である場合を含めて、すべての出力に均一な確率分布を提供する。これは、N個の値を除外するように作り上げられた単一のハードウェア回路が、単純に入力のうちのいくつかを複数回提供することによって、確率分布に影響することなく、より少ない値を除外するのに再使用することができることを意味する。
Claims (24)
- 装置であって、
処理回路と、
関連したアドレス・タグを有するタグ・チェックの対象となるアドレスに対してガード・タグ・チェックを実施するメモリ・アクセス回路であって、前記ガード・タグ・チェックが、前記アドレス・タグを、前記タグ・チェックの対象となるアドレスによって識別された、アドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連してメモリ・システムに記憶されたガード・タグと比較することと、前記ガード・タグと前記アドレス・タグとの不一致が検出されたとき、エラー処理応答又はエラー報告機構をトリガすることとを含む、メモリ・アクセス回路と、
タグ設定宛先アドレスに関連付けられた前記アドレス・タグを候補タグ値のセットからランダムに選択されたランダム・タグ値に設定するべく前記処理回路を制御するために、前記タグ設定宛先アドレスを指定するランダム・タグ設定命令に応答する命令デコーダであって、前記ランダム・タグ値が、前記ランダム・タグ設定命令の宛先レジスタに書き込まれる、前記命令デコーダとを備える、装置。 - 前記ランダム・タグ設定命令に応答して、前記命令デコーダが、候補タグ値の前記セットの少なくとも1つの除外タグ値が前記ランダム・タグ値として選択されるのを防止するべく、及び前記候補タグ値の残りのサブセットから前記ランダム・タグ値をランダムに選択するべく前記処理回路を制御するように構成される、請求項1に記載の装置。
- 前記少なくとも1つの除外タグ値が、前記ランダム・タグ設定命令によって指定された少なくとも1つのレジスタによって識別された1つ又は複数の除外タグ値を含む、請求項2に記載の装置。
- 前記少なくとも1つの除外タグ値が、前記ランダム・タグ設定命令のソース・レジスタ又は宛先レジスタに指定されたアドレスに関連付けられたアドレス・タグに対応するタグ値を含む、請求項2又は3に記載の装置。
- 前記ランダム・タグ設定命令が、ランダム選択状態情報を記憶する少なくとも1つのソース・レジスタを指定し、
前記ランダム選択状態情報が、候補タグ値の前記セットの少なくともサブセットに対応する複数のビットを含むビットフィールドを含み、前記ビットフィールドの各ビットが、前記対応する候補タグ値が前記少なくとも1つの除外タグ値の1つであるかどうかを示す、請求項2又は3に記載の装置。 - 前記命令デコーダは、前記対応するタグ値が前記少なくとも1つの除外タグ値の1つであることを示すように、タグ除外宛先アドレスに関連付けられた前記アドレス・タグに対応する前記ビットフィールドのビットを更新するべく前記処理回路を制御するために、前記ランダム選択状態情報の前記ビットフィールドを記憶するための前記タグ除外宛先アドレス及び宛先レジスタを指定するタグ値除外命令に応答する、請求項5に記載の装置。
- 前記ビットフィールドが、候補タグ値の前記セット全体に対応するビットを含む、請求項5又は6に記載の装置。
- 前記ビットフィールドが、候補タグ値の適切なサブセットに対応するビットを含み、前記ランダム選択状態情報が、候補タグ値の前記適切なサブセットのタグ値も含む、請求項5又は6に記載の装置。
- 候補タグ値の前記適切なサブセットの前記タグ値が、前記ビットフィールドと同じレジスタに指定される、請求項8に記載の装置。
- 前記命令デコーダが、候補タグ値の前記セットの中から候補タグ値の前記適切なサブセットをランダムに選択するべく、及び候補タグ値の前記選択された適切なサブセットの前記タグ値を宛先レジスタに書き込むべく前記処理回路を制御するために、前記ランダム選択状態情報のタグ値を記憶するための前記宛先レジスタを指定するランダム・タグ選択命令に応答する、請求項8又は9に記載の装置。
- 前記少なくとも1つの除外タグ値が、構成レジスタに記憶された構成データによって識別された1つ又は複数の除外タグ値を含む、請求項2から10までのいずれか一項に記載の装置。
- 前記少なくとも1つの除外タグ値が、1つ又は複数のハードウェア定義除外タグ値を含む、請求項2から11までのいずれか一項に記載の装置。
- 前記少なくとも1つの除外タグ値が、最大Nの除外タグ値を含み、前記ランダム・タグ設定命令に応答して、前記命令デコーダが、
候補タグ値の前記セットの少なくともN+1のタグ値をランダムに選択する、
前記選択されたタグ値のそれぞれを前記少なくとも1つの除外タグ値と比較する、及び、
前記タグ設定宛先アドレスに関連付けられた前記アドレス・タグに設定するべき前記ランダム・タグ値として、前記少なくとも1つの除外タグ値のすべてに対して不一致である、前記選択されたタグ値のうちの1つを選択する
べく前記処理回路を制御するように構成される、請求項2から12までのいずれか一項に記載の装置。 - 前記少なくとも1つの除外タグ値が、所定の除外タグ値、及び前記ランダム・タグ設定命令によって指定された追加の除外タグ値を含み、
前記ランダム・タグ設定命令に応答して、前記命令デコーダが、
候補タグ値の前記セットの1つを、選択されたタグ値としてランダムに選択する、
前記選択されたタグ値が、前記所定の除外タグ値及び候補タグ値の前記セットの他の所定のタグ値の両方と不一致であるときには、前記選択されたタグ値、及び
前記選択されたタグ値が前記所定のタグ値及び前記他のタグ値のうちの一方と一致するときには、前記選択されたタグ値のランダムに選択されたビットを反転させることによって取得された値
の1つである中間値に対して前記追加の除外タグ値の比較を実施する、
前記比較により、前記追加の除外タグ値と前記中間値との不一致が検出されたとき、前記タグ設定宛先アドレスに関連付けられた前記アドレス・タグに設定するべきランダム・タグ値として前記中間値を出力する、及び、
前記比較により、前記追加の除外タグ値と前記中間値との一致が検出されたとき、前記タグ設定宛先アドレスに関連付けられた前記アドレス・タグに設定するべき前記ランダム・タグ値として前記他の所定のタグ値を出力する
べく前記処理回路を制御するように構成される、請求項2から12までのいずれか一項に記載の装置。 - 前記所定の除外タグ値及び前記他の所定のタグ値の一方が、すべてのビットが0に等しい値を含み、前記所定の除外タグ値及び前記他の所定のタグ値の他方が、すべてのビットが1に等しい値を含む、請求項14に記載の装置。
- 前記処理回路が、候補タグ値の前記セットから前記ランダム・タグ値を疑似ランダムに選択するように構成される、請求項1から15までのいずれか一項に記載の装置。
- 前記ランダム・タグ設定命令に応答して、前記命令デコーダが、前記タグ設定宛先アドレスによって識別された、アドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連してメモリ・システムに記憶された前記ガード・タグを前記ランダム・タグ値に更新するべく、前記メモリ・アクセス回路を制御するようにも構成され、又は
命令のシーケンスが、前記ランダム・タグ設定命令及び後続のガード・タグ・設定命令を含む場合に、前記命令デコーダが、前記タグ設定宛先アドレスによって識別された、アドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連して前記メモリ・システム内に記憶された前記ガード・タグを前記ランダム・タグ値に更新するべく、前記メモリ・アクセス回路を制御するように構成される、請求項1から16までのいずれか一項に記載の装置。 - 前記ガード・タグ・チェックが、前記アドレス・タグと前記ガード・タグとの不一致が検出されたとき障害状態指示を返すステップを含む、請求項1から17までのいずれか一項に記載の装置。
- 前記タグ・チェックの対象となるアドレスに関連付けられた前記アドレス・タグが、前記タグ・チェックの対象となるアドレスのビットのサブセットによって表され、
前記ランダム・タグ設定命令に応答して、前記命令デコーダが、前記ランダム・タグ値に基づいて前記タグ設定宛先アドレスのビットのサブセットを更新するべく前記処理回路を制御するように構成される、請求項1から18までのいずれか一項に記載の装置。 - 前記タグ設定宛先アドレスのビットの前記サブセットが、前記タグ設定宛先アドレスの少なくとも1つの他のビットに応じて前記ランダム・タグ値の変換に対応する変換されたタグ値に更新される、請求項19に記載の装置。
- 前記ガード・タグ・チェックにおいて、前記アドレス指定された位置が、前記タグ・チェックの対象となるアドレスに関連付けられた前記アドレス・タグと関係なく選択される、請求項1から20までのいずれか一項に記載の装置。
- 方法であって、
関連したアドレス・タグを有するタグ・チェックの対象となるアドレスに対するガード・タグ・チェックを実施するステップであって、前記ガード・タグ・チェックが、前記アドレス・タグを、前記タグ・チェックの対象となるアドレスによって識別された、アドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連してメモリ・システムに記憶されたガード・タグと比較するステップと、前記ガード・タグと前記アドレス・タグとの不一致が検出されたとき、エラー処理応答又はエラー報告機構をトリガするステップとを含む、実施するステップと、
タグ設定宛先アドレスを指定するランダム・タグ設定命令の復号に応答して、前記タグ設定宛先アドレスに関連付けられた前記アドレス・タグを候補タグ値のセットからランダムに選択されたランダム・タグ値に設定するステップであって、前記ランダム・タグ値が、前記ランダム・タグ設定命令の宛先レジスタに書き込まれる、前記設定するステップとを含む、方法。 - 目的プログラム・コードの命令を実行するための命令実行環境を提供するようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
関連したアドレス・タグを有するタグ・チェックの対象となるアドレスに対するガード・タグ・チェックを実施するメモリ・アクセス・プログラム論理であって、前記ガード・タグ・チェックが、前記アドレス・タグを、前記タグ・チェックの対象となるアドレスによって識別された、アドレス指定された位置を含む1つ又は複数のメモリ位置のブロックに関連してメモリ・システムに記憶されたガード・タグと比較するステップと、前記ガード・タグと前記アドレス・タグとの不一致が検出されたとき、エラー処理応答又はエラー報告機構をトリガするステップとを含む、メモリ・アクセス・プログラム論理と、
タグ設定宛先アドレスに関連付けられた前記アドレス・タグを候補タグ値のセットからランダムに選択されたランダム・タグ値に設定するために、前記タグ設定宛先アドレスを指定するランダム・タグ設定命令に応答するタグ設定プログラム論理であって、前記ランダム・タグ値が、前記ランダム・タグ設定命令の宛先レジスタに書き込まれる、前記タグ設定プログラム論理とを含む、コンピュータ・プログラム。 - 請求項23に記載のコンピュータ・プログラムを記憶する記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1804411.5 | 2018-03-20 | ||
GB1804411.5A GB2572158B (en) | 2018-03-20 | 2018-03-20 | Random tag setting instruction |
PCT/GB2019/050372 WO2019180402A1 (en) | 2018-03-20 | 2019-02-12 | Random tag setting instruction for a tag-guarded memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021517690A JP2021517690A (ja) | 2021-07-26 |
JP7460529B2 true JP7460529B2 (ja) | 2024-04-02 |
Family
ID=62017707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020548809A Active JP7460529B2 (ja) | 2018-03-20 | 2019-02-12 | タグ保護されたメモリ・システムのためのランダム・タグ設定命令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11681636B2 (ja) |
EP (1) | EP3769209B1 (ja) |
JP (1) | JP7460529B2 (ja) |
KR (1) | KR20200131855A (ja) |
CN (1) | CN111819543B (ja) |
GB (1) | GB2572158B (ja) |
IL (1) | IL276897B2 (ja) |
TW (1) | TWI804582B (ja) |
WO (1) | WO2019180402A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2570691B (en) * | 2018-02-02 | 2020-09-09 | Advanced Risc Mach Ltd | Controlling guard tag checking in memory accesses |
US11341241B2 (en) | 2019-11-08 | 2022-05-24 | International Business Machines Corporation | Enhancing memory safe programming using a page frame tag mechanism |
US11307857B2 (en) | 2019-12-05 | 2022-04-19 | Marvell Asia Pte, Ltd. | Dynamic designation of instructions as sensitive for constraining multithreaded execution |
US11372647B2 (en) | 2019-12-05 | 2022-06-28 | Marvell Asia Pte, Ltd. | Pipelines for secure multithread execution |
US11263015B1 (en) * | 2019-12-05 | 2022-03-01 | Marvell Asia Pte, Ltd. | Microarchitectural sensitive tag flow |
US11586554B2 (en) | 2020-07-23 | 2023-02-21 | Arm Limited | Cache arrangements for data processing systems |
GB2627497A (en) * | 2023-02-24 | 2024-08-28 | Advanced Risc Mach Ltd | Tag protecting instruction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060225135A1 (en) | 2005-03-31 | 2006-10-05 | Cheng Antonio S | Providing extended memory protection |
WO2016060817A1 (en) | 2014-10-17 | 2016-04-21 | Qualcomm Incorporated | Code pointer authentication for hardware flow control |
US20170083255A1 (en) | 2015-09-21 | 2017-03-23 | Bae Systems Information And Electronic Systems Integration Inc. | Memory protection using a tagged architecture |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4241396A (en) * | 1978-10-23 | 1980-12-23 | International Business Machines Corporation | Tagged pointer handling apparatus |
EP0438011A3 (en) * | 1990-01-18 | 1993-05-19 | International Business Machines Corporation | Logic on main storage memory cards for insertion and extraction of tag bits |
JP3866597B2 (ja) * | 2002-03-20 | 2007-01-10 | 株式会社東芝 | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 |
US7761676B2 (en) * | 2006-12-12 | 2010-07-20 | Intel Corporation | Protecting memory by containing pointer accesses |
GB2458295B (en) * | 2008-03-12 | 2012-01-11 | Advanced Risc Mach Ltd | Cache accessing using a micro tag |
EP2211285A1 (en) * | 2009-01-20 | 2010-07-28 | Nagravision SA | Secured data processing device |
US8972995B2 (en) | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US9213828B2 (en) * | 2012-02-08 | 2015-12-15 | Arm Limited | Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains |
US9495305B1 (en) * | 2012-11-02 | 2016-11-15 | David Fuchs | Detecting pointer errors for memory protection |
JP6207765B2 (ja) | 2014-12-14 | 2017-10-04 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ |
GB2549511B (en) * | 2016-04-20 | 2019-02-13 | Advanced Risc Mach Ltd | An apparatus and method for performing operations on capability metadata |
KR20170138765A (ko) | 2016-06-08 | 2017-12-18 | 삼성전자주식회사 | 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법 |
GB2570326B (en) * | 2018-01-22 | 2020-06-10 | Advanced Risc Mach Ltd | Multiple guard tag setting instruction |
EP3916568B1 (en) * | 2020-05-29 | 2024-07-17 | ARM Limited | Tag checking apparatus and method |
-
2018
- 2018-03-20 GB GB1804411.5A patent/GB2572158B/en active Active
-
2019
- 2019-02-12 US US16/981,816 patent/US11681636B2/en active Active
- 2019-02-12 IL IL276897A patent/IL276897B2/en unknown
- 2019-02-12 WO PCT/GB2019/050372 patent/WO2019180402A1/en unknown
- 2019-02-12 KR KR1020207029112A patent/KR20200131855A/ko active Search and Examination
- 2019-02-12 JP JP2020548809A patent/JP7460529B2/ja active Active
- 2019-02-12 EP EP19707062.6A patent/EP3769209B1/en active Active
- 2019-02-12 CN CN201980017802.4A patent/CN111819543B/zh active Active
- 2019-02-21 TW TW108105795A patent/TWI804582B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060225135A1 (en) | 2005-03-31 | 2006-10-05 | Cheng Antonio S | Providing extended memory protection |
WO2016060817A1 (en) | 2014-10-17 | 2016-04-21 | Qualcomm Incorporated | Code pointer authentication for hardware flow control |
US20170083255A1 (en) | 2015-09-21 | 2017-03-23 | Bae Systems Information And Electronic Systems Integration Inc. | Memory protection using a tagged architecture |
Non-Patent Citations (1)
Title |
---|
Nickolai Zeldovich, Hari Kannan, Michael Dalton, and Christos Kozyrakis,Hardware Enforcement of Application Security Policies Using Tagged Memory,8th USENIX Symposium on Operating Systems Design and Implementation(OSDI 2008),米国,usenix.org,2008年,225-240,https://www.usenix.org/legacy/event/osdi08/tech/full_papers/zeldovich/zeldovich.pdf |
Also Published As
Publication number | Publication date |
---|---|
US20210019268A1 (en) | 2021-01-21 |
EP3769209A1 (en) | 2021-01-27 |
TWI804582B (zh) | 2023-06-11 |
EP3769209B1 (en) | 2022-07-27 |
GB2572158B (en) | 2020-11-25 |
GB201804411D0 (en) | 2018-05-02 |
IL276897B2 (en) | 2024-01-01 |
CN111819543A (zh) | 2020-10-23 |
IL276897B1 (en) | 2023-09-01 |
IL276897A (en) | 2020-10-29 |
KR20200131855A (ko) | 2020-11-24 |
JP2021517690A (ja) | 2021-07-26 |
CN111819543B (zh) | 2024-09-20 |
GB2572158A (en) | 2019-09-25 |
TW201945940A (zh) | 2019-12-01 |
WO2019180402A1 (en) | 2019-09-26 |
US11681636B2 (en) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7460529B2 (ja) | タグ保護されたメモリ・システムのためのランダム・タグ設定命令 | |
JP7269942B2 (ja) | 複数ガード・タグ設定命令 | |
US20210334019A1 (en) | Programmable mapping of guard tag storage locations | |
JP7291149B2 (ja) | メモリ・アクセスにおける保護タグ・チェックの制御 | |
US20230236925A1 (en) | Tag checking apparatus and method | |
KR20210088522A (ko) | 메모리 액세스를 제어하기 위한 장치 및 방법 | |
KR20210059212A (ko) | 바이너리 난수 주입을 통한 메모리 공유 기반 부채널 공격 방어 방법 | |
EP3746900B1 (en) | Controlling guard tag checking in memory accesses | |
CN111527480B (zh) | 数据处理装置中的地址转换 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220204 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230407 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230707 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231004 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231130 |
|
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: 20240227 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240321 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7460529 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |