vault について
vault は、機密性の高い RED の記録が独立した 3 層の保護で保存されているか確認するセキュリティスキルです。データを変更せず状態と修正案を示し、セットアップ補助機能は明示的な指定時のみ動作します。
主な機能
- 013つのロック状態を読み取り専用で確認
- 02JSON 形式の状態出力
- 03クラウド同期先の検出
- 04明示指定による非破壊のセットアップ補助
活用シーン
- 01デバイス、ストア、ファイルの暗号化確認
- 02RED ストアがクラウド同期対象外か確認
- 03保護設定前に修正コマンドを確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ glebis/ claude-skills --skill vaultインストール後、Claude Code で/vaultを入力して読み込まれたか確認します。
同梱ファイルscripts/vault.py
詳細
confide:vault — RED データを保管するための THREE LOCKS
confide/docs/THREE-LOCKS.md に記載されている多層防御の保管方針を実装します。実データ(RED)の文字起こしは、互いに独立した3つのロックの背後に保管されるため、いずれか1つが突破されてもクライアント情報は漏えいしません。実際の文字起こしを読むには、攻撃者はデバイスのパスワードと暗号化ストアのパスワードとage キーをすべて入手する必要があります。3つは別々の秘密情報であり、できれば異なる場所に保管してください。
| ロック | 内容 | 防ぐもの |
|---|---|---|
| 1 — デバイス | FileVault によるディスク全体の暗号化+強力なログインパスワード+短時間での自動ロック | 紛失・盗難に遭ったマシン、USB から起動されたマシン |
| 2 — ストア | RED を専用の暗号化ストア(暗号化 APFS ボリューム/AES-256 .dmg)に保管します。Documents には保存せず、iCloud/Dropbox には絶対に保存しません | 他のアプリ、他のユーザー、気付かれないクラウド同期 |
| 3 — ファイル単位 | 各 RED ファイルを sops/age で保存時に暗号化し、age キーは別の場所に保管します。処理はネットワーク接続のない VM/コンテナ内で行います | ファイルを個別に封印し、キーをデータと同じ場所に置かないこと |
非破壊的 — 実行前にお読みください
--check(デフォルト)は読み取り専用の確認のみを実行します。fdesetup status、shutil.which(sops/age)、os.path.exists(...)が対象です。データの移動、削除、 暗号化は一切行わず、fdesetup enable、hdiutil、age-keygen、rmも実行しません。- 各ロックの状態を ✓/✗ で報告し、✗ を修正するための正確なコマンドを表示します。ユーザー自身で確認して実行できます。
--init-ageは、明示的にこのフラグを指定した場合にのみ age キーを生成し、既存のキーを上書きしません。--init-store PATHは、暗号化ストアを作成するコマンドを表示するだけで、ディスクイメージの作成は実行しません。クラウド同期されるパスは拒否します。- 明示的な確認なしに、ユーザーの RED データを移動、暗号化、削除することはありません。デフォルトで破壊的な操作が実行されることはありません。
実行方法
# default = read-only status check + checklist with fix commands
python3 skills/vault/scripts/vault.py --check
python3 skills/vault/scripts/vault.py --json # structured status dict
# point at your own RED store to verify it's not cloud-synced
python3 skills/vault/scripts/vault.py --store-path ~/CONFIDE-RED.dmg
# optional, GUARDED helpers (explicit flags only)
python3 skills/vault/scripts/vault.py --init-age # make an age key (never overwrites)
python3 skills/vault/scripts/vault.py --init-store ~/CONFIDE-RED.dmg # prints the hdiutil command
lock_status() はインポート可能で、次を返します。
{
"device": {"filevault": bool},
"store": {"present": bool, "path": str|None, "cloud_synced": bool, "safe": bool},
"perfile": {"sops": bool, "age": bool, "key": bool, "key_path": str|None}
}
ユーザーを支援する方法
--checkを実行し、✓/✗ のチェックリストを読み上げます。- 各 ✗ について、表示された修正コマンド(例:
sudo fdesetup enable、age-keygen -o ~/.config/confide/age.key、hdiutil create -encryption AES-256 … ~/CONFIDE-RED.dmg)を提示し、ユーザー自身で実行してもらいます。 - RED ストアが iCloud/Dropbox の中にないことを確認します(
store.safe)。 - sops/age の暗号化・復号手順(チェックリストに表示されます)を提示し、RED を保存時は暗号文のまま保管し、分離されたパイプライン内(
confide/docs/ISOLATION.md)でメモリ上のみ復号するようにします。マシンの外に出るのは GREEN(匿名化済み)出力だけです。
confide/docs/THREE-LOCKS.md(モデルとチェックリスト)および confide/docs/ISOLATION.md
(red/green のフロー、ネットワーク接続のない VM/コンテナ)を参照してください。
コメント
Markdown 対応