(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-24
(54)【発明の名称】メモリアクセス分析
(51)【国際特許分類】
G06F 21/79 20130101AFI20241017BHJP
G06F 12/14 20060101ALI20241017BHJP
【FI】
G06F21/79
G06F12/14
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024515392
(86)(22)【出願日】2022-08-09
(85)【翻訳文提出日】2024-03-08
(86)【国際出願番号】 GB2022052067
(87)【国際公開番号】W WO2023047077
(87)【国際公開日】2023-03-30
(32)【優先日】2021-09-22
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ディ グレゴリオ、ロレンツォ
【テーマコード(参考)】
5B017
【Fターム(参考)】
5B017AA07
5B017BA01
5B017BB10
5B017CA01
(57)【要約】
メモリシステムにアクセス要求を発行するように構成されたメモリアクセス回路と、アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定するように構成された推定回路と、統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用するように構成された減衰回路と、を備えているデータ処理装置が提供される。
【特許請求の範囲】
【請求項1】
データ処理装置であって、
メモリシステムにアクセス要求を発行するように構成されたメモリアクセス回路と、
前記アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定するように構成された推定回路と、
前記統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用するように構成された減衰回路と、を備えたデータ処理装置。
【請求項2】
前記統計的濃度カウントに応答して前記アクセス要求を制限するように構成された制限回路を備えている、
請求項1に記載のデータ処理装置。
【請求項3】
前記制限回路が、前記統計的濃度カウントに応答して、前記アクセス要求が前記メモリシステムに発行されるレートを前記メモリ行アドレスのうちの少なくともいくつかに制限するように構成されている、
請求項1又は2に記載のデータ処理装置。
【請求項4】
前記制限回路が、前記統計的濃度カウントの低下に応答して前記アクセス要求を制限するように構成されている、
請求項2又は3に記載のデータ処理装置。
【請求項5】
前記推定回路が、前記メモリ行アドレスにおける最長の見られるパターンを使用して、前記メモリ行アドレス上の前記統計的濃度カウントを推定するように構成されている、
請求項1~4のいずれか一項に記載のデータ処理装置。
【請求項6】
分離回路が、アクセス要求を複数のサブストリームに分離し、前記サブストリームの各々についての統計的濃度カウントを推定することによって前記メモリ行アドレス上の前記統計的濃度カウントを推定する、
請求項1~5のいずれか一項に記載のデータ処理装置。
【請求項7】
前記メモリ行アドレスの前記統計的濃度カウントが、前記サブストリームの各々についての前記統計的濃度カウントに対して中心バイアス関数を実行することによって計算される、
請求項6に記載のデータ処理装置。
【請求項8】
前記推定回路に提供される前に前記メモリ行アドレスの各々をハッシュするハッシュ回路を備えている、
請求項6又は7に記載のデータ処理装置。
【請求項9】
前記アクセス要求が、ハッシュされた後の前記メモリ行アドレスの所定のビットに基づいて前記複数のサブストリームに分離される、
請求項8に記載のデータ処理装置。
【請求項10】
前記ハッシュが暗号ハッシュである、
請求項8又は9に記載のデータ処理装置。
【請求項11】
前記推定回路が、前記サブストリーム内の各サブストリームについて、そのサブストリームの前記メモリ行アドレス内の最長の見られるパターンを使用することによって、そのサブストリームの前記統計的濃度カウントを推定するように構成される、
請求項5~10のいずれか一項に記載のデータ処理装置。
【請求項12】
前記推定回路が、前記サブストリームの各サブストリームに関連して、そのサブストリームに関連付けられた前記アクセス要求のうちの次に直近のアクセス要求が見られた時間を記憶する記憶回路を備え、
前記減衰回路が、前記サブストリームの各サブストリームについての前記統計的濃度カウントを、そのサブストリームに属する前記アクセス要求のうちの連続するアクセス要求の間の時間に基づいて調整するように構成されている、
請求項5~11のいずれか一項に記載のデータ処理装置。
【請求項13】
前記指数関数的な時間ベースの減衰が、時間成分で累乗したものに上げられた定数に等しく、
前記時間成分が、そのサブストリームに属するアクセス要求のうちの連続するアクセス要求の間の時間に基づいている、
請求項12に記載のデータ処理装置。
【請求項14】
前記定数が、1より小さく、0より大きい、
請求項13に記載のデータ処理装置。
【請求項15】
前記減衰回路が、前記最新の推定と前の推定との間の差が正である場合、サブストリームの前記統計的濃度カウントの最新の推定への前記指数関数的な時間ベースの減衰の適用を禁止し、前記差に前記指数関数的な時間ベースの減衰を適用するように構成されている、
請求項6~14のいずれか一項に記載のデータ処理装置。
【請求項16】
前記減衰回路が、前記統計的濃度カウントが低下するとき、前記統計的濃度カウントの推定中に前記指数関数的な時間ベースの減衰の適用を禁止するように構成されている、
請求項1~15のいずれか一項に記載のデータ処理装置。
【請求項17】
前記減衰回路が、前記指数関数的な時間ベースの減衰を前記統計的濃度カウントに複数回適用するように構成されている、
請求項1~16のいずれか一項に記載のデータ処理装置。
【請求項18】
前記メモリシステムが、各々が単一ビットを記憶する複数のトレンチキャパシタを使用するように構成されている、
請求項1~17のいずれか一項に記載のデータ処理装置。
【請求項19】
データ処理方法であって、
メモリシステムにアクセス要求を発行することと、
前記アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定することと、
前記統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用することと、を含む、データ処理方法。
【請求項20】
データ処理装置の製造のためのコンピュータ可読コードを記憶するためのコンピュータ可読媒体であって、
メモリシステムにアクセス要求を発行するように構成されたメモリアクセス回路と、
前記アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定するように構成された推定回路と、
前記統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用するように構成された減衰回路と、を備えている、データ処理装置の製造のためのコンピュータ可読コードを記憶するためのコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理及び特定のメモリアクセスシステムに関する。
【0002】
ロウハンマー攻撃では、攻撃者は、隣接する行内のメモリセルの記憶されたビットを反転させようとして、物理メモリユニットのセルの所与のメモリ行に繰り返しアクセスする(又は干渉する)。反転されたビットが敏感である場合、これは、望ましくない権限昇格につながる可能性がある。回避アクションを取ることができるように、そのようなメモリアクセスパターンが検出可能であることが望ましい。しかしながら、そのようなアクセスパターンを偽装することが可能であり得、これは、いかなる回避アクションも発生しない可能性があることを意味する。
【0003】
第1の例示的な構成から見ると、メモリシステムにアクセス要求を発行するように構成されたメモリアクセス回路と、アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定するように構成された推定回路と、統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用するように構成された減衰回路と、を備えているデータ処理装置が提供される。
【0004】
第2の例示的な構成から見ると、メモリシステムにアクセス要求を発行することと、アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定することと、統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用することと、を含む、データ処理方法が提供される。
【0005】
第3の例示的な構成から見ると、データ処理装置の製造のためのコンピュータ可読コードを記憶するためのコンピュータ可読媒体であって、メモリシステムにアクセス要求を発行するように構成されたメモリアクセス回路と、アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定するように構成された推定回路と、統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用するように構成された減衰回路と、を備えているデータ処理装置が提供される。
【図面の簡単な説明】
【0006】
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技術を更に説明する。
【
図1】いくつかのトレンチキャパシタを使用して実施されるメモリシステムの例を示す図である。
【
図4】データ処理方法を示すフローチャートを示す図である。
【
図5】
図4のフローチャートによって示されるプロセスを実施するアルゴリズムのソースコード(pythonで書かれている)を示す図である。
【0007】
添付図面を参照して実施形態を論じる前に、実施形態及び関連する利点について以下に説明する。
【0008】
1つの例示的な構成によれば、メモリシステムにアクセス要求を発行するように構成されたメモリアクセス回路と、アクセス要求によってアクセスされるメモリ行アドレス上の統計的濃度カウントを推定するように構成された推定回路と、統計的濃度カウントの推定中に指数関数的な時間ベースの減衰を適用するように構成された減衰回路と、を備えている、データ処理装置が提供される。
【0009】
ロウハンマー攻撃は、ある期間にわたって行われる一意の行(すなわち、メモリ行アドレス)へのアクセスの数を考慮することによって理論的に検出することができる。その期間内に、他の行と比較して多数のアクセスが同じメモリ行に対して行われる場合、ロウハンマー攻撃が実行されていると結論付けることができる。しかしながら、実際には、各一意の行アドレスへのアクセス数をカウントすることは、メモリ要件に関して法外に高価である。このようなシステムは、セルの個々のメモリ行ごとにデジタル又はアナログの形式で多数のビットの情報を記憶する必要があるように思われ、すなわち、システムに記憶することができる全ての行ごとに、その行へのアクセス数を計算するために更にいくつかのビットが必要になる。したがって、そのようなアプローチは、最も良く見たとしても非実用的である。代替手法は、各アクセス要求を個々に実際に記録することなく濃度を推定することである。しかしながら、単に濃度を知っているだけでは、このことが時間成分を見落とすため、十分ではない。ロウハンマー攻撃は、短い時間間隔(例えば、基礎となるメモリのリフレッシュ期間未満)における特定のメモリ行への頻繁なアクセスに依存する。スライディングウィンドウを使用することによって(例えば、最後のxミリ秒内に行われたアクセス要求のみを考慮することによって)この問題を解決することを勧めている場合がある。しかしながら、ロウハンマーが、所与のスライディングウィンドウ内で変化し、十分に識別されない可能性があるアクセスの頻度に依存するので、そのような技術は実際には有効でない可能性がある。更に、ウィンドウがスライドする場合、いくつかの個々のアクセスがいつ行われたかを追跡することが必要になり、したがって、記憶及び処理の要件が大幅に増大する。本技術は、指数関数的な時間ベースの減少又は減衰を適用することによって、これらの制限を克服する。すなわち、推定された統計的濃度は、特定のアクセスがどれだけ離れているかに従って調整される。アクセスが遠く離れている場合、それらの統計的濃度推定は、アクセスが互いに近く離れている場合よりも低く重み付けされる。結果として、ロウハンマー攻撃は、スライディングウィンドウを用いて可能であるよりも良好に測定することができ、そのような攻撃を検出するための記憶の要件を低減することもできる。
【0010】
いくつかの例では、データ処理装置は、統計的濃度カウントに応答してアクセス要求を制限するように構成された制限回路を備える。推定された統計的濃度カウントに基づいて、行アクセスの頻度をロウハンマー攻撃に関するクリティカルな頻度よりも低くなるように低減するために、アクセス要求のパターンに制限を設けることができる。その結果、ロウハンマー攻撃が行われている可能性があることを示すアクセスパターンに基づいて、そのような攻撃の有効性を低減することができる。
【0011】
いくつかの例では、制限回路は、アクセス要求がメモリシステムに発行されるレートを、統計的濃度カウントに応答してメモリ行アドレスのうちの少なくともいくつかに制限するように構成される。この結果、短い時間内に行われるアクセスが少なくなり、ビット反転が発生する確率が減少する。
【0012】
いくつかの例では、制限回路は、統計的濃度カウントの低下に応答してアクセス要求を制限するように構成されている。統計的濃度カウントの低下は、所定の値への低下、又はある量だけの低下(特定の量だけの低下又はパーセンテージ量だけの低下のいずれか)であり得る。統計的濃度カウントの推定の低下は、アクセスされている一意の行アドレスの数の減少を示し、したがって、このことは、ロウハンマー攻撃が発生していることを示すことができる。この理由は、少数のメモリ行にわたる高いデータスループットがこれらの行の少なくともいくつかへの高い頻度のアクセスを暗示するためである。
【0013】
いくつかの例では、推定回路は、メモリ行アドレスにおける最長の見られるパターンを使用して、メモリ行アドレス上の統計的濃度カウントを推定するように構成されている。パターンは、アドレス上の連続する数の最上位ゼロとすることができる。例えば、第1のアクセス要求が行アドレス1000(例えば、アドレス8)に対するものであり、第2のアクセス要求が行アドレス1100(例えば、アドレス12)に対するものである場合、見られた連続する最上位ゼロ(すなわち、ビッグエンディアン表現におけるサフィックス付きゼロ)の最大数は3である。従って、アクセスの長いストリームに対して、見られた連続する最上位ゼロの最大数は、行アドレスの全てを記憶するのにちょうど十分であり、したがって、別個の可能なアドレスの最大数は23=8であると仮定することができる。この推定は、粗い近似であり、したがって、高い分散を有することができる(ただし、これは、以下で説明する技術によって低減することができる)。これらの例では、見られる連続する最上位ゼロの数に対するデフォルト開始値は0であり得る。いくつかの実施形態では(以下で説明されるように)、行アドレスは、連続する最上位先行ゼロの数がカウントされる前にハッシュされ得る。
【0014】
いくつかの例では、データ処理装置は、アクセス要求を複数のサブストリームに分離し、サブストリームの各々についての統計的濃度カウントを推定することによって、メモリ行アドレス上の統計的濃度カウントを推定する分離回路を備える。アクセス要求を複数のサブストリームに分離することによって、いくつかの「サンプルビン」を考慮し、各ストリーム(又はビン)の統計的濃度カウントを推定し、次いで、全体的な統計的濃度カウントを判定するためにこれらの値を組み合わせることによって、統計的濃度カウントを推定することが可能である。
【0015】
サブストリームの各々についての統計的濃度カウントを使用することによってメモリ行アドレス上で統計的濃度カウントを取るいくつかの方法があるが、いくつかの例では、これは、サブストリームの各々についての統計的濃度カウントに対して中心バイアス関数を実行することによって達成される。中心バイアス関数は、調和平均などの正規化関数又は平均化関数とすることができる。例えば、4つのサブストリームの各々の統計的濃度カウントがA、B、C、Dとして計算される場合、メモリアドレス上の全体の統計的濃度カウントは、((A-1+B-1+C-1+D-1)/4)-1として計算することができる。調和平均は、値のセットのうちのより小さい値に向かう傾向があるという点で悲観的な平均と考えることができる。したがって、大きな外れ値には、より少ない重みが与えられる。
【0016】
いくつかの例では、データ処理装置は、推定回路に提供される前にメモリ行アドレスの各々をハッシュするハッシュ回路を備える。したがって、推定回路は、その(生の)元のアドレスではなく、ハッシュされた行アドレスの少なくとも一部に対してその推定を実行する。ハッシュアルゴリズムを使用することによって、同じ入力行アドレスが同じ出力行アドレスを提供し、それによって、同じメモリ行アドレスへの反復アクセスが識別されることを可能にする。しかしながら、行アドレスのグループ間の関係は別の方法で「ランダム化」され、それにより、隣接する入力行アドレスが分散された出力行アドレスを生成するようになっている。これにより、別様に過度に統計的に相関させられる場合がある正規の行アクセスから、推定された統計的濃度カウントをより良好に識別することが可能になる。例えば、プログラムが整数のアレイにわたって反復する場合、多数のメモリ行アドレスが高度に局所化される。これは、高度に局所化された行アドレスが同様の数の先行ゼロを有する可能性がより高いので、先行ゼロを使用して動作する推定された統計的濃度カウントに干渉する可能性がある。しかしながら、入力アドレスがハッシュされる場合、結果として生じるハッシュは、多くのスプレッダ分布を有する。その結果、推定された統計的濃度カウントは、真の濃度カウントに似ている可能性が高い。
【0017】
アクセス要求をサブストリームに分離する多くの方法もある。しかしながら、いくつかの例では、アクセス要求は、ハッシュされた後にメモリ行アドレスの所定のビットに基づいて複数のサブストリームに分離される。このようなハッシュアルゴリズムの使用は、サブストリーム(例えば、ビン)間で行アクセスを等しく分配することが期待され得る。いくつかのサブストリームが0の統計的濃度を有する場合、このことが、少数の行のみがアクセスされていることを示すので、アクセス要求は疑わしいと考えられる可能性がある。
【0018】
いくつかの例では、ハッシュは暗号ハッシュである。このようにして、(行への)アクセス要求の比較的均等な分配がサブストリーム間で生じるはずである。場合によっては、ハッシュを生成するために使用されるハッシュアルゴリズムは、アバランシェ効果(バタフライ効果)を生成し、場合によっては、ハッシュアルゴリズムは、厳密なアバランシェ基準を満たす。アバランシェ効果は、ハッシュ関数への入力の小さな部分(例えば、単一ビット)の変化であっても、結果として得られるハッシュに多数の差が生じることを意味する。この場合も、これを使用して、サブストリームにわたるアドレスの良好な分布を提供することができる。
【0019】
いくつかの例では、推定回路は、サブストリーム内の各サブストリームについて、そのサブストリームのメモリ行アドレス内の最長の見られるパターンを使用することによって、そのサブストリームの統計的濃度カウントを推定するように構成されている。例えば、パターンは、そのサブストリームに属するメモリ行アドレスにおける連続する最上位ゼロの最大数であってもよい。サブストリーム内の最長の見られるパターンを使用して、そのサブストリーム内でアクセスされる一意の行アドレスの数の分散が大きい妥当な推定を提供することができる。各「ランダム」サブストリームについてそのような値を計算することにより、行メモリアクセスの最長の見られる一意のパターンのいくつかのランダムサンプルをとり、これを使用して、特定のバイアスがあるかどうかを判定することが可能である。例えば、特定のサブストリームについて最長の見られる一意のパターンが0(デフォルトの開始値である)である場合、そのサブストリームにおいてアクセスは見られていない。これは単に偶然の一致であり得るが、いくつかのサブストリームが0の推定統計濃度を有する場合、これは、多数のアクセスが少数のアドレスに対して行われていることを示唆し(それによって、あるサブストリームに対してアクセスが見られないようにする)、これはロウハンマー攻撃を示す。
【0020】
いくつかの例では、推定回路は、サブストリームの各サブストリームに関連して、そのサブストリームに関連付けられたアクセス要求のうちの次に直近のアクセス要求が見られた時間を記憶する記憶回路を備え、減衰回路は、そのサブストリームに属するアクセス要求のうちの連続するアクセス要求間の時間に基づいて、行メモリアドレスサブストリームの各サブストリームの統計的濃度カウントを調整するように構成される。このようにして、同じサブストリームに属するアクセス間に長い時間が経過する場合、統計的濃度カウントが低減される。これは、特定のサブストリームにおいてかなり前に発生したアクセスはほとんど関心がなく、高い頻度での干渉の一部ではないためである。そのようなアクセスは、ロウハンマー攻撃が発生しているか否かを判定する際に重要な考慮を与えられるべきではない。
【0021】
いくつかの例では、指数関数的な時間ベースの減衰は、時間成分で累乗したものに上げられた定数に等しく、時間成分は、そのサブストリームに属するアクセス要求のうちの連続するアクセス要求の間の時間に基づいている。したがって、サブストリームの連続するアクセス間の時間が増加するにつれて、差は増加し、推定された統計的濃度カウントは減少する。時間成分は、経時的な幾何学的減少係数と呼ぶこともできる。
【0022】
いくつかの例では、定数は1より小さく、0より大きい。その結果、指数関数的な時間ベースの減衰は減衰効果を有する。
【0023】
いくつかの例では、減衰回路は、最新の推定値と前の推定値との間の差が正である場合、サブストリームの統計的濃度カウントの最新の推定値への指数関数的な時間ベースの減衰の適用を禁止し、差に指数関数的な時間ベースの減衰を適用するように構成されている。大きい濃度が以前に見られたときに小さい濃度が見られた場合、大きい濃度は過去であったので、大きい濃度は減少される。現在の濃度は、現在推定されているので、減少(減衰)なしで考慮される。例えば、時間4000000において、zzz00000が見られるので、25=32の行の活性化を推定し、長さ5を記録する。時間4000100において、zzzzzz00が見られるので、ここでは22=4の行の活性化を推定する。我々は、100時間単位前に32個を有していたので、差32-4=28を減少係数0.99によって減少し、28×(0.99100)=10.248を得て、新しい推定は10.248+4=14.248である。時間4000100において、代わりにxx000000を得た場合、推定は26=64であり、前の推定25=32に対する差は+4ではなく-32であり、したがって負である。その場合、長さ6のみが更新されたことになる。なぜなら、これは、現在見られている濃度に対応するからである。
【0024】
いくつかの例では、減衰回路は、統計的濃度カウントが低下するとき、統計的濃度カウントの推定中に指数関数的な時間ベースの減衰の適用を禁止するように構成されている。したがって、減衰は、統計的濃度が減少しているように見える状況に限定されるが、これは、ロウハンマー攻撃が発生している可能性がある状況だからである。統計的濃度が増加しているように見える(前よりも連続した最上位ゼロが見られる)場合、新しいアドレスがアクセスされているので、ロウハンマー攻撃が進行している可能性は低い。
【0025】
いくつかの例では、減衰回路は、指数関数的な時間ベースの減衰を統計的濃度カウントに複数回適用するように構成されている。このようにして、統計的濃度カウントのために特定のデータが記憶されていても、プロセスは、減衰が以前に適用されたか否かに関して「メモリレス」と考えることができる。実際、アドレスの連続する最上位ゼロの数がAからEに減少する場合、本技術は、これが中間値B、C、Dを介して行われるかどうか、又は連続する最上位ゼロの数がAからEに直接進むかどうかによって影響を受けない。
【0026】
いくつかの例では、メモリシステムは、各々が単一ビットを記憶する複数のトレンチキャパシタを使用するように構成されている。そのようなメモリシステムは、1つのビットを記憶する1つの(干渉された)トレンチキャパシタと、別のビットを記憶する隣接するトレンチキャパシタとの間の電子の漏出に起因するロウハンマー攻撃を受けやすい可能性がある。十分な漏出が生じた場合、トレンチキャパシタ内の電子は、リフレッシュプロセス中にトレンチキャパシタが誤った値で「リフレッシュ」されるレベルまで上昇する。
【0027】
ここで、特定の実施形態を、図面を参照して説明する。
【0028】
図1は、いくつかのトレンチキャパシタ300、310、320、330、340(など)を使用して実施されるメモリシステム160の例を示す図である。各トレンチキャパシタは、電子を格納する(又は格納しない)ことによって単一ビットを格納する役割を果たす。時間が経つにつれて、トレンチキャパシタ300、310、320、330、340から電子が漏出する。したがって、「リフレッシュ」は周期ごとに実行される。ここでは、キャパシタ上の電荷が特定の閾値を上回るか下回るかについて判定が行われ、これは、キャパシタを接地にドレインバックする(例えば、「0」の記憶を示すため)か、又はキャパシタ上の電荷を「全容量」に復元する(例えば、「1」の記憶を示すため)ために使用される。このようなシステム160は、いわゆる「ロウハンマー」攻撃を受けやすい。ここで、特定のセル/キャパシタ310へのアクセスに関連する回路は、そのキャパシタ310から隣接するキャパシタ300、320へ電子を漏出させるために、短期間にわたって繰り返し活性化される。十分な漏出が生じた場合、隣接するキャパシタに蓄積された全電荷が閾値を超え、次のリフレッシュ周期において、キャパシタが充電され、それによって異なる値(例えば、「0」ではなく「1」)が蓄積される。変更された値を有するキャパシタ320、300が、許可などの機密データを記憶している場合、これは、権限昇格又は他の機密データへのアクセスをもたらす場合がある。トレンチキャパシタの行350は、メモリアドレスに対応してもよく、例えば、その行内の8つのトレンチキャパシタは、メモリアドレスが指すバイトを形成する。
【0029】
図2は、データ処理装置100を概略的に示す図である。データ処理装置100は、特許請求されているメモリアクセス回路の一例であるロード/ストアユニット110を含む(別の例は、例えばDRAMによってバックアップされたメインメモリに要求を送出するキャッシュ階層内のラストレベルキャッシュであり得る)。これは、メモリにアクセスするための命令に対応する動作を受け取り、関連する信号をアサートして、メモリアクセス要求をメモリシステム160に発行させる役割を果たす。推定回路120は、推定された統計的濃度カウントを提供するために提供される。減衰回路130は、指数関数的な時間ベースの減衰パラメータを使用してこの推定を選択的に減衰させるために設けられる。次いで、制限回路140を使用して、この減衰した統計的濃度カウントに基づいて、メモリシステム160に送信されているメモリアクセス要求を制限することができる。この例では、推定回路120は分離回路150を含む。これは、メモリアクセス要求をいくつかのストリームに「ランダムに」分割することができ、推定された統計的濃度カウントが各ストリームについて計算される(及び減衰される)ようにするためである。総合集約演算(例えば調和平均)は、集約ストリームの統計的濃度カウントの全体の推定を提供するために、これらの値の各々に対して実行される。集約されたストリームの濃度カウントを計算することによって、ロウハンマー攻撃に対応するメモリアクセスパターン、すなわち、メモリシステムの他のロケーションと比較して、メモリシステム内の少数のロケーションが短い期間内に頻繁にアクセスされるメモリアクセスパターンをより正確に見つけることが可能である。
【0030】
図3は、推定回路120及び減衰回路130の例を示す。ハッシュ回路210は、分離回路の一部を形成する。特に、メモリアクセス要求(典型的には、物理メモリシステム内のトレンチキャパシタの行に対するものであり得る)の行アドレスを取得し、そのアドレスに対してハッシュを実行する。ハッシュの目的は、同じ入力アドレスが同じハッシュされた(出力)アドレスを与えるようにアドレスを「ランダム化」することであり、その結果、同じアドレスへの繰り返しアクセスを検出することができるが、そうでなければ、入力アドレスとハッシュされた(出力)アドレスとの間の関係は事実上ランダムである。したがって、ハッシュユニット210によって実行されるハッシュ関数は、暗号ハッシュであり得る。いくつかの実施形態では、ハッシュ関数は、入力アドレスの小さな変化がハッシュされた(出力)アドレスの大きな変化を生成し、それによってハッシュされた(出力)アドレスのより良好な分布を提供するアバランシェ特性(バタフライ特性としても知られる)を有する。この場合、ハッシュアルゴリズムは64ビット出力を生成し、これは52ビット(x)の第1のグループと12ビットの第2のグループとに分離される。
【0031】
52ビットは、行メモリアドレス(特に、ハッシュされたメモリアドレスのこれらの52ビット)内の連続する最上位ゼロの数を判定する推定回路120の一部の例である、find-first-set回路230に渡される。find-first-set演算は、max(log2(x[0:51]&-x[0:51])+1,0)と数学的に等価な演算によって達成され、これは、xにおける1に等しい第1のビットの位置を判定し、サフィックスの長さをその位置の底2における対数として返す(x[0:51]の使用は、xのビットが演算中に反転されることを意味することに留意されたい)。結果の数(b)は、減衰機能を実行する減少された更新回路240に出力される。異なるパターンも検出することができ、したがって52ビットの反転を必要としない場合があることに留意されたい。例えば、最上位ゼロのパターンが検出された場合、ビットを反転する必要はない。
【0032】
他の12ビットは、このアクセスが属するストリームの表示として使用される。12ビットは、特許請求されている記憶回路の一例であるメモリ220の読み出しアドレスとして使用される。メモリ220は、各ストリームについて観測された長さ及びタイムスタンプの形態で推定された統計的濃度カウントを記憶し、したがって、この例では、4096個の異なる(推定された統計的濃度カウント、タイムスタンプ)ペアを記憶する。読み出しアドレスは、メモリ220内の関連するエントリにアクセスし、ストリーム(a)のために記憶された記憶値を提供するために使用される。次に、結果は、減少された更新回路240に渡される。
【0033】
減少された更新回路240において、指数関数的な時間ベースの減少/減衰が適用される。特に、推定された統計的濃度カウントが増加した場合(aの以前に記録された値がb未満である場合)、調整は行われない。そうでない場合、更新された値は、新しい値に、その重要性を低減するように重み付けされた古い値と新しい値との間の差を加えたものに等しい。重み付けは指数関数的であり、以前の値が記録されてからの時間に基づく。したがって、かなり前に見られたより高い推定統計的濃度カウントにはほとんど重みが与えられず、新しい推定統計的濃度カウントは、直近で計算された値により近くなる。以前の高い値は、(非常に長い時間が経過しない限り)完全には棄却されない。また、アドレスの真にランダムなストリームが渡される場合(これは、同じアドレスが繰り返しアクセスされていない場合である)、推定された統計的濃度カウントが増加するときに調整が行われないので、推定された統計的濃度カウントは、時々小さな減少が生じても一般に高いままであることが予想されることに留意されたい。
【0034】
重み付けを行うことができるいくつかの方法がある。しかしながら、これらの例では、減衰を計算するために使用される式は以下の通りである。
b+(a-b)mt
ここで、bは現在のアクセスアドレスに基づいて計算された連続する先行ゼロの判定された数であり、aは以前に記憶された推定された統計的濃度カウントであり、mは定数(例えば0.9999)であり、tはこのアクセスとこのストリーム内の最も直近の以前のアクセスとの間の時間(例えばナノ秒単位)である。
【0035】
新しい値を判定すると、次に、この新しい値は、現在のタイムスタンプと共に、この特定のストリームについてメモリ220に記憶される。
【0036】
全体的な推定された統計的濃度カウント(すなわち、メモリシステム160にわたる)を判定するために、メモリ内の個々の統計的濃度カウント値の調和平均を実行することによって、中心バイアス関数が実行される。中心バイアスの他の技術が理解されるであろう(Stefan Heule他による「HyperLogLog in Practice:Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm」で提案されたものなども使用できる)。
【0037】
次いで、この動作の結果を考慮して、(例えば、制限回路によって)回避アクションを取るべきかどうかを判定することができる。これを行ういくつかの方法がある。1つの方法は、メモリへのアクセスの総スループットが高い間に、ある量の突然の低下を探すことであり、そのような低下が発生した場合、ロウハンマー攻撃が発生している可能性があると結論付けることができる。別の状況では、メモリへのアクセスの総スループットが高い間に、推定された統計的濃度カウントが所定の値を下回ったかどうかを調べ、下回った場合、ロウハンマー攻撃が発生している可能性があると仮定することができる。別のオプションは、推定された統計的濃度カウントの以前の値と新しい値との比を比較することであり得る。いずれの場合も、推定された統計的濃度カウントの低下が、より小さい範囲のメモリアドレスがアクセスされており、したがってロウハンマー攻撃が発生している可能性があることを意味する。
【0038】
ハッシュが実行された後にサブストリーム番号を判定するためにどのビットが使用されるかは、これが一貫したままであれば特に関連性がなく、したがって、攻撃者が特定のハッシュ関数を無効にし、誤った濃度推定につながる敵対的なパターンを考案することを防止するために、これを測定にわたって変化させることができることに留意されたい。
【0039】
図4は、データ処理方法を示すフローチャート400を示す図である。ステップ405で、アクセス要求が受信される。ステップ410において、アクセスが関連付けられたストリームは、アクセスアドレスをハッシュし、それらのビットのいくつかを使用してストリーム番号を識別することによって識別される。アクセス要求が分割されるストリームの数は、ロウハンマー攻撃に対するメモリシステムの感受性に基づいて(上で説明したように)判定される。ステップ415において、ハッシュされたアドレスの少なくとも一部(例えば、ストリーム識別子に使用されないもの)における「先行ゼロ」(連続する最上位ゼロ)の数がbとしてカウントされる。ステップ420において、ストリーム(a)の以前に記憶されたデータが(例えば、メモリ220から)取得される。ステップ425において、aとbとの比較が行われる。bがa以上である場合、ステップ430において、ストリームのためにメモリ220に記憶された値は単にbに等しい。そうでない場合、ステップ435において、ストリームのためにメモリに記憶された値はb+(a-B)m
tに等しく、ここで、mは定数0.9999であり、tは、aの一部として記憶された現在のアクセスの時間と前のアクセスの時間との間のナノ秒の数である。mの値はもちろん異なることができるが、減衰効果を提供するために0と1との間に保たれる。プロセスは、ステップ440で継続する(更なるアクセス要求が処理される)。
【0040】
規則的なスケジュールで、ステップ443において、全ての推定された統計的濃度カウントの調和平均が計算される。ステップ445において、調和平均が低下したかどうかが判定される。そうである場合には、ステップ450において、ロウハンマー攻撃が本質的に抑制されるようにメモリアクセスのアクセスレートが低減される。この制限は、現在アクセスされているアドレスに対するものであってもよいし、メモリシステム160全体にわたるものであってもよい。そうでない場合、ステップ455において、現在のアクセスは同じままである。
【0041】
この例では、調和平均は、全てのアクセス要求に応答して(ステップ440で)計算されることに留意されたい。他の実施形態では、調和平均は周期的に計算されるだけであり、ある回数のアクセスが行われた後、周期ごとに、又は場合によっては、単一のストリームについて推定された統計的濃度カウントが大幅に減少した後でも計算される。
【0042】
図5は、
図4のフローチャート400によって示されるプロセスを実施するアルゴリズムのソースコード(pythonで書かれている)を示す図である。クラスDiscountedHyperLogLog implementsは3つのメソッドを実行する。第1の初期化方法(__init__)は、前述したように、減少定数(上記では「m」と呼ぶ)を0.9999に設定し、各初期統計的濃度カウント値が(ストリームごとに)0になるようにメモリを初期化する。アレイMのサイズはサブストリームの数に等しい。時間をカウントするために使用される内部カウンタ(C)も0に初期化される。これにより、時間がメモリアクセス数として計測される。
【0043】
第2の方法(add)は、特定のアドレス(値)に対する推定された統計的濃度カウントを追加(又は更新)するために使用される。値は最初にハッシュされる(この場合、SHA1を使用して)。変数「j」は、アクセス(値)に関連するサブストリームを識別するために使用される。変数「w」は、推定された統計的濃度カウントを判定するために使用されるハッシュ値の部分を記憶するために使用され、self.pは、ストリーム識別子を判定するために使用されるビットと推定された統計的濃度カウントを実行するために使用されるビットとの間の分割を示す。変数「b」は、ここでも、ハッシュされたアクセスに対して計算された一意のパターン(典型的には、この場合、全ての先行ゼロ)の長さを表す。次に、変数Cは、経過時間を考慮するために更新され(「add」の各呼び出しで生じるように)、この例とは異なり、この更新は、複数の時間単位からなることもできる。次に、bの値が、ストリームについて現在記憶されている値と比較される。bがより大きい場合、記憶された値は、単に新しいより大きい値で更新される。そうでない場合、値は、前述のように適用された減衰パラメータを有する。記憶されるM[j]の値は、実際には、推定濃度カウントの2を底とする対数であることに留意されたい。値Tは、ストリームが以前にアクセスされた時間を示す。この最後に、現在のストリームに対するアクセス時間が現在のアクセス時間(C)で更新される。
【0044】
第3の方法(card)は、(super().card()を介して)調和平均を判定する前に使用される。それは、メモリ(M)に記憶されたエントリを通して反復し、各ストリームについて記憶された値に直接減衰を再適用する。これが必要なのは、1つのサブストリームが、card()が呼び出されるかなり前に最後に更新されている可能性があり、したがって、経過時間によって減少させる必要があるからである。これを、一意のプレフィックス長0を有する仮想アクセスと見なすことができる。
【0045】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配設又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0046】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されないこと、及び添付の特許請求の範囲によって規定される本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加、及び修正が当業者によって実施され得ることが理解されるであろう。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
【国際調査報告】