面 和毅
2010年下期から2011年上期にかけて、Trusted KeysやEVMなど、Linux Integrity Subsystemに関わる実装が次々とLKLM(Linux Kernelメーリングリスト)及びLSM-ML(Linux Security Module メーリングリスト)に提出されている。その基礎は、TCG(Trusted Computing Group)により仕様が決められ、最近のPCに搭載されているTPM(Trusted Platform Module)と呼ばれるチップであり、これを用いた技術であるLinux-IMA(Linux-Integrity Measurement Architecture)に関しては、2009年上期の調査報告[1] にまとめた。
本稿ではTPMをベースとしたLinux Integrity Subsystemの目標などの大枠を説明し、現状の実装の整理を行う。
一般的な情報セキュリティの基本理念としては、いわゆるCIAの3大基本理念として
がある。更に、これらに加えて
もセキュリティの理念を説明する際に加えられることがある。
Linux Integrity Subsystemは、これらのセキュリティ理念のうち、「完全性」と「真正性」を満たすための実装となっている。その他の「機密性」等に関しては、強制アクセス制御を提供するSELinuxやSMACK(「情報セキュリティ技術動向調査(2008年上期)」[2]にて報告)など、別のLinux上の実装で補完することになる。
これらの理念に対する脅威としては、以下のものが挙げられる。
Linux Integrity Subsystemは、これらの攻撃が行われた際に、攻撃が行われたことを検知するためのものである。そのため、TPMと連携し、通常と異なったシステム起動方法や、異なったハードウェア上でのデータの不正変更も検知する事が目標となっている。
前述の目標をLinux上で達成するために、Linux Integrity Subsystemでは、Kernel内に以下のコンポーネントを実装する予定となっている。
以下、それぞれのコンポーネントの役割を説明する。
(1) Linux IMA(Integrity Measurement Architecture)
TPMとカーネル上に組み込まれたモジュールを利用して、実行ファイルを測定して記録し、実行ファイルが不正に改変されていないかをチェックするものである。この機能の詳細は、「情報セキュリティ技術動向調査(2009 年上期)」[1] で説明している。
(2) Trusted and Encrypted Keys
"Trusted and Encrypted Keys"は、Linux Kernel 2.6.36から取り込まれている。この機構により、TPMの機能を用いて信頼できる対象鍵を作成する事ができるようになるため、後述するEVMのための鍵を作成する際に用いられる。
(3) IMA-Appraisal
Linux-IMAの延長線上にあるものであり、ローカルファイルの整合性をチェックする機構である。IMAで確認された"正しい(good)"状態のハッシュ値を、security.imaというファイルの拡張属性に保存しておき、現在のファイルのハッシュ値が異なっているかを確認する。そして、ハッシュ値が異なっていた場合には、ファイルに対してのアクセスを拒否する。
security.imaにはハッシュ値のみが入るようになっている。この実装は簡単でかつ高速なため、ファイルの変更を検出するのに便利であるが、ハッシュ値は簡単に偽造できるため、強力な整合性を提供しているとは言えないものになる。
(4) IMA-Appraisal-Signature-Extension(ファイルの電子署名)
IMA-Appraisal-Signature-Extensionは、IMA-Appraisalを「真正性」の方向に拡張したものになる。この実装は、security.imaにベンダーから提供されたRSA暗号化方式による電子署名を格納する。これを変更するためには特殊な権限が必要となるため、この電子署名を照合することにより、ファイルが変更されていないと考えられる。
また、この署名されたファイルは変更は許可されず、削除か、アップデートなどによる置換のみが認められる。これらの電子署名は、ベンダーの秘密鍵を入手する必要があるため、攻撃者による偽造は困難になっている。
(5) IMA-Appraisal-Directory-Extension (ローカルディレクトリの整合性)
IMA-Appraisal-Directory-Extensionは、ファイル名の変更やオフラインによるリプレイ攻撃を防ぐための機構になる。
一般的に、IMA-Appraisalはファイルの整合性と真正性を検査するために、RSA署名(変更されないファイルの場合)やハッシュ(変更されるファイルの場合)を使用する。しかし、これだけでは未だファイルのメタデータを変更された場合等に対しての検出をすることができない。ファイルのメタデータとは、ファイル名や、inodeに含まれる情報(所有者、グループ、モードなど)である。
例えば、簡単な例として、攻撃者が"rm"コマンドの名前を"ls"と変更するだけで、システムにダメージを与えてしまう事ができる。このような攻撃を検出するために、IMA-Appraisal-Directory-Extensionではファイルのメタデータのハッシュ値も作成して保存する。
(6) Extended Verification Module(EVM)(信頼できるメタデータ)
EVMは現在LSM/LKMLにて議論が行われている最中であり、オフライン攻撃からinodeメタデータ(所有者、グループ、モード、セキュリティ拡張属性など)を保護することを目的とした機構である。(EVMは8月17日に、linuxのsecurity関連の"Next"レポジトリに正式に追加された。最終的にはlinux-3.2からカーネルに取り込まれる予定である。)
EVMはHMAC-SHA1を用いて、各inode上の
などのセキュリティ拡張属性を保護している。
これらのセキュリティ情報は極めて慎重に扱う必要があるため、EVMでは前述のTrusted Key/Encrypted keyを用いて、HMACを作成する。これにより、セキュリティ拡張属性の情報が改竄された場合の検出を行うことができる。
今期はOS、VM双方に関して特に新しいセキュリティ技術は見られなかった。これは、昨今のIT技術分野が、従来のサーバ/クライアント型のシステムから、クラウド/Webアプリベースのシステムへとシフトしてきたため、技術者がこれらクラウド/Webアプリの分野のセキュリティ技術の開発に注力しているためと思われる。しかし、これは、従来のOS、VMのセキュリティがすべて開発されたということは意味しておらず、クラウドサービスを提供する基盤としてOS、VMの更なるセキュリティ強化は依然として望まれているため、今後新たなセキュリティ技術が開発される可能性は充分あると思われる。
以上
| [1] | 面 和毅,「Linuxカーネルにおけるセキュリティ強化機能」 http://www.ipa.go.jp/security/fy21/reports/tech1-tg/a_02.html |
| [2] | 面 和毅,「Linux 用の新しいセキュアOS:SMACK」 http://www.ipa.go.jp/security/fy20/reports/tech1-tg/1_05.html |