
メモ、設定、キー、ファイルを暗号化して保存するCLIボールト。整理ではなく検索。
これはパスワードマネージャーではありません。ノートアプリでもありません。そして深海の底生異常標本分類学的原産地登録簿でも絶対にありません。しかし、最初の2つはどちらよりも良くこなします。冗談です(本当に冗談じゃない)。
整理するな、検索せよ。メモ、設定、キー、機密 — ターミナルから5秒。
「ありふれたガラクタで私を煩わせるな。」 — 魚屋
go install github.com/DeprecatedLuar/dredge-cargo/cmd/dredge@latest
git clone するだけでデータが手に入ります。dredge undo で元に戻せます。あなたを批判するつもりはありません。煩わしいAPIキー(一度しか表示されないもの)、SSH設定、AIプロンプト、パスワード、そのまま実行できるシェルスクリプト、メールテンプレート?、dotfiles(変わってますが問題なく動作します)、zipアーカイブ、映画リスト、クイックアクセス用のURLリスト...
日本語で書かれた『チェンソーマン』第2話の合法的なコピーさえも。(私は特にその話を持っているかもしれません、いや持っていないかもしれません)
go install github.com/DeprecatedLuar/dredge-cargo/cmd/dredge@latest
$GOPATH/bin(通常は ~/go/bin)が PATH に含まれていることを確認してください。
curl -sSL https://raw.githubusercontent.com/DeprecatedLuar/the-satellite/main/satellite.sh | bash -s -- install DeprecatedLuar/dredge-cargo:dredge
手動インストール
chmod +x dredge-*mv dredge-* ~/.local/bin/dredgeソースからビルド
git clone https://github.com/DeprecatedLuar/dredge-cargo
cd dredge-cargo
go build -o dredge ./cmd/dredge
mv dredge ~/.local/bin/
# 既存のGitリモートで初期化
dredge init yourusername/vault # GitHubの省略記法
# または: dredge init [email protected]:you/vault.git
# 最初のアイテムを追加
dredge add "OpenAI Key" -c "sk-..." -t keys api # -cフラグがない場合はエディタが開きます
# 検索
dredge search openai
# Gitにプッシュ
dredge push
# 何でも追加
dredge add My SSH Config -t ssh dotfiles --import ~/.ssh/config
dredge add "Master Architect Prompt" --import prompt.md -t ai prompts
dredge add "Watchlist" -c "Dune 2, Oppenheimer..." -t lists
dredge add "project-backup" --import project.tar.gz # バイナリファイルもOK :D
# 検索 — 覚えていることを入力するだけ
dredge search prompt
dredge search aws key
dredge search ssh
# 表示、編集、削除
dredge view <id>
dredge edit <id>
dredge rm <id>
dredge undo # 元に戻す
# 検索結果には番号が振られます — 番号を入力して表示
dredge search ssh # 表示: 1. [xKP] SSH Config 2. [mNq] SSH Key
dredge 1 # 直接表示
# Git同期
dredge push
dredge pull
dredge sync # pull + push
「深淵に何が潜んでいるのか想像もつかない。」 — 灯台守
では、まとめます:
使用する主要な暗号技術は2つ、Argon2idともちろんAES-256、特にGCMバリアントです。
Argon2idは、RFC 9106の推奨であり、2015年PHCの勝者だからです。以上です。 AESのGCMバリアントは、暗号化データすべてに改ざんを不可能にするフィンガープリントを付与するからです。以上です。
現在、すべてのデータは ~/.local/share/dredge/ に暗号化ファイルとして保存されています。このディレクトリはGitリポジトリでもあります(少なくとも現時点では)。そのため、dredge push でコミットしてプッシュすると、バックアップとしてすべてが保存されます。各アイテムは、ランダムな3文字のIDを持つ独立した暗号化ブロブです。ファイル名が漏れないようにしたため、誰かがデータを見ても何を見ているのかわかりません。
あなたのパスワード
+ 16バイトのランダムソルト ← ソルトは .dredge-key に保存されます
→ Argon2id (64 MB メモリ · 4 スレッド · 1 イテレーション)
→ 32バイトのマスターキー (ソルト + パスワード = 実際のキー)
マスターキー + アイテムコンテンツ (TOML: タイトル、タグ、コンテンツ)
→ AES-256-GCM、操作ごとに新たなランダム12バイトのnonceを使用
→ [12B nonce][暗号文 + 16B 認証タグ]
→ items/xKP としてディスクに書き込まれる (ランダムID、拡張子なし)
したがって、ボールト全体で同じ派生キーが共有されます(つまり、キーを失うとデータを失います。キーを失わないでください)。すべてのアイテムは同じキーを使用し、それぞれに独自のランダムnonceがあります。同じコンテンツを2回暗号化すると、まったく異なる暗号文が生成されます。
~/.local/share/dredge/ ← ボールト (Gitリポジトリ)
├── .git/
├── .gitignore ← .spawned/ と links.json を除外
├── .dredge-key ← ソルト + 暗号化された検証文字列
├── items/
│ ├── xKP ← 暗号化されたアイテム
│ ├── mNq ← 暗号化されたアイテム
│ └── ...
├── .spawned/ ← リンクされたアイテムの平文コピー
└── links.json ← シンボリックリンクマニフェスト
すべての暗号化ファイルと .dredge-key はGitリポジトリに保存されます。平文ファイル(システムから読み取り可能にしたいと決めたもの)は追跡されません。好きなように扱ってください。
ターミナルで最初のコマンドを実行すると、派生した32バイトのキーが $XDG_RUNTIME_DIR/dredge/$PPID/.key にキャッシュされます(ルートのみアクセス可能)
同じターミナル内での以降のすべてのdredgeコマンドは、キャッシュされたキーを使用します。つまり、パスワードのプロンプトは表示されなくなります。各ターミナルは、親PIDに基づいた独立したディレクトリを取得します。そのため、ターミナルが死ぬとキーはディスクから消えます。
鍵導出 — Argon2id: RFC 9106推奨パラメータ (64 MB メモリ、4 スレッド、1 イテレーション)。.dredge-key 内のソルトは秘密である必要はありません。ファイルがあってもパスワードのブルートフォースを非常に高コストにするだけです。あなたのパスワードが安全を守るので、何をすべきかはおわかりでしょう。
暗号 — AES-256-GCM: すべての暗号化にフィンガープリントを付けます。機密性と完全性の両方を提供します。暗号文を改ざんしても、復号化はガベージを生成せず、復号化に失敗してエラーを出力します。