JP5061908B2 - プログラム実行制御方法および装置ならびに実行制御プログラム - Google Patents

プログラム実行制御方法および装置ならびに実行制御プログラム Download PDF

Info

Publication number
JP5061908B2
JP5061908B2 JP2007551858A JP2007551858A JP5061908B2 JP 5061908 B2 JP5061908 B2 JP 5061908B2 JP 2007551858 A JP2007551858 A JP 2007551858A JP 2007551858 A JP2007551858 A JP 2007551858A JP 5061908 B2 JP5061908 B2 JP 5061908B2
Authority
JP
Japan
Prior art keywords
program
application
execution environment
domain information
execution
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.)
Expired - Fee Related
Application number
JP2007551858A
Other languages
English (en)
Other versions
JPWO2007074565A1 (ja
Inventor
徳寿 伊賀
好則 才田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2007551858A priority Critical patent/JP5061908B2/ja
Publication of JPWO2007074565A1 publication Critical patent/JPWO2007074565A1/ja
Application granted granted Critical
Publication of JP5061908B2 publication Critical patent/JP5061908B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本発明はコンピュータにおけるアプリケーションプログラムの実行制御に関し、特に信頼できないコードを含むアプリケーションプログラムからシステム資源を保護して安全に実行する技術に関する。
有線または無線のネットワークや外部メモリカードを用いて、コンピュータ端末の外部からアプリケーションプログラム(以下、単に、アプリケーションと略す)を導入または取得する場合、アプリケーションの悪意ある動作や不具合等から、コンピュータ端末内の各種データに不正にアクセスされたり、端末システムの安定動作を妨害される恐れがある。そのため、信頼できないコードを含むアプリケーションをコンピュータ端末上で安全に実行する技術が重要である。
従来のこの種技術の一例が特表2001−514411公報(特許文献1)に記載されている。この従来技術では、外部から導入または取得されたアプリケーションは、サンドボックスと呼ばれるメモリ範囲内にロードされ、メモリにアクセスする際、当該アプリケーションのコードに追加されたチェックコードによってそのアクセスがチェックされる。若し、メモリに対するアクセスがサンドボックス内であれば許可され、サンドボックス外であれば、そのアクセスが許容されるか否かを判断し、許容されれば許可し、そうでなければ阻止する。また、アプリケーションからのAPI(Application
Programming Interface)コールは、コンピュータシステムのセキュリティの侵害を防止しながらホストオペレーティングシステムにアクセスできるサンクと呼ばれる変換コードモジュールで置換される。アプリケーションの実行中にAPIコールが行われると、制御が変換コードモジュールに移り、そのAPIコードがホストオペレーティングシステムで実行されることが許容されるべきかどうかが判断される。許容されていればそのAPIコールは処理され、許容されていなければそのAPIコールは実行されない。幾つかのAPIコールは所定の修正が施されて実行される場合がある。
特許文献1に開示された従来技術によれば、外部から導入または取得されたアプリケーションはメモリの外側へのアクセスが制限されたメモリ範囲にロードされ、またアプリケーション中のAPIコールは変換コードモジュールで置換されてそのコール時に実行の可否がチェックされる。つまり、アプリケーションは隔離された実行環境の下で実行される。これによって、実行環境外部に存在するユーザデータやライブラリあるいはデバイスドライバといったシステム資源の保護を図りながら、信頼できないアプリケーションの実行を安全に実行できるようにしている。
しかしながら、特許文献1に開示された従来技術では、外部から導入または取得されたアプリケーションはライブラリやデバイスドライバなどをAPI経由でしか利用することができない。そして、APIコールを行うと、その都度、変換コードモジュールにおいてその実行の可否の判定が行われるため、それがオーバーヘッドとなってアプリケーションの実行速度が低下する。
本発明は、従来技術の課題を克服し、信頼できないコードを含むプログラムを安全に、かつ、オーバーヘッドを少なくして実行するプログラム実行制御方法およびその装置ならびに実行制御プログラムを提供することができる。
本発明の第1のプログラム実行制御方法は、コンピュータ上でプログラムの実行を制御する方法であって、前記コンピュータに備わるデバイスドライバ、ライブラリおよびユーザデータのうち前記プログラムのドメインに基づいて決定される範囲のデバイスドライバ、ライブラリおよびユーザデータのフルセット又はサブセットが実行環境内にコピーされることにより作成されることにより、前記実行環境外へのアクセスが制限された実行環境内で動作するプログラムから参照可能に配置され、前記プログラムを前記実行環境内で実行し、
前記プログラムのドメインを、前記プログラムに関連付けられたドメイン情報に基づいて決定し、前記プログラムを含むパッケージに付与されているドメイン情報を取得し、前記プログラムに関連付けられたドメイン情報として使用し、前記取得したドメイン情報を前記プログラムに付与することを特徴とする。
本発明の第2のプログラム実行制御方法は、前記ドメイン情報が付与されたプログラムにデジタル署名を付与し、該付与したデジタル署名をプログラム実行ごとに検証することを特徴とする。
本発明の第1のプログラム実行制御装置は、コンピュータ上でプログラムの実行を制御する装置であって、前記コンピュータに備わるデバイスドライバ、ライブラリおよびユーザデータのうち前記プログラムのドメインに基づいて決定される範囲のデバイスドライバ、ライブラリおよびユーザデータのフルセット又はサブセットが実行環境内にコピーされることにより作成されることにより、前記実行環境外へのアクセスが制限された前記実行環境内で動作するプログラムから参照可能に配置する実行環境作成手段と、前記プログラムを前記実行環境内で実行する実行制御手段と、を具備し、前記実行環境作成手段は、前記プログラムのドメインを、前記プログラムに関連付けられたドメイン情報に基づいて決定し、前記プログラムに関連付けられたドメイン情報として使用するために、前記プログラムを含むパッケージに付与されているドメイン情報を取得するドメイン情報取得手段を有し、前記ドメイン情報取得手段は、前記取得したドメイン情報を前記プログラムに付与することを特徴とする。
本発明の第2のプログラム実行制御装置は、前記ドメイン情報が付与されたプログラムにデジタル署名を付与し、該付与したデジタル署名をプログラム実行ごとに検証する検証手段を有することを特徴とする。
本発明の第1の実行制御プログラムは、コンピュータを、前記コンピュータに備わるデバイスドライバ、ライブラリおよびユーザデータのうち前記プログラムのドメインに基づいて決定される範囲のデバイスドライバ、ライブラリおよびユーザデータのフルセット又はサブセットが実行環境内にコピーされることにより作成されることにより、前記実行環境外へのアクセスが制限された前記実行環境内で動作するプログラムから参照可能に配置する実行環境作成手段、前記プログラムを前記実行環境内で実行する実行制御手段、として機能させ、前記実行環境作成手段は、前記プログラムのドメインを、前記プログラムに関連付けられたドメイン情報に基づいて決定し、前記コンピュータを、さらに、前記プログラムに関連付けられたドメイン情報として使用するために、前記プログラムを含むパッケージに付与されているドメイン情報を取得するドメイン情報取得手段として機能させ、前記ドメイン情報取得手段は、前記取得したドメイン情報を前記プログラムに付与することを特徴とする。
本発明の第10のプログラム実行制御方法は、第6、第8および第9のうち何れか1つのプログラム実行制御方法において、前記ドメイン情報が付与されたパッケージあるいは前記ドメイン情報が付与されたプログラムに添付されたデジタル証明書またはデジタル署名を検証することを特徴とする。
本発明にあっては、実行環境外へのアクセスが制限された実行環境内で外部から導入または取得されたプログラムを実行するため、実行環境外のユーザデータなどが不正にアクセスされるのを防止でき、信頼できないコードを含むプログラムを安全に実行できる。また、そのプログラムに使用させても差し支えのないデバイスドライバ、ライブラリおよびユーザデータが、実行環境内で動作するプログラムから参照可能に配置してあるため、APIコールを通じてしかデバイスドライバやライブラリ等にアクセスできなかった従来技術に比べて、プログラム実行時のオーバーヘッドが低減する。
実行環境内で動作するプログラムから参照可能に配置されるデバイスドライバ、ライブラリおよびユーザデータの範囲を拡大すればするほど、プログラム実行時のオーバーヘッドは低減するが、その反面、システム損傷の危険性が増す。この問題を本発明では、プログラムの素性を表すドメインによって範囲を決定することで解決する。つまり、素性の良い安全性の高いプログラムには多くの範囲を、そうでないプログラムにはまったく割り当てないか、少ない範囲を割り当てる。
プログラムの素性を表すドメインは、例えば、プログラムに関連付けられたドメイン情報に基づいて決定することができる。この場合、外部から導入するプログラム自体に付与されているドメイン情報があればそれを利用し、プログラム自体になくそのパッケージにドメイン情報が付与されていればそれを利用する。また、ドメイン情報が改竄されていると安全性が脅かされるので、デジタル証明書あるいはデジタル署名が付与されていればそれを検証し、問題ないことを確認してから利用する。この検証はプログラムのインストール時に行う。また、プログラム自体にドメイン情報およびデジタル証明書あるいはデジタル署名が付与されている場合、あるいは付与されていなくてもシステムが自動的に付与して、プログラムの起動ごとに検証することで、より安全性が高まる。
プログラムの素性を表すドメインは、上述のように付加されドメイン情報に基づいて決定する以外に、プログラムに関連付けられたデジタル証明書またはデジタル署名の検証結果に基づいて決定することも可能である。
本発明によれば、信頼できないコードを含むプログラムをコンピュータ上で安全かつオーバーヘッド少なく実行することができる。その理由は、実行環境外へのアクセスが制限された実行環境を作成し、コンピュータに備わる、実行環境外部に存在するデバイスドライバ、ライブラリおよびユーザデータの少なくとも一部を実行環境内で動作するプログラムから参照可能に配置し、外部から導入または取得されたプログラムを実行環境内で実行するからである。
図1は、本発明による第1の実施の形態に係わる構成を示すブロック図である。 図2は、本発明による第1の実施の形態におけるインストール動作を示す流れ図である。 図3は、本発明による第1および第2の実施の形態における実行環境作成動作を示す流れ図である。 図4は、本発明による第1および第2の実施の形態におけるアクセス制御動作を示す流れ図である。 図5は、本発明による第1および第2の実施の形態に係わる実行環境の構成を示すブロック図である。 図6は、本発明による第2の実施の形態に係わる構成を示すブロック図である。 図7は、本発明による第2の実施の形態におけるアプリケーションのファイル構成を示す図である。 図8は、本発明による第2の実施の形態におけるアプリケーション起動時の動作を示す流れ図である。 図9は、本発明による第1の実施の形態で使用するドメインごとの実行環境作成内容を示すテーブルの構成図である。 図10は、本発明による第3の実施の形態に係わる構成を示すブロック図である。 図11は、本発明の実施例1および実施例2で使用するドメインごとの実行環境作成内容を示すテーブルの構成図である。 図12は、本発明の実施例3で使用するドメインごとの実行環境作成内容を示すテーブルの構成図である。 図13は、本発明による第1の実施の形態におけるインストール動作を示すシーケンス図である。 図14は、本発明による第1の実施の形態における実行環境作成動作を示すシーケンス図である。 図15は、本発明による第2の実施の形態における実行環境作成動作を示すシーケンス図である。
以下、本発明の好ましい幾つかの実施の形態について、添付の図面を参照して詳細に説明する。
第1の実施の形態:
図1を参照すると、本発明による第1の実施の形態は、クライアント端末100と、このクライアント端末100に有線もしくは無線ネットワークで接続されたアプリケーション配信サーバ200とから構成されている。
クライアント端末100は、CPU101と、RAM102と、ROM103と、HDD104と、外部メモリ105と、出力装置106と、通信装置107と、入力装置108と、端末システム110と、制御手段120と、アプリケーション取得手段130と、ドメイン情報取得手段140と、検証手段150と、実行制御手段160と、アクセス制御手段170と、リソース制御手段180と、実行環境作成手段190とを含む。各手段120〜190はクライアント端末100のユーザ空間内に配置されている。
端末システム110は、アプリケーション保存領域111と、デバイスドライバ112と、ユーザデータ113と、ライブラリ(ライブラリプログラム)114とを含む。
これらの手段および装置はそれぞれ概略つぎのように動作する。
CPU101はセントラル・プロセッシング・ユニットであり、各手段やプログラムの実行を制御および計算処理を行う。
RAM102はランダム・アクセス・メモリであり、読書き可能な記憶装置である。各手段やプログラムの実行時には使用されるデータを読書きする場合に一時的な記憶領域となる。実行コードそのものを一時的に記憶する場合もある。
ROM103はリード・オンリー・メモリであり、読込みのみ可能な記憶装置である。各手段やプログラムの実行コード、データなどについて記憶する。クライアント端末1の電源をOFFしても記憶されている実行コードおよびデータは消えない。
HDD104はハード・ディスク・ドライブであり、読書き可能な記憶装置である。RAM102と比べて読み込みおよび書き込み処理速度は遅いが、大容量であり、クライアント端末1の電源をOFFしても記憶されている実行コードおよびデータは消えない。
外部メモリ105はクライアント端末1に脱着可能な読書き可能な記憶装置である。アプリケーション、ライブラリ114、ユーザデータ113、およびデバイスドライバ112などの実行コードやデータなどを外部メモリ105に記憶させ、クライアント端末1に装着することでクライアント端末1に実行コードやデータを追加する。
出力装置106はクライアント端末1で実行された処理結果をディスプレイに表示したり、音声出力する。
通信装置107は、アプリケーション、ライブラリ114、ユーザデータ113、およびデバイスドライバ112などの実行コードやデータを外部と通信してクライアント端末1に取り込む。
入力装置108は、新たな処理の実行を依頼するためのキー(ボタン)、音声などにより、情報をクライアント端末1に取り込む。
制御手段120は、クライアント端末100内の各手段を制御し、アプリケーションの取得から、アプリケーションを実行する環境の作成、アプリケーションの実行制御までを行う。
アプリケーション取得手段130は、アプリケーション配信サーバ200もしくは外部メモリ105から、アプリケーションを含みドメイン情報とデジタル署名またはデジタル証明書が添付されているパッケージをクライアント端末100内に取得し、アプリケーション保存領域111に格納する。
ドメイン情報取得手段140は、アプリケーション取得手段130で取得されたパッケージに添付されたドメイン情報を取得する。
検証手段150は、アプリケーション取得手段130で取得されたパッケージに添付されたデジタル署名やデジタル証明書の検証処理を行う。
実行制御手段160は、実行環境作成手段190が構築した実行環境内で、アプリケーションの実行及び各種制御を行う。
アクセス制御手段170は、アプリケーションが端末システム110へアクセスする際に、アプリケーションのドメイン情報に基づいてアクセス制限を行う。
リソース制御手段180は、アプリケーションの使用するRAM102、HDD104、CPU101といったリソースの使用量を、アプリケーションのドメイン情報に基づいて制限する。
実行環境作成手段190は、アプリケーションが動作するための、孤立した実行環境をクライアント端末110内に作成する。その際、アプリケーションに添付されたドメイン情報に応じて、端末システム110内のデバイスドライバ112、ユーザデータ113、ライブラリ114の一部を、そのアプリケーションの実行環境内から直接参照可能にする。なお、実行環境作成手段190が実行環境を作成するとは、実際に実行環境を作成するだけでなく、既に作成されている実行環境を選択することも含む概念である。この点は他の実施の形態でも同じである。
次に、図1の構成図及び、図2、図3、図4のフローチャート及び図13、図14のシーケンス図を参照して本第1の実施の形態全体における動作について詳細に説明する。
最初に、クライアント端末100の外部からアプリケーションを取得して、クライアント端末100内に格納する動作について説明する。
まず、クライアント端末100内のアプリケーション取得手段130は、制御手段120の指示により、有線または無線ネットワークを通してアプリケーション配信サーバ200からアプリケーションを含むパッケージを取得するか、もしくは、外部メモリ105からアプリケーションを含むパッケージを取得し、アプリケーション保存領域111に保存する(図2のステップA1)。次に、ドメイン情報取得手段140は、取得されたパッケージに添付されているドメイン情報データから、ドメイン情報を取得する(図2のステップA2)。ドメイン情報は、アプリケーションの配布者の種類を特定するための情報である。このように本第1の実施の形態では、クライアント端末100がアプリケーションを獲得する際には、パッケージ化された1以上のアプリケーションを一度に獲得する。そのパッケージ1つにドメイン情報1つが含まれる。パッケージに1つ含まれるドメイン情報は、そのパッケージに含まれる各アプリケーションのドメイン情報として使用する。
次に、検証手段150は、アプリケーションに添付されたデジタル署名及びデジタル証明書の取得を行い(図2のステップA3)、その後それらの検証を行う(図2のステップA4)。これらの検証により、アプリケーションを含むパッケージ及びそれに添付されたドメイン情報が送信中に改竄されていないことを確認できる。
以上の処理を図13のシーケンス図を参照して説明すると、まず制御手段120はアプリケーション取得手段130に対して、アプリケーションの取得を指示する(図13のステップE1)。通信によって端末外部からアプリケーションを取得する場合は、通信装置107を利用して(図13のステップE2)、アプリケーション配信サーバ200よりアプリケーションを含むパッケージを取得する(図13のステップE3)。次に制御手段120は、取得したアプリケーションを含むパッケージをアプリケーション保存領域111に保存する(図13のステップE4)。このアプリケーション保存領域111は、RAM102、HDD104、外部メモリ105の何れかに獲得されている領域である。次に制御手段120は、ドメイン情報取得手段140に対してドメイン情報取得指示を出し(図13のステップE5)、ドメイン情報取得手段140は、アプリケーション保存領域111に保存されたアプリケーションのパッケージに添付されたドメイン情報を取得する(図13のステップE6)。さらに制御手段120は、検証手段150に指示して(図13のステップE7)、アプリケーション保存領域111に保存されたアプリケーションのパッケージに添付されたデジタル署名またはデジタル証明書を取得し(図13のステップE8)、さらに検証手段150に指示して(図13のステップE9)、そのデジタル署名またはデジタル証明書の検証処理を行う(図13のステップE10)。
このようにしてクライアント端末100外からダウンロードしたアプリケーションを、クライアント端末100上で実行する場合の動作を、次に説明する。
まず、クライアント端末100上の制御手段120は、実行環境作成手段190を用いて、アプリケーションをその中で実行させるための実行環境を作成する(図3のステップB1)。実行環境の構成図を図5に示す。
この実行環境300は、実行環境外部、例えば端末システム110の機能や、デバイスドライバ112、ユーザデータ113、ライブラリ114へのアクセスが制限された環境である。従って、この実行環境300内でアプリケーション301を実行することにより、端末システム110の機能やデータをアプリケーション301から保護することができる。
さらに実行環境作成手段190は、実行環境300内のアプリケーション301からアクセス可能なように、デバイスドライバ112、ユーザデータ113、ライブラリ114各々の一部もしくは全部を実行環境300内に配置する(図3のステップB2)。図5のデバイスドライバサブセット302は、デバイスドライバ112に含まれる複数のデバイスドライバのうち、一部分もしくはすべてのデバイスドライバが実行環境300内に配置されていることを示している。また、ユーザデータサブセット303は、ユーザデータ113に含まれる複数のユーザデータのうち、一部分もしくはすべてのユーザデータが実行環境300内に配置されていることを示している。同様にライブラリサブセット114は、ライブラリ114に含まれる複数のライブラリのうち、一部分もしくはすべてのライブラリが実行環境300内に配置されていることを示している。
実行環境作成手段190は、デバイスドライバ112、ユーザデータ113、ライブラリ114のどの部分を実行環境300内に配置するかを、アプリケーション301のパッケージに添付されたドメイン情報と、予め設定された管理テーブルとに基づいて決定する。管理テーブルの一例を図9に示す。この管理テーブル400は、実行環境作成手段190が管理し、RAM102、ROM103、HDD104、外部メモリ105の何れか、好ましくは不正に書き換えられないように読み込み専用の記憶装置に置かれる。管理テーブル400には、アプリケーションのドメイン種別ごとに、その実行可否、実行環境および作成可能データサイズに関する情報が記述されている。
図9に例示した管理テーブル400は、すべてのアプリケーションが、そのパッケージに添付されるドメイン情報によって、ドメインA、ドメインB、ドメインC、ドメインDの何れかに分類されるものとして作成されている。この管理テーブル400では、何れのドメインに属するアプリケーションも実行可能となっている。
またドメインAに属するアプリケーションは、実行環境300内からデバイスドライバ112、ユーザデータ113、ライブラリ114ともすべてアクセス可能となるように、それらのフルセットが実行環境300内に配置され、作成可能なデータの合計サイズに制限を設けないように設定されている。
またドメインBに属するアプリケーションは、実行環境300内からデバイスドライバ112とライブラリ114はすべてアクセス可能とし、ユーザデータ113はその一部のみアクセス可能となるように、デバイスドライバ112およびライブラリ114のフルセットとユーザデータ113のサブセットが実行環境300内に配置され、作成可能なデータの合計サイズに制限が課せられるように設定されている。
またドメインCに属するアプリケーションは、実行環境300内からデバイスドライバ112はアクセス不可能で、ユーザデータ113とライブラリ114に関してはその一部のみアクセス可能となるように、ユーザデータ113とライブラリ114のサブセットが実行環境300内に配置され、作成可能なデータの合計サイズには制限が課せられるように設定されている。
またドメインDに属するアプリケーションは、実行環境300内からデバイスドライバ112とユーザデータ113はアクセス不可能で、ライブラリ114は一部のみアクセス可能となるように、ライブラリ114のサブセットが実行環境300内に配置され、作成可能なデータの合計サイズにも制限が課せられるように設定されている。これは、最小限アプリケーションの動作に必要なライブラリのみ参照可能とする場合に相当する。
このように実行環境作成時には、アプリケーションが生成する複数データ(ファイル)の合計サイズの上限も図9に示される管理テーブル400の作成可能データサイズで制限された環境が構築される。
以上の処理を図14のシーケンス図を参照して説明すると、まず制御手段120が実行環境作成手段190に対して実行環境の作成指示を出すと(図14のステップF1)、実行環境作成手段190はクライアント端末100上にアプリケーションをその中で実行させるための実行環境300を作成する(図14のステップF2)。この実行環境300は、RAM102、HDD104、外部メモリ105の何れかに作成される。次に制御手段120は、実行環境作成手段190にデバイスドライバ配置処理、ユーザデータ配置処理、ライブラリ配置処理を順に指示する(図14のステップF3、F5、F7)。これらの指示を受けて実行環境作成手段190は、デバイスドライバ112、ユーザデータ113、ライブラリ114それぞれの中から、対象アプリケーションのドメインに対して参照可能であると規定されている部分のみを実行環境300内に配置し、対象アプリケーションから参照可能となるようにする(図14のステップF4、F6、F8)。こうして、図5に示したように、デバイスドライバ112、ユーザデータ113、ライブラリ114のサブセットを内部に配置した実行環境300が構築される。
なお、この実行環境作成手段190による実行環境300の作成は、アプリケーションをダウンロードした直後、あるいは、アプリケーションの実行直前に行ってもよい。
実行環境300の作成後、実行制御手段160は、アプリケーション301を実行環境300内で実行させる。実行環境300内で実行中のアプリケーション301の動作について、以下説明する。
実行環境300内のアプリケーション301は、実行環境300内に配置されたデバイスドライバ112、ユーザデータ113、ライブラリ114のセット(フルセットあるいはサブセット)に関しては、自由にアクセスすることができる。一方、実行環境300外にアクセスする場合、例えば端末システム110の機能にアクセスする場合は、アクセス制御手段180によってチェックされ(図4のステップC1)、許可されればアクセスでき(図4のステップC2)、不許可の場合はアクセスできない(図4のステップC3)。アクセスの許可、不許可の判断は、アプリケーション301に添付されたドメイン情報に応じて決定する。また、アプリケーション301が実行する際に使用するCPU101、RAM102、HDD104、出力装置106、通信装置106、入力装置108等のクライアント端末100内のリソースに対しては、リソース制御手段180によって使用量の制限が行われる。最大使用量に関しては、アプリケーション301に添付されたドメイン情報に応じて決定する。
次に、本第1の実施の形態による効果について説明する。
本第1の実施の形態では、外部から取得したアプリケーションは、クライアント端末100内のデータや機能に直接アクセスできない、孤立した実行環境300内で実行されるというように構成されているため、クライアント端末100内のデータや機能を不正なアクセスから保護しながら、外部から導入または取得されたアプリケーションをクライアント端末100上で実行できる。
さらに、本第1の実施の形態では、外部から導入または取得されたアプリケーションのパッケージに添付されたドメイン情報に応じて、上記の孤立した実行環境300内にクライアント端末100内のユーザデータ113やデバイスドライバ112、ライブラリ114の一部もしくは全部を配置するように構成されているため、アプリケーションのドメインに応じて、外部から導入または取得されたアプリケーションが利用することのできるデータ及び機能の範囲を設定することができる。そして、実行環境300内に配置されたデバイスドライバ112、ユーザデータ113およびライブラリ114のアプリケーションによるアクセスに関しては、実行環境300外のデータ及び機能に対する図4のステップC1のようなチェック処理が介在しないので、高速なアクセスが可能であり、またチェック処理が介在しないことによりクライアント端末100のオーバーヘッドが減少する。
また本第1の実施の形態では、ドメイン情報に応じた実行環境300ごとにアプリケーションが作成できるデータ(ファイル)の合計サイズの上限が設定できる。このことにより、無限にデータファイルを作り続けるような悪意あるアプリケーション、あるいはバグのため同様な不正行為を行うアプリケーションに制限を加えることができるため、他のアプリケーションが使用すべき領域を横取りするような被害を抑えることができる。
第2の実施の形態:
次に、本発明による第2の実施の形態について図面を参照して詳細に説明する。
図6を参照すると、本発明による第2の実施の形態は、クライアント端末1から構成されている。
クライアント端末1は、CPU101と、RAM102と、ROM103と、HDD104と、外部メモリ105と、出力装置106と、通信装置107と、入力装置108と、ユーザデータ113と、ライブラリ(ライブラリプログラム)114と、アプリケーション117と、OS処理手段118と、デバイスドライバ112と、実行制御処理手段116とを含む。
実行制御処理手段116は、制御手段1161と、ドメイン情報取得手段1162と、検証手段1163と、実行許可判断手段1164と、アクセス制御手段1165と、リソース制御手段1166と、実行環境作成手段1167とを含む。
ユーザデータ113、ライブラリ114およびアプリケーション117は、クライアント端末1のユーザ空間で動作する。また、OS処理手段118、デバイスドライバ112および実行制御処理手段116は、クライアント端末1のカーネル空間で動作する。すなわち、実行制御処理手段116に含まれる各手段1161〜1167はOS(オペレーティングシステム)の一部の機能として構成されている。図1の各手段120〜190がユーザ空間内に構成されている第1の実施の形態とはこの点で相違する。また、本実施の形態では、ドメイン情報およびデジタル署名またはデジタル証明書がアプリケーションごとに添付されている点で、パッケージ単位で添付されている第1の実施の形態と相違する。
これらの手段、装置はそれぞれ概略つぎのように動作する。
CPU101は、セントラル・プロセッシング・ユニットであり、各手段やプログラムの実行を制御および計算処理を行う。
RAM102は、ランダム・アクセス・メモリであり、読書き可能な記憶装置である。各手段やプログラムの実行時には使用されるデータを読書きする場合に一時的な記憶領域となる。実行コードそのものを一時的に記憶する場合もある。
ROM103は、リード・オンリー・メモリであり、読込みのみ可能な記憶装置である。各手段やプログラムの実行コード、データなどについて記憶する。クライアント端末1の電源をOFFしても記憶されている実行コードおよびデータは消えない。
HDD104はハード・ディスク・ドライブであり、読書き可能な記憶装置である。RAM102と比べて読み込みおよび書き込み処理速度は遅いが、大容量であり、クライアント端末1の電源をOFFしても記憶されている実行コードおよびデータは消えない。
外部メモリ105は、クライアント端末1に脱着可能な読書き可能な記憶装置である。アプリケーション117、ライブラリ114、ユーザデータ113、およびデバイスドライバ112などの実行コードやデータなどを外部メモリ105に記憶させ、クライアント端末1に装着することでクライアント端末1に実行コードやデータを追加する。
出力装置106は、クライアント端末1で実行された処理結果をディスプレイに表示したり、音声出力する。
通信装置107は、アプリケーション117、ライブラリ114、ユーザデータ113、およびデバイスドライバ112などの実行コードやデータを外部と通信してクライアント端末1に取り込む。
入力装置108は、新たな処理の実行を依頼するためのキー(ボタン)であり、音声などにより、情報をクライアント端末1に取り込む。
OS処理手段118はOSが行う処理であり、アプリケーション117が呼び出すシステムコールの処理を行う。また、このシステムコール処理の中で制御手段1161を呼び出す。
制御手段1161は、各手段1162〜1167を制御し、アプリケーション117とライブラリ114を実行する環境の作成および実行制御を行う。
ドメイン情報取得手段1162は、ライブラリ114、アプリケーション117に関連付けられたドメイン情報を取得する。
検証手段1163は、アプリケーション117に添付されたデジタル署名やデジタル証明書の検証処理を行う。
実行許可判断手段1164は、実行環境作成手段1167が構築した実行環境内で、アプリケーション117およびライブラリ114の実行及び各種制御を行う。
アクセス制御手段1165は、アプリケーション117がクライアント端末1内の資源へアクセスする際に、アクセス制限を行う。
リソース制御手段1166は、アプリケーション117やライブラリ114が使用するRAM102、HDD104、CPU101といったリソースの使用量を、そのアプリケーション117のドメイン情報に基づいて制限する。
実行環境作成手段1167は、アプリケーション117が動作するための、孤立した実行環境をクライアント端末1内に作成する。その際、アプリケーション117に添付されたドメイン情報に応じて、クライアント端末1内のデバイスドライバ112、ユーザデータ113、ライブラリ114の一部を、実行環境内から参照可能にする。実行環境作成手段190は、第1の実施の形態と同様に図9に示すような実行環境作成に関する管理テーブル400を、RAM102、ROM103、HDD104、外部メモリ105の何れかに置いて管理する。また、実行環境作成時にはアプリケーションが生成する複数データ(ファイル)の合計サイズの上限も図9の管理テーブル400に示される作成可能データサイズで制限された環境が構築される。
次に、図8、図3及び図4のフローチャート、そして図15のシーケンス図を参照して本第2の実施の形態全体における動作について詳細に説明する。
まず、クライアント端末1は、外部からアプリケーション117を取得して、クライアント端末1内に格納する。クライアント端末1は、アプリケーション117を外部から獲得する場合、どのような経路であってもよい。通信装置107を利用して受信してもよいし、アプリケーション117が格納された外部メモリ105をクライアント端末1に装着することにより獲得してもよい。さらに、第1の実施の形態に係わる図1のアプリケーション取得手段130のようにアプリケーション117を取得するための特別な手段は不要である。つまり、アプリケーション117が他のアプリケーション117をクライアント端末1の外部から取得してもよい。外部から取得するのは、アプリケーション117だけでなく、ライブラリ114、ユーザデータ113も考えられる。取得されたアプリケーション117は、RAM102、HDD104、外部メモリ105などの記憶装置のどこに格納されてもよい。本実施の形態の場合、取得されたアプリケーション117にはドメイン情報とデジタル署名またはデジタル証明書とが添付されている。
次に、アプリケーション117が起動する場合の動作について図8を参照しながら説明する。
アプリケーション117が起動する時は、OS処理手段118により、RAM102などの記憶領域にそのドメイン情報およびデジタル署名またはデジタル証明書とともにロードされる(図8のステップD1)。
OS処理手段118は、このタイミングで制御手段1161を呼び出す。制御手段1161は、アプリケーション117の素性を示すドメイン情報を獲得するためにドメイン情報取得手段1162を呼び出す(図8のステップD2)。ドメイン情報取得手段1162は、アプリケーション117に添付されているドメイン情報を取り出す。ドメイン情報は、アプリケーション117の配布者の種類を特定するための情報である。もし、ドメイン情報が添付されていない場合、信頼できないドメインに属する配布者によって配布されたものと判断し、そのアプリケーション117は、信頼できないドメインに属するものとして扱われる。
次に、検証手段1163は、アプリケーション117に添付されたデジタル署名またはデジタル証明書を取得する(図8のステップD3)。そして検証手段1163は、取得したデジタル署名またはデジタル証明書について検証を行う(図8のステップD4)。この検証に使用する鍵は、RAM102、ROM103、HDD104、外部メモリ105、あるいはCPU101に付属されているような耐タンパ領域、クライアント端末1内の耐タンパ領域に置かれている。この検証により、アプリケーション117およびそれに添付されたドメイン情報が改竄されていないことを確認できる。もし、デジタル署名またはデジタル証明書が添付されていない場合、添付されていても検証に失敗した場合、改竄された疑いがあるとして、エラーを返す。
なお、ドメイン情報とデジタル署名またはデジタル証明書は、第1の実施の形態では、複数のアプリケーションを含むパッケージ単位で添付されていたが、この第2の実施の形態では、アプリケーション117ごとに添付されている。それらの情報を埋め込んだアプリケーション117となるファイルの構成を図7に示す。図7で示すファイル500は、アプリケーションとなるクライアント端末1上で実行可能なコードである実行コード501と、このアプリケーションとなる実行コード501が属するドメインの情報となるドメイン情報502と、これら実行コード501とドメイン情報502とを署名した情報となるデジタル署名503とで構成されている。この図7では、デジタル署名503を添付したファイル500を例示したが、デジタル署名503の代わりにデジタル証明書が添付されたファイルであっても良い。
次に実行許可判断手段1164は、アプリケーション117に添付されたドメイン情報が示すドメイン種別と図9の管理テーブル400とに基づいて、アプリケーション117の実行を許可するか許可しないかを決定する(図8のステップD5)。もし、実行許可を与えられなかった場合は、エラーリターンする。
以上の処理を図15のシーケンス図を参照して説明すると、アプリケーションがロードされると、制御手段1161はアプリケーション117の素性を示すドメイン情報を獲得するためにドメイン情報取得手段1162を呼び出す(図15のG1)。ドメイン情報取得手段1162は、アプリケーション117に添付されているドメイン情報を取り出す(図15のG2)。さらに制御手段1161は、検証手段1163に指示して(図15のステップG3)、アプリケーション117からデジタル署名またはデジタル証明書を取得し、さらにその署名または証明書の検証処理を行わせる(図15のステップG4)。次に制御手段1161は、実行許可判断手段1164にそのアプリケーション117を実行させて良いかどうかの判断を依頼する(図15のG5)。
次に、アプリケーション111を実行させるための環境作成について、図3および図15を参照して説明する。
アプリケーション117について実行許可判断手段1164により実行許可が与えられた後、制御手段1161は、実行環境作成手段1167を呼び出して(図15のG7)、アプリケーション117をその中で実行させるための実行環境を作成する(図3のステップB1、図15のG8)。この実行環境は、実行環境外部、例えばデバイスドライバ112、ユーザデータ113、ライブラリ114へのアクセスが制限された環境である。従って、この実行環境内でアプリケーション117を実行することにより、クライアント端末1の機能やデータをアプリケーションから保護することができる。この実行環境には、図9の管理テーブル400で示されるドメインごとのアプリケーションが許されている生成可能な領域が確保されている。
さらに実行環境作成手段1167は、実行環境内のアプリケーション117からアクセス可能なように、デバイスドライバ112、ユーザデータ113、ライブラリ114の一部もしくは全部を実行環境内に配置する(ステップB2)。この実行環境内でアプリケーション117は実行することになる。デバイスドライバ112、ユーザデータ113、ライブラリ114のどの部分を配置するかは、アプリケーション117に添付されたドメイン情報と図9に示した管理テーブルとに基づいて決定する。
実行環境作成後、制御手段1161、OS処理手段118からリターンし、アプリケーション117は正常に起動し、実行を開始する。
次にアプリケーション117の実行中に、アクセス制御手段1165により特定のデバイスドライバ、ユーザデータまたはライブラリに対するアプリケーション117からのアクセスを制限する方法について説明する。
アプリケーション117の実行中は、実行環境作成手段1167で作成された実行環境内に配置されたデバイスドライバ112、ユーザデータ113、ライブラリ114の各セットに関しては、自由にアクセスすることができる。他方、デバイスドライバ112、ユーザデータ113、ライブラリ114中の実行環境内に配置されていないセットについては、アクセス制御手段1165によりアクセス制限がかかる。
たとえば、アプリケーション117がデバイスドライバ112となる通信装置107の制御用デバイスドライバにアクセスしようとしてOS処理手段118を呼び出したとする。OS処理手段118は、アクセス許可されているか調べるためにアクセス制御手段1165を呼び出す。アクセス制御手段1165は、アプリケーション117となる元ファイルの置き場所からそのアプリケーション117がクライアント端末1にもともと存在するアプリケーションか、外部から獲得したアプリケーションかを判断する。もともと存在するアプリケーションであれば、アクセスを許可し、そうでなければアクセスを許可しない。この結果が戻り値として、制御手段1161、OS処理手段まで戻される。ここで、もしアクセス許可であればOS処理手段118は、アプリケーション117からの呼び出しに応答して、通信装置107の制御用デバイスドライバにアクセスする。他方、不許可であればエラーリターンする。
また、アプリケーション117が実行する際に使用するCPU101、メモリ、HDD104、ネットワーク等のクライアント端末1内のリソースに対しては、リソース制御手段1166によって使用量の制限が行われる。最大使用量に関しては、リソース制御手段1166において、アプリケーション117がクライアント端末1の外部から獲得されたものなのか、そうでないのかに基づいて、リソースにアクセス許可を決定したのと同様に、リソースの最大使用量が決定される。
この第2の実施形態では、アプリケーション117についての実行制御について記述したが、ライブラリ114にもドメイン情報、デジタル署名またはデジタル証明書を添付することで、アプリケーション117と同様な実行制御が可能である。
次に、本第2の実施の形態による効果について説明する。
本第2の実施の形態によれば、第1の実施の形態と同様の効果が得られると共に、以下のような効果が奏される。
本第2の実施の形態によれば、クライアント端末1上で他の何者かによって、アプリケーションが改竄された場合も検知することができる。その理由は、図7に示されるようにドメイン情報502およびデジタル署名503またはデジタル証明書がアプリケーションとなる実行コード501を含む実行ファイル500ごとに添付されており、かつ、その実行ファイル500がアプリケーションとして起動するごとにドメイン情報502およびデジタル署名503またはデジタル証明書による改竄チェックを実施しているからである(図8のステップD1〜D5)。第1の実施の形態では、複数アプリケーションを含むパッケージを展開する際にドメイン情報およびデジタル署名またはデジタル証明書による改竄チェックを一度だけ実施しているため、処理は簡素化される反面、それ以降に改竄されてもチェックできないため、パッケージから展開されたアプリケーションは厳重な管理が必要になる。
また本第2の実施の形態によれば、クライアント端末1は、誰かが外部からアプリケーションを獲得しようとする場合、あらゆる方法で安全に獲得することができる。その理由は、図7に示されるようにドメイン情報502およびデジタル署名503またはデジタル証明書がアプリケーションとなる実行コード501を含む実行ファイル500ごとに添付されており、かつ、その実行ファイル500がアプリケーションとして起動するごとにドメイン情報502およびデジタル署名503またはデジタル証明書による改竄チェックを実施しているからである(図8のステップD1〜D5)。第1の実施の形態では、複数アプリケーションを含むパッケージを展開する際にドメイン情報およびデジタル署名またはデジタル証明書による改竄チェックを一度だけ実施しているため、もし、安全であると思われるクライアント端末1上のアプリケーションが外部の想定外のサーバと通信して、悪意あるアプリケーションを受信し、クライアント端末1上の記憶装置に格納したとすると、その悪意あるアプリケーションのチェックは行えず、何もチェックされないで悪意あるアプリケーションが実行される。よって、第1の実施の形態でのアプリケーションは、信頼できるサーバとのみしか通信させない制御が必要である。または、パッケージを展開して格納されたことが保証されたアプリケーションしか実行させないようにする必要がある。
また本第2の実施の形態によれば、或るアプリケーションから別のアプリケーションを、セキュリティを意識せずに、安全に起動させることが可能である。その理由は、ドメイン情報取得手段1162、検証手段1163、実行許可判断手段1164、実行環境作成手段1167がOS機能の一部として存在し、アプリケーション起動時に必ず呼び出されるOS処理手段118(システムコール)からそれらすべての手段が呼び出され、起動されるアプリケーションの配布者/素性に応じた実行環境を作成するからである。第1の実施の形態では、各手段がユーザ空間で動作するため、図1のドメイン情報取得手段140、検証手段150、実行制御手段160、実行環境作成手段190を持つ特別なアプリケーションでないと、別のアプリケーションを、素性に応じた実行環境を作成して起動することはできない。つまり、第1の実施の形態では、特別なアプリケーション以外のアプリケーションから別のアプリケーションを安全に起動させることはできない。
第3の実施の形態:
次に、本発明による第3の実施の形態について図面を参照して詳細に説明する。
本発明による第3の実施の形態に係わる構成を図10に示す。第2の実施の形態に係わる構成を示す図6と比べると、クライアント端末1のカーネル空間に存在していたアクセス制御手段1165、リソース制御手段1166および実行環境構築手段1167が削除されていること、アプリケーション配信サーバ2がクライアント端末1に接続されること、およびクライアント端末1のユーザ空間に実行環境構築手段115が追加されていることが相違する。
実行環境構築手段115は、制御手段1151、アプリケーション取得手段1152、ドメイン情報設定取得手段1153、署名埋込み検証手段1154、実行制御手段1155、アクセス制御手段1156、リソース制御手段1157、実行環境作成手段1158、アプリケーション保存領域1159を含む。
アプリケーション配信サーバ2、制御手段1151、アプリケーション取得手段1152、実行制御手段1155、アクセス制御手段1156、リソース制御手段1157、実行環境作成手段1158は、第1の実施の形態に係わる構成図である図1のアプリケーション配信サーバ200、制御手段120、アプリケーション取得手段130、実行制御手段160、アクセス制御手段170、リソース制御手段180、実行環境作成手段190と同じものであり、その動作もほぼ同じである。
ドメイン情報設定取得手段1153は、第1の実施の形態に係わる構成図である図1のドメイン情報取得手段140の機能であるアプリケーションのパッケージからドメイン情報を取り出すだけでなく、そのパッケージを展開して取り出したアプリケーション117にドメイン情報を埋め込む機能も合わせ持つ。また、署名埋込み検証手段1154は、第1の実施の形態に係わる構成図である図1の検証手段150の機能であるアプリケーションのパッケージに添付されるデジタル署名の検証あるいはデジタル証明書を検証する機能だけでなく、そのパッケージを展開して取り出したアプリケーション117に新たにデジタル署名またはデジタル証明書を添付する機能を合わせ持つ。
本第3の実施の形態における構成要素のうち、上述した以外の構成要素は、第2の実施の形態における該当する構成要素と同じであり、その動作もほぼ同じである。
以下、本第3の実施の形態における動作を、第1および第2の実施の形態との相違箇所を中心に説明する。
アプリケーション配信サーバ2あるいは外部メモリ105からアプリケーション取得手段1152が獲得するアプリケーションは、第1の実施の形態と同様に、複数アプリケーションをパッケージ化したアプリケーションパッケージでもよいし、1つのアプリケーションでもよい。
獲得されるのがアプリケーションパッケージの場合は、1つのドメイン情報およびデジタル署名あるいはデジタル証明書がそのパッケージに添付される。さらに、アプリケーションパッケージ内の各アプリケーションには、第2の実施の形態による場合と同様に図7に示されるようにアプリケーション1つにドメイン情報およびデジタル署名あるいはデジタル証明書が添付されていても良いし、添付されていなくても良い。クライアント端末1が獲得するアプリケーションパッケージに含まれる個々のファイルにドメイン情報およびデジタル署名またはデジタル証明書が添付されていない場合、本実施の形態では、アプリケーションパッケージ展開後、個々のファイルにドメイン情報およびデジタル署名またはデジタル証明書が添付される。つまり、アプリケーションパッケージに含まれるドメイン情報をドメイン情報設定取得手段1153で取り出しておき、そのパッケージに含まれていたアプリケーション117に同じドメイン情報を添付する。その後、そのアプリケーション117に対して署名埋め込み検証手段1154によりデジタル署名またはデジタル証明書を添付する。
獲得されるのがアプリケーションの場合には、1つのドメイン情報およびデジタル署名あるいはデジタル証明書がそのアプリケーションに添付されている。
アプリケーション117の獲得から実行までの動作は、第1の実施の形態と同じである。ただし、第1の実施の形態の動作と異なるのは、アプリケーション実行時にさらにアプリケーションの署名検証を行うことである。つまり、アプリケーションパッケージおよびアプリケーションにデジタル署名が添付されることにより、アプリケーションパッケージを獲得する場合に改竄チェックをおこない、アプリケーション実行時にもう一度改竄チェックを行う。
第1の実施の形態と同様にアプリケーション117の獲得から実行までの間に実行環境作成手段1158により実行環境を構築しておく。その後、その実行環境内でアプリケーション117は実行される。
アプリケーション117の起動時には、実行制御処理手段116でドメイン情報およびデジタル署名またはデジタル証明書が正しいことを確認する。
なお、図10では、アクセス制御手段1156、リソース制御手段1157および実行環境作成手段1158がユーザ空間にある実行環境構築手段115に含まれているが、これら手段のうちのいくつかは実行環境構築手段115に含めるのではなく、カーネル空間の実行制御処理手段116に含まれる構成であっても良い。
さらに、図10では、ドメイン情報設定取得手段1153および署名埋込み検証手段1154がユーザ空間にある実行環境構築手段115に含まれているが、これら手段は、実行環境構築手段115に含めるのではなく、カーネル空間の実行制御処理手段116に含まれる構成であっても良い。この場合は、ドメイン情報設定取得手段1153および署名埋込み検証手段1154は、ドメイン情報取得手段1162および検証手段1163に含まれる。そして、アプリケーションパッケージ展開後に、そのパッケージに含まれる個々のファイルにドメイン情報を埋め込む、あるいは、デジタル署名またはデジタル証明書を添付するといった処理を行う場合は、ユーザ空間にある実行環境構築手段115に含まれる制御手段1151が、OS処理手段118を経由してカーネル空間にある実行制御処理手段116に含まれる制御手段1161からドメイン情報取得手段1162および検証手段1163を呼び出すことで実現する。
次に、本第3の実施の形態による効果について説明する。
本第3の実施の形態によれば、第1および第2の実施の形態と同様の効果が得られると共に、以下の効果が奏される。
本第3の実施の形態では、アプリケーションを含むパッケージに付与されているドメイン情報をそのアプリケーションに付与し、ドメイン情報を付与したアプリケーションに新たにデジタル署名またはデジタル証明書を付与し、アプリケーションの起動時にアプリケーションに付与されているデジタル署名またはデジタル証明書を検証するようにしているので、ドメイン情報が付与されているパッケージに添付されているデジタル署名またはデジタル証明書をプログラムのインストール時のみ検証する第1の実施の形態に比べて、より安全にプログラムを実行することが可能になる。
第4の実施の形態:
次に、本発明による第4の実施の形態について図面を参照して詳細に説明する。
第1〜第3の実施の形態では、アプリケーション実行時(起動時)のオーバーヘッドを軽減するために、実行環境構築のための処理をアプリケーション実行前に行っている。これに対して本実施の形態は、アプリケーションの起動後、速やかにアプリケーションの実行を中断してアプリケーションの実行環境を構築し、この構築した実行環境内でアプリケーションの実行を再開させる。
本第4の実施の形態は、第3の実施の形態と同様に図10に示す構成を有しており、実行制御処理手段116の呼び出し順序と実行環境作成手段1158の呼び出し順序が第3の実施の形態における場合と逆転している。ここで、アプリケーション117はアプリケーション取得手段1152で獲得されても良いし、他の方法で獲得しても良い。つまり、どのような方法で獲得されてもよい。また、アプリケーション保存領域1159に保存しなくてもよい。アプリケーション117にはドメイン情報およびデジタル署名あるいはデジタル証明書が添付されていればよい。
実行制御手段1155により、あるいはその他の手段によりアプリケーション117が起動されると、直ちに、OS処理手段118を経由してカーネル空間にある実行制御処理手段116に含まれる制御手段1161からドメイン情報取得手段1162および検証手段1163を呼び出す。これらの動作により、アプリケーション117のドメイン情報を獲得し、署名検証あるいは証明書検証が完了し、アプリケーション117の完全性が確認される。
ドメイン情報が実行制御処理手段116で獲得されると、一旦、ユーザ空間の手段により処理を続ける。OS処理手段118を経由して、ユーザ空間に存在する制御手段1151、そして、実行環境作成手段1158が呼び出される。このとき、ドメイン情報も渡される。そして、実行環境作成手段1158によりドメイン情報に対応する実行環境が構築される。その後、アプリケーション117は正常に起動し、実行を続ける。
このことにより、カーネル空間では、ドメイン情報の獲得とデジタル署名あるいはデジタル証明書の検証に関する処理のみ行い、残りの処理は、その後ユーザ空間で行うことになる。
なお、ドメイン情報取得手段1162は、カーネル空間から削除し、その代わり、ユーザ空間のドメイン情報設定取得手段1153がドメイン情報の取得を行っても良い。この場合、カーネル空間では、アプリケーション117に添付されたデジタル署名あるいはデジタル証明書の検証のみを行う。
以上の各実施の形態では、アプリケーションパッケージまたはプログラムに付加されているドメイン情報に基づいてプログラムのドメインを決定したが、本発明はこのようなドメイン決定方法に限定されず、他の方法によってプログラムのドメインを決定しても良い。他の方法の一例として、アプリケーションパッケージまたはプログラムにデジタル証明書またはデジタル署名が付与されている場合に、そのデジタル証明書またはデジタル署名の検証結果に基づいて当該プログラムのドメインを決定する方法がある。より具体的には、付与されているデジタル証明書またはデジタル署名に対する検証を、それぞれのドメインに予め対応付けられているroot証明書または公開鍵を順番に使用して行い、その検証に成功(正常終了)したroot証明書または公開鍵に対応するドメイン、および何れのroot証明書または公開鍵を用いても検証に成功しない場合に対応するドメインを、当該プログラムのドメインとするものである。
次に、具体的な実施例を用いて本発明による実施の形態の構成と動作をより詳しく説明する。
まず、第1の実施の形態に基づく実施例を実施例1として、図1の構成図を用いて説明する。なお、ドメインごとの実行環境の構築方法を示す管理テーブル400の具体例として、図11に示す管理テーブル401を使用する。本実施例1では、図11の内容をもとに実行環境が構築される。
本実施例1において、クライアント端末100の外部から、アプリケーションをクライアント端末100にインストールする場合の処理の流れは、次のようになる。
外部のアプリケーションは、図1に示すように、有線もしくは無線のネットワークで接続されたアプリケーション配信サーバ200上、もしくは、外部メモリ105内に配置されているとする。外部メモリ105としては、SDカード、コンパクトフラッシュ(登録商標)等の取り外し可能なメモリカードが想定される。
ここで取り扱うアプリケーションの形態としては、単一のファイルのみからなる場合、複数のファイル群、例えば実行ファイルと実行に必要な各種設定ファイル、データ類からなる場合、複数のファイル群を一般のデータアーカイブソフトウェア(例えばzip,tar等と呼ばれるソフトウェア類)によって一つのファイルとしてパッケージ化したもの等が想定される。
また、本実施例1では、外部のアプリケーションは、そのアプリケーションのドメイン情報を記した情報ファイルを含む。本実施例では、複数のファイル群を一つのファイルとしてパッケージ化した、アプリケーションパッケージの形態でアプリケーションが配布されるとし、このドメイン情報ファイルは、一つのアプリケーションパッケージに対して一つ含まれるものとする。
ドメイン情報には、アプリケーションの所属を分類するための情報が含まれ、この所属によって、作成する実行環境を制御すると共に、後述するアクセス制御やリソース制御の範囲、制限の度合いを変更する。この所属の記述内容に関しては、例えばアプリケーション作成者の属する企業名を使用することも可能であるし、また、クライアント端末100が携帯電話である場合に、図11のように携帯電話キャリア、携帯電話ベンダ、信頼できるサードベンダ、それ以外の信頼できないベンダ、といった組織の種類に合わせた分類を行い、これを利用することも可能である。また、ドメイン情報を記した情報ファイルの形式の一例として、一般的なデジタル証明書を利用することが考えられる。デジタル証明書の形式としては、例えばX.509形式が広く利用されている。デジタル証明書を利用することで、そこに記載されたドメイン情報は信頼できる認証機関によって保証されることになる。
さらに本実施例1が対象とする外部アプリケーションには、一般的なデジタル署名を添付して送付することも可能である。デジタル署名を添付することで、ネットワークでの配信途上等におけるアプリケーションファイルの改竄を検出することが可能である。デジタル署名の形式としては、例えばSHA−1(Secure
Hash Algorithm 1)等のハッシュアルゴリズ
ムを利用したアプリケーションパッケージファイルのハッシュデータを、アプリケーション配布者が保持している秘密鍵によって暗号化したものを署名データとして利用するといった手法が広く使われている。アプリケーション配布者が保持している秘密鍵と、アプリケーションに添付された証明書に含まれる公開鍵は対応しており、この証明書に含まれる公開鍵を利用することで暗号化された署名データを復号化することが可能である。
本実施例1では、これらのデジタル証明書もしくはデジタル署名を添付する場合に関しても、アプリケーションパッケージに対してそれぞれ一つ添付されることを想定している。クライアント端末100上の制御手段120は、アプリケーション取得手段130を用いて、このような形式の外部アプリケーション及び添付されたドメイン情報、証明書、デジタル署名ファイル等を、有線または無線ネットワークによって接続されたアプリケーション配信サーバ200から取得するか、もしくは、外部メモリ105から取得し、クライアント端末100内部のアプリケーション保存領域111に保存することで、外部から端末内にアプリケーションを取得する(図2のステップA1)。保存されたアプリケーションパッケージは展開され、アプリケーションとなるファイルとして格納される。なお、それぞれのファイルにドメイン情報が関連付けられる。
その後、ドメイン情報取得手段140を用いて、アプリケーションパッケージに含まれたドメイン情報ファイルからドメイン情報を取得する(図2のステップA2)。次に、検証手段150を用いて、アプリケーションに添付されたデジタル証明書または署名の取得を行い(図2のステップA3)、その後それらの検証を行う(図2のステップA4)。これによって、アプリケーションに添付されたドメイン情報の正しさ及び、アプリケーションファイルが改竄されていないことのチェックが行える。
以上の処理により、クライアント端末100外部から、アプリケーションを端末にインストールする処理が完了する。
次に、クライアント端末100上での、外部から取得したアプリケーションの実行について説明する。
制御手段120は、アプリケーション保存領域111に格納された、外部から取得したアプリケーションを実行する前に、まず実行環境作成手段190を用いて、アプリケーションの実行環境を作成する(図3のステップB1)。ここで作成するアプリケーションの実行環境とは、クライアント端末100内の保護すべきメモリ空間、ディスク、ライブラリ、デバイスドライバといった各種資源、機能から切り離された、孤立した環境であり、この中で実行されるアプリケーションは、それらの資源、機能に自由にアクセスすることはできない。これによって、外部から取得したアプリケーションが、不正にクライアント端末100内のデータや機能にアクセスしたり、他のアプリケーションの動作を妨害することを防ぐことができる。
またこの実行環境には、クライアント端末100上のファイルシステムとは別の、独立したファイルシステムを準備して割り当て、またこのファイルシステムは、ドメインに応じて許可されているサイズで作成する。このような独立した実行環境やファイルシステムを実現させる手段の例としては、まず、クライアント端末100上のOS、ファイルシステム上に、別のアプリケーション実行環境や、ファイルシステムを構築するというやり方がある。これは、クライアント端末100のOS(ホストOSと呼ばれる)上のアプリケーションとして、別のOS(ゲストOSと呼ばれる)を動作させ、ゲストOS上で外部アプリケーションを動作させるというものであり、Java(登録商標)VMや、Use
Mode Linux(UML=LinuxOS上で他のLinuxOSを動かす技術)等と呼ばれる技術は、その一例である。また、別のファイルシステムを構築するやり方の一例としては、UNIX(登録商標)などにおけるコマンドであるchrootを使って、外部アプリケーションから参照可能なディレクトリを、ファイルシステム全体の一部分のみに限定してしまうという方法も考えられる。他の例としては、複数のプロセッサを持つマルチプロセッサ環境において、プロセッサAにはクライアント端末100の基本システムおよびOSを動作させ、別のプロセッサB上でもう一つ別のOSを動作させるというものが考えられる。この場合、プロセッサBで動作するOS上の環境を、基本システムが動作する環境とは別の、独立した実行環境とみなし、ここで外部アプリケーションを動作させる。
図11に示す管理テーブル401に設定されているドメインごとの作成可能なデータサイズの値に従えば、携帯電話キャリアには、別個のファイルシステムを構築しないで、ベースとなるクライアント端末100上のファイルシステムをそのまま使用して制限なしにデータ(ファイル)を作成することができるようにする。携帯電話ベンダ、信頼できるサードベンダ、そして、信頼できないベンダには、それぞれ1Mbyte、300Kbyte、10Kbyteのデータが作成可能な領域が得られるファイルシステムが作成される。
さらに実行環境作成手段190は、アプリケーションのドメイン情報に応じて、上述のように作成したアプリケーションの実行環境内に、デバイスドライバ112、ユーザデータ113、ライブラリ114の一部もしくは全部を配置する(図3のステップB2)。
本実施例1では、デバイスドライバ112、ユーザデータ113、ライブラリ114等は、クライアント端末100内の端末システム110内で、それぞれ複数のディレクトリで構成されているとする。ユーザデータ113を例にすると、電話帳データ、メールアドレスデータ、画像データといったデータ種別ごとに、それぞれ異なるディレクトリに格納されている。従ってユーザデータの一部を配置するという処理は、これらのディレクトリの一部を配置するということである。
配置後の実行環境を示す図5に示されるように、アプリケーションの実行環境300内にデバイスドライバサブセット302、ユーザデータサブセット303およびライブラリサブセット304を配置することで、実行環境300内で動作するアプリケーション301は、ここで配置された範囲内のデバイスドライバ、ユーザデータ、ライブラリを参照及び利用することが可能となる。
デバイスドライバ112、ユーザデータ113、ライブラリ114に関して、どれだけの範囲を実行環境内に配置するかは、アプリケーションに関連付けられたドメイン情報と図11に示した管理テーブル401とによって決定する。例えばドメイン情報を、先に述べたように携帯電話キャリア、携帯電話ベンダ、信頼できるサードベンダ、それ以外の信頼できないベンダといった4種類に分類した場合は、携帯電話キャリア、携帯電話ベンダに関しては全ての範囲のデバイスドライバ、ユーザデータ、ライブラリを実行環境内に配置し、信頼できないベンダには一切配置しない、また、信頼できるサードベンダに対しては、これらの一部を配置する、といった処理を行う。これはベースとなるファイルシステム上にデバイスドライバ、ユーザデータ、ライブラリのフルセットあるいはサブセットが置かれたディレクトリを用意し、参照可能とするといったことで実現可能である。図11の実行環境の欄にある/dev,/bin,/lib,/usr,/etcなどを実行環境内にディレクトリとして作成し、そのディレクトリにベースとなるファイルシステム上のデバイスドライバ、ユーザデータ、ライブラリのフルセットあるいはサブセットのディレクトリをドメインに応じて参照可能にすれば実行環境内にドメインに応じたデバイスドライバ、ユーザデータ、ライブラリを配置することが可能である。また、場合によっては、デバイスドライバ、ユーザデータ、ライブラリのフルセット、あるいは、サブセットを実行環境内にコピーして配置することもあり得る。
実行環境を作成した後は、制御手段120は実行制御手段160を使って、この実行環境300内でアプリケーション301を実行させる。Linux上などでアプリケーション301を実行した場合は、プロセスとして実行される。このプロセスを一意に識別する識別子と、アプリケーションに関連付けられたドメイン情報を関連付けておく。
実行環境300内で動作しているアプリケーション301は、この実行環境300内に配置されたデバイスドライバ、ユーザデータ、ライブラリに関しては自由にアクセス可能であるが、実行環境外の、端末システム110の各種機能(例えば表示機能や通信機能)や、端末システム110内のデバイスドライバ112、ユーザデータ113、ライブラリ114へのアクセスは、アクセス制御手段170によって制限される。
アクセス制御手段170がアクセスを制限する具体的な手法の一例としては、これらのアクセスを行うために端末システム110に用意されたAPI内にチェック関数を埋め込み、各APIが呼び出された際にこのチェック関数がアクセス制御手段170にアクセス可否を問い合わせ、許可されたのみAPI呼出しを実行するという手法が挙げられる。
アクセス制御手段170によるアクセス制限に関しても、アプリケーション301に関連付けられたドメイン情報に応じて制限の範囲を変えることも可能である。この場合、プロセス識別子から関連付けられたドメイン情報を取得して利用する。例えば、携帯電話キャリア、携帯電話ベンダに関しては全ての機能およびデータへのアクセスを許可し、信頼できないベンダには一切許可しない、また、信頼できるサードベンダに対しては、これらの一部を許可するといったことも可能である。
また同時に、実行環境300内で動作しているアプリケーション301の、クライアント端末100及び端末システム110内のハードウェア及びソフトウェア資源の使用量を、リソース制御手段180によって制限する。クライアント端末100及び端末システム110内の資源としては、CPU101、RAM102、HDD104、通信装置107や、端末画面に表示するウインドウの数などがある。
次に、第2の実施の形態に基づく実施例を実施例2として、図6の構成図を用いて説明する。なお、ドメインごとの実行環境の構築方法を示す管理テーブル400の具体例として、図11に示す管理テーブル401を使用する。本実施例2では、図11の内容をもとに実行環境が構築される。また、クライアント端末1に搭載されるOSはLinuxとする。
本実施例2において、クライアント端末1の外部から、アプリケーション117をクライアント端末1に持ち込む場合は、次のようになる。
まず、クライアント端末1は、外部からアプリケーション117を取得して、クライアント端末1内に格納する。クライアント端末1は、アプリケーション117を外部から獲得する場合、どのような経路であってもよいし、どのような方法であってもよい。通信装置107を利用して外部のサーバからアプリケーション117を受信してもよいし、アプリケーション117を格納した外部メモリ105をクライアント端末1に装着することにより獲得してもよい。第1の実施の形態に係わる図1のアプリケーション取得手段130のようにアプリケーション117を取得するための特別な手段は不要である。つまり、アプリケーション117が他のアプリケーション117をクライアント端末1の外部から取得してもよい。外部から取得するのは、アプリケーション117だけでなく、ライブラリ114、ユーザデータ113も考えられる。取得されたアプリケーション117はRAM102、HDD104、外部メモリ105などの記憶装置のどこに格納されてもよい。
次に、アプリケーション117が起動する場合の動作について図8を参照しながら説明する。
アプリケーション117が起動する時は、OS処理手段118により、RAM102などの記憶領域にアプリケーション117となる実行ファイルの内容がロードされる。この場合、Linuxでは、execシステムコールが呼び出される。この時にOS処理手段118が呼び出される(図8のステップD1)。
OS処理手段118は、呼び出されると速やかに制御手段1161を呼び出す。制御手段1161は、アプリケーション117の素性を示すドメイン情報を獲得するためにドメイン情報取得手段1162を呼び出す。ドメイン情報取得手段1162は、アプリケーション117に添付されているドメイン情報を取り出す。もし、ドメイン情報が添付されていない場合、信頼できないベンダによって配布されたものと判断し、そのアプリケーション117は、ドメインとして信頼できないベンダに属するものとして扱われる。
ドメイン情報は、アプリケーション117の配布者の種類を特定するための情報であり、例えば図11の管理テーブル401の場合は携帯電話キャリア、携帯電話ベンダ、信頼できるサードベンダ、信頼できないベンダといったような種類の情報である。作者名(企業名)の情報が付け加えられてもよい。これらドメイン情報は、文字列による平文、または暗号化されたものを実行ファイル内の最後に添付する。
さらに、一般的なデジタル署名を添付させることも可能である。デジタル署名を添付することで、ネットワーク上での配信途上、クライアント端末1に格納された後でのアプリケーション117となる実行ファイルの改竄が検出可能となる。デジタル署名の形式として、例えば、SHA−1(Secure
Hash Algorithm 1)等の一方向ハッシュアルゴリズムを使用したアプリケーション117のハッシュデータを、アプリケーション配布者が保持している秘密鍵によって暗号化されたものを署名データとして利用するといった手法が広く使われている。
また、このドメイン情報を記した一般的なデジタル証明書を利用することも考えられる。たとえば、X.509形式が広く利用されている。デジタル証明書を利用することで、そこに記載されたドメイン情報は信頼できる認証機関によって保証されることになる。さらに、この証明書にデジタル署名を添付することもありえる。アプリケーション配布者が保持している秘密鍵と、アプリケーションに添付された証明書に含まれる公開鍵は対応しており、この証明書に含まれる公開鍵を利用することで暗号化された署名データを復号化することが可能である。
次に、検証手段1163がアプリケーション117に添付されたデジタル署名またはデジタル証明書の検証を行う。この検証により、アプリケーション117が改竄されていないことを確認できる。もし、デジタル署名またはデジタル証明書が添付されていない、改竄された疑いがあるなど、検証に失敗した場合、エラーを返す(図8のステップD3)。署名検証に用いられる、配布者が保持している秘密鍵に対応する公開鍵は、検証手段1163が予め保持しておいてもよいし、証明書を利用する場合は、その証明書内に公開鍵を含み、その公開鍵を利用しても良い。また、検証手段1163が予め公開鍵を保持しておく場合、すべてのドメインに共通な公開鍵1つを保持しておく方法と、ドメインごとに公開鍵を保持しておく方法が考えられる。例えばドメインが4つあれば公開鍵も4つ保持することになる。このように複数の公開鍵を保持しておく場合は、アプリケーション117に含まれるドメイン情報に対応する公開鍵を指定して改竄チェックを行う必要がある。
なお、ドメイン情報とデジタル署名またはデジタル証明書は、実施例1では、複数のアプリケーションを含むパッケージ単位で添付されていたが、本実施例2では、アプリケーション117ごとに添付されている。アプリケーション117となる、それら情報を埋め込んだファイルの構成を図7に示す。この図7では、デジタル証明書ではなく、デジタル署名503を添付したファイル500を示している。
アプリケーション117がどのドメインに属するか決定した後、実行許可判断手段1164がそのアプリケーション117を実行させて良いかどうかの判断を下す。実行許可判断手段1164は、アプリケーション117に添付されたドメイン情報に応じて実行を許可するか許可しないかといった決定を行う。もし、実行許可を与えられなかった場合は、エラーリターンする(図8のステップD4)。
この実行を許可するか否かの判断は、図11で示される管理テーブル401を参照して判断される。図11の管理テーブル401に従えば、アプリケーション117から取り出した、ドメイン情報が携帯端末ベンダであれば、クライアント端末1上での実行を許可する。なお、この図11に示すような管理テーブル401は、クライアント端末1の使用する用途により柔軟に変更される可能性がある。
次に、アプリケーション111を実行させるための環境の作成について説明する。
アプリケーション117は、実行許可判断手段1164により実行許可が与えられた後、実行環境作成手段1167を用いて、アプリケーション117をその中で実行させるための実行環境を作成する。
またこの実行環境には、クライアント端末1上のファイルシステムとは別の、独立したファイルシステムを準備して割り当て、またこのファイルシステムは、ドメインに応じて許可されているサイズで作成する。このような独立した実行環境やファイルシステムを実現させる手段の例としては、実施例1の説明箇所で述べたように、クライアント端末1上のOS、ファイルシステム上に、独自のアプリケーション実行環境やファイルシステムを構築するというやり方や、マルチプロセッサ環境において、クライアント端末1の基本システムおよびOSが動作するプロセッサとは別のプロセッサ上に、外部アプリケーション専用のOSやファイルシステムを用意するというやり方等がある。
図11に示すドメインごとの作成可能なデータサイズの値に従えば、携帯電話キャリアには、別個のファイルシステムを構築しないで、ベースとなるクライアント端末100上のファイルシステムをそのまま使用して制限なしにデータ(ファイル)を作成することができるようにする。携帯電話ベンダ、信頼できるサードベンダ、そして信頼できないベンダには、それぞれ1Mbyte、300Kbyte、10Kbyteのデータが作成可能な領域が得られ
るファイルシステムが作成される。
この実行環境は、実行環境外部、例えばデバイスドライバ112、ユーザデータ113、ライブラリ114へのアクセスが制限された環境である。従って、この実行環境内でアプリケーション117を実行することにより、クライアント端末1の機能やデータをアプリケーションから保護することができる。
ここで作成する実行環境は、クライアント端末1のデバイスドライバ112、ユーザデータ113、ライブラリ114といった各種資源、機能から切り離された、孤立した環境であり、この中で実行されるアプリケーション117は、それらの資源、機能に自由にアクセスすることはできない。これによって、外部から取得したアプリケーション117が、不正にクライアント端末1内のデータや機能にアクセスしたり、他のアプリケーション117の動作を妨害することを防ぐことができる。環境構築に関しては、Linuxを用いたシステムでは、ユーザ空間のコマンドとしてmkdirおよびchrootコマンドを用いることが知られている。本実施例2では、これらコマンドと同等機能をカーネル空間で実行環境作成手段1167によって実行することで実現可能である。
さらに実行環境作成手段1167は、実行環境内のアプリケーションからアクセス可能なように、デバイスドライバ112、ユーザデータ113、ライブラリ114の一部もしくは全部を実行環境内に配置する。デバイスドライバ112、ユーザデータ113、ライブラリ114のどの部分を配置するかは、アプリケーション117に添付されたドメイン情報と図11の管理テーブル401とに応じて決定する(ステップB2)。
本実施例2では、デバイスドライバ112、ユーザデータ113、ライブラリ114等は、クライアント端末1内で、それぞれ複数のディレクトリで構成されているとする。ユーザデータ113を例にすると、電話帳データ、メールアドレスデータ、画像データといったデータ種別ごとに、それぞれ異なるディレクトリに格納されている。従ってユーザデータの一部を配置するという処理は、これらのディレクトリの一部を実行環境内に参照可能なように配置するということである。本実施例2では、この配置機能をカーネル空間で実行環境作成手段1167によって実行することで実現可能である。
実行環境内にこれらを配置することで、実行環境内で動作するアプリケーション117は、ここで配置された範囲内の各資源を参照及び利用することが可能となる。デバイスドライバ112、ユーザデータ113、ライブラリ114に関して、どれだけの範囲を実行環境内に配置するかは、アプリケーション117に添付されたドメイン情報と図11の管理テーブル401とによって決定する。
配置後の実行環境を示す図5のように、実行環境300内にデバイスドライバサブセット302、ユーザデータサブセット303およびライブラリサブセット304を配置することで、実行環境300内で動作するアプリケーション301は、ここで配置された範囲内のデバイスドライバ、ユーザデータ、ライブラリを参照及び利用することが可能となる。
デバイスドライバ112、ユーザデータ113、ライブラリ114に関して、どれだけの範囲を実行環境300内に配置するかは、アプリケーション301に関連付けられたドメイン情報によって決定する。例えばドメイン情報を、先に述べたように携帯電話キャリア、携帯電話ベンダ、信頼できるサードベンダ、それ以外の信頼できないベンダといった4種類に分類した場合は、携帯電話キャリア、携帯電話ベンダに関しては全ての範囲のデバイスドライバ、ユーザデータ、ライブラリを実行環境内に配置し、信頼できないベンダには一切配置しない、また、信頼できるサードベンダに対しては、これらの一部を配置する、といった処理を行う。ベースとなるファイルシステム上にデバイスドライバ、ユーザデータ、ライブラリのフルセットあるいはサブセットが置かれたディレクトリを用意し、実行環境内から参照可能とすることで実現可能である。図11の実行環境の欄にある/dev,/bin,/lib,/usr,/etcなどを実行環境内にディレクトリとして作成し、そのディレクトリにベースとなるファイルシステム上のデバイスドライバ、ユーザデータ、ライブラリのフルセットあるいはサブセットのディレクトリをドメインに応じて参照可能にすれば実行環境内にドメインに応じたデバイスドライバ、ユーザデータ、ライブラリを配置することが可能である。また、場合によっては、デバイスドライバ、ユーザデータ、ライブラリのフルセット、あるいは、サブセットを実行環境内にコピーして配置することもありえる。
実行環境作成後、制御手段1161およびOS処理手段118からリターンし、アプリケーション117は正常に起動し、実行を開始する。
次にアプリケーション117の実行中に、アクセス制御手段1165により各種資源へのアプリケーション117からのアクセスを制御する方法を説明する。このアクセス制御手段1165は、アプリケーション117が実際に資源へアクセスする場合に動作する。実行環境作成手段1167によりデバイスドライバ、ユーザデータおよびライブラリなどの資源へのアクセス制御はすでに実施されているが、アクセス制御手段1165により、さらに細かくアクセス制御することが可能となる。
アプリケーション117の実行中は、実行環境作成手段1167で作成された実行環境内に配置されたデバイスドライバ112、ユーザデータ113、ライブラリ114に関しては、自由にアクセスすることができる。ただし、デバイスドライバ112、ユーザデータ113、ライブラリ114の中でクライアント端末1の外部から獲得したアプリケーション117にアクセスさせたくないものが存在すれば、アクセス制御手段1165によりアクセス制限される。
たとえば、アプリケーション117がデバイスドライバ112となる通信装置107の制御用デバイスドライバにアクセスしようとしてOS処理手段118を呼び出す。OS処理手段118は、アクセス許可されているか調べるためにアクセス制御手段1165を呼び出す。アプリケーション117からデバイスドライバ112にアクセスするには、Linux上では、open,
close, read, writeなどのシステムコールを呼び出す。この時にOS処理手段118が呼び出される。アクセス制御手段1165は、アプリケーション117となる元ファイルの置き場所からそのアプリケーション117がクライアント端末1にもともと存在するものなのか、外部から獲得したものなのか判断する。もともと存在するものであれば、アクセスを許可し、そうでなければアクセスを許可しない。この結果を戻り値として、制御手段1161およびOS処理112手段までもどる。ここで、もしアクセス許可であればOS処理手段118は、通信装置107の制御用デバイスドライバにアクセスし、そうでなければエラーとする。
つまり、ある資源に関して、クライアント端末1にもともと存在しているアプリケーション117については、アクセス制御手段1165により予めアクセス許可の設定をしておき、クライアント端末1の外部から獲得したアプリケーション117に関してはアクセスを不許可といった設定にしておく。これらを実現する方法として、LinuxではSELinuxが知られている。クライアント端末1にOSとしてLinuxを採用する場合、システム構築時にSELinuxのポリシーファイルにおいて、アクセス設定の対象となるある資源について、デフォルトでアクセス禁止としておき、クライアント端末1内の既存アプリケーション117についてだけアクセス許可を与えるといった設定をしておくことで容易に実現可能である。
また、アプリケーション117が実行する際に使用するCPU101、メモリ、HDD104、ネットワーク等のクライアント端末1内のリソースに対しては、リソース制御手段1166によって使用量の制限が行われる。最大使用量に関しては、リソース制御手段1166が、「アプリケーション117がクライアント端末1の外部から獲得されたものなのか。」、「そうでないのか。」でリソースにアクセス許可を決定したのと同様に、リソースの最大使用量が決定される。
次に、第3の実施例を説明する。本実施例では、ドメインごとの実行環境構築に関するテーブルは、図12の管理テーブル501で示される内容を用いる。第1の実施例および第2の実施例では、図11に示すテーブル401を使用した。本実施例の処理内容は、第1の実施例および第2の実施例と同じであり、図11と図12とのテーブル内容に相違があるだけである。つまり、図11の信頼できないベンダに属するアプリケーションは実行可能であり、実行環境として/bin,/libサブセット、そして、生成可能なデータ(ファイル)のサイズは10Kbyteが許されていた。これに対して図12では、信頼できないベンダに属するアプリケーションは、実行許可が与えられておらず、また、実行環境およびデータ(ファイル)作成も不可能である。このように管理テーブルの内容を書き換えることで、ドメインごとの実行環境構築方法が変更される。つまり、本実施例3は、図11および図12に示すテーブルの内容を書き換えることで、実行環境の構築方法を柔軟に変更することができる利点を示している。
本発明は、クライアント端末に外部からアプリケーションをダウンロードして安全に実行する実行制御装置や、外部アプリケーションのダウンロード及び実行制御装置をコンピュータに実現するための実行制御プログラムといった用途に適用することができる。

Claims (6)

  1. コンピュータ上でプログラムの実行を制御する方法であって、前記コンピュータに備わるデバイスドライバ、ライブラリおよびユーザデータのうち前記プログラムのドメインに基づいて決定される範囲のデバイスドライバ、ライブラリおよびユーザデータのフルセット又はサブセットが実行環境内にコピーされることにより作成されることにより、前記実行環境外へのアクセスが制限された前記実行環境内で動作するプログラムから参照可能に配置され、前記プログラムを前記実行環境内で実行し、
    前記プログラムのドメインを、前記プログラムに関連付けられたドメイン情報に基づいて決定し、
    前記プログラムを含むパッケージに付与されているドメイン情報を取得し、前記プログラムに関連付けられたドメイン情報として使用し、
    前記取得したドメイン情報を前記プログラムに付与することを特徴とするプログラム実行制御方法。
  2. 前記ドメイン情報が付与されたプログラムにデジタル署名を付与し、該付与したデジタル署名をプログラム実行ごとに検証することを特徴とする請求項1に記載のプログラム実行制御方法。
  3. コンピュータ上でプログラムの実行を制御する装置であって、前記コンピュータに備わるデバイスドライバ、ライブラリおよびユーザデータのうち前記プログラムのドメインに基づいて決定される範囲のデバイスドライバ、ライブラリおよびユーザデータのフルセット又はサブセットが実行環境内にコピーされることにより作成されることにより、前記実行環境外へのアクセスが制限された前記実行環境内で動作するプログラムから参照可能に配置する実行環境作成手段と、前記プログラムを前記実行環境内で実行する実行制御手段と、を具備し、
    前記実行環境作成手段は、前記プログラムのドメインを、前記プログラムに関連付けられたドメイン情報に基づいて決定し、
    前記プログラムに関連付けられたドメイン情報として使用するために、前記プログラムを含むパッケージに付与されているドメイン情報を取得するドメイン情報取得手段を有し、
    前記ドメイン情報取得手段は、前記取得したドメイン情報を前記プログラムに付与することを特徴とするプログラム実行制御装置。
  4. 前記ドメイン情報が付与されたプログラムにデジタル署名を付与し、該付与したデジタル署名をプログラム実行ごとに検証する検証手段を有することを特徴とする請求項に記載のプログラム実行制御装置。
  5. コンピュータを、前記コンピュータに備わるデバイスドライバ、ライブラリおよびユーザデータのうち前記プログラムのドメインに基づいて決定される範囲のデバイスドライバ、ライブラリおよびユーザデータのフルセット又はサブセットが実行環境内にコピーされることにより作成されることにより、前記実行環境外へのアクセスが制限された前記実行環境内で動作するプログラムから参照可能に配置する実行環境作成手段、前記プログラムを前記実行環境内で実行する実行制御手段、として機能させ、
    前記実行環境作成手段は、前記プログラムのドメインを、前記プログラムに関連付けられたドメイン情報に基づいて決定し、
    前記コンピュータを、さらに、前記プログラムに関連付けられたドメイン情報として使用するために、前記プログラムを含むパッケージに付与されているドメイン情報を取得するドメイン情報取得手段として機能させ、
    前記ドメイン情報取得手段は、前記取得したドメイン情報を前記プログラムに付与することを特徴とする実行制御プログラム。
  6. 前記コンピュータを、さらに、前記ドメイン情報が付与されたプログラムにデジタル署名を付与し、該付与したデジタル署名をプログラム実行ごとに検証する検証手段として機能させることを特徴とする請求項に記載の実行制御プログラム。
JP2007551858A 2005-12-27 2006-09-27 プログラム実行制御方法および装置ならびに実行制御プログラム Expired - Fee Related JP5061908B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007551858A JP5061908B2 (ja) 2005-12-27 2006-09-27 プログラム実行制御方法および装置ならびに実行制御プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005375137 2005-12-27
JP2005375137 2005-12-27
PCT/JP2006/319110 WO2007074565A1 (ja) 2005-12-27 2006-09-27 プログラム実行制御方法および装置ならびに実行制御プログラム
JP2007551858A JP5061908B2 (ja) 2005-12-27 2006-09-27 プログラム実行制御方法および装置ならびに実行制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2007074565A1 JPWO2007074565A1 (ja) 2009-06-04
JP5061908B2 true JP5061908B2 (ja) 2012-10-31

Family

ID=38217791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007551858A Expired - Fee Related JP5061908B2 (ja) 2005-12-27 2006-09-27 プログラム実行制御方法および装置ならびに実行制御プログラム

Country Status (5)

Country Link
US (1) US20090307781A1 (ja)
EP (1) EP1967981A4 (ja)
JP (1) JP5061908B2 (ja)
CN (1) CN101346727A (ja)
WO (1) WO2007074565A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312075B1 (en) * 2006-11-29 2012-11-13 Mcafee, Inc. System, method and computer program product for reconstructing data received by a computer in a manner that is independent of the computer
JP4268673B1 (ja) * 2007-10-02 2009-05-27 パナソニック株式会社 著作権保護システム、再生装置、及び再生方法
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US8281390B1 (en) * 2007-11-26 2012-10-02 Adobe Systems Incorporated Remotely defining security data for authorization of local application activity
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US9135434B2 (en) * 2010-04-19 2015-09-15 Appcentral, Inc. System and method for third party creation of applications for mobile appliances
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8903705B2 (en) 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8938809B2 (en) * 2011-06-24 2015-01-20 Google Technology Holdings LLC Retrieval of data across multiple partitions of a storage device using digital signatures
US9389933B2 (en) * 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
CN103246525B (zh) * 2012-02-06 2017-03-08 腾讯科技(深圳)有限公司 一种实现应用运行的方法及客户端
US20140006598A1 (en) * 2012-06-29 2014-01-02 Nokia Corporation Methods, apparatuses and computer program products for facilitating dynamic origin-based domain allocation
JP5971099B2 (ja) 2012-12-04 2016-08-17 富士通株式会社 情報処理装置、方法及びプログラム
US20140282876A1 (en) * 2013-03-15 2014-09-18 Openpeak Inc. Method and system for restricting the operation of applications to authorized domains
US20140359605A1 (en) * 2013-05-30 2014-12-04 Microsoft Corporation Bundle package signing
GB2521412A (en) * 2013-12-18 2015-06-24 Continuumbridge Ltd An apparatus for network bridging
US10613897B1 (en) * 2016-12-21 2020-04-07 Ca, Inc. Systems and methods for creating program-specific execution environments
US11240268B1 (en) * 2017-09-27 2022-02-01 EMC IP Holding Company LLC Dynamic honeypots for computer program execution environments
US20190347084A1 (en) * 2018-05-10 2019-11-14 Dell Products, Lp Method to Dynamically Create Plug and Play Identifiers in Firmware to Facilitate Deployment of Windows Services
CN109359465A (zh) * 2018-08-29 2019-02-19 郑州云海信息技术有限公司 一种基于数字证书的程序防御方法及系统
US11659003B2 (en) * 2018-08-30 2023-05-23 International Business Machines Corporation Safe shell container facilitating inspection of a virtual container
WO2020261438A1 (ja) * 2019-06-26 2020-12-30 日本電気株式会社 実行制御システム、実行制御方法、及びプログラム
US11093256B2 (en) 2019-09-12 2021-08-17 Dell Products L.P. System and method for dynamically installing driver dependencies
WO2024095711A1 (ja) * 2022-11-02 2024-05-10 ソニーセミコンダクタソリューションズ株式会社 アプリケーション提供装置、アプリケーション提供方法およびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001514411A (ja) * 1997-08-28 2001-09-11 マイクロソフト コーポレイション 信頼できない実行可能コードに関するセキュリティ向上
JP2002517852A (ja) * 1998-06-12 2002-06-18 マイクロソフト コーポレイション 信頼できないコンテントを安全に実行するための方法およびシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW313642B (en) * 1996-06-11 1997-08-21 Ibm A uniform mechanism for using signed content
US6802061B1 (en) * 1996-12-12 2004-10-05 Microsoft Corporation Automatic software downloading from a computer network
AUPP734298A0 (en) * 1998-11-26 1998-12-24 Aristocrat Leisure Industries Pty Ltd Electronic casino gaming with authentication and improved security
US7451484B1 (en) * 1999-05-27 2008-11-11 International Business Machines Corporation Method for enabling a program written in untrusted code to interact with a security subsystem of a hosting operating system
JP2003503795A (ja) * 1999-06-30 2003-01-28 マイクロソフト コーポレイション サポート・インシデントを報告及び解決する方法及びシステム
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US6901464B2 (en) * 2002-04-05 2005-05-31 Monterey Bay Aquarium Research Institute Puck interface adapter including drivers for interfacing serial device to host wherein puck implements command mode and pass through mode
US7512977B2 (en) * 2003-06-11 2009-03-31 Symantec Corporation Intrustion protection system utilizing layers
JP2006518558A (ja) * 2003-02-21 2006-08-10 リサーチ イン モーション リミテッド 電子装置の複数レベル制御のシステムおよびその方法
JP2004302543A (ja) * 2003-03-28 2004-10-28 Ntt Docomo Inc 受信装置およびプログラム
US7389512B2 (en) * 2003-05-09 2008-06-17 Sun Microsystems, Inc. Interprocess communication within operating system partitions
US20050143171A1 (en) * 2003-12-30 2005-06-30 Loose Timothy C. Gaming machine having sampled software verification
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US9313214B2 (en) * 2004-08-06 2016-04-12 Google Technology Holdings LLC Enhanced security using service provider authentication
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling
US7844442B2 (en) * 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001514411A (ja) * 1997-08-28 2001-09-11 マイクロソフト コーポレイション 信頼できない実行可能コードに関するセキュリティ向上
JP2002517852A (ja) * 1998-06-12 2002-06-18 マイクロソフト コーポレイション 信頼できないコンテントを安全に実行するための方法およびシステム

Also Published As

Publication number Publication date
WO2007074565A1 (ja) 2007-07-05
CN101346727A (zh) 2009-01-14
US20090307781A1 (en) 2009-12-10
EP1967981A4 (en) 2009-04-22
EP1967981A1 (en) 2008-09-10
JPWO2007074565A1 (ja) 2009-06-04

Similar Documents

Publication Publication Date Title
JP5061908B2 (ja) プログラム実行制御方法および装置ならびに実行制御プログラム
US10871955B2 (en) System and method for providing firmware data updates
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
JP5190800B2 (ja) プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
JP5828081B2 (ja) 情報処理装置、情報処理方法、及びプログラム配信システム
Bugiel et al. Practical and lightweight domain isolation on android
US7496757B2 (en) Software verification system, method and computer program element
US7565641B2 (en) Securely providing extensible third-party plug-ins
JP4975127B2 (ja) 取り外し可能な媒体に格納された実行可能なコードにタンパーエビデント性を提供する装置
KR101453225B1 (ko) 애플리케이션 배포 시스템, 애플리케이션 배포 방법, 단말 및 프로그램
JP2010182319A (ja) コンピュータ装置上の記憶領域へのアプリケーションレベルのアクセス特権
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
JP2004502233A (ja) 共有名を用いてコンポーネントにセキュリティを提供するシステムおよび方法
US20170255775A1 (en) Software verification systems with multiple verification paths
US20060265756A1 (en) Disk protection using enhanced write filter
US20070271472A1 (en) Secure Portable File Storage Device
JP2005531831A (ja) 保護されたファイルシステムを有する移動体無線デバイス
Lee et al. Demystifying Android’s Scoped Storage Defense
KR20220085786A (ko) 랜섬웨어 방지
JP2009169868A (ja) 記憶領域アクセス装置及び記憶領域のアクセス方法
US11882123B2 (en) Kernel level application data protection
Asokan et al. Mobile Platforms
Asokan et al. Platform Security Model
Dive-Reclus et al. SYMBIAN OS PLATFORM SECURITY ARCHITECTURE

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090812

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100623

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120619

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: 20120710

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120723

R150 Certificate of patent or registration of utility model

Ref document number: 5061908

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees