メインコンテンツまでスキップ

セキュリティ概要

secretctl はセキュリティを基本原則として設計されています。このガイドでは、セキュリティアーキテクチャ、脅威モデル、シークレットを保護するための対策について説明します。

コアセキュリティ原則

1. 標準ライブラリのみ使用

secretctl は暗号化操作に Go 標準ライブラリと golang.org/x/crypto のみを使用します:

  • カスタム暗号化なし - すべての暗号化は実績のある実装を使用
  • 最小限の依存関係 - サプライチェーン攻撃のリスクを軽減
  • 監査可能なコードベース - セキュリティレビューが容易

2. AI 連携のための AI安全設計

secretctl の AI セキュリティモデルの基盤:

AI エージェントは平文のシークレットを受け取ることがありません。

アクセス方法平文アクセス用途
CLIあり人間オペレーター
デスクトップアプリあり人間オペレーター
MCP サーバーなしAI エージェント

これは 1Password の「Access Without Exposure」 の哲学に沿っています。

3. ローカルファーストアーキテクチャ

シークレットはマシンから出ることはありません:

  • クラウド依存なし - 完全にオフラインで動作
  • アカウント不要 - 外部認証なし
  • ネットワーク露出なし - MCP は stdio トランスポートを使用(Phase 0-2)
  • 完全なデータ所有権 - Vault ファイルを自分で制御

4. 保存時の暗号化

すべてのシークレットは業界標準のアルゴリズムで暗号化:

  • AES-256-GCM - シークレット用の認証付き暗号化
  • Argon2id - メモリハードな鍵導出関数
  • OWASP パラメータ - 2025年のベストプラクティスに準拠

セキュリティ機能サマリー

暗号化

機能実装
対称暗号AES-256-GCM
鍵導出Argon2id (64MB, 3イテレーション, 4スレッド)
Nonce暗号化ごとに96ビットランダム
SaltVault ごとに128ビット

アクセス制御

機能説明
マスターパスワードVault の復号に必要
ファイル権限機密ファイルは 0600
MCP ポリシー許可/拒否キーを設定可能
出力サニタイズコマンド出力でのシークレット自動編集

監査とコンプライアンス

機能説明
監査ログすべての操作を記録
HMAC チェーン改ざん検出可能なログ整合性
エクスポートオプションコンプライアンス用 JSON, CSV
検証secretctl audit verify コマンド

脅威モデル

secretctl が保護するもの

  • 保存時の暗号化されたシークレットの機密性
  • Vault データと監査ログの整合性
  • MCP 操作のアクセス制御(AI に平文を渡さない)
  • すべてのシークレットアクセスの監査証跡

対象外(業界標準の除外事項)

Vault、Infisical、1Password と同様に、secretctl は以下を除外します:

  • ルートレベルの侵害 - 攻撃者が root を持っていれば、ゲームオーバー
  • メモリダンプ攻撃 - Go ランタイムの制限(下記参照)
  • 弱いマスターパスワード - ユーザーの責任
  • 無制限のストレージアクセス - 物理アクセスは信頼されると仮定
メモリ保護の制限

Go のガベージコレクターがメモリを管理するため、確実なゼロ化は困難です。これは Vault や Infisical と共有される業界標準の除外事項です。secretctl はシークレットがメモリに存在する時間を最小化します。

攻撃レベル

レベル攻撃者能力保護?
L1ネットワーク観察者ネットワーク傍受はい(localhost のみ)
L2悪意のあるアプリファイルシステム読み取りはい(暗号化)
L3Root 攻撃者フルシステムアクセスいいえ(除外)

代替製品との比較

製品MCP サポートAI 平文アクセスローカルファーストOSS
HashiCorp Vaultあり(実験的)あり (read_secret)いいえ(サーバー必要)BSL
Infisicalありあり (get-secret)いいえ(サーバー必要)あり
1Passwordなし(MCP 拒否)なし(ポリシー)いいえ(サブスクリプション)なし
secretctlありなし (AI安全設計)ありあり

ユニークなポジション: secretctl は MCP サポート + AI に平文なし + 完全ローカル + オープンソースを兼ね備えた唯一のソリューションです。

1Password のセキュリティ原則

secretctl は 1Password の AI へのアプローチを導くのと同じ原則に従います:

原則1Passwordsecretctl
シークレットは秘密のままゼロ知識暗号化AES-256-GCM + Argon2id
決定論的認可LLM が認可決定をしないポリシーエンジンがアクセスを制御
LLM に生の認証情報を渡さないプロンプトにシークレットを含めないAI安全設計が平文を禁止
監査可能性アクセスとアクションを記録完全な監査ログ
透明性AI が見るものを開示マスクされた値のみ返却
最小権限必要最小限のアクセスポリシーベースのキー制限
セキュリティは組み込み後付けでないCLI/MCP/UI が一貫した設計を共有

AI エージェントがシークレットを見るべきでない理由

1Password は AI にシークレットを渡すことを避ける 4つの主要な理由 を特定しました:

リスク説明secretctl の軽減策
非決定性AI の振る舞いは予測不可能決定論的制御のポリシーエンジン
プロンプトインジェクション悪意のあるプロンプトがシークレットを抽出可能シークレットは AI コンテキストに到達しない
取り消し不可能性LLM コンテキストでシークレットを見なかったことにはできない露出していなければ取り消す必要なし
キャッシュ/共有AI が下流に保存または共有する可能性共有するシークレット値が存在しない

クイックリンク

セキュリティ報告

セキュリティの問題を見つけましたか?責任を持って報告してください:

  1. 公開の GitHub Issue を開かないでください
  2. セキュリティの懸念はメンテナーにメール
  3. 開示前に修正のための適切な時間を与える

私たちはセキュリティを真剣に受け止め、責任ある開示に感謝します。