talos project is hosted by  SourceForge.net Logo
top
ja en / 中身(仮)
  1. 本文書で扱う範囲

    本文書では、ユーザや管理者の立場でtalosと既存のシステムとの違いを説明します。 メカニズム的な部分はtalosの内部構造で説明されます。

  2. 用語の定義

    • タスク

      talosではプロセッサの実行単位を指し、いわゆるスレッドもタスクに含まれます。

    • プロセス

      talosではカーネル空間は全プロセスで共有されるので、ユーザメモリ空間の単位を指します。 実行単位とは別の概念ですが一つ以上のタスクを含んでいます。

    • ユーザタスク

      プロセッサのユーザ(非特権)モードで動くタスクを指します。 ユーザタスクはシステム全体に影響を及ぼすような操作はプロセッサにより制限されています。 例えばカーネル空間はアクセスできません。

    • カーネルタスク

      プロセッサのカーネル(特権)モードで動くタスクを指します。

  3. コンセプト

    • 統一的ユーザインターフェイス

      talosはカーネルにXMLブラウザのようなシェルが統合されたOSであり、 各データ形式に対応したプラグインにあたるものがユーザタスクとして動作します。 このコンセプトに基づき、talosにはいわゆるアプリケーションは存在しません。

    • メモを書く気軽さ

      talosでは通常目にする場所であればどこにでも画像や文書などのアイテムを作成する事ができます。 例えばデスクトップで落書きを始める事もできます。 また、talosでは「このファイルは画像」というような区別がなく、アイテム単位で自由に作成、編集できます。 これはファイルをまるごと扱ってしまうアプリケーションではなく各種データに対応したプラグインがそれぞれのデータ(アイテム)の操作を担っているために可能になった事です。

    • 反「アプリケーション」

      いわゆるアプリケーションは害しかもたらしません。 これにはユーザ体験による理由とセキュリティによる理由、管理による理由の3つの理由があります。 前者は上で説明した通りで、残り2者は後述するtalosがセキュアな理由共有ライブラリについてを読めばわかると思いますので、ここでは定義と概要だけを説明します。 ここで言う「アプリケーション」とは自分でファイルを作ったり開いたり、ソケットを開いて外部と通信したり、ウインドウを開いたりできるユーザタスクを指します。

      そのような設計はシステムを無駄に複雑にするばかりでなく、システムを危険に曝します。 talosではユーザタスクはファイルを開いたり作ったりできず、ソケットもウインドウも開けません(そもそもそのようなAPIがありません)。 それらはプロセッサの保護下にあるカーネルの仕事です。

    • 反WYSIWYG

      WYSIWYGとは画面に表示されるものと例えば印刷されるものが全く同じであるという方針です。 一見良さそうに思えますし、実際に蔓延しています(例えばPDF文書がWYSIWYGです)。 しかし、WYSIWYGの方針はそれぞれのデバイスの特性を無視しているため実際には非常に使いにくいものとなります。 例えばPDF文書を表示しているウインドウを狭くしたら、どうなりますか?

      talosではWYSIWYGとは逆にデータ自体とその表現手段とを明確に区別して取り扱うことで、高い利便性を実現します。 例えばウインドウを狭くしたらwebブラウザでそうした時と同じように文書は再レイアウトされます。 印刷に関しても同様で、例えばTEXでそうする時のように設定したルールに従って自動的にレイアウトされます。

    • 本当の共有

      talosでは一つのファイルを複数人で同時に扱う事ができます。 各ファイルはエージェント(これもプラグインの一種)を介してアクセスされます。 エージェントが操作を代行するので本当の意味で複数のユーザが同時にファイルを編集できます。 ロックやシェアの設定は必要ありません。 なお、ファイル自体は単純に排他制御されます。

  4. talosがセキュアな理由

    図は各OSにおけるユーザモードの範囲を示しています。 talosにおいてはユーザモードの範囲が他のOSと比べて際立って狭く設計されています。 これがtalosがセキュアな最大の理由です。

    まず、ユーザモードではファイルを作れませんし、開けません。 代わりに起動時に必要なファイルのハンドルがカーネルから渡されます。 このことでたとえ該当プロセスがクラックされたとしても被害はその時点で開いていたファイルにとどまります。 ウイルスは他のファイルを書き換えないと増殖できないので開いているファイル以外を書き換えられないtalosではウイルスは増殖することはできません。

    これはファイルだけでなくソケットにも言えます。 ユーザタスクはソケットを作成できないので自分でどこかと通信する事はできません。 代わりにソケットはカーネルが開いてそのハンドルをユーザタスクに渡します。 ファイルの場合と同様に、そのプロセスがクラックされてもソケットを作ることができないので勝手にメールを送信したり他のノードに侵入を試みたりすることはできません。 これと先の「ユーザタスクはファイルを作れないし開けない」性質と合わせて、ファイルを勝手に送信する事が如何に困難か理解できると思います。 つまり、talosであればネットワークへの情報漏洩も防げるるのです。

    さらに、この「ユーザタスクがリソースを指定できない」性質はウインドウなど画面上のリソースにも及びます。 ファイルやソケットの場合と同様、ウインドウはカーネルが開いてユーザタスクに渡します。 これはユーザタスクが処理しなければならないイベントを最小限にするとともに例えばキーロガーや勝手な画面キャプチャを実現不能にします。

    talosカーネルはユーザの操作を起点にして動作します。 そのためユーザに対する制限はユーザ自身の権限だけなので、これらの制限でユーザが困ることはありません。 このあたりはケーパビリティや履歴による制御のようなユーザに制限を課す上にセキュリティとしては設定の完全性に依存するという点で既に失敗しているといえる不完全なメカニズムとは対照的です。

  5. 共有ライブラリについて

    talosではユーザプロセスは単機能なので他のシステム程機能が重複することはなく、共有ライブラリもカーネルへのインターフェイスや数値演算などの基本的なものに限られます。 例えばlibgccやlibm相当のライブラリはtalosでも依然として必要ですが、libjpegなどの機能はtalosではユーザプロセスとして実装されるのでライブラリにはなりません。 なので既存システムに比べて依存関係が非常に単純になり、特に管理を必要とはしなくなります。