TOMOYO Linux
TOMOYO Linux version 1
TOMOYO Linux version 2
TOMOYO Linuxは、Linux用のセキュアOSモジュール。"Linux"の名前が付いているが、ディストリビューションの一つではない。
TOMOYO LinuxはLinuxカーネル(バージョン2.4並びに2.6)をベースとして、「ポリシーの自動学習機能」を備えた強制アクセス制御の実装である。バニラカーネル(リーナス・トーバルズによりリリースされる公式のLinuxカーネル)に対するパッチおよびポリシーエディタ等の設定ツールにより構成される。NTTデータの研究開発プロジェクトとして2003年に始まり、2005年にSourceForge.JPにてGNU General Public Licenseバージョン2によりオープンソースソフトウェアとして公開された。
TOMOYO Linuxは当初より名称が注目を集めた歴史がある
。
公式には、"Task Oriented Management Obviates Your Onus on Linux"(Task構造体(task_struct)を活用した「管理者の」負担を軽減するLinux)の略(バクロニム)ということになっているが、開発者の1人である半田哲夫がこよなく愛するカードキャプターさくらの登場キャラから拝借したものであることのほうが今や良く知られている。このことは、プロジェクトのQ&A
や執筆した記事でも明記されており、プロジェクト側では名前の由来を隠しているわけではない。なお、彼個人の中ではプロジェクトとしてオーサライズされたものではない壮大な構想がある
。
開発当初は、ポリシーの管理不要な物理的な改竄防止を実現したSAKURA Linux(ただし、これはコード名であり正式名称ではない)が存在し、セキュリティ・スタジアム2004
などにその名前がでてくるが、SAKURAの機能は現在TOMOYO本体に統合されている。
TOMOYO Linuxプロジェクトは、当初日本国内ユーザに特化する考えを持っていたが、様々な観点からプロジェクトの方針はTOMOYO Linuxのメインライン化(標準機能としてリーナス・トーバルズによりメンテナンスされているソースコードブランチへの統合)を目指すよう変更された。その理由はいくつかある。
CE Linux ForumのJapan Technical Jamboree12における情報家電・組み込み開発者の一部から上がった意見「組み込みLinux開発者の多くが組み込みLinux環境における、セキュリティ強化を希求しているが、(当時)すでにメインライン統合済みであったSecurity-Enhanced Linux (SELinux) には一部組み込み環境では負荷が大きい側面があり、そのためTOMOYOのようなパス名ベースのライトウェイトなセキュリティモジュールはうまく適合する側面がある。しかし組み込み開発者はカーネルへのパッチ適用を避ける傾向がある。」
YLUG(横浜Linuxユーザグループ)カーネル読書会などでの「熱い洗礼」
プロジェクト側の考えとしてメインラインカーネルツリーの外で「野良」メンテナンスし続けることは、一部の技術力の高いユーザは何もせずとも利用するかもしれないが、ビジネスユーザにとってはメインラインではないカーネルを使用することなど論外であり、ユーザの裾野を広げる点で障害になっていた点
Linuxカーネル開発者の多くは「リーナス・トーバルズのソースツリーに含まれていないものは見ない」傾向がある、すなわちメインライン化を図っていないコードはLinuxカーネル開発者の目に届きにくく、メインラインのAPIに追随し野良メンテナンスを行いつづけたとしても、ある日メインラインのカーネルツリーに追随不可能なコードの変更が加えられるかもしれない危険性があったという点
などである。これらに対応するため、プロジェクトは現行のTOMOYO Linuxバージョン1とは別にLinux Security Modules(LSM)に対応したTOMOYO Linuxバージョン2の作成に着手、2007年よりLinux Kernel Mailing ListにてTOMOYO Linuxバージョン2のメインライン化に向けて提案を開始した。マージへ向けての道のりは険しく、TOMOYO Linuxと同じくパス名ベースの強制アクセス制御モジュールAppArmorと共に一部のSELinux開発者からその実装を非難され、同時にLSMの削除とSELinuxへの一本化を提案される状態だった。当時のLSMはマージ済みのセキュアOS実装がSELinuxしかなかったこともあり、ラベルベースのフックに偏っていたため、TOMOYO Linuxマージのために新たなファイルパス名ベースのフックを導入する必要があったが、これはLSMとVFS双方の変更が必要だった。VFSのメンテナAl Viroはこの変更を当初頑なに拒否したため説得に難航したが、最終的にはmmツリーメンテナのアンドリュー・モートンが直接Al Viroの真意を聞き出し、結果的にVFSへのマージに成功した。その他様々な提案とコードの変更を行った結果、TOMOYO Linuxバージョン2は、2009年6月9日(PDT)にバージョン2.6.30に無事マージされた
。
メインライン化までの道のりについて、いくつかの記事が書かれている。
前述の通り、現行バージョンは2つあり、バージョン1はバニラカーネルへのパッチ(ccs-patchと呼称される)の適用が必要であるが、カーネルバージョン2.4 および2.6双方で利用でき、SELinuxなど他のセキュアOS実装と同時に利用できる。これはカーネル標準のLSMを使用せず独自のフレームワークを利用しているためである。通常LSMの上にSELinuxなど各種セキュアOSが実装されているが、LSMは複数のセキュアOS実装を同時実行できない。(更にLinuxカーネルバージョン2.6.24からはLKMとしても実装できなくなった。)この為、バージョン1は他のセキュアOS実装を有効化した状態でも使用でき、セキュアOSとして標準的な強制アクセス制御のすべて(ネットワーク、環境変数に対する制御なども含む)を利用できる。アクセス制御機能の豊富さから旧来のユーザーを中心とした利用者が多い。
バージョン2は、Linux Security Modulesに基づくセキュアOS実装である。カーネルに必要な機能が既に統合されたのは前述のとおりであるが、2011年1月現在においては、ファイルに対する強制アクセス制御の一部のみしか利用できない。また前述のとおり、他のセキュアOS実装と同時実行できない。これは機能的にはバージョン1に劣るが、カーネル設定で有効化するだけで(設定ツールのインストールなどの準備などを除いたとしても)容易に強制アクセス制御を有効化できる点で新規ユーザー側にとっての利点があるともいえる。
ポリシーの自動学習機能にて基本的動作を学習させることができるため、従来のセキュアOSに比べ導入にかかる期間・手間を大幅に削減できる。
プロジェクト発足からオープンソースとして公開されるまでの道のりについて、VA Linux Kernel Conference 2005でと題し講演されている。
オープンソースとして公開されてから2008年7月までの取り組みについて、Linux Foundation Japan #8シンポジウムにて、として講演されている。
TOMOYO Linuxはオープンソースプロジェクトであり、ソースコードに対するアクセスが確保されていることもさることながら、情報公開を重視し各種イベントへの出展やイベントで使用した資料について全て公開されている。以下がその例である。