セキュリティ設計の源流と敗北|Multics・Unix・PSOSの比較から学ぶ「変更可能性」という現実解

社会・文化

1970年代、OS設計は一つの問いに直面していました。
「安全性をどこまで構造に埋め込むべきか?」

理想を極限まで追うのか、現実に合わせて妥協するのか。この分岐が、その後50年の計算機基盤を決定づけました。


1. PSOS|形式検証という理想の重さ

PSOS(Provably Secure Operating System)は、OSを数学的な「正しさ」から構築しようと試みました。

設計思想

  • 数理論理での記述: 仕様を数式で定義。
  • 実装の証明: 実装が仕様を満たすことを論理的に証明。
  • 原理的排除: バグが入り込む余地を理論上ゼロにする。

比喩で理解する:
PSOSは「一分の狂いもない精密な設計図で建てられた金庫室」です。一度建てたら、鍵穴一つ変えるのにも設計図全体の再証明が必要になります。

抽象の一段下:現実は残酷だった

安全性を最大化しようとすると、「変更コスト」が爆発的に増加します。

  • コード変更 = 証明の再実行: 1行の修正が、膨大な数式の再計算を強いる。
  • 証明爆発: モジュール間の依存関係が増えるほど、証明の手間が指数関数的に増大。

安全性を追求しすぎた結果、進化速度が最小化しました。市場は、動かない(進化できない)「正しさ」よりも、不完全でも「動くこと」を選んだのです。


2. Multics|リング保護という構造的防御

Multicsは、ハードウェアの力を借りて「構造」の中に防御を組み込もうとしました。

具体設計:リング保護モデル

内側ほど高い権限を持つ階層構造(Ring 0〜7)を採用し、権限のないアクセスを物理的に遮断します。

  • Ring 0: カーネル(最深部)
  • 外側リング: ユーザーアプリケーション

このモデルは後のx86アーキテクチャ(CPU設計)に多大な影響を与えましたが、専用の大型機を前提としたため、経済性と拡張性の壁にぶつかり、汎用OSとしての覇権を逃しました。


3. Unix|「書き直せる」という最強の武器

Unixは方向を180度反転させ、理想よりも「軽さ」と「移植性」に全振りしました。

抽象の一段下:Unixの生存戦略

  • C言語での記述: どんなハードウェアにも移植可能。
  • 統一抽象: 「Everything is a file(すべてはファイルである)」。
  • シンプルな権限: ユーザー/グループ/その他の3段階パーミッション。

セキュリティは完璧ではありませんでした。しかし、「パッチが出せる(直せる)」という柔軟性と、ハードウェアを選ばない移植性が爆発的な普及を招きました。安全性より「変更可能性」を優先したことが、結果として最強の武器となったのです。


4. 三者比較(構造レベル)

評価軸PSOS (理想主義)Multics (官僚主義)Unix (現実主義)
安全性極大
変更コスト極大
移植性
普及度失敗限定的覇権

勝者は、最も安全な設計ではありませんでした。最も「修正しやすい」設計だったのです。


5. 現代との接続:クラウド設計の正体

現在のクラウド設計は、Unix思想の正統な進化系にあります。

  • マイクロサービス: 被害を一部に閉じ込める(局所化)。
  • CI/CD: 「安全に壊し、爆速で直す」サイクルの最大化。
  • 自動テスト: 数学的な証明の代わりに、膨大なテストコードで安全を補完。

かつての理想(形式検証)は消えていません。しかし、現在は「認証基盤」や「暗号アルゴリズム」など、絶対に外せない急所にのみ限定して適用される「現実解」に落ち着いています。


6. 実務への落とし込み:現代版「変更可能性」の実装手順

PSOSのような「ガチガチの固定」を避け、Unix的な「柔軟な防御」を現代の環境で実現するための3つのプラクティスです。

① インフラのコード化(IaC)

セキュリティ設定をTerraformなどのコードで管理します。

  • メリット: 設定ミスが起きても、1世代前のコードに戻す(ロールバック)だけで数秒で復旧可能。
  • 思想: 構造を固定するのではなく、「何度でも同じ形に作り直せる」状態を維持します。

② サービスメッシュによる「爆破区画」の構築

システムをマイクロサービス化し、その通信をIstio等で制御します。

  • メリット: 1つのサービスが突破されても、隣への通信を瞬時に遮断。
  • 思想: ソフトウェアレイヤーで動的に「保護リング」を形成します。

③ 「自動バリデーション」による局所的な形式検証

PSOSが目指した数学的証明を、CI/CDの中で自動実行します。

  • 具体例: AWSの「Zelkova」などは、S3のポリシーが「意図せず公開されていないか」を数理的に自動検証します。
  • 思想: 全部を証明するのではなく、「急所」だけに検証を絞り込みます

7. 向いている人/向いていない人

  • ◎ 向いている人
    • 変化の激しいWebサービス、SaaSの開発者。
    • ゼロトラスト環境の構築を目指すセキュリティエンジニア。
    • 「止まらないシステム」より「すぐ直るシステム」に価値を感じるチーム。
  • × 向いていない人
    • 原子力、軍事、航空制御など、一瞬のミスが物理的破壊に直結する領域。
    • (ここでは今もPSOS的な「形式手法」が必須です)

8. 歴史から抽出できる設計原則

  1. 完全性は変更速度を超えられない
  2. ハードウェア依存は長期戦で不利になる
  3. 「修正可能性」こそが最大の防御である

結論

PSOSは「正しさ」を選び、Multicsは「構造的堅牢性」を選び、Unixは「進化」を選びました。

現代のセキュリティ設計の本質は、「どれだけ守れるか」ではなく「どれだけ速く、正確に直せるか」にあります。
抽象を一段下げると、勝敗は思想の優劣ではなく、その構造が持つ「修正への柔軟性」で決まっていたのです。

歴史を味方につけ、あえて「壊れることを前提に、爆速で直す」構造を設計してください。それこそが、UNIXが50年かけて証明した唯一の正解です。

タイトルとURLをコピーしました