(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-10
(54)【発明の名称】不正動作検出システム、メモリコントローラ、情報処理装置、不正動作検出方法及びプログラム
(51)【国際特許分類】
G06F 21/51 20130101AFI20240903BHJP
G06F 21/60 20130101ALI20240903BHJP
G06F 21/64 20130101ALI20240903BHJP
【FI】
G06F21/51
G06F21/60 320
G06F21/64
(21)【出願番号】P 2023051858
(22)【出願日】2023-03-28
【審査請求日】2023-03-28
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】蓑田 豊
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2019-057044(JP,A)
【文献】特開2021-111916(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14、21/00-21/88
G09C1/00-5/00
H04K1/00-3/00
H04L9/00-9/40
(57)【特許請求の範囲】
【請求項1】
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行う準備手段と、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出する不正動作検出手段と、
を備
え、
前記準備手段は、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化するとともに、前記メモリにおける前記データの格納領域に署名を付与し、
前記不正動作検出手段は、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認するとともに、読み出した前記データを復号化することにより、前記メモリの処理対象領域と前記データが正当かどうかを判定する、
不正動作検出システム。
【請求項2】
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行う準備手段と、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出する不正動作検出手段と、
を備
え、
前記準備手段は、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化し、
前記不正動作検出手段は、前記メモリから前記データを読み出すときに、読み出した前記データを復号化することにより、前記データが正当かどうかを判定する、
不正動作検出システム。
【請求項3】
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行う準備手段と、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出する不正動作検出手段と、
を備
え、
前記準備手段は、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記メモリにおける前記データの格納領域に署名を付与し、
前記不正動作検出手段は、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認することにより、前記メモリの処理対象領域が正当かどうかを判定する、
不正動作検出システム。
【請求項4】
前記準備手段は、暗号化に用いた鍵を前記データの格納先のメモリアドレス範囲と対応付けてデータテーブルに登録し、
前記不正動作検出手段は、読み出した前記データが格納されていたメモリアドレス範囲と一致する前記メモリアドレス範囲と対応付けて前記データテーブルに登録された前記鍵を使用して、前記データを復号化し、復号できるかどうかを確認する、
請求項
1又は請求項
2に記載の不正動作検出システム。
【請求項5】
前記準備手段は、付与した前記署名を前記データの格納先のメモリアドレス範囲と対応付けてデータテーブルに登録し、
前記不正動作検出手段は、読み出した前記データが格納されていたメモリアドレス範囲と一致する前記メモリアドレス範囲と対応付けて前記データテーブルに登録された前記署名と、前記格納領域に付与された前記署名と、が一致するかどうかを確認する、
請求項
1又は請求項
3に記載の不正動作検出システム。
【請求項6】
請求項1から請求項
3の何れか1項に記載の不正動作検出システム、を備えるメモリコントローラ。
【請求項7】
請求項1から請求項
3の何れか1項に記載の不正動作検出システム、を備える情報処理装置。
【請求項8】
コンピュータによって実行される不正動作検出方法であって、
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、
を有
し、
前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化するとともに、前記メモリにおける前記データの格納領域に署名を付与し、
前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認するとともに、読み出した前記データを復号化することにより、前記メモリの処理対象領域と前記データが正当かどうかを判定する、
不正動作検出方法。
【請求項9】
コンピュータによって実行される不正動作検出方法であって、
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、
を有
し、
前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化し、
前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、読み出した前記データを復号化することにより、前記データが正当かどうかを判定する、
不正動作検出方法。
【請求項10】
コンピュータによって実行される不正動作検出方法であって、
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、
を有
し、
前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記メモリにおける前記データの格納領域に署名を付与し、
前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認することにより、前記メモリの処理対象領域が正当かどうかを判定する、
不正動作検出方法。
【請求項11】
コンピュータに、
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、
を有し、
前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化するとともに、前記メモリにおける前記データの格納領域に署名を付与し、
前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認するとともに、読み出した前記データを復号化することにより、前記メモリの処理対象領域と前記データが正当かどうかを判定する処理、
を実行させるプログラム。
【請求項12】
コンピュータに、
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、
を有し、
前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化し、
前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、読み出した前記データを復号化することにより、前記データが正当かどうかを判定する処理、
を実行させるプログラム。
【請求項13】
コンピュータに、
プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、
前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、
を有し、
前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記メモリにおける前記データの格納領域に署名を付与し、
前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認することにより、前記メモリの処理対象領域が正当かどうかを判定する処理、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不正動作検出システム、メモリコントローラ、情報処理装置、不正動作検出方法及びプログラムに関する。
【背景技術】
【0002】
近年、バッファオーバーフローなどのサーバへの不正アクセスにより生じるプログラムの異常動作を利用して、不正なプログラムの送り込み、メモリ上のコード、データを改ざんして、プログラムの不正動作を行わせるような、システムの不正利用が発生している。このような不正利用を防ぐ手段として、例えば、特許文献1には、実行中のプログラムの動作状態を示す情報を格納する実行実測値テーブルと、プログラムの動作状態の予定値が格納された実行予定値テーブルとを用いて、実行中のプログラムの動作状態が予定値と一致しない場合にプログラムの動作が異常であると判断する異常検出装置が開示されている。特許文献1の技術の場合、事前にプログラムを解析して、実行予定値テーブルを準備する必要がある。
【0003】
特許文献2には、プログラムを機械語に変換するコンパイルの過程で、各ルーチンにチェックサムを生成、付加するプログラム変換方式が開示されている。特許文献2の技術の場合、プログラムを機械語に変換する際に各ルーチンを識別し、チェックサムを生成、付加することができる専用のコンパイルが必要である。数多くのプログラムをコンパイルする場合、多くの手間や時間が必要となる。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第5534466号公報
【文献】特開平4-259036号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
事前の準備を必要とせずに、プログラムの実行時の不正動作を検出する技術が求められている。
【0006】
そこでこの発明は、上述の課題を解決する不正動作検出システム、メモリコントローラ、情報処理装置、不正動作検出方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【0007】
本発明の一態様によれば、不正動作検出システムは、プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行う準備手段と、前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出する不正動作検出手段と、を備え、前記準備手段は、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化するとともに、前記メモリにおける前記データの格納領域に署名を付与し、前記不正動作検出手段は、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認するとともに、読み出した前記データを復号化することにより、前記メモリの処理対象領域と前記データが正当かどうかを判定する。
【0008】
本発明の一態様によれば、メモリコントローラは、上記の不正動作検出システムを備える。
【0009】
本発明の一態様によれば、情報処理装置は、上記の不正動作検出システムを備える。
【0010】
本発明の一態様によれば、不正動作検出方法は、コンピュータによって実行される不正動作検出方法であって、プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、を有し、前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化するとともに、前記メモリにおける前記データの格納領域に署名を付与し、前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認するとともに、読み出した前記データを復号化することにより、前記メモリの処理対象領域と前記データが正当かどうかを判定する。
【0011】
本発明の一態様によれば、プログラムは、コンピュータに、プログラムを含むデータを記憶する記憶媒体から前記データを読み出してメモリに格納するときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行う為の処理を行うステップと、前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリの処理対象領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出するステップと、を有し、前記正当性の確認を行う為の処理を行うステップでは、前記記憶媒体から前記データを読み出して前記メモリに格納するときに、前記データを暗号化するとともに、前記メモリにおける前記データの格納領域に署名を付与し、前記プログラムの不正動作を検出するステップでは、前記メモリから前記データを読み出すときに、前記格納領域に付与された前記署名を確認するとともに、読み出した前記データを復号化することにより、前記メモリの処理対象領域と前記データが正当かどうかを判定する処理を実行させる。
【発明の効果】
【0012】
本発明によれば、プログラムの実行時の不正動作を検出することができる。
【図面の簡単な説明】
【0013】
【
図1】実施形態に係る情報処理装置の要部を示す図である。
【
図2】実施形態に係るメモリ格納時の処理に用いられる構成を示す図である。
【
図3】実施形態に係るメモリ読み出し時の処理に用いられる構成を示す図である。
【
図4】実施形態に係る鍵管理テーブルの一例を示す図である。
【
図5】実施形態に係る暗号対象管理テーブルの一例を示す図である。
【
図6】実施形態に係る署名格納テーブルの一例を示す図である。
【
図7】実施形態に係る署名対象領域管理テーブルの一例を示す図である。
【
図8】実施形態に係るメモリ格納時の動作の一例を示す図である。
【
図9】実施形態に係るメモリ読み出し時の動作の一例を示す図である。
【
図10】最小構成を有す不正検出システムの構成を示すブロック図である。
【
図11】最小構成を有する不正検出システムの動作を示すフローチャート図である。
【発明を実施するための形態】
【0014】
以下、本発明の各実施形態に係る不正検出システムについて図面を参照して説明する。以下の説明に用いる図面において本発明に関係ない部分の構成については、記載を省略し、図示しない場合がある。
【0015】
<実施形態>
(構成)
図1は、実施形態に係る情報処理装置1の要部を示す図である。情報処理装置1は、CPU(central processing unit)10と、メモリコントローラ20と、ディスク等のプログラム・データ格納領域30と、メモリ格納領域40と、不正通知手段50と、を含む。
CPU10は、情報処理装置1が備えるプロセッサである。メモリコントローラ20は、LSI(Large Scale Integration:大規模集積回路)等で構成され、CPU10によるメモリ格納領域40へのデータアクセスを管理する。例えば、メモリコントローラ20は、CPU10からの指示に基づいて、ディスク等のプログラム・データ格納領域30からデータを読み出し、そのデータをメモリ格納領域40へ格納する。また、メモリコントローラ20は、CPU10からの指示に基づいて、メモリ格納領域40に格納したデータを読み出す。ディスク等のプログラム・データ格納領域30は、プログラム等を記憶するハードディスクなどの記憶媒体である。メモリ格納領域40は、情報処理装置1が備えるメインメモリである。不正通知手段50は、情報処理装置1のモニター等へ情報を出力する装置である。図示するように、メモリコントローラ20は、CPU10、ディスク等のプログラム・データ格納領域30、メモリ格納領域40、不正通知手段50にそれぞれ接続されている。
【0016】
メモリコントローラ20は、暗号化手段200と、署名付与手段300と、復号化手段400と、署名確認手段500と、不正判定手段250と、を含んで構成される。
暗号化手段200は、ディスク等のプログラム・データ格納領域30とメモリ格納領域40に接続される。暗号化手段200は、メモリコントローラ20がディスク等のプログラム・データ格納領域30から読み出したプログラムやデータ(プログラム制御を行うコード、スタック、ヒープ等に格納する各種データ)を暗号化する。このとき、暗号化手段200は、プログラムやデータごとに暗号化に用いる暗号鍵を変更してもよい。
【0017】
署名付与手段300は、ディスク等のプログラム・データ格納領域30とメモリ格納領域40に接続される。署名付与手段300は、メモリコントローラ20がメモリ格納領域40へ、暗号化手段200によって暗号化されたプログラムやデータを格納する際に、データ格納先の領域にデジタル署名を付与する。このとき、署名付与手段300は、格納するデータごとに(領域ごとに)署名を変更してもよい。
【0018】
復号化手段400は、メモリ格納領域40と不正判定手段250に接続される。復号化手段400は、メモリコントローラ20がメモリ格納領域40から読み出した命令やデータを復号する。復号可能かどうかによって、メモリ格納領域40へ格納したデータが改変されたかどうかを確認することができる。
【0019】
署名確認手段500は、メモリ格納領域40と不正判定手段250に接続される。署名確認手段500は、メモリコントローラ20がメモリ格納領域40からデータを読み出す際に、読み出す対象データが格納されたメモリ領域に付与されたデジタル署名が正しいかどうかを確認する。これにより、読み出し先のアドレスが改変されていないかどうかを確認することができ、正当な領域からデータを読み出すことを担保することができる。
【0020】
不正判定手段250は、復号化手段400、署名確認手段500及び不正通知手段50に接続される。不正判定手段250は、メモリ格納領域40の読み出し先のメモリ領域の署名が正しく、且つ、復号化手段400によって読み出したデータが正常に復号できた場合にプログラムは正常動作をしていると判断し、署名が正しくない、又は、正常に復号できない場合にプログラムは不正動作をしていると判断する。不正判定手段250は、不正動作を検出したときには、不正通知手段50に不正を検出したことを通知させる。
【0021】
図2に、ディスク等のプログラム・データ格納領域30から読み出したプログラムやデータを、メモリ格納領域40へ格納する処理に用いられる構成の詳細を示す。
図2に示すように、メモリコントローラ20は、
図1に記載した暗号化手段200、署名付与手段300に加えて、鍵管理テーブル210と、暗号対象管理テーブル220と、署名格納テーブル310と、署名対象領域管理テーブル320と、を備える。暗号化手段200は、鍵管理テーブル210及び暗号対象管理テーブル220を使用し、署名付与手段300は、署名格納テーブル310及び署名対象領域管理テーブル320を使用する。
【0022】
図4に鍵管理テーブル210の構成の一例を示す。図示するように鍵管理テーブル210は、「鍵管理番号」、「暗号鍵」の各項目を有している。「鍵管理番号」には、暗号化に用いる鍵の識別情報、「暗号鍵」には、暗号化に用いる鍵が格納されている。暗号化手段200は、鍵管理テーブル210に登録された暗号鍵を使って、暗号化を行う。
【0023】
図5に暗号対象管理テーブル220の構成の一例を示す。図示するように暗号対象管理テーブル220は、「暗号対象管理番号」、「暗号対象」、「メモリ格納領域」の各項目を有している。「暗号対象管理番号」には、鍵管理番号が格納され、「暗号対象」には、プログラムやデータの種別(例えば、プログラム制御を行うコードか、スタック領域に格納するデータか、ヒープ領域に格納するデータかなど)が格納され、「メモリ格納領域」には、「暗号対象」のデータが格納されているメモリ格納領域40におけるメモリアドレスの範囲が格納される。暗号化手段200は、暗号対象管理テーブル220に、暗号化に用いた暗号鍵の鍵管理番号と、暗号化したプログラムやデータの種別と、暗号化したプログラムやデータの格納先のアドレスと、を対応付けて登録する。
【0024】
図6に署名格納テーブル310の構成の一例を示す。図示するように署名格納テーブル310は、「署名番号」、「署名」の各項目を有している。「署名番号」には、署名の識別情報が格納され、「署名」には、メモリ格納領域40のデータ格納先の領域に付与する署名(例えば、ハッシュ値)が格納される。署名付与手段300は、署名格納テーブル310に登録された暗号を使って、データ格納先の領域にデジタル署名を行う。
【0025】
図7に署名対象領域管理テーブル320の構成の一例を示す。図示するように暗号対象管理テーブル220は、「署名対象管理番号」、「署名対象」、「メモリ格納領域」の各項目を有している。「署名対象管理番号」には、署名番号が格納され、「署名対象」には、署名対象の領域に格納されるプログラムやデータの種別が格納され、「メモリ格納領域」には、メモリ格納領域40における「署名対象」のメモリアドレスの範囲が格納される。署名付与手段300は、署名対象領域管理テーブル320に、デジタル署名に用いた署名の署名番号と、署名した領域に格納されたプログラムやデータの種別と、そのデータ等の格納先のアドレスと、を対応付けて登録する。
【0026】
図3に、メモリ格納領域40から読み出したデータについて不正がないかどうかを検出する処理に用いられる構成の詳細を示す。
図3に示すように、メモリコントローラ20は、
図1に記載した復号化手段400、署名確認手段500、不正判定手段250に加えて、鍵管理テーブル210と、暗号対象管理テーブル220と、署名格納テーブル310と、署名対象領域管理テーブル320と、を備える。復号化手段400は、鍵管理テーブル210及び暗号対象管理テーブル220を使用し、署名確認手段500は、署名格納テーブル310及び署名対象領域管理テーブル320を使用する。各テーブル210、220、310、320については、上記で説明したとおりである。
【0027】
復号化手段400は、暗号対象管理テーブル220の「メモリ格納領域」を参照して、読み出されたデータが格納されていたアドレスと同じアドレスの範囲が登録されているデータ(レコード)を探す。復号化手段400は、アドレス範囲が一致するレコードの「鍵管理番号」が示す暗号鍵を鍵管理テーブル210から読み出して、読み出した暗号鍵を使用して、メモリ格納領域40から読み出されたデータを復号する。
【0028】
署名確認手段500は、署名対象領域管理テーブル320の「メモリ格納領域」を参照して、読み出されたデータが格納されていたアドレスと同じアドレスの範囲が登録されているレコードを探す。署名確認手段500は、アドレス範囲が一致するレコードの「署名番号」が示す署名を署名格納テーブル310から取得する。そして、署名確認手段500は、署名格納テーブル310から取得した署名と、メモリ格納領域40の読み出し先の領域に対して付与されていた署名とを比較する。
【0029】
(動作)
次に、プログラム実行時の情報処理装置1の動作について、プログラムが実行される順に従って説明する。
まず、
図8を参照して、CPU10が、メモリコントローラ20を介して、ディスク等のプログラム・データ格納領域30から、プログラムの命令やデータを読み出して、メモリ格納領域40に格納する処理について説明する。
【0030】
最初にメモリコントローラ20は、CPU10の指示に基づいて、プログラムやデータ(プログラム制御を行うコード、スタック、ヒープに格納するデータ等)を、ディスク等のプログラム・データ格納領域30から読み出す(ステップS11)。
次にメモリコントローラ20は、暗号化手段200を使って、読み出されたデータを暗号化する(ステップS12)。暗号化手段200は、鍵管理テーブル210に登録された鍵を使い、暗号化を行う。その際、暗号化手段200は、プログラム単位、データ単位で暗号鍵を変える。
【0031】
次に、メモリコントローラ20は、メモリ格納領域40のデータ格納先にデジタル署名を付与し、暗号化されたデータを格納する(ステップS13)。メモリコントローラ20がメモリ格納領域40に暗号化されたデータを格納する際に、署名付与手段300は、格納先の領域に対して、署名格納テーブル310に登録された署名を使い署名を付与する。例えば、署名付与手段300は、格納先のメモリアドレス範囲のどこかにデジタル署名を格納する。また、署名付与手段300は、プログラム単位、データ単位で署名を変える。メモリコントローラ20は、暗号化されたデータをメモリ格納領域40へ格納する。
【0032】
このとき、メモリコントローラ20は、データ格納先のメモリアドレスの範囲を、暗号化手段200と署名付与手段300へ通知する。暗号化手段200は、ステップS12の暗号化に使用した暗号鍵の鍵管理番号と対応付けて、暗号対象データの種別とメモリアドレス範囲を、暗号対象管理テーブル220に格納する。署名付与手段300は、使用した署名の署名番号と対応付けて、署名対象領域に格納されたデータの種別とメモリアドレス範囲を、署名対象領域管理テーブル320に格納する。
【0033】
次に、
図9を参照して、CPU10が、メモリコントローラ20を介して、メモリ格納領域40のプログラムの命令やデータを読み出し、実際にプログラムが実行されるときの処理について説明する。
【0034】
メモリコントローラ20は、CPU10の指示に基づいて、メモリ格納領域40からプログラムやデータを読み出す(ステップS21)。メモリコントローラ20は、読み出したデータのメモリアドレス範囲を復号化手段400、署名確認手段500に通知する。
【0035】
メモリコントローラ20の内部では、署名確認手段500が、署名の確認を行う(ステップS21)。署名確認手段500は、メモリ格納領域40へのアクセス時に、読み出す対象の領域に対して付与された署名を取得する。また、署名確認手段500は、署名対象領域管理テーブル320のメモリアドレス範囲の値と読み出す対象のメモリアドレス範囲を比較し、読み出す対象のメモリアドレス範囲に対応する署名番号を特定する。署名確認手段500は、署名格納テーブル310から特定した署名番号に対応する署名を読み出す。署名確認手段500は、署名格納テーブル310から読み出した署名と、読み出す対象のメモリ領域から取得した署名とを比較する。両者が一致すれば、処理対象のメモリ領域として正当であると確認できる。署名確認手段500は、署名の確認結果(一致するかどうか)を不正判定手段250へ出力する。
【0036】
次に復号化手段400が、暗号対象管理テーブル220のメモリアドレス範囲の値と読み出す対象のメモリアドレス範囲を比較し、読み出す対象のメモリアドレス範囲に一致するレコードの鍵管理番号を特定する。復号化手段400は、鍵管理テーブル210から特定した鍵管理番号に対応する暗号鍵を取得し、メモリ格納領域40から読み出したデータを復号する(ステップS22)。復号化手段400は、復号の結果(復号できたかどうか)を不正判定手段250へ出力する。
【0037】
次に不正判定手段250は、署名確認結果と復号化処理の結果から、プログラムが正常動作であるか否かを判定する(ステップS23)。署名確認結果と復号化処理の何れかで異常が発生すれば、不正判定手段250は、不正動作が生じたと判定する。異常とは、署名が一致しないこと、又は、読み出したデータが復号できないことの少なくとも一つが生じることを指す。不正動作が生じたと判定した場合、不正判定手段250は、不正通知手段50により不正動作を検出したことを通知する(ステップS24)。例えば、不正通知手段50は、情報処理装置1のモニター等に不正検出を表示する。あるいは、不正通知手段50は、情報処理装置1又は他のコンピュータで稼働する、監視用のプログラムに不正動作を検出したことを通知する。署名の確認結果と復号化処理の何れもが正常であれば、不正判定手段250は、プログラムの動作は正常動作であると判断する。この場合は、特に何もせず
図9の処理を終了する。
【0038】
(効果)
上記説明したように本実施形態によれば、事前の準備等を必要とせずに、プログラムの実行時の不正動作を検出することができる。より具体的には、メモリコントローラ20内に専用のハードウェア(暗号化手段200、復号化手段400、署名付与手段300、署名確認手段500、不正判定手段250)を設け、プログラム実行時における、命令やデータ(プログラム制御を行うコード、スタック、ヒープ等)のメモリ格納領域40への格納時に暗号化を実施し、メモリ格納領域40にデジタル署名を付与する。そして、メモリ格納領域40からデータを読み出す際にデジタル署名の確認と復号化によってデータ改ざんやアドレス改変の有無を判定する。これにより、コンピュータシステムが動作中のプログラムの正当性やプログラムコードの実行領域、データ格納領域の正当性の判定を行い、プログラムの不正な改変や異常動作を検出することができる。また、これにより外部からの不正にアクセスによって引き起こされるシステムの改ざん検出を行うことができる。プログラムの実行にシステムの改ざん検出を行うことにより、ホームページの改ざん、サーバのシステム破壊、サーバ内に保存されていたデータの流出、外部からの侵入などへの対策につなげることができる。また、プログラムの事前の実行や専用のコンパイルなどの特殊な事前作業を行うこと無く、プログラム実行時に不正動作を自己検出することができる。
【0039】
なお、上記実施形態では、データをメモリ格納領域40へ格納する際には、データの暗号化と、格納領域への署名を行い、メモリ格納領域40からデータを読み出す際には、格納領域へ付与した署名の確認とデータの復号化を行うこととしたが、署名を行わず、データをメモリ格納領域40へ格納する際に、データの暗号化を行い、メモリ格納領域40からデータを読み出す際にデータの復号化を行い、データの正当性確認だけを行うような実施形態であってもよい。あるいは、データの暗号化を行わず、データをメモリ格納領域40へ格納する際には、データの格納領域への署名を行い、メモリ格納領域40からデータを読み出す際には、格納領域へ付与した署名の確認を行って、処理中のメモリ領域の正当性確認だけを行うような実施形態としてもよい。
【0040】
また、暗号化手段200、署名付与手段300、復号化手段400、署名確認手段500、不正判定手段250をメモリコントローラ20内に設けることとしたが、CPU10と、メモリ格納領域40との間に専用のハードウェアを設け、この専用のハードウェアに暗号化手段200、署名付与手段300、復号化手段400、署名確認手段500、不正判定手段250を実装してもよい。
【0041】
(最小構成)
図10は、最小構成を有す不正動作検出システムの構成を示すブロック図である。
不正動作検出システム800は、準備手段801と、不正動作検出手段802と、を備える。
準備手段801は、プログラムを含むデータを記憶する記憶媒体から前記データを読み出して、メモリに格納する際に、前記データの正当性の確認および/又は前記メモリにおける処理中の領域(処理対象領域)の正当性の確認を行う為の処理を行う。
不正動作検出手段802は、前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリにおける処理中の領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出する。
暗号化手段200と署名付与手段300は準備手段の一例である。復号化手段400と、署名確認手段500と、不正判定手段250は、不正動作検出手段802の一例である。
【0042】
図11は、最小構成を有する不正動作検出システムの動作を示すフローチャート図である。
準備手段801は、プログラムを含むデータを記憶する記憶媒体から前記データを読み出して、メモリに格納する際に、前記データの正当性の確認および/又は前記メモリにおける処理中の領域の正当性の確認を行う為の準備処理を行う(ステップS801)。例えば、準備手段801は、前記データを暗号化したり、前記メモリにおける前記データの格納領域に署名を付与したりする。
次に不正動作検出手段802は、前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリにおける処理中の領域の正当性の確認を行う(ステップS802)。例えば、不正動作検出手段802は、メモリにおける格納領域に付与された署名を確認したり、読み出した前記データを復号化したりする。
次に不正動作検出手段802は、プログラムの不正動作の有無を判定する(ステップS803)。不正動作検出手段802は、データを復号できるかどうか、データを読み出す領域に付与された署名が、データ格納時に付与した署名と一致するかどうかを確認し、データが復号できない。署名が一致しない、の何れかに該当する場合には、プログラムの不正動作があると判定し(不正動作を検出)、どちらでもない場合には正常動作と判定する。
【0043】
なお、上述した実施形態におけるメモリコントローラ20、不正動作検出システム800の一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、メモリコントローラ20、不正動作検出システム800に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。
【0044】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0045】
また、上述した実施形態におけるメモリコントローラ20、不正動作検出システム800の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。メモリコントローラ20、不正動作検出システム800の各機能部は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0046】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。また、本発明の一態様は、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。また、上記各実施形態や変形例に記載された要素であり、同様の効果を奏する要素同士を置換した構成も含まれる。
【符号の説明】
【0047】
1・・・情報処理装置
10・・・CPU
20・・・メモリコントローラ
30・・・ディスク等のプログラム・データ格納領域
40・・・メモリ格納領域
50・・・不正通知手段
200・・・暗号化手段
300・・・署名付与手段
250・・・不正判定手段
400・・・復号化手段
500・・・署名確認手段
210・・・鍵管理テーブル
220・・・暗号対象管理テーブル
310・・・署名格納テーブル
320・・・署名対象領域管理テーブル
【要約】
【課題】前の準備を必要とせずに、プログラムの実行時の不正動作を検出するシステムを提供する。
【解決手段】不正動作検出システムは、プログラムを含むデータを記憶する記憶媒体から前記データを読み出して、メモリに格納する際に、前記データの正当性の確認および/又は前記メモリにおける処理中の領域の正当性の確認を行う為の処理を行う準備手段と、前記メモリから前記データを読み出すときに、前記データの正当性の確認および/又は前記メモリにおける処理中の領域の正当性の確認を行うことにより、前記プログラムの不正動作を検出する不正動作検出手段と、を備える。
【選択図】
図1