Security

Local-first. No backend. Your keys never leave your browser.

Architecture

HotKey Wallet is a Chrome extension that runs entirely in your browser. There are no hosted wallets, accounts, or backend databases. Everything critical happens locally:

Key Encryption

  1. Password derivation: Your password is run through PBKDF2 with 100,000 iterations and a random salt.
  2. Encryption: Private keys are encrypted with AES-256-GCM using the derived key and a random IV.
  3. Storage: The encrypted blob, salt, and IV are stored in Chrome's local storage. The password is never stored.
  4. Decryption: Unlocking re-derives the key from your password. A wrong password fails decryption.
Why PBKDF2 with 100K iterations? It makes brute-force password guessing computationally expensive if encrypted browser data is ever extracted.

Memory Management

When your wallet is unlocked, decrypted private keys are held in the service worker's memory, not written back to storage.

Auto-Lock

Configurable inactivity timeout defaults to 15 minutes. When triggered:

  1. All decrypted private keys are deleted from memory.
  2. The sidebar switches to the lock screen.
  3. No trades can be executed until you re-enter your password.

Content Security Policy

Transaction Signing

  1. The extension builds the transaction for a swap, send, or limit order.
  2. The transaction is signed with your decrypted private key in memory.
  3. The signed transaction is sent to the blockchain through your selected route.
  4. Private keys never leave the extension process.

Network Communication

No private keys or seed phrases are ever sent to any external service.

Best Practices