Under the hood
Technical details
The rest of the site explains what Keys Wallet & Watch does for you. This page is for the people who want to know exactly how: algorithms and settings, what our servers store, and how to check a download yourself.
Checking a download
You don't need to do any of this to install Keys Wallet & Watch safely: Windows checks the signature for you. It's here for anyone who wants to confirm the file independently.
SHA-256 checksum
The current installer is KeysWalletWatch-Setup-1.7.22.exe (8.7 MB, version 1.7.22). Its SHA-256 checksum is:
f38f5c2cd275ce188b5efc6e8de99e4de4d4adf6cf9c0d200c25eee34d3b4e19
To compare, open PowerShell in the folder you saved it to and run:
Get-FileHash .\KeysWalletWatch-Setup-1.7.22.exeThe Hash it prints should match the line above (case doesn't matter). From a Command Prompt, certutil -hashfile KeysWalletWatch-Setup-1.7.22.exe SHA256 does the same. The stable link https://keyswalletwatch.com/download/windows always redirects to the current installer.
Code signature
The installer is Authenticode-signed by BECKHAM ENTERPRISES, LLC. through Microsoft's Trusted Signing. To see it, right-click the file, choose Properties, then the Digital Signatures tab. In PowerShell:
Get-AuthenticodeSignature .\KeysWalletWatch-Setup-1.7.22.exe | Format-List Status, SignerCertificateStatus should be Valid and the signer should name Beckham Enterprises, LLC. If Windows shows "Unknown publisher", don't run the file.
SmartScreen judges a file by its signature and by how many people have downloaded it, so a new release can show "Windows protected your PC" for a while even though it's signed. The download page walks through that screen.
In-app updates
From version 1.6.4 the app asks https://keyswalletwatch.com/updates/windows.json whether a newer version exists. Each update carries a signature made with Beckham Enterprises' private update key (the Tauri updater's minisign/Ed25519 format). The app checks it against the public key built into the app and refuses an update that doesn't match. Before installing, it saves and locks the open vault. Vaults live in your Windows profile, not the program folder, so updates and reinstalls don't touch them.
Encryption design
Everything in this section happens on your PC. None of it involves a server.
You type your master password
It's used in memory to derive a key and never written to disk. It's checked with a constant-time comparison, and wrong guesses add a growing delay of up to 60 seconds.
Argon2id stretches it into a key
Argon2id with 64 MiB of memory, 3 passes and 4 lanes, plus a random 32-byte salt stored with the vault. Each guess costs an attacker the same memory and time.
That key unlocks the vault key
The vault itself is encrypted with a random 256-bit key. Your password-derived key only wraps (encrypts) that vault key, which is why changing your password is instant.
AES-256-GCM seals the vault
The whole vault is encrypted with AES-256-GCM, which also detects tampering, and written to one
.kwwfile with a fresh random nonce on every save. Saves are atomic, so a crash can't leave half a file.
| Purpose | What Keys Wallet & Watch uses |
|---|---|
| Password to key | Argon2id (v1.3), 64 MiB, 3 iterations, parallelism 4, 32-byte random salt |
| Vault encryption | AES-256-GCM, random 96-bit nonce per save, random 256-bit vault key |
| Recovery key | 200 random bits, shown as KWWRK- and 8 groups of 5 characters; derived with HKDF-SHA256 and wraps the same vault key |
| Shared projects | A separate AES-256-GCM key per project, delivered to each member with X25519 + HKDF + AES-GCM |
| Breach check | SHA-1 k-anonymity range query (first 5 hex characters only) |
| Memory | Keys and secrets are zeroed when the vault locks or the window closes |
There is no password reset and no escrow. The recovery key is the only other way to unwrap the vault key. After a recovery unlock the app asks for a new master password. Changing the recovery key makes the old one stop working.
Breach check
The security dashboard checks passwords against Have I Been Pwned's list of passwords exposed in breaches, using its k-anonymity range search:
- Your PC computes the SHA-1 hash of a password.
- Only the first 5 hexadecimal characters of that hash are sent to
api.pwnedpasswords.com. - The service replies with every leaked hash starting with those 5 characters, typically hundreds.
- Your PC looks for a match in that list. The answer never leaves your computer.
The check runs only when you press it; the app reminds you every 3 months by default. Password strength is rated on the PC with zxcvbn, and anything scoring below 3 is listed as weak.
The sync relay
Sync runs through a relay at sync.keyswalletwatch.com, a Cloudflare Worker. Your PC encrypts the vault before upload and decrypts it after download; the relay never has a key. A different relay address (https only) can be set in the app.
- Uploads. Every save uploads the whole encrypted vault together with the version it was based on. The relay refuses an upload based on an out-of-date version; that PC downloads the newer one, merges, and uploads again.
- Downloads. Other PCs check for a newer version every 60 seconds while open, and before every unlock.
- Pairing. A new PC shows an 8-character code, valid for 5 minutes with limited tries, that must be approved on a PC already in the vault.
- History. The relay keeps 30 days of earlier versions of every vault and shared project, encrypted like the rest.
- Inactive data. A vault or shared project that no device has uploaded to for 400 days is deleted from the relay with its history. Every unlock and edit uploads.
What the relay stores
- Each vault and shared project as an encrypted blob, with its version number and 30 days of earlier versions.
- For each paired PC: the device name you gave it and a hashed access token.
- For shared projects: member names, roles (owner, editor, viewer), public keys, and each member's copy of the project key, encrypted so only that member can open it.
- Pairing and invite codes while they're valid (minutes).
- Which vaults each license is syncing, so plan limits apply. No email address.
What the relay can see
It can't read vault contents, but it necessarily sees metadata: device and member names, vault sizes, version numbers, when uploads happen and the IP addresses they come from. The privacy notice covers this too.
How sync merges
Merging happens on your PCs, entry by entry, after decryption.
| What happened | Result after the merge |
|---|---|
| An entry changed on one PC only | That change is kept. |
| The same entry changed on both PCs | The newest edit wins. The other version's password is saved in that entry's password history. |
| An entry was deleted on one PC | The deletion travels to the other PCs as a tombstone (id and time). An edit made after the deletion wins over it. |
| Owners, accounts, projects, settings | Merged too: the newest change wins, and removals travel as tombstones. |
| The master password changed | The new password applies on every PC after the next sync. If two PCs change it while offline, the first upload wins and the app warns you. The relay can't roll a vault back to before a master-password change. |
Sharing and revocation
- Keys. Each shared project has its own AES-256-GCM key. It's delivered to each member wrapped with X25519 key agreement, HKDF and AES-GCM, so the relay only ever holds wrapped copies.
- Invites. An invite code is valid for 10 minutes. Before approving a joiner, both sides compare a short fingerprint such as
3F1A-9C02-B7E4-0D58out of band (by phone or in person). That stops a server in the middle from substituting its own key. - Roles. Owner, editor or viewer. The relay refuses uploads from viewers. Only the owner can unshare or delete a project. Ownership can be handed to another member, and a project whose owner is gone can be taken over.
- Removing a member. The project key rotates and is re-wrapped for the remaining members. The next time the removed member's app connects, it deletes its copy of the project and reports back. They keep anything they already copied or memorised, and they get nothing new.
- Replays. Shared-project blobs bind the relay's version number into the encryption, and apps refuse a copy older than one they've already seen.
- Relay trouble. A shared project is only ever removed from a PC by the owner's explicit action. Anything else, such as a relay error, pauses sync and says so.
- Deletions. Entries deleted from a shared project sit in the project's trash for 30 days, visible to every member and restorable. The owner can also recover entries from any of the relay's 30 days of project versions.
Files, formats and history
- The vault file. One
.kwwfile per vault in your Windows profile: a header with the salt and the wrapped vault keys, then the encrypted vault. Several vaults can live on one PC, each with its own master password. - Recycle Bin. A deleted entry waits 30 days in the Recycle Bin, then becomes a permanent deletion (a tombstone, so other PCs delete it too). You can restore it, or empty it sooner.
- Password history. When a password changes, the last 10 old ones are kept inside the entry, including the losing side of a sync conflict. There's no screen to browse them yet.
- Relay history. On the Sync tab you can open any of the relay's 30 days of earlier versions and recover whatever has been deleted since. Nothing you have now is changed.
- Backups. A backup is a copy of the encrypted
.kwwfile. Restoring one adds it as a separate, detached vault on the vault selection screen. It doesn't sync or rejoin shares on its own: shared projects you own become local projects, and any whose owner has removed you are dropped the first time you open it. - CSV import. Exports from Chrome, Bitwarden (including its two-factor secrets), LastPass and 1Password are recognised. Any other CSV goes through a column-mapping screen. The template has the columns
title, url, username, password, notes, type, tags, project, account, and a Person or Owner column can be mapped too. - CSV export. Asks for the master password again and warns that the file is not encrypted.
- .env files. In Developer Mode, paste a
.envfile to create entries, and export one per entry or per project and environment. - Two-factor codes. Standard 6-digit TOTP codes, generated from the Base32 secret behind a site's QR code.
The app and its network calls
- Built with. Encryption, storage, merging and sync are written in Rust. The window is a Tauri app using Microsoft Edge WebView2. It installs per user, with no administrator rights.
- Local protections. Auto-lock after 5 idle minutes by default (1 to 30, or never). The window is excluded from screenshots and screen recordings by default. The vault locks and the clipboard clears when a remote-desktop session, remote-access tool or debugger is detected. Copied passwords are cleared after 30 seconds by default (10 to 120) and kept out of Windows clipboard history.
- Network calls. The app talks only to the license server (licenses.beckhamenterprises.com) to start a trial, activate a key and check in about once a day; to Have I Been Pwned when you run a breach check; to the sync relay if sync is on; and to keyswalletwatch.com to look for updates. The license check-in sends your email (trial only) or key, a machine identifier, a device label, the app version and the Windows version.
- No telemetry. No analytics, crash reports or usage data. The app keeps a local log file, and Settings, About has a Copy diagnostics button whose report leaves out secrets, names and vault contents. Nothing is sent unless you send it.
Questions this page doesn't answer? Contact Beckham Enterprises (opens in a new tab).