HOME情報セキュリティ資料・報告書・出版物調査・研究報告書情報セキュリティ技術動向調査(2011 年上期)

本文を印刷する

情報セキュリティ

情報セキュリティ技術動向調査(2011 年上期)

2. Linux Integrity Subsystemの現状

面 和毅

2.1. はじめに

 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の目標などの大枠を説明し、現状の実装の整理を行う。

2.2. Linux Integrity Subsystemの目標

 一般的な情報セキュリティの基本理念としては、いわゆるCIAの3大基本理念として

  • 機密性(Confidential)
  • 完全性(Integrity)
  • 可用性(Availability)

がある。更に、これらに加えて

  • 真正性(Authenticity)
  • 責任追跡性(Accountability)
  • 信頼性(Reliability)

もセキュリティの理念を説明する際に加えられることがある。

 Linux Integrity Subsystemは、これらのセキュリティ理念のうち、「完全性」と「真正性」を満たすための実装となっている。その他の「機密性」等に関しては、強制アクセス制御を提供するSELinuxやSMACK(「情報セキュリティ技術動向調査(2008年上期)」[2]にて報告)など、別のLinux上の実装で補完することになる。
 これらの理念に対する脅威としては、以下のものが挙げられる。

  • リモート攻撃
    - Virusやその他の悪意のあるソフトウェアによるファイルの変更

  • ローカル攻撃
    - 悪意のあるシステムオペレータによる不正な変更
    - オフライン攻撃(ハードウェアやファイル単体などの盗難、CD/USBドライブで
       のブートでのHDD内部の不正な変更など)

 Linux Integrity Subsystemは、これらの攻撃が行われた際に、攻撃が行われたことを検知するためのものである。そのため、TPMと連携し、通常と異なったシステム起動方法や、異なったハードウェア上でのデータの不正変更も検知する事が目標となっている。

2.3. Linux Integrity Subsystemの実装

 前述の目標をLinux上で達成するために、Linux Integrity Subsystemでは、Kernel内に以下のコンポーネントを実装する予定となっている。

    (1) IMA(2.6.30に取り込まれた)
    (2) Trusted and Encrypted Keys(2.6.38に取り込まれた)
    (3) IMA-Appraisal(LKML/LSM-MLにて議論中)
    (4) IMA-Appraisal-Signature-Extension(開発中)
    (5) IMA-Appraisal-Directory-Extension(開発中)
    (6) EVM(LKML/LSM-MLにて議論中)

 以下、それぞれのコンポーネントの役割を説明する。

(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のための鍵を作成する際に用いられる。

 Trusted Key:
     TPMに結びついた鍵である。TPMにより生成され、TPM内で別途生成されるStorage Root Key(SRK:2048bitのRSA鍵)により暗号化される(TPMの用語では「Sealing」と呼ばれている)。更にTrusted Keyは、TPMのPlatform Configuration Register(PCR: 特殊な更新操作でのみ書き換え可能な記憶領域)中にも保存され、PCRに保存された値が合致しないと復号化(Unseal)されない。PCR中にはBIOSやBoot Loader、OS等の整合性情報も保存されており、Trusted Keyがこれらと結びつけられることによって、これらの情報が合致しない限り鍵を復号化して使用できないシステムにすることができる。
 Encrypted Key:
     公開鍵暗号方式よりも高速な、AES暗号化に使用される鍵であり、TPMとは結びついていない。鍵はKernelの乱数プールから取り出される乱数から生成され、ユーザ空間にblobとしてエクスポートされる際に、Trusted Keyを用いて暗号化される。Trusted Keyを用いて暗号化されているため、この鍵も整合性情報が合致しない限り使用することが不可能になる。
 keyctlユーティリティ:
     Trusted KeyとEncrypted Keyを利用できるツールである。

(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上の

  • security.ima (IMAのハッシュ値や、ファイルの電子署名)
  • security.selinux (SELinuxのラベル/コンテキスト情報)
  • security.smack (SMACKのラベル情報)
  • security.capability (実行可能なファイル上のファイルケーパビリティラベル)

 などのセキュリティ拡張属性を保護している。
 これらのセキュリティ情報は極めて慎重に扱う必要があるため、EVMでは前述のTrusted Key/Encrypted keyを用いて、HMACを作成する。これにより、セキュリティ拡張属性の情報が改竄された場合の検出を行うことができる。

2.4. 今期の総評

  今期は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

 

目次へ 次へ