Password manager · Preview
Your passwords.
Your key.
SafePass encrypts entries on your device. If you enable sync, the server receives the encrypted entries.
mail.example
Personal email
- Username
- anna.petrova
- Password
- ••••••••••••
- Local vault
- End-to-end encryption for entries
- Optional self-hosting
01 · Trust model
What the server knows
The sync server transfers encrypted entries between devices and handles sync metadata. Here is what it can see and what stays with the client.
Can see
- A random account identifier
- The size of encrypted entries
- Sync timing and network metadata
- Which revisions of an entry are related
Never receives
- Your master password: sign-in uses the OPAQUE protocol
- The vault key
- Titles, usernames, passwords and notes
- Your 24-word recovery phrase
Try it yourself
This is the real SafePass crypto core running in your browser. Edit the entry with made-up data and see exactly what the server receives.
Use made-up values only. Never enter a real password.
On your device
The vault key was created in this tab’s memory and is never sent anywhere.
What the server receives
189 bytes53 50 43 52 01 dc 6d 47 f8 a5 4b 25 af d8 da 1f cd 02 e2 29 66 b6 19 b2 04 2c 71 39 de ce 53 4d 79 43 c6 22 aa 20 aa ae ea 1c b4 87 7f 89 0e 8a 44 e0 88 88 1a 08 fa 6b 1a de 6b 53 75 6a 59 85 7e 72 55 e5 9f 21 80 8f 51 93 8e fd 21 a8 a8 57 00 ff 0c 3c 0d 5a f7 9e 7f 80 12 9f cb a8 fd 56 19 3a c2 b5 44 d0 2a ec 1f d3 2f 39 29 2f c5 a9 f4 87 c7 00 ff dc ca 6a 04 2b 32 51 8a bd a4 f5 73 6c 76 c0 1c 84 d7 8e f1 04 e6 70 8e 69 c5 23 26 8d 8f 6d 7a 5f 1f ba 70 b0 70 fb 0b 73 9b 6d 18 84 18 2e 3b fa 04 29 06 fe e7 a9 0b f7 0c 7d f4 3c d4 9a ae 22 5e 2c a1 e9 f8 2d 97
- SPCR format
- Version
- HKDF salt
- Nonce
- Ciphertext
- Authentication tag
A sample envelope generated when the site was built.
Preview. SafePass is under development and has not had an external security audit yet. Store test data only.
02 · Lifecycle
How an entry reaches your other device
- 01
Encrypted on the device
Every revision of an entry is encrypted with AES-256-GCM under its own key derived from the vault key. The vault key is protected by your master password through Argon2id.
- 02
Ciphertext is synced
The device uploads only the encrypted envelope. Changes made offline wait in a queue and go out once you reconnect.
- 03
Decrypted on the other device
A new device signs in with OPAQUE and opens the vault key with your recovery phrase. The server takes no part in that step.
03 · What already works
What already works
Works offline
Create, search and edit entries without a connection. Sync resumes on its own.
Conflicts are never lost
If an entry changes on two devices, both versions are kept until you choose one.
Auto-lock
The vault locks after five minutes of inactivity and when the app goes to the background.
Clipboard is cleared
A copied password is removed from the clipboard after 30 seconds or when the vault locks.
Fills only the right site
The extension fills a form only when the page address exactly matches the saved one, and only when you ask.
Your own server
The sync API runs in Docker with PostgreSQL, TLS through Caddy and encrypted backups.
04 · Platforms
Platforms
One vault for desktop, phone and browser. The honest status of each platform.
- LinuxFlutter app, x64Preview
- Chrome and ChromiumManifest V3 extensionPreview
- FirefoxManifest V3 extensionPreview
- Sync serverASP.NET Core and PostgreSQL in DockerPreview
- WindowsFlutter app, x64Building, in testing
- macOSApple silicon and IntelBuilding, in testing
- AndroidAPKBuilding, in testing
- iOSiPhone and iPadBuilding, in testing
See how it is built
Encryption formats, the sync protocol and the threat model are documented in the open.