(57)【特許請求の範囲】
【請求項１】
情報漏洩保護対象となる機密アプリケーションの実行ファイル及び構成ファイルを格納した記憶手段を備えた装置に実装される機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置であって、
前記機密アプリケーションの実行ファイル及び構成ファイルを前記記憶装置の暗号ディレクトリに暗号化して格納する第１の手段と、情報漏洩保護対象としない一般アプリケーションの実行ファイル及び構成ファイルを暗号化されていない平文ディレクトリに格納する第２の手段と、前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにするアクセス制御情報が設定された第３の手段を備え、
当該第３の手段には前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにする書き込み禁止のアクセス制御情報を必須条件として設定し、暗号アプリケーションと平文ディレクトリとは読み出し実行可または読み出し実行不可の関係に設定可能に構成されていることを特徴とする機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置。
【請求項２】
前記一般アプリケーションから機密アプリケーションの起動手段を介して機密アプリケーションを起動することを特徴とする請求項１に記載の機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置に関するものである。
【背景技術】
【０００２】
周知のようにコンピュータの補助記憶装置には、漏洩してはならない情報が格納されている。例えば、個人情報や業務情報などである。
補助記憶装置に格納した情報漏洩防止のためには、下記の特許文献１や非特許文献１のように、補助記憶装置の内容を丸ごと暗号化するディスク暗号もしくはドライブ暗号と呼ばれる技術が広く用いられている。
暗号化することにより、補助記憶装置を物理的に解析され、情報を取り出されることを防ぐことができる。
【０００３】
組込み機器においても、情報漏洩防止の必要がある。漏洩防止対象となる情報は、自社開発したアプリケーションのバイナリである。アプリケーションのバイナリが漏洩すると、バイナリの逆アセンブルによる知的財産の流出が発生する。
しかし、組込み機器のＣＰＵは一般的に速度が遅いため、ドライブ暗号技術を適用すると、暗号処理の負荷が高い。暗号処理の負荷を抑えるためには、ドライブ暗号ではなく、漏洩防止したいデータをあるディレクトリに格納し、そのディレクトリにだけ暗号化を施す方式がある（非特許文献２）。
組込み機器では、オープンソースのソフトウェアを使いまわす部分も多く、自社開発部分はシステム全体から見ると一部であるので、ディレクトリ暗号技術との併用は暗号処理の負荷を抑えるために有効である。
【０００４】
アクセス制御で情報漏洩防止を行う技術としては、セキュアＯＳが広く使われている。現在広く使われているＯＳのアクセス制御は、リソースの所有者がそのリソースへのアクセス権限を設定する。また、全ての権限をもつ特権というものが存在する。
それに対してセキュアＯＳとは、全権を持つ特権を排除し、プロセス毎にドメインと呼ばれるアクセス権限を付与できるようにしたＯＳである。プロセス毎にどんな権限を持つかという設定はセキュリティポリシファイルというファイルに記載されている。この機能により、プロセスが必要なリソースにだけアクセスすることがＯＳによって保証され、プロセスにセキュリティホールがあり、攻撃者にプロセスが乗っ取られたとしても、その被害を最小限にすることができる。
セキュアＯＳのうち、ラベルベースのセキュアＯＳでは、ファイルやネットワークなどのリソースをラベルで識別する。すなわち、ファイルやネットワークにラベルという識別子を付与し、ドメインがどんなラベルにアクセスできるかを制御する。
セキュリティポリシの設定としては、ラベルとリソースの対応付けおよびドメインがどんなラベルにアクセスできるかを設定する必要がある。
ラベルベースのセキュアＯＳとしては、下記の非特許文献３に開示されたものがある。
【０００５】
【特許文献１】特開平１１−１４９４１４号公報
【非特許文献１】日立ソフトウエアエンジニアリング「秘文」ホームページ：http://hitachisoft.jp/products/hibun/
【非特許文献２】M.A.Halcrow, eCryptfs: An Enterprise-class Encrypted Filesystem for Linux, the Proceedings of 2005 Linux SympＯＳium(2005)
【非特許文献３】P. LＯＳcoccＯＳ. Smalley, "Meeting Critical Security Objectives with Security-Enhanced Linux", Proceedings of the 2001 Ottawa Linux SympＯＳium, Ottava, CA, July 2001.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述のように、組込み機器のようなＣＰＵの速度が遅い機器に対して知的財産を保護したいアプリケーションのバイナリとその構成ファイルの漏洩を防止するためには、ディレクトリ暗号技術の適用またはセキュアＯＳの適用が考えられる。
ディレクトリ暗号化を適用する場合、知的財産を保護したいアプリケーションおよびその構成ファイルを暗号化されるディレクトリに格納する。物理的に補助記憶装置を解析しても、これらの中身を知られることはない。
【０００７】
しかし、ディレクトリ暗号技術は、論理的な攻撃に対して脆弱である。論理的な攻撃とは、ソフトウェアの脆弱性を使い、ソフトウェアに任意の命令を実行させる攻撃と定義する。
例えばバッファオーバーフロー攻撃等がある。論理的な攻撃をされると、暗号化されたディレクトリから、通常の（平文の）ディレクトリにファイルをコピーされてしまう。
ディレクトリ暗号技術は、ディレクトリ内のみ暗号化するだけであり、ディレクトリの外にデータが出てしまうとデータが復号化される。したがって、通常の（平文の）ディレクトリにコピーされたファイルは平文の状態である。こうなると、物理的に平文ディレクトリを解析することにより、知的財産の保護が必要なデータを奪取されてしまう。
【０００８】
一方、セキュアＯＳを適用したとしても、今度は物理的な攻撃に対して脆弱である。つまり、補助記憶装置を物理的に取り出し、解析される攻撃には対応できない。
【０００９】
本発明の課題は、物理的・論理的な攻撃受けても、知的財産を保護したいアプリケーションのバイナリとその構成ファイルの漏洩を確実に防止することができるアプリケーション実行ファイル及び構成ファイルの漏洩防止装置を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明に係る装置は、情報漏洩保護対象となる機密アプリケーションの実行ファイル及び構成ファイルを格納した記憶手段を備えた装置に実装される機密アプリケーションの実行ファイル及び構成ファイルの漏洩防止装置であって、
前記機密アプリケーションの実行ファイル及び構成ファイルを前記記憶装置の暗号ディレクトリに暗号化して格納する第１の手段と、情報漏洩保護対象としない一般アプリケーションの実行ファイル及び構成ファイルを暗号化されていない平文ディレクトリに格納する第２の手段と、前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにするアクセス制御情報が設定された第３の手段を備え、
当該第３の手段には前記暗号ディレクトリ内の機密アプリケーションの実行ファイル及び構成ファイルが前記平文ディレクトリに書き込まれないようにする書き込み禁止のアクセス制御情報を必須条件として設定し、暗号アプリケーションと平文ディレクトリとは読み出し実行可または読み出し実行不可の関係に設定可能に構成されていることを特徴とする。
また、前記一般アプリケーションから機密アプリケーションの起動手段を介して機密アプリケーションを起動することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、物理的・論理的な攻撃による機密アプリケーションおよび機密アプリ構成ファイルの漏洩を防止することができる。
物理的な攻撃を受けた場合、機密アプリケーションおよび機密アプリ構成ファイルは、暗号ディレクトリに格納されているため、物理的にメモリを取り出しても解析できない。
論理的な攻撃に対しては、機密アプリケーションに脆弱性があり、攻撃者に任意の操作をされてしまったとしても、機密アプリケーションは、平文ディレクトリへの書き込み権限がないため、平文ディレクトリに、機密アプリケーションおよび機密アプリ構成ファイルがコピーされることはない。同様に、平文アプリケーションに脆弱性があったとしても、暗号ディレクトリへのアクセス権限がないため、暗号ディレクトリ内の機密アプリケーションおよび機密アプリ構成ファイルが平文アプリケーション側へ漏れることはない。論理的な攻撃耐性は、ランチャプログラムによるところが大きい。ランチャプログラムを無くすと、機密アプリケーションが起動される場合は、平文アプリケーションから直接起動されなければならず、平文アプリケーションは、機密アプリケーションへの読み込み権限が必要になる。こうなると、平文アプリケーションに脆弱性があると、機密アプリケーションを平文ディレクトリにコピーできてしまう。
本発明においては、ランチャプログラムによって論理的な攻撃耐性を確実なものとすることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態を図面を参照しながら説明する。
図１は、本発明の実施対象である機器１１０のハードウェア構成を示すブロック図である。
基本的な情報処理を行うためにCPU(Central Processing Unit)１１１、RAM(Random Access Memorty)１１２、TPMチップ１１３、フラッシュメモリ１１４を備えている。
TPMチップ１１３は、Trusted Platform Module(TPM)機能を持つチップであり、暗号演算及び暗号鍵を安全に保管する機能を有している。
フラッシュメモリ１１４は補助記憶装置である。ファイルシステムおよびソフトウェアはフラッシュメモリ１１４中に保存されている。
【００１３】
図２は、機器１１０のソフトウェアの構成を示した図である。
セキュアＯＳ２１０は、２１１〜２１４の手段を備える。
ファイルシステム手段２１１は、フラッシュメモリ１１４中にファイルシステムを実現する機能である。この手段により、Windows（登録商標）やLinuxのようなファイル・ディレクトリ構造であり、フラッシュメモリ１１４中のデータにアクセスできる。
アクセス制御手段２１２は、プロセスにドメインを、ファイルなどのリソースにラベルを付与し、「ドメインがどんなラベルにどんなパーミッションのアクセスができるか」というアクセス制御を行う。アクセス制御は、プロセスがリソースにアクセスするＯＳのシステムコール内部のパーミッション・チェックとして行われている。アクセス制御設定は、平文ディレクトリ２２０のポリシファイル２２４に格納されている。
Chroot手段２１３については、図８を参照して後述する。
【００１４】
ディレクトリ暗号手段２１４は、ファイルシステム中のディレクトリをディレクトリ単位で暗号化する手段である。詳細は図７を参照して後述する。
平文ディレクトリ２２０および暗号ディレクトリ２３０は、ファイルシステム手段２１１で実現されるファイルシステムに存在するディレクトリである。
平文ディレクトリ２２０は、ファイルの暗号化は行われていない。
暗号ディレクトリ２３０については、ディレクトリ暗号手段２１４によって、格納されたファイルが暗号化されている。平文ディレクトリ２２０の中には、２２１〜２２４のようなファイルが格納されている。これらのファイル２２１〜２２４は、知的財産の保護が必要ないものである。
【００１５】
平文アプリケーション２２１は、アプリケーションの実行ファイル群である。平文アプリ構成ファイル２２２は、平文アプリケーション２２１が利用する設定ファイルや作業ファイルである。
ランチャプログラム２２３は、機密アプリケーション２３１を実行するために使うアプリケーションの実行ファイルである。詳細は図９を参照して後述する。
ポリシファイル２２４は、アクセス制御手段２１２の設定ファイルである。詳細な構成は図３〜図６を参照して後述する。
【００１６】
暗号ディレクトリ２３０には、機密アプリケーション２３１、機密アプリ構成ファイル２３２といったファイルが格納されている。これは、知的財産の保護が必要なものを格納している。機密アプリケーション２３１は、アプリケーションの実行ファイル群である。機密アプリ構成ファイル２３２は、機密アプリケーション２３１が利用する設定ファイル及び作業ファイルである。暗号鍵２４０は、ディレクトリ暗号手段２１４が用いる鍵で、TPMチップ１１３によって暗号化されて、フラッシュメモリ１１４中に格納されている。
【００１７】
図３は、ポリシファイル２２４の構成を示す図である。
ポリシファイル２２４は、ラベル付与設定テーブル３１１、ドメイン付与設定テーブル３１２、アクセス制御設定テーブル３１３から成り立っている。これらのテーブル３１１〜３１３の構成は図４，５，６で詳しく述べる。
【００１８】
図４は、ラベル付与設定テーブル３１１の構成を示した図である。
ラベル付与設定テーブル３１１では、ファイルにラベルを付与する設定を行う。ファイル名４１０及びラベル４２０の列に列挙することで設定を行う。例えば、「/sbin/launch」という名前のファイルが、ランチャプログラムの実行ファイル、/crypt以下のディレクトリ・ファイルが暗号ディレクトリ、それ以外のファイル全てを平文ディレクトリであるとすると、行４３１〜４３３のような設定になる。
行４３１では、「/以下のディレクトリ・ファイル」に、「平文ディレクトリ」を表す「plain_file_t」というラベルを付与している。
行４３２では、「/sbin/launch」に、ランチャプログラムであることを表す「launch_exec_t」ラベルを付与している。
行４３３では、/crypt以下のディレクトリ・ファイルに、「暗号ディレクトリ」を表す「crypt_file_t」というラベルを付与している。
【００１９】
図５は、ドメイン付与設定テーブル３１２の構成を示す図である。
エントリポイント５１０、付与されるドメイン５２０を設定する。行５４１は、システム起動時のプロセスに割り当てられるドメインを設定している。システム起動時は、plain_tというドメインが割り当てられる。システム起動時は、平文ディレクトリ内のファイルをまずは実行すると仮定する。
ドメイン付与設定が明示的にされない限り、plain_tで動作するプロセスの子プロセスにも、plain_tが割り当てられる。
行５４２は、「launch_exec_tラベルの付与された実行ファイル（本実施形態ではランチャプログラム/sbin/launch）が実行されると、実行ファイルから起動するプロセスのドメインは、launch_tになる」という設定である。
行５４３は、「crypt_file_tラベルの付与された実行ファイル（本実施形態の場合は、暗号ディレクトリ(/crypt以下)に格納された実行ファイル）が実行されると、実行ファイルから起動するプロセスのドメインは、crypt_tになる」という設定である。
【００２０】
図６は、アクセス許可設定テーブル３１３の構成を示す図である。
ここでは、「ドメイン６１０が、どんなラベル６２０を付与されたリソースに、どんな操作６３０ができるか」を設定する。ドメインは、ここで許可されたアクセス以外は拒否される。
行６４１，６４２は、plain_tのアクセス許可設定である。plain_tは、plain_file_t(平文ディレクトリを表す)に読み書き実行アクセスが許可され、launch_exec_t（ランチャプログラムの実行ファイルを表す）の読み実行アクセスができる。
行６４３は、launch_tドメインのアクセス許可設定である。launch_tは、crypt_file_t(暗号ディレクトリを表す)の読み実行ができる。
行６４４，６４５は、crypt_tドメインのアクセス許可設定である。plain_file_tに読み込みアクセス、crypt_file_tに読み書きアクセスが許可されている。
【００２１】
図７は、ディレクトリ暗号手段２１４の処理を示すフローチャートである。
まず、システム起動時にTPM１１３が暗号鍵２４０を復号する（ステップ７１０）。
次に、暗号ディレクトリ２３０をマウントする（ステップ７２０）。
次に、その後の暗号ディレクトリ２３０へのファイル読み書き要求をフックし、暗号鍵２４０を使って暗号・復号処理を行う（ステップ７３０）。
【００２２】
図８はchroot手段２１３の処理を示すフローチャートである。
まず、chroot機能は、ＯＳのシステムコールもしくはコマンドとして実装されている。ディレクトリ名を引数として実行される。例えば、アプリケーションＸが「chroot  /crypt」と実行する（ステップ８１０）。
次に、ステップ８１０以降、アプリケーションＸにとって、/cryptが、ルートディレクトリとして扱われる（ステップ８２０）。つまり、Ｘが/crypt/fooというファイルにアクセスするためには、/fooと指定してアクセスすればよい。
【００２３】
図９は、ランチャプログラム２２３の処理を示すフローチャートである。
ランチャプログラムの実行ファイル名を/sbin/launchとすると、ランチャプログラム２２３を実行する場合は、機密アプリケーション名を引数として実行する（ステップ９１０）。例えば、機密アプリケーション名が「httpd」である場合、「/sbin/launch httpd」として実行する。
次に、chroot処理を暗号ディレクトリ２３０のルートを引数として実行する（ステップ９２０）。本例では、chroot /cryptとして実行する。
次に、ステップ９１０の内容に応じ、暗号ディレクトリ２３０内のアプリケーションを起動する。「/sbin/launch httpd」とした場合は、/cryptディレクトリ内の/crypt/sbin/httpdというファイルを実行する（ステップ９３０）。
【００２４】
図１０は、本実施形態におけるシステム全体の処理を示すフローチャートである。ここでは、システム起動から機密アプリケーション２３１が起動するまでを示している。
まず、電源を投入し、カーネルがロードされ、システムが起動する（ステップ１０１０）。システム起動時は、何らかの平文アプリケーションが起動する。例えばLinuxならば、initプログラムである。暗号ディレクトリ２３０のマウント処理も、ステップ７１０，７２０の過程で行われる。本実施形態の場合は、平文アプリケーションのドメインは「plain_t」となる(図５)。
【００２５】
次に、機密アプリケーション２３１を実行する場合は、平文アプリケーション２２１がランチャプログラム２２３を起動する（ステップ１０２０）。
ランチャプログラム２２３は、launch_tドメインで動作し、図９の処理を行う（ステップ１０３０）。
ランチャプログラム２２３は、機密アプリケーション２３１を起動する（ステップ１０４０）。図５の設定例によれば、機密アプリケーションのドメインは、crypt_tドメインである。
【００２６】
図１１は、本発明を適用した結果、平文アプリケーション、暗号アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係を示した図である。平文アプリケーション２２１は、１１１０のように、plain_tというドメインで動作し、平文ディレクトリ２２０にしかアクセスできない。
また、ランチャプログラム２２３は、１１２０のように、launch_tというドメインで動作し、暗号ディレクトリ２３０の読出し実行が許可されている。
機密アプリケーション２３１は、１１３０のように、crypt_tドメインで動作し、平文ディレクトリ２２０への読出しアクセス、暗号ディレクトリ２３０への読み書きアクセスが可能となっている。
これによれば、平文アプリケーション２２１からは暗号ディレクトリ２２０の情報は取り出せず、機密アプリケーション２３１から平文ディレクトリ２２０へ暗号ディレクトリ２３０の情報が流出することはなくなる。
【００２７】
なお、平文アプリケーション、暗号アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係は、図１２に示すように変更して実施することができる。
すなわち、平文アプリケーション２２１と平文ディレクトリ２２０の関係は、図１１においては「読み書き実行可」としているが、図１２に示すように、「読み書き実行可」または「読出しのみ実行可」としてもよい。
暗号アプリケーション２３１と暗号ディレクトリ２３０の関係は、図１１においては「読み書き実行可」としているが、図１２に示すように、「読み書き実行可」または「読出しのみ実行可」としてもよい。
また、暗号アプリケーション２３１と平文ディレクトリ２２０の関係は、図１１においては「読出し実行可」としたが、図１２に示すように、「書込み禁止・読出し実行可」または「書込み禁止・読出し実行不可」に設定してもよい。
要するに、暗号アプリケーション２３１から平文ディレクトリ２２０に対してはデータの書込みが不可能な関係に設定されていることが必須となっていればよい。
【００２８】
以上のように、本実施形態においては、物理的・論理的な攻撃による、機密アプリケーション２３１および機密アプリ構成ファイル２３２の漏洩を防止することができる。
すなわち、物理的な攻撃については、機密アプリケーション２３１および機密アプリ構成ファイル２３２は、暗号ディレクトリ２３０に格納されているため、物理的にフラッシュメモリ１１４を取り出しても解析できない。
一方、論理的な攻撃については、機密アプリケーション２３１に脆弱性があり、攻撃者に任意の操作をされてしまったとしても、機密アプリケーション２３１は、平文ディレクトリ２２０への書き込み権限がないため、平文ディレクトリ２２０に、機密アプリケーション２３１および機密アプリ構成ファイル２３２がコピーされることはない。
同様に、平文アプリケーション２２１に脆弱性があったとしても、暗号ディレクトリ２３０へのアクセス権限がないため、暗号ディレクトリ内の情報は漏れない。論理的な攻撃耐性は、ランチャプログラム２２３によるところが大きい。ランチャプログラムを無くすと、機密アプリケーション２３１が起動される場合は、平文アプリケーション２２１から直接起動されなければならず、平文アプリケーション２２１は、機密アプリケーション２３１への読み込み権限が必要になる。こうなると、平文アプリケーション２２１に脆弱性があると、機密アプリケーション２３１を平文ディレクトリ２２０にコピーできてしまう。従って、ランチャプログラム２２３によって論理的な攻撃耐性が強固なものになる。
【図面の簡単な説明】
【００２９】
【図１】本発明を適用した機器のハードウェア構成の実施の形態を示したブロック図である。
【図２】図１の機器のソフトウェア構成を示した図である。
【図３】図１の機器のポリシファイルの構成を示した図である。
【図４】図１の機器のラベル付与設定テーブルの構成を示した図である。
【図５】図１の機器のドメイン付与設定テーブルの構成を示した図である。
【図６】図１の機器のアクセス制御設定テーブルの構成を示した図である。
【図７】ディレクトリ暗号手段の処理を示したフローチャートである。
【図８】chroot手段の処理を示したフローチャートである。
【図９】ランチャプログラムの処理を示したフローチャートである。
【図１０】本発明の全体の処理を示したフローチャートである。
【図１１】本発明における平文アプリケーション、機密アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係を示す図である。
【図１２】本発明における平文アプリケーション、機密アプリケーション、平文ディレクトリ、暗号ディレクトリのアクセス制御関係の他の例を示す図である。
【符号の説明】
【００３０】
１１０    機器
２１０    セキュアＯＳ
２１２    アクセス制御手段
２１４    ディレクトリ暗号手段
２２０    平文ディレクトリ
２２１    平文アプリケーション
２２３    ランチャプログラム
２２４    ポリシファイル
２３０    暗号ディレクトリ
２３１    機密アプリケーション
２３２    機密アプリ構成ファイル
２４０    暗号鍵
【図１】
0004953385.tif 000002
【図２】
0004953385.tif 000003
【図３】
0004953385.tif 000004
【図４】
0004953385.tif 000005
【図５】
0004953385.tif 000006
【図６】
0004953385.tif 000007
【図７】
0004953385.tif 000008
【図８】
0004953385.tif 000009
【図９】
0004953385.tif 000010
【図１０】
0004953385.tif 000011
【図１１】
0004953385.tif 000012
【図１２】
0004953385.tif 000013