(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024173148
(43)【公開日】2024-12-12
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
G06F 21/51 20130101AFI20241205BHJP
【FI】
G06F21/51
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023091371
(22)【出願日】2023-06-02
(71)【出願人】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100132067
【弁理士】
【氏名又は名称】岡田 喜雅
(74)【代理人】
【識別番号】100131521
【弁理士】
【氏名又は名称】堀口 忍
(72)【発明者】
【氏名】菊田 祐司
(57)【要約】 (修正有)
【課題】セーフリストに基づいてプログラムを実行する手順のセキュリティを改善する。
【解決手段】クライアント装置20は、メインセーフリスト格納部に、第1のプログラムを構成するオブジェクトが登録されたメインセーフリストを格納させ、サブセーフリスト格納部に、第1のプログラムが第2のプログラムに更新されるときに、第2のプログラムを構成するオブジェクトが登録されたサブセーフリストを格納し、実行判定部に、実行すべきプログラムを構成するオブジェクトを順番に選択させ、選択したオブジェクトがメインセーフリスト又はサブセーフリストに登録されているか否かに基づいて、選択したオブジェクトが実行可能か否かを判定させる。メインセーフリストは、メインセーフリスト格納部内で書換え状態禁止に設定されている。サブセーフリストは、メインセーフリスト内に記述されている格納先情報が表すサブセーフリスト格納部内の位置に書き込まれる。
【選択図】
図7
【特許請求の範囲】
【請求項1】
プログラム格納部と、
前記プログラム格納部に第1のプログラムが格納されるときに、前記第1のプログラムを構成するオブジェクトが登録されたメインセーフリストを格納するメインセーフリスト格納部と、
前記プログラム格納部に格納されている前記第1のプログラムが第2のプログラムに更新されるときに、前記第2のプログラムを構成するオブジェクトまたは前記第1のプログラムと前記第2のプログラムとの差分に係わるオブジェクトが登録されたサブセーフリストを格納するサブセーフリスト格納部と、
前記プログラム格納部に格納されているプログラムを構成するオブジェクトを順番に選択し、選択したオブジェクトが前記メインセーフリストまたは前記サブセーフリストに登録されているか否かに基づいて、前記選択したオブジェクトが実行可能か否かを判定する実行判定部と、
前記実行判定部により実行可能と判定されたオブジェクトを実行するオブジェクト実行部と、を備え、
前記メインセーフリストは、前記メインセーフリスト格納部内では書き換えられないように設定されており、
前記メインセーフリストは、前記サブセーフリスト格納部内の位置を表す格納先情報を含み、
前記サブセーフリストは、前記格納先情報に基づいて前記サブセーフリスト格納部に書き込まれる
ことを特徴とする情報処理装置。
【請求項2】
前記メインセーフリストは、1または複数のサブセーフリストのファイル名に対してそれぞれ予め決められている、前記サブセーフリスト格納部内の位置を表す格納先情報を含み、
当該情報処理装置が前記第2のプログラムと共に対応するサブセーフリストを受信したときに、受信したサブセーフリストは、前記メインセーフリストにおいて前記受信したサブセーフリストのファイル名に対して決められている格納先情報が表す位置に書き込まれる
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記実行判定部は、前記選択したオブジェクトが前記メインセーフリストに登録されてないときに、前記選択したオブジェクトが前記サブセーフリストに登録されているか否かに基づいて、前記選択したオブジェクトが実行可能か否かを判定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記メインセーフリストには、前記第1のプログラムを構成する各オブジェクトについて、当該オブジェクトに対して予め計算されたハッシュ値がそれぞれ登録されており、
前記実行判定部は、前記選択したオブジェクトのハッシュ値を計算し、計算により得られたハッシュ値が前記メインセーフリストに登録されている対応するオブジェクトのハッシュ値と一致しないときに、前記サブセーフリストを利用して、前記選択したオブジェクトが実行可能か否かを判定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記実行判定部は、
前記メインセーフリストを利用して前記選択したオブジェクトが実行可能であると判定できないときに、前記サブセーフリストを利用して前記選択したオブジェクトが実行可能であるか否かを判定し、
前記サブセーフリストを利用して前記選択したオブジェクトが実行可能であると判定したときに、前記選択したオブジェクトに対してフラグを設定し、
当該情報処理装置が前記プログラム格納部に格納されている対象プログラムを実行するときに、前記対象プログラムを構成するオブジェクトの中の対象オブジェクトに対して前記フラグが設定されていれば、前記メインセーフリストを参照することなく前記サブセーフリストを利用して前記対象オブジェクトが実行可能か否かを判定する
ことを特徴とする請求項1に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セーフリストに基づいてプログラムを実行する情報処理装置および情報処理方法に係わる。
【背景技術】
【0002】
近年、コンピュータウイルス等の悪意のあるプログラムによる攻撃が増加している。このような攻撃に対して、正規のオブジェクトが登録されたセーフリスト(または、ホワイトリスト)に基づいてプログラムを実行することで、不正なプログラムの実行を回避する手順が実用化されている。なお、ホワイトリスト型のソフトウェア実行制御を行う情報処理装置は、例えば、特許文献1に記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述のように、セーフリストに基づいてプログラムを実行する手順が知られている。ただし、従来技術においては、プログラムの更新時にセーフリストを書き換える必要があるので、セーフリストは、通常、書き換え可能に構成されている。このため、攻撃者により不正なプログラムが送り込まれ、さらにセーフリストが書き換えられると、不正なプログラムを実行してしまうおそれがある。
【0005】
本発明の1つの側面に係わる目的は、セーフリストに基づいてプログラムを実行する情報処理装置のセキュリティを向上させることである。
【課題を解決するための手段】
【0006】
本発明の1つの態様の情報処理装置は、プログラム格納部と、前記プログラム格納部に第1のプログラムが格納されるときに、前記第1のプログラムを構成するオブジェクトが登録されたメインセーフリストを格納するメインセーフリスト格納部と、前記プログラム格納部に格納されている前記第1のプログラムが第2のプログラムに更新されるときに、前記第2のプログラムを構成するオブジェクトまたは前記第1のプログラムと前記第2のプログラムとの差分に係わるオブジェクトが登録されたサブセーフリストを格納するサブセーフリスト格納部と、前記プログラム格納部に格納されているプログラムを構成するオブジェクトを順番に選択し、選択したオブジェクトが前記メインセーフリストまたは前記サブセーフリストに登録されているか否かに基づいて、前記選択したオブジェクトが実行可能か否かを判定する実行判定部と、前記実行判定部により実行可能と判定されたオブジェクトを実行するオブジェクト実行部と、を備える。前記メインセーフリストは、前記メインセーフリスト格納部内では書き換えられないように設定されている。前記メインセーフリストは、前記サブセーフリスト格納部内の位置を表す格納先情報を含む。前記サブセーフリストは、前記格納先情報に基づいて前記サブセーフリスト格納部に書き込まれる。
【発明の効果】
【0007】
上述の態様によれば、セーフリストに基づいてプログラムを実行する情報処理装置のセキュリティが向上する。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態に係わる情報処理システムの一例を示す図である。
【
図2】クライアントプログラムの構成例を示す図である。
【
図4】クライアント装置が備えるメモリの構成例を示す図である。
【
図5】更新プログラムの構成例およびサブセーフリストの一例を示す図である。
【
図6】更新プログラムに対応するサブセーフリストの書込み処理の一例を示す図である。
【
図7】クライアント装置の機能構成の一例を示す図である。
【
図8】クライアント装置がサーバからプログラムを受信したときの処理の一例を示すフローチャートである。
【
図9】クライアント装置がプログラムを実行する手順の一例を示すフローチャートである。
【
図10】オブジェクトが実行可能か否かを判定する処理の一例を示すフローチャートである。
【
図11】サブリスト処理の一例を示すフローチャートである。
【
図12】クライアント装置の動作例を示す図である。
【
図13】本発明のバリエーションにおけるサブリスト処理の一例を示すフローチャートである。
【
図15】本発明のバリエーションにおいてオブジェクトが実行可能か否かを判定する処理の一例を示すフローチャートである。
【
図16】クライアント装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0009】
図1は、本発明の実施形態に係わる情報処理システムの一例を示す。本発明の実施形態に係わる情報処理システムは、プログラムサーバ10およびクライアント装置20(20a~20n)を備える。プログラムサーバ10およびクライアント装置20は、ネットワークを介して通信可能に構成されている。なお、情報処理システムが備えるクライアント装置20は、1台のみであってもよい。
【0010】
プログラムサーバ10は、クライアント装置20が実行すべきプログラムを管理する。以下の記載では、クライアント装置20が実行すべきプログラムを「クライアントプログラム」と呼ぶことがある。プログラムサーバ10は、クライアントプログラムに対してセーフリストを作成する。クライアントプログラムおよび対応するセーフリストは、プログラムサーバ10のストレージに保存される。そして、プログラムサーバ10は、各クライアント装置20にクライアントプログラムおよび対応するセーフリストを送信する。
【0011】
クライアント装置20は、特に限定されるものではないが、例えば、ネットワークに接続するIoT(Internet of Things)機器である。クライアント装置20は、プログラムサーバ10から送信されるクライアントプログラムおよび対応するセーフリストを、自装置のストレージに保存する。そして、クライアント装置20は、セーフリストに従ってクライアントプログラムを実行することにより、指定された動作を行う。
【0012】
クライアントプログラムは、
図2に示すように、複数のオブジェクトA~Nを含む。各オブジェクトA~Nは、クライアントプログラムを構成するプログラム部品に相当する。よって、各オブジェクトA~Nは、プログラムコードにより実現される。また、各オブジェクトA~Nは、1以上の関数を含む。
【0013】
セーフリストは、クライアントプログラムを構成する正しいオブジェクトが登録されたリストである。クライアント装置は、クライアントプログラムの実行時に、セーフリストに登録されているオブジェクトのみを実行する。なお、セーフリストは、プログラムサーバ10により作成された後、書き換えることが禁止されているファイル形式でクライアント装置20送信される。或いは、セーフリストは、クライアント装置20のストレージ内で書き換えられないように設定される。
【0014】
図3は、プログラムサーバ10により作成されるメインセーフリストの一例を示す。メインセーフリストは、
図3に示すように、オブジェクト部およびサブリスト部を含む。オブジェクト部には、対応するクライアントプログラムを構成するオブジェクトの名称(すなわち、オブジェクト名)が登録される。加えて、クライアントプログラムを構成する各オブジェクトについてのハッシュ値が登録される。例えば、
図2に示すクライアントプログラムに対して作成されるメインセーフリストには、オブジェクトA~Nについてそれぞれハッシュ値A~Nが登録される。各ハッシュ値は、対応するオブジェクト全体に対して所定のハッシュ演算を実行することで得られる。例えば、オブジェクトA対してハッシュ演算を実行することでハッシュ値Aが算出され、オブジェクトBに対してハッシュ演算を実行することでハッシュ値Bが算出されす。ハッシュ演算は、特に限定されるものではなく、SHA-1、SHA-256、MD5などを使用することができる。
【0015】
サブリスト部には、後述するサブセーフリストを格納するためのメモリ領域のアドレスが登録されている。この実施例では、サブセーフリストs1~skを格納するためのメモリ領域のアドレスとして、格納先情報aaa1~aaakが登録されている。
【0016】
図4は、クライアント装置20が備えるメモリの構成例を示す。クライアント装置20が備えるメモリは、
図4に示すように、プログラム格納領域31、メインセーフリスト格納領域32、およびサブセーフリスト格納領域33-1~33-kを含む。プログラム格納領域31には、プログラムサーバ10から配信されるクライアントプログラムが書き込まれる。メインセーフリスト格納領域32には、プログラムサーバ10により作成されるメインセーフリストが書き込まれる。各サブセーフリスト格納領域33-1~33-kには、プログラムサーバ10により作成されるサブセーフリストが書き込まれる。
【0017】
クライアント装置20のメモリの構成は、プログラムサーバ10にとって既知であるものとする。少なくとも、各サブセーフリスト格納領域33-1~33-kの先頭アドレスは予め決められている。この実施例では、サブセーフリスト格納領域33-1~33-kの先頭アドレスは、それぞれ、aaa1~aaakである。
【0018】
上記構成の情報処理システムにおいて、クライアント装置20に所定の処理を実行させるときは、プログラムサーバ10からクライアント装置20に対応するクライアントプログラムが送信される。このとき、クライアントプログラムと共にメインセーフリストが送信される。そして、クライアント装置20において、クライアントプログラムおよびメインセーフリストは、それぞれ、プログラム格納領域31およびメインセーフリスト格納領域32に書き込まれる。この時点では、各サブセーフリスト格納領域33-1~33-kは空(未使用)である。
【0019】
この後、クライアントプログラムの更新時には、プログラムサーバ10は、更新プログラムに対応するサブセーフリストを作成する。そして、プログラムサーバ10は、更新プログラムおよび対応するサブセーフリストをクライアント装置20に送信する。
【0020】
例えば、
図2に示すクライアントプログラムを
図5(a)に示す更新プログラムに置き換えるものとする。更新プログラムは、
図2に示すオブジェクトBをオブジェクトB2に置き換えることで得られる。この場合、更新プログラムに対応するサブセーフリストは、
図5(b)に示すように、オブジェクトA、B2~Nについてのハッシュ値A、B2~Nを含む。ただし、サブセーフリストには、更新プログラムを構成する全オブジェクトが登録される必要はない。例えば、サブセーフリストには、
図5(c)に示すように、クライアントプログラムと更新プログラムとの差分に係わるオブジェクト(ここでは、オブジェクトB2)が登録されるだけでもよい。また、サブセーフリストは、オブジェクト部を備えるだけでよく、サブリスト部を含む必要はない。なお、メインセーフリストと同様に、サブセーフリストも、書き換えることが禁止されているファイル形式で作成されてクライアント装置20に送信される。或いは、サブセーフリストは、クライアント装置20のストレージ内で書き換えられないように設定される。
【0021】
プログラムサーバ10は、クライアントプログラムの更新が何回目であるのかに応じてサブセーフリストのファイル名を決定してもよい。例えば、1回目の更新時には、サブセーフリストのファイル名は「s1」であり、2回目の更新時には、サブセーフリストのファイル名は「s2」である。そして、クライアント装置20は、更新プログラムと共にサブセーフリストを受信すると、メインセーフリスト内のサブリスト部を参照し、サブセーフリストの名称に対応する格納先にそのサブセーフリストを格納する。例えば、サブセーフリストs1を受信したときには、クライアント装置20は、
図3に示すメインセーフリストに基づいて、アドレスaaa1にサブセーフリストs1を格納する。
【0022】
例えば、初期設定時には、プログラムサーバ10からクライアント装置20にクライアントプログラムおよびメインセーフリストが送信される。そうすると、クライアント装置20において、
図6(a)に示すように、クライアントプログラムはプログラム格納領域31に格納され、メインセーフリストはメインセーフリスト格納領域32に格納される。このとき、各サブセーフリスト格納領域33-1~33-kは空(未使用)である。続いて、クライアントプログラムが更新されるものとする。この場合、プログラムサーバ10からクライアント装置20に更新プログラムおよび対応するサブセーフリストs1が送信される。そうすると、クライアント装置20において、
図6(b)に示すように、プログラム格納領域31に格納されていたクライアントプログラムが更新プログラムに置き換えられる。また、サブセーフリストs1は、アドレスaaa1に書き込まれる。すなわち、サブセーフリストs1は、サブセーフリスト格納領域33-1に格納される。このとき、メインセーフリスト格納領域32に格納されているメインセーフリストは、書き換えられることはない。
【0023】
図7は、クライアント装置20の機能構成の一例を示す。クライアント装置20は、通信部41、書込み制御部42、プログラム格納部43、メインセーフリスト格納部44、サブセーフリスト格納部45、実行判定部46、およびオブジェクト実行部47を備える。ただし、クライアント装置20は、
図7に示していない他の機能、回路、またはデバイスを備えてもよい。
【0024】
通信部41は、ネットワークに接続するインタフェースを提供する。
図1に示す情報処理システムにおいては、通信部41は、プログラムサーバ10からクライアントプログラム、メインセーフリスト、およびサブセーフリストを受信することができる。書込み制御部42は、通信部41が受信するクライアントプログラム、メインセーフリスト、サブセーフリストを、それぞれ、プログラム格納部43、メインセーフリスト格納部44、サブセーフリスト格納部45に書き込む。
【0025】
プログラム格納部43は、
図4または
図6に示すプログラム格納領域31に相当し、プログラムサーバ10から送信されるクライアントプログラムまたはその更新プログラムを格納する。メインセーフリスト格納部44は、
図4または
図6に示すメインセーフリスト格納領域32に相当し、プログラムサーバ10から送信されるメインセーフリストを格納する。サブセーフリスト格納部45は、
図4または
図6に示すサブセーフリスト格納領域33-1~33-kに相当し、プログラムサーバ10から送信されるサブセーフリストを格納する。
【0026】
実行判定部46は、プログラム格納部43に格納されているクライアントプログラムまたは更新プログラムを構成する各オブジェクトが実行可能か否かを判定する。このとき、実行判定部46は、オブジェクトがメインセーフリストまたはサブセーフリストに登録されているか否かに基づいて、当該オブジェクトを実行してよいか否かを判定する。オブジェクト実行部47は、実行判定部46により実行可能と判定されたオブジェクトを実行する。すなわち、メインセーフリストまたはサブセーフリストに登録されているオブジェクトのみが実行される。したがって、メインセーフリストまたはサブセーフリストに登録されていない不正なオブジェクトの実行を回避できる。
【0027】
図8は、クライアント装置20がサーバからプログラムを受信したときの処理の一例を示すフローチャートである。S1において、クライアント装置20は、プログラムサーバ10から送信されるクライアントプログラムおよび対応するメインセーフリストを待ち受ける。そして、クライアント装置20がクライアントプログラムおよびメインセーフリストを受信すると、書込み制御部42は、S2において、そのクライアントプログラムをプログラム格納部43に格納する。また、書込み制御部42は、S3において、受信したメインセーフリストをメインセーフリスト格納部44に格納する。この後、クライアント装置20は、S4において、プログラムサーバ10から送信される更新プログラムおよび対応するサブセーフリストを待ち受ける。
【0028】
クライアント装置20が更新プログラムおよび対応するサブセーフリストを受信すると、書込み制御部42は、S5において、プログラム格納部43に格納されているクライアントプログラムを、受信した更新プログラムに置き換える。また、書込み制御部42は、S6において、メインセーフリスト格納部44に格納されているメインセーフリストを参照し、受信したサブセーフリストのファイル名に対応する格納先を特定する。そして、書込み制御部42は、特定した格納先に、受信したサブセーフリストを格納する。
【0029】
この後、クライアント装置20の処理はS4に戻る。すなわち、クライアント装置20は、次の更新プログラムおよび対応するサブセーフリストを待ち受ける。なお、クライアント装置20の初期設定としてクライアントプログラムおよび対応するメインセーフリストがそれぞれプログラム格納部43およびメインセーフリスト格納部44に格納されている場合には、S1~S3はスキップされる。
【0030】
図9は、クライアント装置20がプログラムを実行する手順の一例を示すフローチャートである。ここで、プログラム格納部43には、クライアントプログラムが格納されている。また、メインセーフリスト格納部44には、メインセーフリストが格納されている。さらに、プログラム格納部43に格納されているクライアントプログラムが更新されているときは、サブセーフリスト格納部45に対応するサブセーフリストが格納されている。なお、以下の記載では、クライアント装置20が実行するクライアントプログラムまたは更新プログラムを「対象プログラム」と呼ぶことがある。
【0031】
S11において、実行判定部46は、メインセーフリスト格納部44からメインセーフリストを取得する。メインセーフリストには、
図3に示すように、対象プログラムを構成する各オブジェクトのオブジェクト名およびハッシュ値が登録されている。S12において、実行判定部46は、対象プログラムからオブジェクトを1つ選択する。そして、実行判定部46は、S13~S14において、選択したオブジェクトが実行可能か否かを判定する。
【0032】
選択したオブジェクトが実行可能であるときは、S15において、オブジェクト実行部47は、そのオブジェクトを実行する。一方、選択したオブジェクトが実行可能でないときは、S16において、後述するサブリスト処理が実行される。
【0033】
S17において、クライアント装置20は、対象プログラム中にS13~S16の処理が実行されてないオブジェクトが残っているかを確認する。そして、対象プログラム中にS13~S16の処理が実行されてないオブジェクトが残っているときは、クライアント装置20の処理はS12に戻る。すなわち、対象プログラムから次のオブジェクトが選択され、そのオブジェクトの実行可否が判定され、その判定結果に応じてS15またはS16が実行される。これにより、対象プログラムを構成するすべてのオブジェクトが処理される。
【0034】
図10は、オブジェクトが実行可能か否かを判定する処理の一例を示すフローチャートである。この処理は、
図9に示すS13に相当する。すなわち、対象プログラムから選択された1つのオブジェクトに対して実行される。以下の記載では、対象プログラムから選択されたオブジェクトを「対象オブジェクト」と呼ぶことがある。
【0035】
S21~S22において、実行判定部46は、対象オブジェクトのオブジェクト名がメインセーフリストに登録されているか否かを判定する。そして、対象オブジェクトのオブジェクト名がメインセーフリストに登録されているときは、実行判定部46は、S23において、対象オブジェクトのハッシュ値を計算する。ここで、実行判定部46が実行するハッシュ演算は、プログラムサーバ10においてメインセーフリストを作成する際に各オブジェクトに対して実行されるハッシュ演算と同じである。
【0036】
S24において、実行判定部46は、対象オブジェクトについて計算したハッシュ値とメインセーフリストに登録されているハッシュ値とを比較する。この結果、2つのハッシュ値が互いに一致すれば、実行判定部46は、対象オブジェクトが変更されてない、不正ではない、または不正なプログラムではないと判定する。この場合、S25において、実行判定部46は、対象オブジェクトが実行可能と判定する。
【0037】
対象オブジェクトのオブジェクト名がメインセーフリストに登録されていないときは、実行判定部46は、S26において、対象オブジェクトが実行可能か否かの判定を保留する。同様に、対象オブジェクトについて計算したハッシュ値とメインセーフリストに登録されているハッシュ値とが一致しないときも、実行判定部46は、対象オブジェクトが実行可能か否かの判定を保留する。
【0038】
図11は、サブリスト処理(すなわち、
図9に示す手順で実行可能と判定されなかったときの処理)の一例を示すフローチャートである。よって、
図11に示す手順は、
図10に示す手順において、対象オブジェクトがメインセーフリストに登録されてないとき、または、対象オブジェクトのハッシュ値がメインセーフリストに登録されているハッシュ値と一致しないときに実行される。
【0039】
S31において、実行判定部46は、サブセーフリスト格納部45からサブセーフリストを取得する。サブセーフリスト格納部45に複数のサブセーフリストが格納されているときには、実行判定部46は、サブセーフリスト格納部45からいずれか1つのサブセーフリストを取得する。S32~S33において、実行判定部46は実行判定処理を行う。この実行判定処理は、
図9に示すS13と実質的に同じである。すなわち、実行判定部46は、S32において、
図10に示す手順を実行する。ただし、S32においては、実行判定部46は、S31で取得したサブセーフリストを利用して、対象オブジェクトが実行可能か否かを判定する。
【0040】
対象オブジェクトが実行可能であるときは(S33:Yes)、S34において、オブジェクト実行部47は、対象オブジェクトを実行する。一方、対象オブジェクトが実行可能でないときは(S33:No)、クライアント装置20は、未処理のサブセーフリストがサブセーフリスト格納部45に残っているかを判定する。そして、未処理のサブセーフリストが残っているときは、クライアント装置20の処理はS31に戻る。すなわち、クライアント装置20は、サブセーフリスト格納部45に格納されているサブセーフリストを1つずつ順番に選択してS32~S33の判定を行う。この結果、いずれかのサブセーフリストに基づいて対象オブジェクトが実行可能と判定されたときは、S34において対象オブジェクトが実行される。なお、いずれのサブセーフリストに基づいても対象オブジェクトが実行可能と判定されなかったときは、クライアント装置20は、対象オブジェクトを実行することなく処理を終了する。
【0041】
図12は、クライアント装置20の動作例を示す。この実施例では、初期設定として、
図12(a)に示すように、オブジェクトA~Cから構成されるクライアントプログラムがクライアント装置20に実装される。また、メインセーフリストには、オブジェクトA~Cが登録されている。なお、この時点では、サブセーフリスト格納部45は空である。
【0042】
クライアント装置20は、
図9~
図11に示すフローチャートに従ってクライアントプログラムを処理する。具体的には、まず、オブジェクトAに対して
図9~
図11に示す処理が行われる。ここで、オブジェクトAはメインセーフリストに登録されている。また、オブジェクトAのハッシュ値は、メインセーフリストに登録されている対応するハッシュ値と一致するものとする。そうすると、クライアント装置20は、オブジェクトAを実行する。以下、同様に、クライアント装置20は、オブジェクトB~Cも実行する。これにより、クライアントプログラムに記述された動作が実現される。
【0043】
続いて、
図12(b)に示すように、クライアント装置20に更新プログラムが与えられる。更新プログラムは、オブジェクトA、B2、Cから構成される。そして、クライアント装置20のプログラム格納部43に格納されていたクライアントプログラムは更新プログラムに置き換えられる。ただし、メインセーフリストが書き換えられることはない。その一方で、クライアント装置20は、更新プログラムに対応するサブセーフリストを受信する。このサブセーフリストには、更新プログラムを構成するオブジェクトA、B2、Cが登録されている。そして、このサブセーフリストは、サブセーフリスト格納部45に格納される。
【0044】
クライアント装置20は、
図9~
図11に示すフローチャートに従って更新プログラムを処理する。具体的には、まず、オブジェクトAに対して
図9~
図11に示す処理が行われる。ここで、オブジェクトAは、メインセーフリストに登録されている。したがって、
図12(a)に示すケースと同様に、クライアント装置20は、オブジェクトAを実行する。
【0045】
続いて、オブジェクトB2に対して
図9~
図11に示す処理が行われる。ここで、オブジェクトB2はメインセーフリストに登録されていないので(S22:No)、S26において「実行保留」と判定される。この場合、S14の判定が「No」となるので、S16のサブリスト処理(すなわち、
図11に示す手順)が実行される。
図11に示す手順では、サブセーフリストに基づいて、オブジェクトB2が実行可能か否か判定される。ここで、オブジェクトB2はサブセーフリストに登録されている。また、オブジェクトB2のハッシュ値は、サブセーフリストに登録されている対応するハッシュ値と一致するものとする。そうすると、クライアント装置20は、オブジェクトB2を実行する。この後、
図12(a)に示すケースと同様に、クライアント装置20はオブジェクトCを実行する。これにより、更新プログラムに記述された動作が実現される。
【0046】
図12(c)に示すケースでは、攻撃者がクライアント装置20に不正プログラムを送信する。不正プログラムは、オブジェクトA、B、Dから構成されている。そして、プログラム格納部43に格納されていたクライアントプログラムが不正プログラムに置き換えられるものとする。ただし、この場合であっても、メインセーフリストは書き換えられることはない。
【0047】
クライアント装置20は、
図9~
図11に示すフローチャートに従って不正プログラムを処理する。そうすると、オブジェクトA~Bは、
図12(a)に示すケースと同様に、実行されることになる。ところが、オブジェクトDは、メインセーフリストに登録されていない。この場合、S16のサブリスト処理(すなわち、
図11に示す手順)が実行される。ここで、攻撃者は、不正プログラムに対応するサブセーフリストを作成していないものとする。そうすると、オブジェクトDについて、実行可能との判定が得られないので、クライアント装置20はオブジェクトDを実行しない。すなわち、全体として不正プログラムが実行されることはない。
【0048】
このように、本発明の実施形態では、メインセーフリストの書換えが禁止されているので、クライアントプログラムが不正プログラムに書き換えられたとしても、その不正プログラムが実行されることはない。したがって、セーフリストに基づいてプログラムを実行する情報処理装置のセキュリティが向上する。また、正規のユーザがクライアントプログラムを更新する際には、メインセーフリストに紐づけられて、更新プログラムに対応するサブセーフリストがクライアント装置20内に保存される。したがって、メインセーフリストの書換えが禁止されていても、サブセーフリストを利用することにより、更新プログラムを実行することができる。
【0049】
<バリエーション>
図9~
図11に示す手順では、クライアントプログラムが更新プログラムに置き換えられた後は、変更されたオブジェクトについて、S13の実行判定が行われ、さらに、S32の実行判定が行われる。ここで、実行判定は、
図10に示すように、検索処理およびハッシュ演算を含むので、計算量が多い。そこで、本発明の実施形態のバリエーションは、この課題を緩和する機能を提供する。
【0050】
本発明のバリエーションに係わるクライアント装置は、サブセーフリストに基づいてオブジェクトを実行するときに、
図13に示すように、S41において、そのオブジェクトに対してフラグを設定する。各オブジェクトのフラグは、
図14に示すフラグリストにより管理される。フラグリストは、クライアントプログラムを構成する各オブジェクトについて、フラグが設定されているか否かを表す。
図14に示す実施例では、オブジェクトBに対してフラグが設定されている。この後、フラグリストは、クライアント装置がクライアントプログラムを実行するときに参照される。具体的には、以下の通りである。
【0051】
クライアント装置は、クライアントプログラムを実行するときには、
図9に示すフローチャートに従って各オブジェクトを処理する。よって、S12で選択した対象オブジェクトに対してS13の判定処理が行われる。ここで、S13の判定処理は、本発明のバリエーションにおいては、
図15に示すフローチャートにより実現される。
【0052】
図15に示すフローチャートにおいては、
図10を参照して説明したS21~S26の前にS51~S52が設けられている。S51~S52において、実行判定部46は、フラグリストを参照することにより、対象オブジェクトに対してフラグが設定されているか否かを確認する。そして、対象オブジェクトに対してフラグが設定されているときは、実行判定部46は、S21~S24を実行することなく、S26において、対象オブジェクトが実行可能か否かの判定を保留する。この場合、
図9のS14の判定結果が「No」になるので、S16のサブリスト処理が実行される。すなわち、対象オブジェクトは、
図13に示すフローチャートに従って処理される。
【0053】
上述の手順において、フラグが設定されているオブジェクトは、サブセーフリストに基づいて実行されたオブジェクトである。また、オブジェクトがサブセーフリストに基づいて実行されるのは、そのオブジェクトがメインセーフリストに登録されてないか、あるいは、そのオブジェクトのハッシュ値がメインセーフリストに登録されているハッシュ値と異なるときである。すなわち、フラグが設定されているオブジェクトは、メインセーフリストを用いて検索および/またはハッシュ演算を行っても、実行可能と判定されることはない。
【0054】
そこで、本発明のバリエーションでは、フラグが設定されているオブジェクトは、メインセーフリストを用いた検索および/またはハッシュ演算を行うことなく、サブセーフリストに基づいて実行可能か否かの判定が行われる。これにより、各オブジェクトが実行可能か否かの処理の負荷が少なくなる。
【0055】
なお、上述の実施例では、クライアントプログラムを構成するオブジェクトのフラグを管理するが、更に、更新プログラムを構成するオブジェクトのフラグを管理してもよい。この場合、不要な検索および/またはハッシュ演算をさらに削減できる。
【0056】
<ハードウェア>
図16は、クライアント装置20のハードウェア構成の一例を示す。クライアント装置20は、プロセッサ101、メモリ102、記憶装置103、入出力デバイス104、記録媒体読取り装置105、および通信インタフェース106を備えるコンピュータ100により実現される。
【0057】
プロセッサ101は、記憶装置(不揮発性メモリ)103に保存されているプログラムを実行することにより、クライアント装置20の動作を制御する。記憶装置103に保存されるプログラムは、
図8~
図11、
図13、および
図15に示すフローチャートの手順を記述したプログラムコードを含む。よって、プロセッサ101がこのプログラムを実行することで、
図7に示す書込み制御部42、実行判定部46、およびオブジェクト実行部47の機能が提供される。メモリ(RAM)102は、プロセッサ101の作業領域として使用される。記憶装置103は、上述した各種プログラムを保存する。また、セーフリスト(メインセーフリストおよびサブセーフリスト)も記憶装置103に保存される。すなわち、
図7に示すプログラム格納部43、メインセーフリスト格納部44、およびサブセーフリスト格納部45は、記憶装置103により実現される。
【0058】
入出力デバイス104は、キーボード、マウス、タッチパネル、マイクなどの入力デバイスを含む。また、入出力デバイス104は、表示装置、スピーカーなどの出力デバイスを含む。記録媒体読取り装置105は、記録媒体110に記録されているデータおよび情報を取得できる。記録媒体110は、コンピュータ100に着脱可能なリムーバブル記録媒体である。また、記録媒体110は、例えば、半導体メモリ、光学的作用で信号を記録する媒体、または磁気的作用で信号を記録する媒体により実現される。本発明の実施形態に係わるプログラムは、記録媒体110からコンピュータ100に与えられてもよい。なお、クライアント装置20は、入出力デバイス104および/または記録媒体読取り装置105を備えなくてもよい。通信インタフェース106は、ネットワークに接続する機能を提供する。なお、本発明の実施形態に係わるプログラムがプログラムサーバ120に保存されているときは、コンピュータ100は、プログラムサーバ120からそれらのプログラムを取得してもよい。
【符号の説明】
【0059】
10 プログラムサーバ
20 クライアント装置
41 通信部
42 書込み制御部
43 プログラム格納部
44 メインセーフリスト格納部
45 サブセーフリスト格納部
46 実行判定部
47 オブジェクト実行部