
オープンソースのブラウザ拡張機能。PGP暗号化、復号、署名のための。Rust/WASMエンジン、WebAuthn PRFアンロック、Argon2idパスワード保護、ゼロ化メモリを搭載。
PGP暗号化、復号、署名のためのオープンソースブラウザ拡張機能。
Rust/WebAssemblyで構築。秘密鍵は必要な場合を除き、JSヒープに触れることはありません。
オープンソースで透明性があります。 ほとんどのPGPブラウザ拡張機能はクローズドソースです。ブラックボックスに秘密を委ねるべきではありません。
暗号処理はWASMで実行され、JavaScriptではありません。 すべてのPGP操作はRust/Sequoia-PGP WebAssemblyサンドボックス内で実行されます。JSは鍵への不透明な整数ハンドルのみ保持し、実際のバイトはWASMリニアメモリに存在し、ドロップ時にゼロ化されます。秘密鍵は生成時とインポート時に一時的にJSを通過しますが、その後暗号化されて保存されます。
パスキーによるロック解除。 WebAuthn PRFで鍵を保護 - パスワードの代わりにTouch ID、Face ID、Windows Hello、またはYubiKeyでロック解除。PRF出力はHKDF-SHA256を介して保存されたシークレットと結合され、ロック解除フロー全体がWASMで実行されます。
パスワード用のArgon2id。 64MBのメモリ、3回の反復 - GPUブルートフォース耐性。KDF、復号、鍵保存はすべてWASMで行われます。パスワードのバイトは使用後すぐに両側でゼロ化されます。
アトミックな復号+検証。 平文と署名の結果が単一のパックされた応答として一緒に返されます。署名が不正 = 平文は返されません。TOCTOUウィンドウはありません。
あらゆる場所でゼロ化。 保存されたすべての鍵と中間値にzeroizeクレート(Rust)。パスワード、PRF出力、派生鍵にUint8Array.fill(0)(JS)。WASMメモリはGCされないため、ゼロ化は決定論的です。
鍵ごとのAAD。 各秘密鍵は、そのフィンガープリントにバインドされた追加認証データ(AAD)を使用してAES-256-GCMで暗号化されます。鍵スロット間でブロブを交換しても失敗します。
.crx) の署名と検証(Web StoreのVerified CRX Uploads向け;オプション、デフォルトではオフ)pnpm install
pnpm dev # dev server with hot reload
pnpm test # unit tests (vitest); Rust engine tests: cargo test in apps/pgp/gpg-wasm
pnpm build # production build (builds WASM automatically)
pnpm zip # package for Chrome Web Store / Firefox Add-ons
WASMモジュールはソースからビルドする必要があります。手動で再ビルドするには:
cd apps/pgp && pnpm build:wasm
apps/pgp/ 拡張機能ソース
components/ React UI
entrypoints/ バックグラウンド + サイドパネル
hooks/ キーリング、セッション、連絡先
lib/pgp/ WASMラッパー + 操作
lib/protection/ WebAuthn PRF、Argon2id、AES-256-GCM
lib/storage/ chrome.storage(ミューテックス付き)
gpg-wasm/ Rust/WASMエンジン (sequoia-openpgp)
packages/ui/ shadcn/uiコンポーネント
tooling/ eslint、prettier、tailwind、tsconfig
大幅なAI支援(Claude)により構築されました。UI、Reactの配管、ストレージ、および拡張機能の配線は主にAI生成です。
暗号実装 - Rust/WASMエンジン、鍵保護、WebAuthn PRF、Argon2id設定 - は人間が設計し人間がレビューしました。雰囲気ベースの暗号は信用しません。
MIT
| 層 | 仕組み |
|---|
| 暗号エンジン | WASM内のSequoia-PGP(鍵は生成・インポート時のみJSに存在) |
| 鍵のロック解除 | WebAuthn PRF(パスキー)またはArgon2id 64 MB(パスワード) |
| 鍵の保存 | 鍵ごとのAAD付きAES-256-GCM |
| メモリ | zeroizeクレート(Rust)+手動ゼロ化(JS) |
| 署名 | アトミック復号+検証(TOCTOUなし) |
| セッション | 非アクティブ時、パネル閉じ時、または操作ごとの自動ロック |
| ブルートフォース | ロック解除失敗時の指数バックオフ |
| スコープ | コンテンツスクリプトなし - 拡張機能サンドボックス内のみ |