(57)【要約】  集積回路は、プロセッサと、第1の記憶容量を有する第1のレベルの命令キャッシュと、第1の記憶容量よりも大きい第2の記憶容量を有する第2のレベルのキャッシュとを備えてもよい。第1のレベルの命令キャッシュは、第2のレベルのキャッシュに記憶された命令のサブセットを記憶するように構成される。第2のレベルのキャッシュは、外部メモリに記憶されたデータおよび命令のサブセットを記憶するように構成される。プロセッサは、検出ルーチンの内側ループを実行し、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視する。検出ルーチン命令の総数は、第1の記憶容量よりも大きい。内側ループは、第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい。
2017531253.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
第1の記憶容量を有する第1のレベルの命令キャッシュと、
前記第1の記憶容量よりも大きい第2の記憶容量を有する第2のレベルのキャッシュと
を備える、集積回路であって、
前記第1のレベルの命令キャッシュは、前記プロセッサと前記第2のレベルのキャッシュとの間に結合され、
前記第1のレベルの命令キャッシュは、前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶するように構成され、
前記第2のレベルのキャッシュは、前記第1のレベルの命令キャッシュと外部メモリとの間に結合され、
前記第2のレベルのキャッシュは、前記外部メモリに記憶されたデータおよび命令のサブセットを記憶するように構成され、
前記プロセッサは、検出ルーチンの内側ループを実行し、前記第1のレベルの命令キャッシュ内の悪意あるコードを検出するために前記内側ループの実行時間を監視するように構成され、検出ルーチン命令の総数は、前記第1の記憶容量よりも大きく、前記内側ループは、実行中、前記第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、前記内側ループの実行中に実行される命令の実行数は、前記第1の記憶容量よりも小さい、
集積回路。
【請求項２】
前記実行数が、前記第1の記憶容量よりもはるかに小さい、請求項1に記載の集積回路。
【請求項３】
前記検出ルーチン命令は、類似の関数の群を備え、類似の関数の前記群の少なくとも2つの関数は異なる、請求項1に記載の集積回路。
【請求項４】
前記検出ルーチンの前記内側ループは、実行中、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項1に記載の集積回路。
【請求項５】
プロセッサによって、検出ルーチンの内側ループを実行するステップであって、検出ルーチン命令の総数は第1のレベルの命令キャッシュの第1の記憶容量よりも大きい、ステップと、
前記内側ループが実行されている間、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチするステップであって、前記内側ループの実行中に実行される命令の実行数は、前記第1の記憶容量よりも小さい、ステップと、
前記プロセッサによって、前記第1のレベルの命令キャッシュ内の悪意あるコードを検出するために前記内側ループの実行時間を監視するステップと
を備える、方法。
【請求項６】
前記実行数が、前記第1の記憶容量よりもはるかに小さい、請求項5に記載の方法。
【請求項７】
前記検出ルーチン命令は、類似の関数の群を備え、類似の関数の前記群の少なくとも2つの関数は異なる、請求項5に記載の方法。
【請求項８】
前記検出ルーチンの前記内側ループは、実行されるとき、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項5に記載の方法。
【請求項９】
前記第2の記憶容量は前記第1の記憶容量よりも大きく、前記第1のレベルの命令キャッシュは前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶し、前記第1のレベルの命令キャッシュは、前記プロセッサと前記第2のレベルのキャッシュとの間に結合され、前記第2のレベルのキャッシュは、前記第1のレベルの命令キャッシュと前記外部メモリとの間に結合される、請求項5に記載の方法。
【請求項１０】
検出ルーチンの内側ループを実行するための手段であって、検出ルーチン命令の総数は第1のレベルの命令キャッシュの第1の記憶容量よりも大きい、手段と、
前記内側ループが実行されている間、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチするための手段であって、前記内側ループの実行中に実行される命令の実行数は、前記第1の記憶容量よりも小さい、手段と、
前記第1のレベルの命令キャッシュ内の悪意あるコードを検出するために前記内側ループの実行時間を監視するための手段と
を備える、集積回路。
【請求項１１】
前記実行数が、前記第1の記憶容量よりもはるかに小さい、請求項10に記載の集積回路。
【請求項１２】
前記検出ルーチン命令は、類似の関数の群を備え、類似の関数の前記群の少なくとも2つの関数は異なる、請求項10に記載の集積回路。
【請求項１３】
前記検出ルーチンの前記内側ループは、実行中、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項10に記載の集積回路。
【請求項１４】
前記第2の記憶容量は前記第1の記憶容量よりも大きく、前記第1のレベルの命令キャッシュは、前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶する、請求項10に記載の集積回路。
【請求項１５】
コンピュータ可読記録媒体を備え、前記コンピュータ可読記録媒体が、
コンピュータに検出ルーチンの内側ループを実行させるためのコードであって、検出ルーチン命令の総数は第1のレベルの命令キャッシュの第1の記憶容量よりも大きく、前記内側ループは、実行中、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、前記内側ループの実行中に実行される命令の実行数は、前記第1の記憶容量よりも小さい、コードと、
前記コンピュータに、前記第1のレベルの命令キャッシュ内の悪意あるコードを検出するために前記内側ループの実行時間を監視させるためのコードと
を備える、コンピュータプログラム製品。
【請求項１６】
前記実行数が、前記第1の記憶容量よりもはるかに小さい、請求項15に記載のコンピュータプログラム製品。
【請求項１７】
前記実行数が、前記第1の記憶容量よりも小さい、請求項15に記載のコンピュータプログラム製品。
【請求項１８】
前記検出ルーチンの前記内側ループは、実行されるとき、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項15に記載のコンピュータプログラム製品。
【請求項１９】
前記第2の記憶容量は前記第1の記憶容量よりも大きく、前記第1のレベルの命令キャッシュは前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶し、前記第1のレベルの命令キャッシュは、プロセッサと前記第2のレベルのキャッシュとの間に結合され、前記第2のレベルのキャッシュは、前記第1のレベルの命令キャッシュと前記外部メモリとの間に結合される、請求項15に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その内容全体が参照により本明細書に組み込まれる、2014年9月22日に米国特許庁に出願された米国非仮出願第14/493,306号の優先権および利益を主張するものである。
【０００２】
本発明は、一般に、キャッシュ不実行(do-not-cache)攻撃に関連する悪意あるコードを検出することに関する。
【背景技術】
【０００３】
多くのコンピュータ環境は、1つまたは複数の命令をRAMから直接フェッチするための命令を含む。そのような命令は、第2のレベル(L2)のキャッシュに記憶されないが、代わりに、より小さくより速いレベル1(L1)の命令キャッシュに直接コピーされる。通常、L2キャッシュをバイパスすることは、善意の動作である。しかしながら、L2キャッシュにアクセスすることなくコードを実行できることにより、敵対者は発見されることなく、L2キャッシュを使用する無害のコードを、L2キャッシュを使用しない悪意ある/破損したコードで置き換えることが可能になる場合がある。たとえば、悪意あるコードは、その悪意あるコード全体がL1キャッシュにフィットする場合、その存在を走査/検出ソフトウェアから隠す場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、第1のレベルの命令キャッシュ内に隠れる悪意あるコードを検出できることが求められている。
【課題を解決するための手段】
【０００５】
本発明の一態様は、プロセッサと、第1の記憶容量を有する第1のレベルの命令キャッシュと、第1の記憶容量よりも大きい第2の記憶容量を有する第2のレベルのキャッシュとを備える、集積回路に存在してもよい。第1のレベルの命令キャッシュは、プロセッサと第2のレベルのキャッシュとの間に結合され、第2のレベルのキャッシュに記憶された命令のサブセットを記憶するように構成される。第2のレベルのキャッシュは、第1のレベルの命令キャッシュと外部メモリとの間に結合され、外部メモリに記憶されたデータおよび命令のサブセットを記憶するように構成される。プロセッサは、検出ルーチンの内側ループを実行し、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視するように構成される。検出ルーチン命令の総数は、第1の記憶容量よりも大きい。内側ループは、実行中、第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい。
【０００６】
本発明のより詳細な態様では、実行数は、第1の記憶容量よりもはるかに小さくてもよい。検出ルーチン命令は、類似の関数の群を備えてもよく、類似の関数の群の少なくとも2つの関数は、異なってもよい。検出ルーチンの内側ループは、実行中、検出ルーチンの実行前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含んでもよい。
【０００７】
本発明の別の態様は、プロセッサによって、検出ルーチンの内側ループを実行するステップであって、検出ルーチン命令の総数は第1のレベルの命令キャッシュの第1の記憶容量よりも大きい、ステップと、内側ループが実行されている間、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチするステップであって、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい、ステップと、プロセッサによって、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視するステップとを備える、方法に存在してもよい。
【０００８】
本発明の別の態様は、検出ルーチンの内側ループを実行するための手段であって、検出ルーチン命令の総数は第1のレベルの命令キャッシュの第1の記憶容量よりも大きい、手段と、内側ループが実行されている間、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチするための手段であって、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい、手段と、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視するための手段とを備える、集積回路に存在してもよい。
【０００９】
本発明の別の態様は、コンピュータに検出ルーチンの内側ループを実行させるためのコードであって、検出ルーチン命令の総数は第1のレベルの命令キャッシュの第1の記憶容量よりも大きく、内側ループは、実行中、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい、コードと、コンピュータに、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視させるためのコードとを備える、コンピュータ可読記録媒体を備える、コンピュータプログラム製品に存在してもよい。
【図面の簡単な説明】
【００１０】
【図１】ワイヤレス通信システムの一例のブロック図である。
【図２】本発明の一態様による、第1のレベルの命令キャッシュ内の悪意あるコードを検出するための技法を実施するための集積回路のブロック図である。
【図３】本発明の一態様による検出ルーチンの流れ図である。
【図４】本発明の一態様による、第1のレベルの命令キャッシュ内の悪意あるコードを検出するための方法の流れ図である。
【図５】プロセッサおよびメモリを含むコンピュータのブロック図である。
【発明を実施するための形態】
【００１１】
「例示的」という単語は、本明細書では、「例、事例、または例示として機能する」ことを意味するために使用される。「例示的」として本明細書で説明するいかなる実施形態も、他の実施形態よりも好ましい、または有利であると必ずしも解釈されるべきでない。
【００１２】
図2および図3を参照すると、本発明の一態様は、プロセッサ220と、第1の記憶容量を有する第1のレベルの命令キャッシュ230と、第1の記憶容量よりも大きい第2の記憶容量を有する第2のレベルのキャッシュ240とを備える、集積回路210に存在してもよい。第1のレベルの命令キャッシュは、プロセッサと第2のレベルのキャッシュとの間に結合され、第2のレベルのキャッシュに記憶された命令のサブセットを記憶するように構成される。第2のレベルのキャッシュは、第1のレベルの命令キャッシュと外部メモリ250との間に結合され、外部メモリに記憶されたデータおよび命令のサブセットを記憶するように構成される。プロセッサは、検出ルーチン300の内側ループ310を実行し、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視するように構成される。検出ルーチン命令の総数は、第1の記憶容量よりも大きい。内側ループは、実行中、第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい。
【００１３】
本発明のより詳細な態様では、実行数は、第1の記憶容量よりもはるかに小さくてもよい。検出ルーチン命令は、類似の関数の群を備えてもよく、類似の関数の群の少なくとも2つの関数は、異なってもよい。検出ルーチン300の内側ループ310は、実行中、検出ルーチンの実行前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含んでもよい。第1のレベルの命令キャッシュは4キロバイトを備えてもよく、実行数は16を備えてもよい。
【００１４】
図1および図5をさらに参照すると、リモート局102は、プロセッサ510(たとえば、集積回路210内のプロセッサ220)および記憶媒体520(メモリ250および/またはディスクドライブなど)を含むコンピュータ500と、ディスプレイ530と、キーパッドなどの入力部540と、ワイヤレス接続部550(Wi-Fi接続部および/またはセルラー接続部など)とを備えてもよい。
【００１５】
図4をさらに参照すると、本発明の別の態様は、プロセッサ220によって、検出ルーチン300の内側ループ310を実行するステップ(ステップ410)を備える方法400に存在してもよい。検出ルーチン命令の総数は、第1のレベルの命令キャッシュ230の第1の記憶容量よりも大きい。内側ループが実行されている間、検出ルーチン命令は、外部メモリ250に記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュ240からフェッチされる。内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい。本方法は、プロセッサによって、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視するステップ(ステップ420)をさらに備える。
【００１６】
本発明の別の態様は、検出ルーチン300の内側ループ310を実行するための手段(たとえば、220、510)であって、検出ルーチン命令の総数は第1のレベルの命令キャッシュ230の第1の記憶容量よりも大きい、手段と、内側ループが実行されている間、外部メモリ250に記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュ240から検出ルーチン命令をフェッチするための手段(たとえば、220、510)であって、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい、手段と、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視するための手段(たとえば、220、510)とを備える、集積回路210に存在してもよい。
【００１７】
本発明の別の態様は、コンピュータに検出ルーチン300の内側ループ310を実行させるためのコードであって、検出ルーチン命令の総数は第1のレベルの命令キャッシュ230の第1の記憶容量よりも大きく、内側ループは、実行中、外部メモリ250に記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュ240から検出ルーチン命令をフェッチすることを必要とし、内側ループの実行中に実行される命令の実行数は、第1の記憶容量よりも小さい、コードと、コンピュータに、第1のレベルの命令キャッシュ内の悪意あるコードを検出するために内側ループの実行時間を監視させるためのコードとを備える、コンピュータ可読記録媒体(たとえば、250、520)を備える、コンピュータプログラム製品に存在してもよい。
【００１８】
本発明の一態様は、悪意ある非キャッシュコードがL1キャッシュ230にフィットすることを防ぎ、迅速に(たとえば、1.6ミリ秒)実行される、善意の/正当なコード、すなわち検出ルーチン300を使用することを含む。迅速に実行されることは、ソフトウェアベースの認証(SBA:software-based attestation)にとって、活用性と安全性の両方で望ましい。善意のコードは、以下の特徴、すなわち、1)善意のコードの内側ループ310が大きく、善意のコードがL1キャッシュにフィットしないことを意味し、したがって、内側ループを実行することが、L2キャッシュ240またはRAM/二次記憶装置のいずれかからコードをフェッチすることを必要とすることと、2)内側ループの1回の繰返しのために実行される命令の数が、L1キャッシュにフィットする命令の数よりもはるかに小さいこととを有する。
【００１９】
これは、善意のコードを用いて広範な分岐を使用することによって達成され、これらの分枝の何らかの部分は、L1キャッシュミスを引き起こすが、その理由は、内側ループ310内に分岐される可能性があるコードのすべてがL1キャッシュ230にフィットしない可能性があるからである。善意のコードは、様々な分枝が、解凍に関連する遅延を引き起こすことなく、様々な動作またはオフセットなどの十分に異なるコードを含む限り、L1キャッシュにフィットするようには圧縮されないか、または表されない可能性がある。したがって、同じコンピュータタスクを実行しようと試みる悪意あるコードは、解凍のために測定可能な程度に長い時間が掛かるか、またはキャッシュミスのために実行するのにより長い時間が掛かるかのいずれかである。これは、L1キャッシュとL2キャッシュの両方に善意のコードを記憶することができるからであり、L1キャッシュミスがあるとき、ものがL2からL1にロードされるが、悪意あるコードはL2の使用を避けることを望み、したがって、いずれのL1キャッシュミスも、(長い時間が掛かる)解凍、または(同様に長い時間が掛かる)DRAMもしくは他の遅い記憶装置からのデータのフェッチのいずれかをもたらす。この構造を他のパイプライン化/フェッチ無効化構造と組み合わせることにより、キャッシュ不実行攻撃を検出されずに実行することが確実にできなくなる。
【００２０】
善意のコードの一例は、6キロバイトを必要とする場合がある、類似する(または等しい)が異なる関数(XOR、ビットローテーション、加算、およびスワップなど)の群を含んでもよいが、L1命令キャッシュの容量は、4キロバイトである場合があり、すなわち、善意のコードは、L1命令キャッシュのサイズの約150%である場合がある。善意のコードは、たとえば、16ステップのみを実行する場合があるが、各ステップにおいて、実行するまでは知られていない条件1、2...Nに基づいて、新しい関数(たとえば、F1、F2...FN)を予測不可能に選択する。したがって、各ステップにおいて、悪意ある非キャッシュコードによって予測/回避されない可能性がある、キャッシュミスの変化が存在する。善意のコードの場合、キャッシュミスは、L2キャッシュから新しい関数に関するコードがアクセス(または、ページング)されるとき、小さい遅延を引き起こす。しかしながら、悪意ある非キャッシュコードの存在下でのキャッシュミスは、アクセスするのにはるかに長い時間が掛かる、外部メモリ250(たとえば、RAMまたはディスクドライブなどの二次記憶装置)へのアクセスを引き起こす。したがって、はるかに長い実行時間による遅延は、悪意あるコードの存在の検出を可能にする。
【００２１】
各関数は、XOR3076またはAND Zなどの、演算およびオペランドを備えてもよい。レベル1キャッシュは、L1データキャッシュ260を含む場合もある。
【００２２】
検出ルーチン300の善意のコードは、実行時に知られているコンテンツを含むレジスタをロードする(ステップ320)ための共通命令を含む場合もある。場合によっては、レジスタコンテンツは、レジスタコンテンツを処理するためのステップ(ステップ330)を含んでもよい。共通コードは、レジスタコンテンツまたは状態に基づいて、ある位置またはコード経路に分岐するジャンプ命令(ステップ340)を含んでもよい。各コード経路は、共通部分の最初にジャンプ370を含む、別の6バイトのシーケンス(350、360、...)を備えてもよい。共通部分は、ループ310から、ある分枝への継続ステップ(ステップ380)、または完了時の戻り(ステップ390)を含んでもよい。したがって、この例では、各々が6バイトの長さの1000個の分岐経路が存在し、その結果、検出ルーチンのために約6キロバイトになる場合がある。共通コードは、約10バイトを備えてもよい。
【００２３】
開示された技術は、L2キャッシュをバイパスする攻撃に対抗し、アクティブなモバイルマルウェアを含む、アクティブなマルウェアの検出に直接適用される。一例として、メモリ250およびL1命令キャッシュ230内に存在するが、L2キャッシュ240内には存在しない悪意あるコードは、L2キャッシュ内に存在する無害のまたは正当なコード上でチェックサムを計算し、検出を回避するために、そのチェックサムを返す場合がある。測定可能な遅延を引き起こす(チェックサムから検出された)悪意あるコードをL2キャッシュ内またはメモリ内に留めることによって、(実行時間から検出された)悪意あるコードが実行される場合、悪意あるコードは隠れることができない。
【００２４】
先の説明は、3つ以上のレベルを有するキャッシュ階層、または、より一般的には、4つ以上のレベルを有するメモリ階層にも適用され、善意のコードは、利用可能なレベルのサブセットを使用するように構成され、目標は、悪意あるコードが利用可能なレベルの別のセットを使用するかどうかを検出することである。
【００２５】
図1を参照すると、ワイヤレスリモート局(RS)102は、ワイヤレス通信システム100の1つまたは複数の基地局(BS)104と通信する場合がある。RSは、移動局であってもよい。ワイヤレス通信システム100は、1つまたは複数の基地局コントローラ(BSC)106と、コアネットワーク108とをさらに含んでもよい。コアネットワークは、適切なバックホールを介して、インターネット110および公衆交換電話網(PSTN)112に接続されてもよい。典型的なワイヤレス移動局は、ハンドヘルド電話またはラップトップコンピュータを含んでもよい。ワイヤレス通信システム100は、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、空間分割多元接続(SDMA)、偏波分割多元接続(PDMA)、または当技術分野で知られている他の変調技法などのいくつかの多元接続技法のうちのいずれか1つを採用してもよい。
【００２６】
様々な異なる技術および技法のいずれかを使用して情報および信号が表される場合があることは当業者であれば理解されよう。たとえば、上記の説明全体を通して参照される場合があるデータ、命令、指令、情報、信号、ビット、記号およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表される場合がある。
【００２７】
本明細書で開示する実施形態に関連して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実現される場合があることは、当業者はさらに理解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に課される設計制約によって決まる。当業者は説明した機能を特定の適用例ごとに様々な方法で実施する場合があるが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００２８】
本明細書で開示する実施形態に関連して説明される種々の例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途用集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別のゲートもしくはトランジスタロジック、個別のハードウェア構成要素、または本明細書において説明された機能を果たすように設計されたこれらの任意の組合せを用いて実装されるか、または実行される場合がある。汎用プロセッサは、マイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装される場合もある。
【００２９】
本明細書で開示する実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形式の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、かつ、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体は、プロセッサに一体化されてもよい。プロセッサおよび記憶媒体は、ASIC内に存在してもよい。ASICは、ユーザ端末内に存在してもよい。代替形態では、プロセッサおよび記憶媒体は、個別構成要素としてユーザ端末内に存在してもよい。
【００３０】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてもよい。コンピュータプログラム製品としてソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信されてもよい。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、非一時的コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによりアクセスすることができる任意の利用可能な媒体であってもよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形式の所望のプログラムコードを搬送もしくは記憶するために使用可能であり、コンピュータによってアクセス可能な任意の他の媒体を備えることができる。また、任意の接続も正しくはコンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合には、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスクおよびブルーレイディスクを含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せは、コンピュータ可読媒体の範囲内に同じく含まれるものとする。
【００３１】
開示した実施形態の先の説明は、当業者が本発明を作成または使用することができるように提供される。これらの実施形態に対する様々な変更形態が、当業者には容易に理解され、本明細書において規定される一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用される場合がある。したがって、本発明は、本明細書において示される実施形態に限定されるものではなく、本明細書において開示される原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００３２】
100  ワイヤレスシステム
102  リモート局、ワイヤレスリモート局
104  基地局
106  基地局コントローラ
108  コアネットワーク
110  インターネット
112  公衆交換電話網
210  集積回路
220  プロセッサ
230  第1のレベルの命令キャッシュ
240  第2のレベルのキャッシュ
250  外部メモリ
260  L1データキャッシュ
500  コンピュータ
510  プロセッサ
520  記憶媒体
530  ディスプレイ
540  入力部
550  ワイヤレス接続部
【図１】
2017531253.tif 000003
【図２】
2017531253.tif 000004
【図３】
2017531253.tif 000005
【図４】
2017531253.tif 000006
【図５】
2017531253.tif 000007
【手続補正書】
【提出日】平成29年3月7日(2017.3.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第1のレベルの命令キャッシュに隠れる悪意あるコードの検出のための集積回路であって、
プロセッサと、
第1の記憶容量を有する前記第1のレベルの命令キャッシュと、
前記第1の記憶容量よりも大きい第2の記憶容量を有する第2のレベルのキャッシュと
を備え、
前記第1のレベルの命令キャッシュは、前記プロセッサと前記第2のレベルのキャッシュとの間に結合され、
前記第1のレベルの命令キャッシュは、前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶するように構成され、
前記第2のレベルのキャッシュは、前記第1のレベルの命令キャッシュと外部メモリとの間に結合され、
前記第2のレベルのキャッシュは、前記外部メモリに記憶されたデータおよび命令のサブセットを記憶するように構成され、
前記プロセッサは、検出ルーチンの内側ループを実行し、前記内側ループの実行時間を監視し、かつ前記第1のレベルの命令キャッシュに隠れる悪意あるコードを検出するために前記監視される実行時間を実行時間しきい値と比較するように構成され、検出ルーチン命令の総数に関するコードは、前記第1の記憶容量よりも大きく、前記内側ループは、実行中、前記第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、前記内側ループの実行中に実行される命令の実行数に関するコードは、前記検出ルーチン命令の選択されたコードの実行に基づいて、前記第1の記憶容量よりも小さい、
集積回路。
【請求項２】
前記命令の前記実行数に関する前記コードが16ステップを備え、前記第1の記憶容量が4キロバイトである、請求項1に記載の集積回路。
【請求項３】
前記検出ルーチン命令は、類似の関数の群を備え、類似の関数の前記群の少なくとも2つの関数は異なる、請求項1に記載の集積回路。
【請求項４】
前記検出ルーチンの前記内側ループは、実行中、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項1に記載の集積回路。
【請求項５】
第1のレベルの命令キャッシュに隠れる悪意あるコードの検出のための方法であって、
プロセッサによって、検出ルーチンの内側ループを実行するステップであって、検出ルーチン命令の総数に関するコードは前記第1のレベルの命令キャッシュの第1の記憶容量よりも大きい、ステップと、
前記内側ループが実行されている間、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチするステップであって、前記内側ループの実行中に実行される命令の実行数に関するコードは、前記検出ルーチン命令の選択されたコードの実行に基づいて、前記第1の記憶容量よりも小さい、ステップと、
前記プロセッサによって、前記内側ループの実行時間を監視し、かつ前記第1のレベルの命令キャッシュに隠れる悪意あるコードを検出するために前記監視される実行時間を実行時間しきい値と比較するステップと
を備える、方法。
【請求項６】
命令の前記実行数に関する前記コードが16ステップを備え、前記第1の記憶容量が4キロバイトである、請求項5に記載の方法。
【請求項７】
前記検出ルーチン命令は、類似の関数の群を備え、類似の関数の前記群の少なくとも2つの関数は異なる、請求項5に記載の方法。
【請求項８】
前記検出ルーチンの前記内側ループは、実行されるとき、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項5に記載の方法。
【請求項９】
前記第2の記憶容量は前記第1の記憶容量よりも大きく、前記第1のレベルの命令キャッシュは前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶し、前記第1のレベルの命令キャッシュは、前記プロセッサと前記第2のレベルのキャッシュとの間に結合され、前記第2のレベルのキャッシュは、前記第1のレベルの命令キャッシュと前記外部メモリとの間に結合される、請求項5に記載の方法。
【請求項１０】
第1のレベルの命令キャッシュに隠れる悪意あるコードの検出のための集積回路であって、
検出ルーチンの内側ループを実行するための手段であって、検出ルーチン命令の総数に関するコードは前記第1のレベルの命令キャッシュの第1の記憶容量よりも大きい、手段と、
前記内側ループが実行されている間、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチするための手段であって、前記内側ループの実行中に実行される命令の実行数に関するコードは、前記検出ルーチン命令の選択されたコードの実行に基づいて、前記第1の記憶容量よりも小さい、手段と、
前記内側ループの実行時間を監視し、かつ前記第1のレベルの命令キャッシュに隠れる悪意あるコードを検出するために前記監視される実行時間を実行時間しきい値と比較するための手段と
を備える、集積回路。
【請求項１１】
命令の前記実行数に関する前記コードが、前記第1の記憶容量よりもはるかに小さい、請求項10に記載の集積回路。
【請求項１２】
前記検出ルーチン命令は、類似の関数の群を備え、類似の関数の前記群の少なくとも2つの関数は異なる、請求項10に記載の集積回路。
【請求項１３】
前記検出ルーチンの前記内側ループは、実行中、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項10に記載の集積回路。
【請求項１４】
前記第2の記憶容量は前記第1の記憶容量よりも大きく、前記第1のレベルの命令キャッシュは、前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶する、請求項10に記載の集積回路。
【請求項１５】
第1のレベルの命令キャッシュに隠れる悪意あるコードの検出のための非一時的コンピュータ可読記録媒体であって、
コンピュータに検出ルーチンの内側ループを実行させるためのコードであって、検出ルーチン命令の総数に関するコードは第1のレベルの命令キャッシュの第1の記憶容量よりも大きく、前記内側ループは、実行中、外部メモリに記憶されたデータおよび命令のサブセットを記憶するための、第2の記憶容量を有する第2のレベルのキャッシュから検出ルーチン命令をフェッチすることを必要とし、前記内側ループの実行中に実行される命令の実行数に関するコードは、前記検出ルーチン命令の選択されたコードの実行に基づいて、前記第1の記憶容量よりも小さい、コードと、
前記コンピュータに、前記内側ループの実行時間を監視させ、かつ前記第1のレベルの命令キャッシュに隠れる悪意あるコードを検出するために前記監視される実行時間を実行時間しきい値と比較させるためのコードと
を備える、非一時的コンピュータ可読記録媒体。
【請求項１６】
命令の前記実行数に関する前記コードが16ステップを備え、前記第1の記憶容量が4キロバイトである、請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項１７】
前記検出ルーチンの前記内側ループは、実行されるとき、前記検出ルーチンの前記実行の前には知られていない少なくとも1つの選択入力に基づく少なくとも1つの検出ルーチン命令の選択を含む、請求項15に記載の非一時的コンピュータ可読記録媒体。
【請求項１８】
前記第2の記憶容量は前記第1の記憶容量よりも大きく、前記第1のレベルの命令キャッシュは前記第2のレベルのキャッシュに記憶された命令のサブセットを記憶し、前記第1のレベルの命令キャッシュは、プロセッサと前記第2のレベルのキャッシュとの間に結合され、前記第2のレベルのキャッシュは、前記第1のレベルの命令キャッシュと前記外部メモリとの間に結合される、請求項15に記載の非一時的コンピュータ可読記録媒体。
【国際調査報告】
2017531253.tif 000008
2017531253.tif 000009
2017531253.tif 000010