Skip to content

Security: Cafe-Horizon/Horiz-OS

Security

docs/security.md

HorizOS セキュリティ設計

HorizOS の最大の特色は、ゼロ依存 (Zero-Dependency) の理念に基づき、外部ライブラリ由来の潜在的な脆弱性を排除した上で実装された独自の暗号およびセキュリティレイヤーにある。

トラスト最小化と暗号実装

1. 独自実装 TLS 1.3 (horiz-pkg)

OpenSSL や rustls のような複雑で巨大な外部ライブラリを使用せず、パッケージマネージャーに組み込みで TLS 1.3 クライアントを独自実装している。

  • ハンドシェイクと鍵交換: 楕円曲線ディフィー・ヘルマン鍵共有 (X25519) を利用したセキュアな鍵交換。
  • 暗号化通信 (AEAD): パフォーマンスと安全性を両立する ChaCha20-Poly1305 アルゴリズム。
  • 鍵導出 (KDF): SHA-256 に基づく HMAC-based Extract-and-Expand Key Derivation Function (HKDF)。
  • サーバー証明書検証: サーバーから送信された Ed25519 署名の証明書を、システム標準のトラストストア (/etc/horiz/certs.pem) またはユーザー指定のルート証明書に基づき検証し、中間者攻撃 (MITM) を防止する。

2. パスワードハッシュと安全な認証 (horiz-auth)

  • ストレッチング処理: SHA-256 ハッシュ関数を 10,000 回反復(ストレッチング)させることで、ブルートフォース攻撃やディクショナリアタックの計算コストを意図的に引き上げている。
  • 定数時間比較 (Constant-time Comparison): ハッシュ値の比較時、途中で不一致が見つかっても処理を中断せず、XOR演算を用いて全バイトを最後まで評価する。これにより、処理時間の差からパスワードを推測されるタイミング攻撃を完全に無効化する。
  • セキュアソルト (CSPRNG): OSの提供する乱数源 /dev/urandom から予測不能な 16 バイトのソルトを動的生成して利用する。

ファイル整合性とセキュアな更新

1. パッケージ署名検証と整合性チェック

ネットワーク経由でダウンロードされる実行可能バイナリやアップデートファイルは、厳密な検証を経るまで実行・配置されない。

  • Ed25519 署名検証: 付属の .sig 署名ファイルと、システムに組み込まれた公開鍵 (/bin/pkg.pub) を用いて Twisted Edwards 曲線上の Ed25519 署名を検証し、ファイルの出所に関する真正性とシステム書き換えの権限を確認する。
  • ハッシュ整合性: 署名とあわせて SHA-512 サムによるファイルの破損・改ざんチェックが行われる。

2. 状態の競合排除

  • アトミックリスワップ (TOCTOU対策): 単一ファイルへのダウンロードと検証を一時ファイルに対して行い、全てに合格した場合のみ rename システムコールによって原子的に対象パスへ置換する。これにより、Time-of-Check to Time-of-Use 攻撃を防ぐ。
  • パストラバーサル保護: パッケージの指定名や出力パスに /.. の使用を検知した場合は即時ブロックを行う。

ランタイム保護

  • 特権分離: /bin/init は認証成功直後に特権を破棄 (setuid/setgid) し、不必要な root 権限のままシェルが実行されるのを防ぐ。
  • マウントセキュリティ: 仮想ファイルシステム (/proc等) は MS_NOSUID, MS_NOEXEC, MS_NODEV オプションを付与してマウントされ、システム情報領域からの特権昇格や不正なバイナリ実行を防止する。
  • シンボリックリンク攻撃対策: ログの書き込み時など、予測可能なパスを扱う際は事前にシンボリックリンクでないか確認し、権限を悪用した別ファイルの上書きを阻止する。

There aren’t any published security advisories