アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置
【課題】 物理的・論理的な攻撃に強く、アプリケーション及びその構成ファイルの漏洩を確実に防ぐシステムを提供する。
【解決手段】
暗号ディレクトリと平文ディレクトリに分け、暗号ディレクトリに漏洩から保護したいアプリケーション及びその構成ファイルを格納し、暗号ディレクトリから平文ディレクトリへの情報フローをセキュアOSのアクセス制御設定で制御する。
【解決手段】
暗号ディレクトリと平文ディレクトリに分け、暗号ディレクトリに漏洩から保護したいアプリケーション及びその構成ファイルを格納し、暗号ディレクトリから平文ディレクトリへの情報フローをセキュアOSのアクセス制御設定で制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置に関するものである。
【背景技術】
【0002】
周知のようにコンピュータの補助記憶装置には、漏洩してはならない情報が格納されている。例えば、個人情報や業務情報などである。
補助記憶装置に格納した情報漏洩防止のためには、下記の特許文献1や非特許文献1のように、補助記憶装置の内容を丸ごと暗号化するディスク暗号もしくはドライブ暗号と呼ばれる技術が広く用いられている。
暗号化することにより、補助記憶装置を物理的に解析され、情報を取り出されることを防ぐことができる。
【0003】
組込み機器においても、情報漏洩防止の必要がある。漏洩防止対象となる情報は、自社開発したアプリケーションのバイナリである。アプリケーションのバイナリが漏洩すると、バイナリの逆アセンブルによる知的財産の流出が発生する。
しかし、組込み機器のCPUは一般的に速度が遅いため、ドライブ暗号技術を適用すると、暗号処理の負荷が高い。暗号処理の負荷を抑えるためには、ドライブ暗号ではなく、漏洩防止したいデータをあるディレクトリに格納し、そのディレクトリにだけ暗号化を施す方式がある(非特許文献2)。
組込み機器では、オープンソースのソフトウェアを使いまわす部分も多く、自社開発部分はシステム全体から見ると一部であるので、ディレクトリ暗号技術との併用は暗号処理の負荷を抑えるために有効である。
【0004】
アクセス制御で情報漏洩防止を行う技術としては、セキュアOSが広く使われている。現在広く使われているOSのアクセス制御は、リソースの所有者がそのリソースへのアクセス権限を設定する。また、全ての権限をもつ特権というものが存在する。
それに対してセキュアOSとは、全権を持つ特権を排除し、プロセス毎にドメインと呼ばれるアクセス権限を付与できるようにしたOSである。プロセス毎にどんな権限を持つかという設定はセキュリティポリシファイルというファイルに記載されている。この機能により、プロセスが必要なリソースにだけアクセスすることがOSによって保証され、プロセスにセキュリティホールがあり、攻撃者にプロセスが乗っ取られたとしても、その被害を最小限にすることができる。
セキュアOSのうち、ラベルベースのセキュアOSでは、ファイルやネットワークなどのリソースをラベルで識別する。すなわち、ファイルやネットワークにラベルという識別子を付与し、ドメインがどんなラベルにアクセスできるかを制御する。
セキュリティポリシの設定としては、ラベルとリソースの対応付けおよびドメインがどんなラベルにアクセスできるかを設定する必要がある。
ラベルベースのセキュアOSとしては、下記の非特許文献3に開示されたものがある。
【0005】
【特許文献1】特開平11−149414号公報
【非特許文献1】日立ソフトウエアエンジニアリング「秘文」ホームページ:http://hitachisoft.jp/products/hibun/
【非特許文献2】M.A.Halcrow, eCryptfs: An Enterprise-class Encrypted Filesystem for Linux, the Proceedings of 2005 Linux SympOSium(2005)
【非特許文献3】P. LOScoccOS. Smalley, "Meeting Critical Security Objectives with Security-Enhanced Linux", Proceedings of the 2001 Ottawa Linux SympOSium, Ottava, CA, July 2001.
【発明の開示】
【発明が解決しようとする課題】
【0006】
前述のように、組込み機器のようなCPUの速度が遅い機器に対して知的財産を保護したいアプリケーションのバイナリとその構成ファイルの漏洩を防止するためには、ディレクトリ暗号技術の適用またはセキュアOSの適用が考えられる。
ディレクトリ暗号化を適用する場合、知的財産を保護したいアプリケーションおよびその構成ファイルを暗号化されるディレクトリに格納する。物理的に補助記憶装置を解析しても、これらの中身を知られることはない。
【0007】
しかし、ディレクトリ暗号技術は、論理的な攻撃に対して脆弱である。論理的な攻撃とは、ソフトウェアの脆弱性を使い、ソフトウェアに任意の命令を実行させる攻撃と定義する。
例えばバッファオーバーフロー攻撃等がある。論理的な攻撃をされると、暗号化されたディレクトリから、通常の(平文の)ディレクトリにファイルをコピーされてしまう。
ディレクトリ暗号技術は、ディレクトリ内のみ暗号化するだけであり、ディレクトリの外にデータが出てしまうとデータが復号化される。したがって、通常の(平文の)ディレクトリにコピーされたファイルは平文の状態である。こうなると、物理的に平文ディレクトリを解析することにより、知的財産の保護が必要なデータを奪取されてしまう。
【0008】
一方、セキュアOSを適用したとしても、今度は物理的な攻撃に対して脆弱である。つまり、補助記憶装置を物理的に取り出し、解析される攻撃には対応できない。
【0009】
本発明の課題は、物理的・論理的な攻撃受けても、知的財産を保護したいアプリケーションのバイナリとその構成ファイルの漏洩を確実に防止することができるアプリケーション実行ファイル及び構成ファイルの漏洩防止装置を提供することである。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明に係る装置は、情報漏洩保護対象となる機密アプリケーションの実行ファイル及び構成ファイルを格納した記憶手段を備えた装置に実装される機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置であって、
前記機密アプリケーションの実行ファイル及び構成ファイルを前記記憶装置の暗号ディレクトリに暗号化して格納する第1の手段と、情報漏洩保護対象としない一般アプリケーションの実行ファイル及び構成ファイルを暗号化されていない平文ディレクトリに格納する第2の手段と、前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにするアクセス制御情報が設定された第3の手段を備えることを特徴とする。
また、前記一般アプリケーションから機密アプリケーションの起動手段を介して機密アプリケーションを起動することを特徴とする。
【発明の効果】
【0011】
本発明によれば、物理的・論理的な攻撃による機密アプリケーションおよび機密アプリ構成ファイルの漏洩を防止することができる。
物理的な攻撃を受けた場合、機密アプリケーションおよび機密アプリ構成ファイルは、暗号ディレクトリに格納されているため、物理的にメモリを取り出しても解析できない。
論理的な攻撃に対しては、機密アプリケーションに脆弱性があり、攻撃者に任意の操作をされてしまったとしても、機密アプリケーションは、平文ディレクトリへの書き込み権限がないため、平文ディレクトリに、機密アプリケーションおよび機密アプリ構成ファイルがコピーされることはない。同様に、平文アプリケーションに脆弱性があったとしても、暗号ディレクトリへのアクセス権限がないため、暗号ディレクトリ内の機密アプリケーションおよび機密アプリ構成ファイルが平文アプリケーション側へ漏れることはない。論理的な攻撃耐性は、ランチャプログラムによるところが大きい。ランチャプログラムを無くすと、機密アプリケーションが起動される場合は、平文アプリケーションから直接起動されなければならず、平文アプリケーションは、機密アプリケーションへの読み込み権限が必要になる。こうなると、平文アプリケーションに脆弱性があると、機密アプリケーションを平文ディレクトリにコピーできてしまう。
本発明においては、ランチャプログラムによって論理的な攻撃耐性を確実なものとすることができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明の一実施形態を図面を参照しながら説明する。
図1は、本発明の実施対象である機器110のハードウェア構成を示すブロック図である。
基本的な情報処理を行うためにCPU(Central Processing Unit)111、RAM(Random Access Memorty)112、TPMチップ113、フラッシュメモリ114を備えている。
TPMチップ113は、Trusted Platform Module(TPM)機能を持つチップであり、暗号演算及び暗号鍵を安全に保管する機能を有している。
フラッシュメモリ114は補助記憶装置である。ファイルシステムおよびソフトウェアはフラッシュメモリ114中に保存されている。
【0013】
図2は、機器110のソフトウェアの構成を示した図である。
セキュアOS210は、211〜214の手段を備える。
ファイルシステム手段211は、フラッシュメモリ114中にファイルシステムを実現する機能である。この手段により、Windows(登録商標)やLinuxのようなファイル・ディレクトリ構造であり、フラッシュメモリ114中のデータにアクセスできる。
アクセス制御手段212は、プロセスにドメインを、ファイルなどのリソースにラベルを付与し、「ドメインがどんなラベルにどんなパーミッションのアクセスができるか」というアクセス制御を行う。アクセス制御は、プロセスがリソースにアクセスするOSのシステムコール内部のパーミッション・チェックとして行われている。アクセス制御設定は、平文ディレクトリ220のポリシファイル224に格納されている。
Chroot手段213については、図8を参照して後述する。
【0014】
ディレクトリ暗号手段214は、ファイルシステム中のディレクトリをディレクトリ単位で暗号化する手段である。詳細は図7を参照して後述する。
平文ディレクトリ220および暗号ディレクトリ230は、ファイルシステム手段211で実現されるファイルシステムに存在するディレクトリである。
平文ディレクトリ220は、ファイルの暗号化は行われていない。
暗号ディレクトリ230については、ディレクトリ暗号手段214によって、格納されたファイルが暗号化されている。平文ディレクトリ220の中には、221〜224のようなファイルが格納されている。これらのファイル221〜224は、知的財産の保護が必要ないものである。
【0015】
平文アプリケーション221は、アプリケーションの実行ファイル群である。平文アプリ構成ファイル222は、平文アプリケーション221が利用する設定ファイルや作業ファイルである。
ランチャプログラム223は、機密アプリケーション231を実行するために使うアプリケーションの実行ファイルである。詳細は図9を参照して後述する。
ポリシファイル224は、アクセス制御手段212の設定ファイルである。詳細な構成は図3〜図6を参照して後述する。
【0016】
暗号ディレクトリ230には、機密アプリケーション231、機密アプリ構成ファイル232といったファイルが格納されている。これは、知的財産の保護が必要なものを格納している。機密アプリケーション231は、アプリケーションの実行ファイル群である。機密アプリ構成ファイル232は、機密アプリケーション231が利用する設定ファイル及び作業ファイルである。暗号鍵240は、ディレクトリ暗号手段214が用いる鍵で、TPMチップ113によって暗号化されて、フラッシュメモリ114中に格納されている。
【0017】
図3は、ポリシファイル224の構成を示す図である。
ポリシファイル224は、ラベル付与設定テーブル311、ドメイン付与設定テーブル312、アクセス制御設定テーブル313から成り立っている。これらのテーブル311〜313の構成は図4,5,6で詳しく述べる。
【0018】
図4は、ラベル付与設定テーブル311の構成を示した図である。
ラベル付与設定テーブル311では、ファイルにラベルを付与する設定を行う。ファイル名410及びラベル420の列に列挙することで設定を行う。例えば、「/sbin/launch」という名前のファイルが、ランチャプログラムの実行ファイル、/crypt以下のディレクトリ・ファイルが暗号ディレクトリ、それ以外のファイル全てを平文ディレクトリであるとすると、行431〜433のような設定になる。
行431では、「/以下のディレクトリ・ファイル」に、「平文ディレクトリ」を表す「plain_file_t」というラベルを付与している。
行432では、「/sbin/launch」に、ランチャプログラムであることを表す「launch_exec_t」ラベルを付与している。
行433では、/crypt以下のディレクトリ・ファイルに、「暗号ディレクトリ」を表す「crypt_file_t」というラベルを付与している。
【0019】
図5は、ドメイン付与設定テーブル312の構成を示す図である。
エントリポイント510、付与されるドメイン520を設定する。行541は、システム起動時のプロセスに割り当てられるドメインを設定している。システム起動時は、plain_tというドメインが割り当てられる。システム起動時は、平文ディレクトリ内のファイルをまずは実行すると仮定する。
ドメイン付与設定が明示的にされない限り、plain_tで動作するプロセスの子プロセスにも、plain_tが割り当てられる。
行542は、「launch_exec_tラベルの付与された実行ファイル(本実施形態ではランチャプログラム/sbin/launch)が実行されると、実行ファイルから起動するプロセスのドメインは、launch_tになる」という設定である。
行543は、「crypt_file_tラベルの付与された実行ファイル(本実施形態の場合は、暗号ディレクトリ(/crypt以下)に格納された実行ファイル)が実行されると、実行ファイルから起動するプロセスのドメインは、crypt_tになる」という設定である。
【0020】
図6は、アクセス許可設定テーブル313の構成を示す図である。
ここでは、「ドメイン610が、どんなラベル620を付与されたリソースに、どんな操作630ができるか」を設定する。ドメインは、ここで許可されたアクセス以外は拒否される。
行641,642は、plain_tのアクセス許可設定である。plain_tは、plain_file_t(平文ディレクトリを表す)に読み書き実行アクセスが許可され、launch_exec_t(ランチャプログラムの実行ファイルを表す)の読み実行アクセスができる。
行643は、launch_tドメインのアクセス許可設定である。launch_tは、crypt_file_t(暗号ディレクトリを表す)の読み実行ができる。
行644,645は、crypt_tドメインのアクセス許可設定である。plain_file_tに読み込みアクセス、crypt_file_tに読み書きアクセスが許可されている。
【0021】
図7は、ディレクトリ暗号手段214の処理を示すフローチャートである。
まず、システム起動時にTPM113が暗号鍵240を復号する(ステップ710)。
次に、暗号ディレクトリ230をマウントする(ステップ720)。
次に、その後の暗号ディレクトリ230へのファイル読み書き要求をフックし、暗号鍵240を使って暗号・復号処理を行う(ステップ730)。
【0022】
図8はchroot手段213の処理を示すフローチャートである。
まず、chroot機能は、OSのシステムコールもしくはコマンドとして実装されている。ディレクトリ名を引数として実行される。例えば、アプリケーションXが「chroot /crypt」と実行する(ステップ810)。
次に、ステップ810以降、アプリケーションXにとって、/cryptが、ルートディレクトリとして扱われる(ステップ820)。つまり、Xが/crypt/fooというファイルにアクセスするためには、/fooと指定してアクセスすればよい。
【0023】
図9は、ランチャプログラム223の処理を示すフローチャートである。
ランチャプログラムの実行ファイル名を/sbin/launchとすると、ランチャプログラム223を実行する場合は、機密アプリケーション名を引数として実行する(ステップ910)。例えば、機密アプリケーション名が「httpd」である場合、「/sbin/launch httpd」として実行する。
次に、chroot処理を暗号ディレクトリ230のルートを引数として実行する(ステップ920)。本例では、chroot /cryptとして実行する。
次に、ステップ910の内容に応じ、暗号ディレクトリ230内のアプリケーションを起動する。「/sbin/launch httpd」とした場合は、/cryptディレクトリ内の/crypt/sbin/httpdというファイルを実行する(ステップ930)。
【0024】
図10は、本実施形態におけるシステム全体の処理を示すフローチャートである。ここでは、システム起動から機密アプリケーション231が起動するまでを示している。
まず、電源を投入し、カーネルがロードされ、システムが起動する(ステップ1010)。システム起動時は、何らかの平文アプリケーションが起動する。例えばLinuxならば、initプログラムである。暗号ディレクトリ230のマウント処理も、ステップ710,720の過程で行われる。本実施形態の場合は、平文アプリケーションのドメインは「plain_t」となる(図5)。
【0025】
次に、機密アプリケーション231を実行する場合は、平文アプリケーション221がランチャプログラム223を起動する(ステップ1020)。
ランチャプログラム223は、launch_tドメインで動作し、図9の処理を行う(ステップ1030)。
ランチャプログラム223は、機密アプリケーション231を起動する(ステップ1040)。図5の設定例によれば、機密アプリケーションのドメインは、crypt_tドメインである。
【0026】
図11は、本発明を適用した結果、平文アプリケーション、暗号アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係を示した図である。平文アプリケーション221は、1110のように、plain_tというドメインで動作し、平文ディレクトリ220にしかアクセスできない。
また、ランチャプログラム223は、1120のように、launch_tというドメインで動作し、暗号ディレクトリ230の読出し実行が許可されている。
機密アプリケーション231は、1130のように、crypt_tドメインで動作し、平文ディレクトリ220への読出しアクセス、暗号ディレクトリ230への読み書きアクセスが可能となっている。
これによれば、平文アプリケーション221からは暗号ディレクトリ220の情報は取り出せず、機密アプリケーション231から平文ディレクトリ220へ暗号ディレクトリ230の情報が流出することはなくなる。
【0027】
なお、平文アプリケーション、暗号アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係は、図12に示すように変更して実施することができる。
すなわち、平文アプリケーション221と平文ディレクトリ220の関係は、図11においては「読み書き実行可」としているが、図12に示すように、「読み書き実行可」または「読出しのみ実行可」としてもよい。
暗号アプリケーション231と暗号ディレクトリ230の関係は、図11においては「読み書き実行可」としているが、図12に示すように、「読み書き実行可」または「読出しのみ実行可」としてもよい。
また、暗号アプリケーション231と平文ディレクトリ220の関係は、図11においては「読出し実行可」としたが、図12に示すように、「書込み禁止・読出し実行可」または「書込み禁止・読出し実行不可」に設定してもよい。
要するに、暗号アプリケーション231から平文ディレクトリ220に対してはデータの書込みが不可能な関係に設定されていることが必須となっていればよい。
【0028】
以上のように、本実施形態においては、物理的・論理的な攻撃による、機密アプリケーション231および機密アプリ構成ファイル232の漏洩を防止することができる。
すなわち、物理的な攻撃については、機密アプリケーション231および機密アプリ構成ファイル232は、暗号ディレクトリ230に格納されているため、物理的にフラッシュメモリ114を取り出しても解析できない。
一方、論理的な攻撃については、機密アプリケーション231に脆弱性があり、攻撃者に任意の操作をされてしまったとしても、機密アプリケーション231は、平文ディレクトリ220への書き込み権限がないため、平文ディレクトリ220に、機密アプリケーション231および機密アプリ構成ファイル232がコピーされることはない。
同様に、平文アプリケーション221に脆弱性があったとしても、暗号ディレクトリ230へのアクセス権限がないため、暗号ディレクトリ内の情報は漏れない。論理的な攻撃耐性は、ランチャプログラム223によるところが大きい。ランチャプログラムを無くすと、機密アプリケーション231が起動される場合は、平文アプリケーション221から直接起動されなければならず、平文アプリケーション221は、機密アプリケーション231への読み込み権限が必要になる。こうなると、平文アプリケーション221に脆弱性があると、機密アプリケーション231を平文ディレクトリ220にコピーできてしまう。従って、ランチャプログラム223によって論理的な攻撃耐性が強固なものになる。
【図面の簡単な説明】
【0029】
【図1】本発明を適用した機器のハードウェア構成の実施の形態を示したブロック図である。
【図2】図1の機器のソフトウェア構成を示した図である。
【図3】図1の機器のポリシファイルの構成を示した図である。
【図4】図1の機器のラベル付与設定テーブルの構成を示した図である。
【図5】図1の機器のドメイン付与設定テーブルの構成を示した図である。
【図6】図1の機器のアクセス制御設定テーブルの構成を示した図である。
【図7】ディレクトリ暗号手段の処理を示したフローチャートである。
【図8】chroot手段の処理を示したフローチャートである。
【図9】ランチャプログラムの処理を示したフローチャートである。
【図10】本発明の全体の処理を示したフローチャートである。
【図11】本発明における平文アプリケーション、機密アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係を示す図である。
【図12】本発明における平文アプリケーション、機密アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係の他の例を示す図である。
【符号の説明】
【0030】
110 機器
210 セキュアOS
212 アクセス制御手段
214 ディレクトリ暗号手段
220 平文ディレクトリ
221 平文アプリケーション
223 ランチャプログラム
224 ポリシファイル
230 暗号ディレクトリ
231 機密アプリケーション
232 機密アプリ構成ファイル
240 暗号鍵
【技術分野】
【0001】
本発明は、アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置に関するものである。
【背景技術】
【0002】
周知のようにコンピュータの補助記憶装置には、漏洩してはならない情報が格納されている。例えば、個人情報や業務情報などである。
補助記憶装置に格納した情報漏洩防止のためには、下記の特許文献1や非特許文献1のように、補助記憶装置の内容を丸ごと暗号化するディスク暗号もしくはドライブ暗号と呼ばれる技術が広く用いられている。
暗号化することにより、補助記憶装置を物理的に解析され、情報を取り出されることを防ぐことができる。
【0003】
組込み機器においても、情報漏洩防止の必要がある。漏洩防止対象となる情報は、自社開発したアプリケーションのバイナリである。アプリケーションのバイナリが漏洩すると、バイナリの逆アセンブルによる知的財産の流出が発生する。
しかし、組込み機器のCPUは一般的に速度が遅いため、ドライブ暗号技術を適用すると、暗号処理の負荷が高い。暗号処理の負荷を抑えるためには、ドライブ暗号ではなく、漏洩防止したいデータをあるディレクトリに格納し、そのディレクトリにだけ暗号化を施す方式がある(非特許文献2)。
組込み機器では、オープンソースのソフトウェアを使いまわす部分も多く、自社開発部分はシステム全体から見ると一部であるので、ディレクトリ暗号技術との併用は暗号処理の負荷を抑えるために有効である。
【0004】
アクセス制御で情報漏洩防止を行う技術としては、セキュアOSが広く使われている。現在広く使われているOSのアクセス制御は、リソースの所有者がそのリソースへのアクセス権限を設定する。また、全ての権限をもつ特権というものが存在する。
それに対してセキュアOSとは、全権を持つ特権を排除し、プロセス毎にドメインと呼ばれるアクセス権限を付与できるようにしたOSである。プロセス毎にどんな権限を持つかという設定はセキュリティポリシファイルというファイルに記載されている。この機能により、プロセスが必要なリソースにだけアクセスすることがOSによって保証され、プロセスにセキュリティホールがあり、攻撃者にプロセスが乗っ取られたとしても、その被害を最小限にすることができる。
セキュアOSのうち、ラベルベースのセキュアOSでは、ファイルやネットワークなどのリソースをラベルで識別する。すなわち、ファイルやネットワークにラベルという識別子を付与し、ドメインがどんなラベルにアクセスできるかを制御する。
セキュリティポリシの設定としては、ラベルとリソースの対応付けおよびドメインがどんなラベルにアクセスできるかを設定する必要がある。
ラベルベースのセキュアOSとしては、下記の非特許文献3に開示されたものがある。
【0005】
【特許文献1】特開平11−149414号公報
【非特許文献1】日立ソフトウエアエンジニアリング「秘文」ホームページ:http://hitachisoft.jp/products/hibun/
【非特許文献2】M.A.Halcrow, eCryptfs: An Enterprise-class Encrypted Filesystem for Linux, the Proceedings of 2005 Linux SympOSium(2005)
【非特許文献3】P. LOScoccOS. Smalley, "Meeting Critical Security Objectives with Security-Enhanced Linux", Proceedings of the 2001 Ottawa Linux SympOSium, Ottava, CA, July 2001.
【発明の開示】
【発明が解決しようとする課題】
【0006】
前述のように、組込み機器のようなCPUの速度が遅い機器に対して知的財産を保護したいアプリケーションのバイナリとその構成ファイルの漏洩を防止するためには、ディレクトリ暗号技術の適用またはセキュアOSの適用が考えられる。
ディレクトリ暗号化を適用する場合、知的財産を保護したいアプリケーションおよびその構成ファイルを暗号化されるディレクトリに格納する。物理的に補助記憶装置を解析しても、これらの中身を知られることはない。
【0007】
しかし、ディレクトリ暗号技術は、論理的な攻撃に対して脆弱である。論理的な攻撃とは、ソフトウェアの脆弱性を使い、ソフトウェアに任意の命令を実行させる攻撃と定義する。
例えばバッファオーバーフロー攻撃等がある。論理的な攻撃をされると、暗号化されたディレクトリから、通常の(平文の)ディレクトリにファイルをコピーされてしまう。
ディレクトリ暗号技術は、ディレクトリ内のみ暗号化するだけであり、ディレクトリの外にデータが出てしまうとデータが復号化される。したがって、通常の(平文の)ディレクトリにコピーされたファイルは平文の状態である。こうなると、物理的に平文ディレクトリを解析することにより、知的財産の保護が必要なデータを奪取されてしまう。
【0008】
一方、セキュアOSを適用したとしても、今度は物理的な攻撃に対して脆弱である。つまり、補助記憶装置を物理的に取り出し、解析される攻撃には対応できない。
【0009】
本発明の課題は、物理的・論理的な攻撃受けても、知的財産を保護したいアプリケーションのバイナリとその構成ファイルの漏洩を確実に防止することができるアプリケーション実行ファイル及び構成ファイルの漏洩防止装置を提供することである。
【課題を解決するための手段】
【0010】
上記課題を解決するために、本発明に係る装置は、情報漏洩保護対象となる機密アプリケーションの実行ファイル及び構成ファイルを格納した記憶手段を備えた装置に実装される機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置であって、
前記機密アプリケーションの実行ファイル及び構成ファイルを前記記憶装置の暗号ディレクトリに暗号化して格納する第1の手段と、情報漏洩保護対象としない一般アプリケーションの実行ファイル及び構成ファイルを暗号化されていない平文ディレクトリに格納する第2の手段と、前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにするアクセス制御情報が設定された第3の手段を備えることを特徴とする。
また、前記一般アプリケーションから機密アプリケーションの起動手段を介して機密アプリケーションを起動することを特徴とする。
【発明の効果】
【0011】
本発明によれば、物理的・論理的な攻撃による機密アプリケーションおよび機密アプリ構成ファイルの漏洩を防止することができる。
物理的な攻撃を受けた場合、機密アプリケーションおよび機密アプリ構成ファイルは、暗号ディレクトリに格納されているため、物理的にメモリを取り出しても解析できない。
論理的な攻撃に対しては、機密アプリケーションに脆弱性があり、攻撃者に任意の操作をされてしまったとしても、機密アプリケーションは、平文ディレクトリへの書き込み権限がないため、平文ディレクトリに、機密アプリケーションおよび機密アプリ構成ファイルがコピーされることはない。同様に、平文アプリケーションに脆弱性があったとしても、暗号ディレクトリへのアクセス権限がないため、暗号ディレクトリ内の機密アプリケーションおよび機密アプリ構成ファイルが平文アプリケーション側へ漏れることはない。論理的な攻撃耐性は、ランチャプログラムによるところが大きい。ランチャプログラムを無くすと、機密アプリケーションが起動される場合は、平文アプリケーションから直接起動されなければならず、平文アプリケーションは、機密アプリケーションへの読み込み権限が必要になる。こうなると、平文アプリケーションに脆弱性があると、機密アプリケーションを平文ディレクトリにコピーできてしまう。
本発明においては、ランチャプログラムによって論理的な攻撃耐性を確実なものとすることができる。
【発明を実施するための最良の形態】
【0012】
以下、本発明の一実施形態を図面を参照しながら説明する。
図1は、本発明の実施対象である機器110のハードウェア構成を示すブロック図である。
基本的な情報処理を行うためにCPU(Central Processing Unit)111、RAM(Random Access Memorty)112、TPMチップ113、フラッシュメモリ114を備えている。
TPMチップ113は、Trusted Platform Module(TPM)機能を持つチップであり、暗号演算及び暗号鍵を安全に保管する機能を有している。
フラッシュメモリ114は補助記憶装置である。ファイルシステムおよびソフトウェアはフラッシュメモリ114中に保存されている。
【0013】
図2は、機器110のソフトウェアの構成を示した図である。
セキュアOS210は、211〜214の手段を備える。
ファイルシステム手段211は、フラッシュメモリ114中にファイルシステムを実現する機能である。この手段により、Windows(登録商標)やLinuxのようなファイル・ディレクトリ構造であり、フラッシュメモリ114中のデータにアクセスできる。
アクセス制御手段212は、プロセスにドメインを、ファイルなどのリソースにラベルを付与し、「ドメインがどんなラベルにどんなパーミッションのアクセスができるか」というアクセス制御を行う。アクセス制御は、プロセスがリソースにアクセスするOSのシステムコール内部のパーミッション・チェックとして行われている。アクセス制御設定は、平文ディレクトリ220のポリシファイル224に格納されている。
Chroot手段213については、図8を参照して後述する。
【0014】
ディレクトリ暗号手段214は、ファイルシステム中のディレクトリをディレクトリ単位で暗号化する手段である。詳細は図7を参照して後述する。
平文ディレクトリ220および暗号ディレクトリ230は、ファイルシステム手段211で実現されるファイルシステムに存在するディレクトリである。
平文ディレクトリ220は、ファイルの暗号化は行われていない。
暗号ディレクトリ230については、ディレクトリ暗号手段214によって、格納されたファイルが暗号化されている。平文ディレクトリ220の中には、221〜224のようなファイルが格納されている。これらのファイル221〜224は、知的財産の保護が必要ないものである。
【0015】
平文アプリケーション221は、アプリケーションの実行ファイル群である。平文アプリ構成ファイル222は、平文アプリケーション221が利用する設定ファイルや作業ファイルである。
ランチャプログラム223は、機密アプリケーション231を実行するために使うアプリケーションの実行ファイルである。詳細は図9を参照して後述する。
ポリシファイル224は、アクセス制御手段212の設定ファイルである。詳細な構成は図3〜図6を参照して後述する。
【0016】
暗号ディレクトリ230には、機密アプリケーション231、機密アプリ構成ファイル232といったファイルが格納されている。これは、知的財産の保護が必要なものを格納している。機密アプリケーション231は、アプリケーションの実行ファイル群である。機密アプリ構成ファイル232は、機密アプリケーション231が利用する設定ファイル及び作業ファイルである。暗号鍵240は、ディレクトリ暗号手段214が用いる鍵で、TPMチップ113によって暗号化されて、フラッシュメモリ114中に格納されている。
【0017】
図3は、ポリシファイル224の構成を示す図である。
ポリシファイル224は、ラベル付与設定テーブル311、ドメイン付与設定テーブル312、アクセス制御設定テーブル313から成り立っている。これらのテーブル311〜313の構成は図4,5,6で詳しく述べる。
【0018】
図4は、ラベル付与設定テーブル311の構成を示した図である。
ラベル付与設定テーブル311では、ファイルにラベルを付与する設定を行う。ファイル名410及びラベル420の列に列挙することで設定を行う。例えば、「/sbin/launch」という名前のファイルが、ランチャプログラムの実行ファイル、/crypt以下のディレクトリ・ファイルが暗号ディレクトリ、それ以外のファイル全てを平文ディレクトリであるとすると、行431〜433のような設定になる。
行431では、「/以下のディレクトリ・ファイル」に、「平文ディレクトリ」を表す「plain_file_t」というラベルを付与している。
行432では、「/sbin/launch」に、ランチャプログラムであることを表す「launch_exec_t」ラベルを付与している。
行433では、/crypt以下のディレクトリ・ファイルに、「暗号ディレクトリ」を表す「crypt_file_t」というラベルを付与している。
【0019】
図5は、ドメイン付与設定テーブル312の構成を示す図である。
エントリポイント510、付与されるドメイン520を設定する。行541は、システム起動時のプロセスに割り当てられるドメインを設定している。システム起動時は、plain_tというドメインが割り当てられる。システム起動時は、平文ディレクトリ内のファイルをまずは実行すると仮定する。
ドメイン付与設定が明示的にされない限り、plain_tで動作するプロセスの子プロセスにも、plain_tが割り当てられる。
行542は、「launch_exec_tラベルの付与された実行ファイル(本実施形態ではランチャプログラム/sbin/launch)が実行されると、実行ファイルから起動するプロセスのドメインは、launch_tになる」という設定である。
行543は、「crypt_file_tラベルの付与された実行ファイル(本実施形態の場合は、暗号ディレクトリ(/crypt以下)に格納された実行ファイル)が実行されると、実行ファイルから起動するプロセスのドメインは、crypt_tになる」という設定である。
【0020】
図6は、アクセス許可設定テーブル313の構成を示す図である。
ここでは、「ドメイン610が、どんなラベル620を付与されたリソースに、どんな操作630ができるか」を設定する。ドメインは、ここで許可されたアクセス以外は拒否される。
行641,642は、plain_tのアクセス許可設定である。plain_tは、plain_file_t(平文ディレクトリを表す)に読み書き実行アクセスが許可され、launch_exec_t(ランチャプログラムの実行ファイルを表す)の読み実行アクセスができる。
行643は、launch_tドメインのアクセス許可設定である。launch_tは、crypt_file_t(暗号ディレクトリを表す)の読み実行ができる。
行644,645は、crypt_tドメインのアクセス許可設定である。plain_file_tに読み込みアクセス、crypt_file_tに読み書きアクセスが許可されている。
【0021】
図7は、ディレクトリ暗号手段214の処理を示すフローチャートである。
まず、システム起動時にTPM113が暗号鍵240を復号する(ステップ710)。
次に、暗号ディレクトリ230をマウントする(ステップ720)。
次に、その後の暗号ディレクトリ230へのファイル読み書き要求をフックし、暗号鍵240を使って暗号・復号処理を行う(ステップ730)。
【0022】
図8はchroot手段213の処理を示すフローチャートである。
まず、chroot機能は、OSのシステムコールもしくはコマンドとして実装されている。ディレクトリ名を引数として実行される。例えば、アプリケーションXが「chroot /crypt」と実行する(ステップ810)。
次に、ステップ810以降、アプリケーションXにとって、/cryptが、ルートディレクトリとして扱われる(ステップ820)。つまり、Xが/crypt/fooというファイルにアクセスするためには、/fooと指定してアクセスすればよい。
【0023】
図9は、ランチャプログラム223の処理を示すフローチャートである。
ランチャプログラムの実行ファイル名を/sbin/launchとすると、ランチャプログラム223を実行する場合は、機密アプリケーション名を引数として実行する(ステップ910)。例えば、機密アプリケーション名が「httpd」である場合、「/sbin/launch httpd」として実行する。
次に、chroot処理を暗号ディレクトリ230のルートを引数として実行する(ステップ920)。本例では、chroot /cryptとして実行する。
次に、ステップ910の内容に応じ、暗号ディレクトリ230内のアプリケーションを起動する。「/sbin/launch httpd」とした場合は、/cryptディレクトリ内の/crypt/sbin/httpdというファイルを実行する(ステップ930)。
【0024】
図10は、本実施形態におけるシステム全体の処理を示すフローチャートである。ここでは、システム起動から機密アプリケーション231が起動するまでを示している。
まず、電源を投入し、カーネルがロードされ、システムが起動する(ステップ1010)。システム起動時は、何らかの平文アプリケーションが起動する。例えばLinuxならば、initプログラムである。暗号ディレクトリ230のマウント処理も、ステップ710,720の過程で行われる。本実施形態の場合は、平文アプリケーションのドメインは「plain_t」となる(図5)。
【0025】
次に、機密アプリケーション231を実行する場合は、平文アプリケーション221がランチャプログラム223を起動する(ステップ1020)。
ランチャプログラム223は、launch_tドメインで動作し、図9の処理を行う(ステップ1030)。
ランチャプログラム223は、機密アプリケーション231を起動する(ステップ1040)。図5の設定例によれば、機密アプリケーションのドメインは、crypt_tドメインである。
【0026】
図11は、本発明を適用した結果、平文アプリケーション、暗号アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係を示した図である。平文アプリケーション221は、1110のように、plain_tというドメインで動作し、平文ディレクトリ220にしかアクセスできない。
また、ランチャプログラム223は、1120のように、launch_tというドメインで動作し、暗号ディレクトリ230の読出し実行が許可されている。
機密アプリケーション231は、1130のように、crypt_tドメインで動作し、平文ディレクトリ220への読出しアクセス、暗号ディレクトリ230への読み書きアクセスが可能となっている。
これによれば、平文アプリケーション221からは暗号ディレクトリ220の情報は取り出せず、機密アプリケーション231から平文ディレクトリ220へ暗号ディレクトリ230の情報が流出することはなくなる。
【0027】
なお、平文アプリケーション、暗号アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係は、図12に示すように変更して実施することができる。
すなわち、平文アプリケーション221と平文ディレクトリ220の関係は、図11においては「読み書き実行可」としているが、図12に示すように、「読み書き実行可」または「読出しのみ実行可」としてもよい。
暗号アプリケーション231と暗号ディレクトリ230の関係は、図11においては「読み書き実行可」としているが、図12に示すように、「読み書き実行可」または「読出しのみ実行可」としてもよい。
また、暗号アプリケーション231と平文ディレクトリ220の関係は、図11においては「読出し実行可」としたが、図12に示すように、「書込み禁止・読出し実行可」または「書込み禁止・読出し実行不可」に設定してもよい。
要するに、暗号アプリケーション231から平文ディレクトリ220に対してはデータの書込みが不可能な関係に設定されていることが必須となっていればよい。
【0028】
以上のように、本実施形態においては、物理的・論理的な攻撃による、機密アプリケーション231および機密アプリ構成ファイル232の漏洩を防止することができる。
すなわち、物理的な攻撃については、機密アプリケーション231および機密アプリ構成ファイル232は、暗号ディレクトリ230に格納されているため、物理的にフラッシュメモリ114を取り出しても解析できない。
一方、論理的な攻撃については、機密アプリケーション231に脆弱性があり、攻撃者に任意の操作をされてしまったとしても、機密アプリケーション231は、平文ディレクトリ220への書き込み権限がないため、平文ディレクトリ220に、機密アプリケーション231および機密アプリ構成ファイル232がコピーされることはない。
同様に、平文アプリケーション221に脆弱性があったとしても、暗号ディレクトリ230へのアクセス権限がないため、暗号ディレクトリ内の情報は漏れない。論理的な攻撃耐性は、ランチャプログラム223によるところが大きい。ランチャプログラムを無くすと、機密アプリケーション231が起動される場合は、平文アプリケーション221から直接起動されなければならず、平文アプリケーション221は、機密アプリケーション231への読み込み権限が必要になる。こうなると、平文アプリケーション221に脆弱性があると、機密アプリケーション231を平文ディレクトリ220にコピーできてしまう。従って、ランチャプログラム223によって論理的な攻撃耐性が強固なものになる。
【図面の簡単な説明】
【0029】
【図1】本発明を適用した機器のハードウェア構成の実施の形態を示したブロック図である。
【図2】図1の機器のソフトウェア構成を示した図である。
【図3】図1の機器のポリシファイルの構成を示した図である。
【図4】図1の機器のラベル付与設定テーブルの構成を示した図である。
【図5】図1の機器のドメイン付与設定テーブルの構成を示した図である。
【図6】図1の機器のアクセス制御設定テーブルの構成を示した図である。
【図7】ディレクトリ暗号手段の処理を示したフローチャートである。
【図8】chroot手段の処理を示したフローチャートである。
【図9】ランチャプログラムの処理を示したフローチャートである。
【図10】本発明の全体の処理を示したフローチャートである。
【図11】本発明における平文アプリケーション、機密アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係を示す図である。
【図12】本発明における平文アプリケーション、機密アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係の他の例を示す図である。
【符号の説明】
【0030】
110 機器
210 セキュアOS
212 アクセス制御手段
214 ディレクトリ暗号手段
220 平文ディレクトリ
221 平文アプリケーション
223 ランチャプログラム
224 ポリシファイル
230 暗号ディレクトリ
231 機密アプリケーション
232 機密アプリ構成ファイル
240 暗号鍵
【特許請求の範囲】
【請求項1】
情報漏洩保護対象となる機密アプリケーションの実行ファイル及び構成ファイルを格納した記憶手段を備えた装置に実装される機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置であって、
前記機密アプリケーションの実行ファイル及び構成ファイルを前記記憶装置の暗号ディレクトリに暗号化して格納する第1の手段と、情報漏洩保護対象としない一般アプリケーションの実行ファイル及び構成ファイルを暗号化されていない平文ディレクトリに格納する第2の手段と、前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにするアクセス制御情報が設定された第3の手段を備えることを特徴とする機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置。
【請求項2】
前記一般アプリケーションから機密アプリケーションの起動手段を介して機密アプリケーションを起動することを特徴とする請求項1に記載の機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置。
【請求項1】
情報漏洩保護対象となる機密アプリケーションの実行ファイル及び構成ファイルを格納した記憶手段を備えた装置に実装される機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置であって、
前記機密アプリケーションの実行ファイル及び構成ファイルを前記記憶装置の暗号ディレクトリに暗号化して格納する第1の手段と、情報漏洩保護対象としない一般アプリケーションの実行ファイル及び構成ファイルを暗号化されていない平文ディレクトリに格納する第2の手段と、前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにするアクセス制御情報が設定された第3の手段を備えることを特徴とする機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置。
【請求項2】
前記一般アプリケーションから機密アプリケーションの起動手段を介して機密アプリケーションを起動することを特徴とする請求項1に記載の機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2009−223629(P2009−223629A)
【公開日】平成21年10月1日(2009.10.1)
【国際特許分類】
【出願番号】特願2008−67629(P2008−67629)
【出願日】平成20年3月17日(2008.3.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】
【公開日】平成21年10月1日(2009.10.1)
【国際特許分類】
【出願日】平成20年3月17日(2008.3.17)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】
[ Back to top ]