diff --git a/README.md b/README.md index 67202c8..2a28bb0 100644 --- a/README.md +++ b/README.md @@ -201,12 +201,22 @@ want maximum privacy can point it at their own Ethereum node. - **No framework**: The popup UI is vanilla JS and HTML. The extension is small enough that a framework adds unnecessary complexity and attack surface. -- **Encrypted storage**: Seed phrases are encrypted with a user-provided - password using AES-256-GCM before being stored in the extension's local - storage. The encryption key is derived from the password using PBKDF2 with a - high iteration count. +- **Encrypted storage**: Recovery phrases and private keys are encrypted at rest + in the extension's local storage. The encryption scheme: + - The user's password is run through PBKDF2-SHA256 (600,000 iterations) with + a random salt to derive a 256-bit encryption key. + - The encryption key + a random IV encrypt the secret material using + AES-256-GCM. + - Stored blob: `{ salt, iv, ciphertext, authTag }`. + - **The password is NOT used in address derivation.** It exists solely to + protect the recovery phrase / private key on disk. Anyone with the + recovery phrase can restore the wallet on any device without this + password. This matches MetaMask's behavior. - **BIP-39 / BIP-44**: Standard mnemonic generation and HD key derivation - (`m/44'/60'/0'/0/n`) for Ethereum address compatibility. + (`m/44'/60'/0'/0/n`) for Ethereum address compatibility. The BIP-39 passphrase + is always empty (matching MetaMask and most wallet software). The user's + password is completely separate and has no effect on which addresses are + generated. - **EIP-1193 provider**: The content script injects a `window.ethereum` object that implements the EIP-1193 provider interface, enabling web3 site connectivity. diff --git a/src/popup/index.html b/src/popup/index.html index ecd7184..81cff3d 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -56,8 +56,8 @@ Add Wallet
- Enter your 12 or 24 word recovery phrase below, or press the - die to generate a new one. + Enter your 12 or 24 word recovery phrase below, or click the + button to roll the die for a new one.