暗号化技術の変遷と最新のトレンドを知る
危機管理上必要な大原則とは何か
しかし、この技術の研究開発に没頭するあまり忘れられてしまった、暗号化による機密保持の原則があります。それは「できる限り早いタイミングで暗号化し、できる限り遅いタイミングで復号化する(従来のDRMでは、復号化部分での完成度は高い)」というものです。暗号化されている時間を極力長くし、平文である時間を最短時間で済ませることが危機管理上必要な大原則なのです。
この原則を忘れてしまっては、本末転倒です。機密ファイルは、「アプリケーションで作成されたと同時暗号化され、使用される直前に復号化する」べきではないでしょうか?
ここまでの話で、アプリケーション・レイヤーで実行される暗号化が安全ではないということをお伝えしている訳ではありません。透過式暗号化では、その安全性を確保するため、カーネル・レイヤーやアプリケーション・レイヤーの両方で開発されているため、その違いという観点で説明しています。
カーネル・レイヤーとアプリケーション・レイヤー
客観的に見て、カーネル・レイヤーあるいはアプリケーション・レイヤーにおいてファイルI/O権限の取得やオブジェクトのアクセス・コントロールは、メカニズムとしては同じで、広い意味ではHOOK技術です。カーネル・レイヤーでのプログラムはドライバレベルで実行されているため、アプリケーション・レイヤーよりも悪意のあるユーザーからのハッキングを回避できる可能性(メモリーから直接データを取るなど)は高く、理論的にアプリケーション・レイヤーで開発されたものよりも、アクセス・コントロールと自己保護面において効果はあります。
しかし、このメリットはデメリットでもあるのです。カーネルで動作しているため、プロセス稼働中のささいなことでもシステムのクラッシュやファイルの破損を誘発してしまうことがあります。また、その他のアプリケーション(トロイの木馬などのプログラムを含む)による正常ではないファンクション・コールによって、透過式暗号化製品のカーネルでファンクション同士が衝突する可能性もあります。
アプリケーション・レイヤーで動いているプログラムの安定性と親和性に比べ、カーネル・レイヤーで動いているそれには大きな開きがあり、開発および製品化を難しいものとしています。
これらの理由から、カーネル・レイヤーで開発されているプログラムはシンプルなものほど良いものとなります。複雑なロジックや細かい機能の開発をするために、開発と調査の難しさは倍増します。また、カーネルで動作させることで、保護されたアプリケーションに対してはハイレベルな認証を与えておかないと、実行ファイル名(例 winword.exeなど)を容易に取得されてしまいます。
例えば、ユーザーがインターネットからダウンロードしたファイル、もしくは独自で開発したプログラムの名称を、保護されたファイルを起動するアプリケーションの実行ファイルと同じネーミングにすることで(例えば、マルウェアのabc.exeをwinword.exeにリネーム)、簡単に暗号化されたファイルを平文にし、内容をハッキングすることができます。この例から見ると、単にカーネルレイヤーで動いている透過式暗号化の安全性は問われてしまうかもしれません。実際に複数の暗号化製品をテストした結果、その脆弱性は確認できています。
そこでSecward社では、新しい透過式暗号化技術(New DRM Technologies)を開発しました。