JP7464586B2 - メモリ完全性チェックのための完全性ツリー - Google Patents
メモリ完全性チェックのための完全性ツリー Download PDFInfo
- Publication number
- JP7464586B2 JP7464586B2 JP2021514545A JP2021514545A JP7464586B2 JP 7464586 B2 JP7464586 B2 JP 7464586B2 JP 2021514545 A JP2021514545 A JP 2021514545A JP 2021514545 A JP2021514545 A JP 2021514545A JP 7464586 B2 JP7464586 B2 JP 7464586B2
- Authority
- JP
- Japan
- Prior art keywords
- integrity
- node
- memory
- branch
- given
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Description
メモリ中に記憶されたデータへのアクセスを制御するためのメモリ・アクセス回路と、複数のノードを備える完全性ツリーを使用してメモリ中に記憶されたデータの完全性を検証するためのメモリ完全性チェック回路とを備える装置であって、複数のノードは、メモリ中に記憶されたデータの対応するアドレス・ブロックの検証のための少なくとも1つの完全性タグを備える少なくとも1つのリーフ・エントリを備える少なくとも1つのリーフ・ノードと、少なくとも1つのブランチ・エントリを備える少なくとも1つのブランチ・ノードであって、ブランチ・ノードの子ノードのアドレスを指定するためのポインタであって、子ノードは、リーフ・ノードであるか、又は完全性ツリーのさらなるブランチ・ノードである、ポインタと、子ノードの対応するブランチ・エントリ又はリーフ・エントリの検証のための少なくとも1つの完全性チェック値とを備える少なくとも1つのブランチ・ノードとを含む、装置を提供する。
- 親ノードと子ノードとの間の接続は、ポインタ関連付けを通して行われ、典型的なn進ツリーの場合に行われるようなインデックス演算を使用しない。
- テーブル中のポインタはヌルであり、したがって、必ずしも完全なツリーであるとは限らない構造を形成し得る。
- ツリー中の各ブランチ・レベルは、前の「アリティ」とは異なるアリティを有し得る(及び一般に有することになる)。
1.タグ61、56は、メモリ・チャンク(一般に、キャッシュ・ライン)の真正性を検証することを可能にする値である。タグ計算部分で説明されるようにメモリ・チャンクによってタグを計算するための様々な方法がある。
2.タグ・グループ60、62は、連続するメモリ・チャンク(一般に、キャッシュ・ライン)内に位置するタグの集合である。
3.リーフ・ページ46は、複数のタグ・グループ60(リーフ・エントリ)を含んでいる。
a.タグ・グループ60中の各タグ61は、メモリのチャンクを保護する。
b.リーフ・ページ中のいくつかのタグ・グループ60は、タグ・サイズ、リーフ・ページ・サイズ、及びタグ・グループ・サイズによって定義される。
i.一実例として、4KBのリーフ・ページは、64個のタグ・グループを含み得、ここで、各グループは、それぞれ64ビットの8つのタグを含んでおり、各タグは、64Bのメモリを保護し、したがって、リーフ・ページ全体は、メモリの32KBのブロックを保護する。
4.ブランチ・ページ44は、複数のブランチ・エントリ62を含んでおり、ここで、各エントリ62は、以下のパラメータを含む。
a.ネクスト・ポインタ(NextPointer)58。これは、リーフ・ページ又は次のレベルのブランチ・ページのいずれかをポイントし得る。
b.タグ・グループ56。各タグがネクスト・ポインタによってポイントされるページ中の対応するエントリを保護するタグのグループ(完全性チェック値、たとえば、ハッシュ、MAC、又はカウンタ)。
i.ネクスト・ポインタ58がリーフ・ページ46をポイントする場合、タグは、リーフ・ページ46中の対応するタグ・グループ60を保護する。
ii.ネクスト・ポインタ58がブランチ・ページ44をポイントする場合、タグは、ブランチ・ページ中のネクスト・ポインタ58とタグ・グループ62とから構成されるエントリ62を保護する。
5.ルート・テーブル38は、レベル0のブランチ・ページ(レベル0は単一のページを含む)をポイントするベース・ポインタ64と単一のタグ・グループ62とを含んでおり、ここで、各タグは、レベル0のブランチ・ページ中の対応するエントリ62を保護する。
a.ルート・テーブル38は、チップ境界内に常駐し、NPT全体のための信用の起点として働く。
- リーフ・ページは、64個のタグ・グループを含み、ここで、各グループは8つのタグを記憶する。
- レベル3のブランチ・ページは、8つのエントリを含み、ここで、各エントリは、64個のタグとポインタとを含む。
- レベル2のブランチ・ページは、6を含む。
- 4エントリ、ここで、各エントリは、8つのタグとポインタとを含む。
- レベル1のブランチ・ページは、8つのエントリを含み、ここで、各エントリは、64個のタグとポインタとを含む。
- レベル0のブランチ・ページは、64個のエントリを含み、ここで、各エントリは、8つのタグとポインタとを含む。
- オンチップ・ルート・テーブルは、ベース・ポインタと64個のタグとを含む。
1.キャッシュ・ライン・タグを計算するときに追加の入力として使用されるナンス(1回だけ使用される番号(Number used Once))値70。ナンスは、タグのフレッシュネスを保証することが可能で、単調カウンタとして実装され得る。変形形態2では、カウンタの完全性のみがNPTによって保護される必要がある。
2.各タグが対応するキャッシュ・ラインを保護し、対応するナンスを使用して計算されるタグ72。これがカウンタを保護することによって間接的に保証されるので、タグの完全性はNPTによって保護される必要がない。
リーフ・ページは、カウンタ・グループとそれらの対応するタグ・グループとのロケーションを指定するあらかじめ定義された構造を有する。これは、所与の物理アドレスに対応するカウンタ及びタグのロケーションへの直接アクセスを可能にする。
1.グループ中の各カウンタが暗号要件によって定義された全幅を有する非分割カウンタ・グループ(図8の右側)。
2.副カウンタのグループは、任意の副カウンタがオーバーフローするときはいつでも増分される単一の主カウンタを共有し、したがって、カウンタを記憶するときにビットを節約することができる分割カウンタ・グループ(図8の左側)。分割カウンタの実装では、副カウンタがオーバーフローし、主カウンタが、所与のブランチ・エントリ62中で増分されるとき、カウンタ・グループ・タグ76は、所与のブランチ・エントリ62のポインタ62によってポイントされる子ページ中の子エントリのすべてのために再計算される必要があることになる。
ソフトウェアは、NPTに対応するタグを追加するようにNPE20に要求することによってキャッシュ・ライン・アドレスを保護することに対するそれの関心を登録する。キャッシュ・ライン自体が加算されるときに読み取られていないか又はタグを追加するときに初期化されていない場合、完全性値がキャッシュ・ラインによって計算されるとき、タグは、最初に0に設定され、後に1に設定される修飾子ビットを含み得る。代替的に、キャッシュ・ラインは、加算演算の一部として読み取られ得、それの完全性値が計算され、タグに書き込まれる。
a.メモリ中にページを割り振り、割り振られたページのアドレスに現在のステージにあるポインタを設定する(ポインタは後でタグ計算に含まれることになる)。
b.新しいページをゼロに初期化する。
c.追加されたページ中の対応する子タグ・グループ(又はグループ)によってタグを計算することによって更新されたポインタのエントリ中のタグ・グループを初期化する。
タグを更新するための流れは、次のように要約され得る。
1.オフセットのセットに物理アドレス[MSB:0]を区分し(図9を参照)、ここで、各オフセットは、異なるNPTレベル2に対応する。
2.ポインタにアドレス・オフセットを追加することによってそれのベース・ポインタから開始し、読み取り結果のコンテンツから次のレベルにポインタを抽出してNPTを走査する。
3.読み取られている各エントリから次のレベルのポインタを抽出し、次の読み取りをサブミットすることに並行してそれに対してタグ検証演算を実行する。
4.リーフ・ページに達し、それからタグ・グループを読み取るとき、更新されたキャッシュ・ラインによって計算されるタグがそのグループに書き込まれる。
5.次いで、リーフ・タグ・グループからルート・タグ・グループまでのチェーン上のすべてのタグ・グループが、再計算され、メモリに記憶される。
タグを計算するためのいくつかのオプションがあり、ここでは、いくつかの例示的な方式しかリストしていない。まず第一に、2つの事例を区別する。
・ ハッシュ・ツリーの事例(変形形態1)では、ハッシュすべきメッセージmは、ポインタとそれと一緒にパックされるハッシュのグループとによって形成される。
・ カウンタ・ツリーの事例(変形形態2)では、メッセージmは、ポインタとそれと一緒にパックされるカウンタのグループとの連結であり得、また、親ノード中に対応するカウンタcpをも含み得る。分割カウンタ・グループ構造が使用される場合、カウンタのグループは、それのセットの副カウンタをもつ主カウンタとなるように意図されるが、親ノード中のカウンタcpは、主カウンタの、及び子ノードに対応する副カウンタの連結になる。
1.SHA-2、SHA-3、SipHashなどの標準的に又は一般的に使用されるハッシュ関数を使用する。カウンタ・ツリーの場合、親カウンタcpがメッセージ中に含まれる。
2.カーター-ウェッグマン・ユニバーサル・ハッシュ関数を使用する。m=m1|m2|..|mrを書き込み、ここで、m1…mr-1は、同じビット長bのものであり、mrは、同じビット長のものであるか又はbビットにパディングされるかのいずれかである。次いで、最初にガロア体F中で
h’=Σi=1 rmi・χi
を計算し、ここで、χ∈Fは、非ゼロの秘密値であり、次いで、
h=h’+EK(cp)として結果を暗号化し(加算は同じガロア体中にある)、
ここで、EK()は、秘密グローバル鍵Kを使用する暗号化関数である。
代替的に、暗号化は、
h=EK(h’+cp)
として実行され得るが、この場合、h’の計算は、EK()の呼び出しと並行して実行されないことがある。
3.(AESなどの)ブロック暗号アルゴリズムを選定し、鍵を使用してmを暗号化することによって完全性チェック値を生成することによって、標準MACを使用する。
注:NPTを記憶するメモリが他の考慮事項により暗号化される場合、親カウンタcpが常にm中に含まれる限り暗号化ステップは省略され得る。
キャッシュ・ラインを検証する動作は、変形形態1の場合では図10に示されるようにシーケンスに基づく。(図9について上で説明されたステップ1~3と同様)
- タグを検証すること
〇キャッシュ・ライン・タグを検証するとき、そのタグに対応するカウンタが計算に含まれる。
〇カウンタ・タグを検証することは、カウンタ・グループ中のすべてのカウンタと親カウンタとによってタグを計算することによって実行される。
- キャッシュ・ライン・タグを更新するとき、そのタグに関連するカウンタが増分され、増分されたカウンタのあらゆる親カウンタも増分される。次いで、このチェーンにわたるタグ・カウンタが更新されたカウンタ値によって再計算される。
図9及び図10に示された正確な詳細は、一実例にすぎず、たとえば、物理アドレスの各オフセット部分中のツリー・レベルの数及びビットの数は変動できることが諒解されよう。
キャッシュ・ラインがもはや保護される必要がないとき、タグは、ソフトウェアが0に更新する各タグ中の単一ビットの修飾子フラグを定義することによってデータベースから除去できる。複数のタグ又はタグ・グループを修飾する単一のフラグを有することも可能である。
タグ修飾子がゼロ化されるときはいつでも、ソフトウェア又はNPE20はまた、ページ中の追加のタグが0であるのかどうかをチェックすることができる。ページ中のすべてはタグ・グループにわたってチェックを実行することによって、ページ全体がNPTから除去され得る。
キャッシュ・ラインがアクセスされるときはいつでも、NPEは、完全性保護がそれに必要とされないことを迅速に解決することができる。これは、ヌル・ポインタ又は無効なタグに到着するまでNPTを横断することによって行われる(無効なタグは、予約された値をもつタグ又は修飾子=0をもつタグであり得る)。一般にメモリの小部分のみが完全性を保護されるので、ヌル・ポインタがすぐに発見されることになるので、本方法は、横断が完全性を必要としない大多数のキャッシュ・ラインのために短くなるであろうことを保証する。システムはまた、キャッシュ・ラインのために完全性が必要とされるのかどうかについての読み取り又は書き込み動作に関するヒントを追加することによってこのプロセスを増強することができる。
マークル・ツリーに適用可能なパフォーマンスの向上方法(すなわち、キャッシング及び投機的実行)はまた、それ自体の変形形態をもつNPTに適用可能であり得る。
Claims (22)
- メモリ中に記憶されたデータへのアクセスを制御するためのメモリ・アクセス回路と、
複数のノードを備える完全性ツリーを使用して前記メモリ中に記憶されたデータの完全性を検証するためのメモリ完全性チェック回路と
を備える装置であって、前記複数のノードは、
前記メモリ中に記憶されたデータの対応するアドレス・ブロックの検証のための少なくとも1つの完全性タグを備える少なくとも1つのリーフ・エントリを備える少なくとも1つのリーフ・ノードと、
少なくとも1つのブランチ・エントリを備える少なくとも1つのブランチ・ノードであって、
前記ブランチ・ノードの子ノードのアドレスを指定するためのポインタであって、前記子ノードは、リーフ・ノードであるか、又は前記完全性ツリーのさらなるブランチ・ノードである、ポインタと、
前記子ノードの対応するブランチ・エントリ又はリーフ・エントリの検証のための少なくとも1つの完全性チェック値と
を備える少なくとも1つのブランチ・ノードと
を含み、
前記メモリ中に記憶されたデータの所与のアドレス・ブロックのターゲット・アドレスを指定する要求に応答して、前記メモリ完全性チェック回路は、ルート・ノードから前記所与のアドレス・ブロックに対応する前記完全性タグを備える所与のリーフ・ノードまでの前記完全性ツリーのトップダウン横断をトリガするように構成され、
前記メモリ完全性チェック回路は、前記ルート・ノードから前記所与のリーフ・ノードまでの経路上に、前記所与のアドレス・ブロックのための対応するブランチ・エントリがヌル・インジケータを指定するブランチ・ノードを検出したことに応答して前記トップダウン横断を停止するように構成され、
前記トップダウン横断が、メモリ中の前記所与のアドレス・ブロックへのメモリ・アクセスをトリガするためのメモリ・アクセス要求によってトリガされ、前記メモリ完全性チェック回路は、
前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するかどうかに依存して、前記メモリ・アクセス要求によってアクセスされるように要求された前記所与のアドレス・ブロックを、完全性検証が必要とされる保護されているアドレス・ブロックとして扱うか、または完全性検証が必要とされない保護されていないアドレス・ブロックとして扱うかを決定し、前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するとき、前記メモリ完全性チェック回路は、前記所与のアドレス・ブロックを、完全性検証が必要とされない保護されていないアドレス・ブロックとして扱うことと、
前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するとき、前記所与のアドレス・ブロックについて完全性検証が成功したという指示を戻すことと
のうちの少なくとも1つを実行するように構成された、装置。 - 前記メモリ完全性チェック回路は、所与の前記ブランチ・ノードの親ノード中に指定されている対応する完全性チェック値に基づいて、前記ポインタを含む所与のブランチ・エントリによって指定された情報の完全性を検証するように構成された、
請求項1に記載の装置。 - 前記メモリ完全性チェック回路は、前記完全性ツリーが、メモリ・アドレス空間内のアドレス・ブロックの不連続なグループに対応するリーフ・エントリを指定する1つ又は複数のリーフ・ノードを含むように構成されることをサポートするように構成され、ここで、アドレス・ブロックの前記不連続なグループ間のアドレス・ブロックの少なくとも1つの介在グループは、前記完全性ツリーによって保護されていない、
請求項1又は2に記載の装置。 - 前記メモリ完全性チェック回路は、前記完全性ツリーが、メモリ・アドレス空間内のアドレス・ブロックの2つ以上の不連続なグループに記憶されたノードを含むように構成されることをサポートするように構成され、ここで、アドレス・ブロックの前記不連続なグループ間のアドレス・ブロックの少なくとも1つの介在グループが、
割り振られていないメモリと、
前記完全性ツリー以外のデータを記憶するために割り振られたメモリと
のうちの少なくとも1つを備える、
請求項1から3までのいずれか一項に記載の装置。 - 前記トップダウン横断において、前記ルート・ノードから前記所与のリーフ・ノードまでの経路上の前記完全性ツリーの所与の親子ノード・ペアについて、前記所与の親子ノード・ペアは、所与の親ノードと所与の子ノードとを備え、前記メモリ完全性チェック回路は、
前記所与の親ノードの対応する親エントリによって指定された前記ポインタと前記所与のアドレス・ブロックの前記ターゲット・アドレスに基づいて識別されたオフセットとに基づいて計算されるメモリ・アドレスから前記所与の子ノードの対応する子エントリを読み取る、読み取り動作をトリガすることと、
前記所与の親ノードの前記対応する親エントリ中に指定されている対応する完全性チェック値に基づいて前記対応する子エントリの完全性を検証する、検証動作を実行することと
を行うように構成された、
請求項1に記載の装置。 - メモリ中に記憶されたデータへのアクセスを制御するためのメモリ・アクセス回路と、
複数のノードを備える完全性ツリーを使用して前記メモリ中に記憶されたデータの完全性を検証するためのメモリ完全性チェック回路と
を備える装置であって、前記複数のノードは、
前記メモリ中に記憶されたデータの対応するアドレス・ブロックの検証のための少なくとも1つの完全性タグを備える少なくとも1つのリーフ・エントリを備える少なくとも1つのリーフ・ノードと、
少なくとも1つのブランチ・エントリを備える少なくとも1つのブランチ・ノードであって、
前記ブランチ・ノードの子ノードのアドレスを指定するためのポインタであって、前記子ノードは、リーフ・ノードであるか、又は前記完全性ツリーのさらなるブランチ・ノードである、ポインタと、
前記子ノードの対応するブランチ・エントリ又はリーフ・エントリの検証のための少なくとも1つの完全性チェック値と
を備える少なくとも1つのブランチ・ノードと
を含み、
前記メモリ中に記憶されたデータの所与のアドレス・ブロックのターゲット・アドレスを指定する要求に応答して、前記メモリ完全性チェック回路は、ルート・ノードから前記所与のアドレス・ブロックに対応する前記完全性タグを備える所与のリーフ・ノードまでの前記完全性ツリーのトップダウン横断をトリガするように構成され、
前記トップダウン横断において、前記ルート・ノードから前記所与のリーフ・ノードまでの経路上の前記完全性ツリーの所与の親子ノード・ペアについて、前記所与の親子ノード・ペアは、所与の親ノードと所与の子ノードとを備え、前記メモリ完全性チェック回路は、
前記所与の親ノードの対応する親エントリによって指定された前記ポインタと前記所与のアドレス・ブロックの前記ターゲット・アドレスに基づいて識別されたオフセットとに基づいて計算されるメモリ・アドレスから前記所与の子ノードの対応する子エントリを読み取る、読み取り動作をトリガすることと、
前記所与の親ノードの前記対応する親エントリ中に指定されている対応する完全性チェック値に基づいて前記対応する子エントリの完全性を検証する、検証動作を実行することと
を行うように構成され、
さらに、
前記所与の親ノードが前記完全性ツリーのルート・ノード以外のノードであるとき、
前記メモリ完全性チェック回路は、前記トップダウン横断の前のステップのための前記検証動作を実行することと並行して前記所与の子ノードの前記対応する子エントリを読み取る前記読み取り動作をトリガすべきであり、前記前のステップのための前記検証動作は、前記所与の親ノードの親ノード中に指定されている対応する完全性チェック値に基づいて、前記対応する親エントリの完全性を検証することを備える、装置。 - 前記ヌル・インジケータは、
ヌル値を指定する前記ポインタ、
ヌル値を指定する前記所与のアドレス・ブロックに対応する前記完全性チェック値
のうちの1つを備える、
請求項1に記載の装置。 - 前記トップダウン横断は、前記完全性ツリーの対応するリーフ・ノードへの前記所与のアドレス・ブロックのための完全性タグの追加を要求するタグ追加要求によってトリガされ、前記トップダウン横断は、前記対応するブランチ・エントリが前記ヌル・インジケータを指定する所与のブランチ・ノードを検出するとき、前記メモリ完全性チェック回路は、
前記所与のブランチ・ノードのさらなる子ノードを記憶するためにメモリ・アドレス空間を割り振るようにソフトウェアをトリガすることと、
前記さらなる子ノードのために割り振られるものとして前記ソフトウェアによって指定されたアドレスを示すように前記所与のブランチ・ノードの前記対応するブランチ・エントリの前記ポインタを更新することと
を行うように構成された、
請求項1または7に記載の装置。 - 所与のアドレス・ブロックのためのデータへのアクセスを要求するメモリ・アクセス要求に応答して、前記メモリ・アクセス回路は、
前記所与のアドレス・ブロックに関連する属性に基づいて、前記所与のアドレス・ブロックがアクセスされることを許可されるのかどうかをチェックするために、完全性検証とは別に、アクセス許可チェックを実行することと、
前記アクセス許可チェックが完了する前に、前記メモリ完全性チェック回路に前記所与のアドレス・ブロックのアドレスを指定するヒント信号を与えることと
を行うように構成された、
請求項1から8までのいずれか一項に記載の装置。 - 前記ヒント信号に応答して、前記メモリ・アクセス回路によって実行される前記アクセス許可チェックが完了する前に、前記メモリ完全性チェック回路は、前記完全性ツリーの少なくとも1つのノードの読み取りをトリガするように構成された、
請求項9に記載の装置。 - 前記メモリ完全性チェック回路は、前記完全性ツリーによって保護された前記データを記憶する同じメモリからルート・ノード以外の前記完全性ツリーのノードを読み取るように構成された、
請求項1から10までのいずれか一項に記載の装置。 - 前記メモリ完全性チェック回路は、異なるメモリから、前記完全性ツリーによって保護された前記データを記憶する前記メモリに、ルート・ノード以外の前記完全性ツリーのノードを読み取るように構成された、
請求項1から11までのいずれか一項に記載の装置。 - 前記メモリ完全性チェック回路は、前記メモリ完全性チェック回路と同じ集積回路内に与えられるオンチップ・メモリから、前記完全性ツリーのルート・ノードを読み取るように構成された、
請求項1から12までのいずれか一項に記載の装置。 - 前記ルート・ノードは、
前記完全性ツリーのトップレベルのブランチ・ノードのアドレスを指定するためのポインタであって、前記トップレベルのブランチ・ノードは、前記ルート・ノードの子ノードである、ポインタと、
前記トップレベルのブランチ・ノードの対応するブランチ・エントリの検証のための少なくとも1つの完全性チェック値と
を備える、
請求項13に記載の装置。 - 前記完全性ツリーにレベルを追加することの要求に応答して、前記メモリ完全性チェック回路は、
前記完全性ツリーの新しいトップレベルのブランチ・ノードを、前記新しいトップレベルのブランチ・ノードを記憶するために割り振られたものとして、ソフトウェアによって指定されたアドレスに記憶することであって、前記新しいトップレベルのブランチ・ノードは、前記ポインタと前記ルート・ノードによって前に指定された前記少なくとも1つの完全性チェック値とを含む、記憶することと、
前記新しいトップレベルのブランチ・ノードを記憶するために割り振られた前記アドレスを指定するように前記ルート・ノードの前記ポインタを更新することと、
前記新しいトップレベルのブランチ・ノードのコンテンツに対応するように前記ルート・ノードの前記少なくとも1つの完全性チェック値を更新することと
を行うように構成された、
請求項14に記載の装置。 - 所与のブランチ・ノードの所与のブランチ・エントリ中で、各完全性チェック値は、前記所与のブランチ・エントリの前記ポインタによってポイントされた前記子ノードの前記対応するブランチ・エントリ又はリーフ・エントリの関数として導出される完全性タグを備える、
請求項1から15までのいずれか一項に記載の装置。 - 所与のブランチ・ノードの所与のブランチ・エントリ中で、各完全性チェック値は、前記所与のブランチ・エントリの前記ポインタによってポイントされた前記子ノードの前記対応するブランチ・エントリ又はリーフ・エントリ中に記憶された対応する完全性タグを計算するための少なくとも1つの完全性ナンスであって、前記対応する完全性タグは、前記完全性ナンスと前記子ノードの前記対応するブランチ・エントリ又はリーフ・エントリの他のコンテンツとの関数として導出される、少なくとも1つの完全性ナンスを備える、
請求項1から16までのいずれか一項に記載の装置。 - 前記所与のブランチ・エントリは、前記子ノードのそれぞれのブランチ・エントリ又はリーフ・エントリに対応する完全性ナンスのグループを指定し、共有完全性タグは、完全性ナンスの前記グループと前記所与のブランチ・ノードの親ノード中に指定されている完全性ナンスとの関数として導出される、
請求項17に記載の装置。 - 完全性ナンスの前記グループは、
前記子ノードの各ブランチ・エントリ又はリーフ・エントリのために独立して指定された非分割カウンタのグループと、
分割カウンタのグループであって、各分割カウンタは、前記子ノードの前記それぞれのブランチ・エントリ又はリーフ・エントリ間で共有される主カウンタと、前記子ノードの各ブランチ・エントリ又はリーフ・エントリのために別個に指定される副カウンタとの組み合わせとして表される、分割カウンタのグループと
のうちの1つを備える、
請求項18に記載の装置。 - メモリ中に記憶されたデータへのアクセスを制御することと、
複数のノードを備える完全性ツリーを使用して、前記メモリ中に記憶されたデータの完全性を検証することと
を含む方法であって、前記複数のノードは、
少なくとも1つのリーフ・エントリを備える少なくとも1つのリーフ・ノードであって、各リーフ・エントリは、前記メモリ中に記憶されたデータの対応するアドレス・ブロックの検証のための少なくとも1つの完全性タグを備える、少なくとも1つのリーフ・ノードと、
少なくとも1つのブランチ・エントリを備える少なくとも1つのブランチ・ノードであって、各ブランチ・エントリは、
前記ブランチ・ノードの子ノードのアドレスを指定するためのポインタであって、前記子ノードは、リーフ・ノードであるか、又は前記完全性ツリーのさらなるブランチ・ノードである、ポインタと、
前記子ノードの対応するブランチ・エントリ又はリーフ・エントリの検証のための少なくとも1つの完全性チェック値と
を備える、少なくとも1つのブランチ・ノードと を含み、
前記メモリ中に記憶されたデータの所与のアドレス・ブロックのターゲット・アドレスを指定する要求に応答して、ルート・ノードから前記所与のアドレス・ブロックに対応する前記完全性タグを備える所与のリーフ・ノードまでの前記完全性ツリーのトップダウン横断をトリガし、
前記ルート・ノードから前記所与のリーフ・ノードまでの経路上に、前記所与のアドレス・ブロックのための対応するブランチ・エントリがヌル・インジケータを指定するブランチ・ノードを検出したことに応答して前記トップダウン横断を停止し、
前記トップダウン横断が、メモリ中の前記所与のアドレス・ブロックへのメモリ・アクセスをトリガするためのメモリ・アクセス要求によってトリガされ、
前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するかどうかに依存して、前記メモリ・アクセス要求によってアクセスされるように要求された前記所与のアドレス・ブロックを、完全性検証が必要とされる保護されているアドレス・ブロックとして扱うか、または完全性検証が必要とされない保護されていないアドレス・ブロックとして扱うかを決定し、前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するとき、前記所与のアドレス・ブロックを、完全性検証が必要とされない保護されていないアドレス・ブロックとして扱うことと、
前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するとき、前記所与のアドレス・ブロックについて完全性検証が成功したという指示を戻すことと
のうちの少なくとも1つを実行する、方法。 - 請求項20に記載の方法を実行するようにデータ処理装置を制御するための
コンピュータ・プログラム。 - 命令の実行のための命令実行環境を与えるようにホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
前記命令実行環境のシミュレートされたアドレス空間へのアクセスを制御するためのメモリ・アクセス・プログラム論理と、
複数のノードを備える完全性ツリーを使用して前記シミュレートされたアドレス空間内のアドレスに記憶されたデータの完全性を検証するためのメモリ完全性チェック・プログラム論理とを備え、前記複数のノードは、
メモリ中に記憶されたデータの対応するアドレス・ブロックの検証のための少なくとも1つの完全性タグを備える少なくとも1つのリーフ・エントリを備える少なくとも1つのリーフ・ノードと、
少なくとも1つのブランチ・エントリを備える少なくとも1つのブランチ・ノードであって、
前記ブランチ・ノードの子ノードのアドレスを指定するためのポインタであって、前記子ノードは、リーフ・ノードであるか、又は前記完全性ツリーのさらなるブランチ・ノードである、ポインタと、
前記子ノードの対応するブランチ・エントリ又はリーフ・エントリの検証のための少なくとも1つの完全性チェック値と
を備える少なくとも1つのブランチ・ノードと
を含み、
前記シミュレートされたアドレス空間中に記憶されたデータの所与のアドレス・ブロックのターゲット・アドレスを指定する要求に応答して、前記メモリ完全性チェック・プログラム論理は、ルート・ノードから前記所与のアドレス・ブロックに対応する前記完全性タグを備える所与のリーフ・ノードまでの前記完全性ツリーのトップダウン横断をトリガするように構成され、
前記メモリ完全性チェック・プログラム論理は、前記ルート・ノードから前記所与のリーフ・ノードまでの経路上に、前記所与のアドレス・ブロックのための対応するブランチ・エントリがヌル・インジケータを指定するブランチ・ノードを検出したことに応答して前記トップダウン横断を停止するように構成され、
前記トップダウン横断が、前記シミュレートされたアドレス空間中の前記所与のアドレス・ブロックへのメモリ・アクセスをトリガするためのメモリ・アクセス要求によってトリガされ、前記メモリ完全性チェック・プログラム論理は、
前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するかどうかに依存して、前記メモリ・アクセス要求によってアクセスされるように要求された前記所与のアドレス・ブロックを、完全性検証が必要とされる保護されているアドレス・ブロックとして扱うか、または完全性検証が必要とされない保護されていないアドレス・ブロックとして扱うかを決定し、前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するとき、前記メモリ完全性チェック・プログラム論理は、前記所与のアドレス・ブロックを、完全性検証が必要とされない保護されていないアドレス・ブロックとして扱うことと、
前記トップダウン横断が、前記対応するブランチ・エントリが前記ヌル・インジケータを指定するブランチ・ノードを検出するとき、前記所与のアドレス・ブロックについて完全性検証が成功したという指示を戻すことと
のうちの少なくとも1つを実行するように構成された、コンピュータ・プログラム。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB1820597.1 | 2018-12-18 | ||
| GB1820597.1A GB2579849B (en) | 2018-12-18 | 2018-12-18 | Integrity tree for memory integrity checking |
| PCT/GB2019/052968 WO2020128413A1 (en) | 2018-12-18 | 2019-10-17 | Integrity tree for memory integrity checking |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2022512051A JP2022512051A (ja) | 2022-02-02 |
| JP7464586B2 true JP7464586B2 (ja) | 2024-04-09 |
Family
ID=65146993
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021514545A Active JP7464586B2 (ja) | 2018-12-18 | 2019-10-17 | メモリ完全性チェックのための完全性ツリー |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US11775177B2 (ja) |
| EP (1) | EP3899774B1 (ja) |
| JP (1) | JP7464586B2 (ja) |
| KR (1) | KR102820165B1 (ja) |
| CN (1) | CN112639789B (ja) |
| GB (1) | GB2579849B (ja) |
| IL (1) | IL280846A (ja) |
| WO (1) | WO2020128413A1 (ja) |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7428239B2 (ja) * | 2020-04-23 | 2024-02-06 | 日本電気株式会社 | メモリ処理装置、メモリ検証装置、メモリ更新装置、メモリ保護システム、方法及びプログラム |
| GB2596585B (en) * | 2020-07-03 | 2022-09-07 | Advanced Risc Mach Ltd | Integrity tree for memory security |
| WO2022006880A1 (zh) * | 2020-07-10 | 2022-01-13 | 华为技术有限公司 | 数据处理方法、设备与存储介质 |
| CN112035890B (zh) * | 2020-09-04 | 2022-08-05 | 北京邮电大学 | 一种数据完整性验证方法及装置 |
| EP4002170A1 (en) * | 2020-11-18 | 2022-05-25 | Thales DIS France SA | Execution protection using data colouring |
| US11687592B2 (en) * | 2021-05-27 | 2023-06-27 | Western Digital Technologies, Inc. | Storage of tree data structures |
| US11636153B2 (en) | 2021-05-27 | 2023-04-25 | Western Digital Technologies, Inc. | Storage of tree data structures |
| US20240095404A1 (en) * | 2022-09-15 | 2024-03-21 | Advanced Micro Devices, Inc | Offset Data Integrity Checks for Latency Reduction |
| US12579320B2 (en) * | 2022-11-03 | 2026-03-17 | Cryptography Research, Inc | Split counters with dynamic epoch tracking for cryptographic protection of secure data |
| KR20240071464A (ko) | 2022-11-15 | 2024-05-23 | 에스케이하이닉스 주식회사 | 머클 트리 기반 자격증명을 제공하는 컴퓨팅 장치, 스토리지 장치 및 스토리지 장치의 동작 방법 |
| CN115758477B (zh) * | 2022-11-18 | 2025-04-18 | 海南大学 | 一种新型的数据完整性验证方法 |
| CN117521167B (zh) * | 2023-11-15 | 2025-03-25 | 上海交通大学 | 高性能异构安全内存 |
| US12346299B1 (en) * | 2024-05-28 | 2025-07-01 | Workday, Inc. | Changing nodes for conjoined tree data structure |
| US12493600B1 (en) | 2024-05-28 | 2025-12-09 | Workday, Inc. | Rearranging nodes for conjoined tree data structure |
| WO2025248702A1 (ja) * | 2024-05-30 | 2025-12-04 | 三菱電機株式会社 | 情報処理装置、および、情報処理方法 |
| WO2026022977A1 (en) * | 2024-07-24 | 2026-01-29 | Nec Corporation | Data handling apparatus, data handling method, and non-transitory computer-readable medium |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050050342A1 (en) | 2003-08-13 | 2005-03-03 | International Business Machines Corporation | Secure storage utility |
| JP2009003855A (ja) | 2007-06-25 | 2009-01-08 | Panasonic Corp | 情報セキュリティ装置およびカウンタ制御方法 |
| JP2011070607A (ja) | 2009-09-28 | 2011-04-07 | Brother Industries Ltd | 情報生成装置、情報生成プログラム、情報生成方法、ノード装置、ノードプログラム及び検索方法 |
| US20110283085A1 (en) | 2010-05-17 | 2011-11-17 | Oracle International Corporation | System and method for end-to-end data integrity in a network file system |
| JP2012530983A (ja) | 2009-06-26 | 2012-12-06 | トラステッド ロジック | データ検証方法 |
| JP2014524688A (ja) | 2011-08-02 | 2014-09-22 | カビウム・インコーポレーテッド | ルックアップ・フロントエンド・パケット出力プロセッサ |
| JP2017535998A (ja) | 2014-09-26 | 2017-11-30 | クアルコム,インコーポレイテッド | オンデマンドサービングネットワーク認証 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7451310B2 (en) * | 2002-12-02 | 2008-11-11 | International Business Machines Corporation | Parallelizable authentication tree for random access storage |
| US9104618B2 (en) * | 2008-12-18 | 2015-08-11 | Sandisk Technologies Inc. | Managing access to an address range in a storage device |
| CN101853190B (zh) * | 2010-06-04 | 2012-07-04 | 华中科技大学 | 一种适用于嵌入式处理器的数据完整性验证方法 |
| US8819455B2 (en) * | 2012-10-05 | 2014-08-26 | Intel Corporation | Parallelized counter tree walk for low overhead memory replay protection |
| CN105069379B (zh) * | 2015-07-29 | 2017-11-21 | 哈尔滨工程大学 | 一种基于写计数器的存储器完整性保护方法 |
| US10713210B2 (en) * | 2015-10-13 | 2020-07-14 | Microsoft Technology Licensing, Llc | Distributed self-directed lock-free RDMA-based B-tree key-value manager |
-
2018
- 2018-12-18 GB GB1820597.1A patent/GB2579849B/en active Active
-
2019
- 2019-10-17 KR KR1020217005763A patent/KR102820165B1/ko active Active
- 2019-10-17 US US17/269,919 patent/US11775177B2/en active Active
- 2019-10-17 WO PCT/GB2019/052968 patent/WO2020128413A1/en not_active Ceased
- 2019-10-17 JP JP2021514545A patent/JP7464586B2/ja active Active
- 2019-10-17 EP EP19791346.0A patent/EP3899774B1/en active Active
- 2019-10-17 CN CN201980057094.7A patent/CN112639789B/zh active Active
-
2021
- 2021-02-14 IL IL280846A patent/IL280846A/en unknown
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050050342A1 (en) | 2003-08-13 | 2005-03-03 | International Business Machines Corporation | Secure storage utility |
| JP2009003855A (ja) | 2007-06-25 | 2009-01-08 | Panasonic Corp | 情報セキュリティ装置およびカウンタ制御方法 |
| JP2012530983A (ja) | 2009-06-26 | 2012-12-06 | トラステッド ロジック | データ検証方法 |
| JP2011070607A (ja) | 2009-09-28 | 2011-04-07 | Brother Industries Ltd | 情報生成装置、情報生成プログラム、情報生成方法、ノード装置、ノードプログラム及び検索方法 |
| US20110283085A1 (en) | 2010-05-17 | 2011-11-17 | Oracle International Corporation | System and method for end-to-end data integrity in a network file system |
| JP2014524688A (ja) | 2011-08-02 | 2014-09-22 | カビウム・インコーポレーテッド | ルックアップ・フロントエンド・パケット出力プロセッサ |
| JP2017535998A (ja) | 2014-09-26 | 2017-11-30 | クアルコム,インコーポレイテッド | オンデマンドサービングネットワーク認証 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN112639789B (zh) | 2024-12-13 |
| JP2022512051A (ja) | 2022-02-02 |
| IL280846A (en) | 2021-04-29 |
| EP3899774B1 (en) | 2025-05-14 |
| GB201820597D0 (en) | 2019-01-30 |
| KR20210103455A (ko) | 2021-08-23 |
| US11775177B2 (en) | 2023-10-03 |
| GB2579849B (en) | 2021-08-25 |
| KR102820165B1 (ko) | 2025-06-13 |
| GB2579849A (en) | 2020-07-08 |
| WO2020128413A1 (en) | 2020-06-25 |
| EP3899774A1 (en) | 2021-10-27 |
| CN112639789A (zh) | 2021-04-09 |
| US20210311640A1 (en) | 2021-10-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7464586B2 (ja) | メモリ完全性チェックのための完全性ツリー | |
| US10325118B2 (en) | Cryptographic cache lines for a trusted execution environment | |
| KR102107711B1 (ko) | 처리 시스템에서의 직접 메모리 액세스 인가 | |
| US20210218547A1 (en) | Encoded stack pointers | |
| US20200257827A1 (en) | Memory write for ownership access in a core | |
| BR112021010475A2 (pt) | Defesa contra análise especulativa de canal lateral de um sistema de computador | |
| US7124170B1 (en) | Secure processing unit systems and methods | |
| JP7096323B2 (ja) | メモリセキュリティのためのカウンタ整合性ツリー | |
| US9276750B2 (en) | Secure processing environment measurement and attestation | |
| US20180011802A1 (en) | Selective memory encryption | |
| CN110447032A (zh) | 管理程序与虚拟机之间的存储器页转换监测 | |
| TWI608378B (zh) | 裝置與安全處理環境之間的介面 | |
| KR101653193B1 (ko) | 보안 처리 환경으로부터의 기능의 오프로딩 | |
| US20240078323A1 (en) | Counter tree | |
| US20240080193A1 (en) | Counter integrity tree | |
| Taassori | Low Overhead Secure Systems | |
| WO2025260658A1 (zh) | 密钥保护方法、密码运算方法、密钥保护装置、密码运算装置、处理器、芯片及电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221007 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231018 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231130 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240215 |
|
| 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: 20240305 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240328 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7464586 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |