24 oktober 2026
2Secret 1.9.4
Security improvements from a review of the cryptography against a stolen
Security improvements from a review of the cryptography against a stolen server database, a stolen device and a hostile server.
- Known keys. The apps and the command line remember the public keys of
everyone you sealed a vault key to (sharing a vault, replacing its key,
an emergency contact). When the server later reports other keys for that
person, nothing is sent to them and the app shows both fingerprints; you
can trust the new keys after comparing them (
2secret account trust-keyson the command line). Until now a server could put its own keys in someone's place, for an emergency contact even without you doing anything. - Replaced vault keys. A vault key that the server offers sealed to your public key for a vault without other members is refused: only your own devices could replace that key, and they do so with your account key. Every replaced or refused key is mentioned after the sync.
- Mac: the Touch ID key is in the protected keychain. The key that unlocks 2Secret with Touch ID was in the login keychain, which has no Touch ID protection of its own, so a copy of the Mac's disk opened with the login password alone. It is now a keychain item that the Secure Enclave releases only after Touch ID with the enrolled fingers, on this Mac, like on the iPhone. The app moves the key on the next unlock. (On the iPhone the key was already protected this way; if that protection cannot be set up, the key is now not stored at all.)
- Server: the database keeps a hash of each share link's proof instead of the proof itself, so a copy of the database can neither open a link nor use up its views. Links made before this version keep working.
- Server: the per-address count of failed sign-ins is forgotten after its window, like the other limits.
docs/SECURITY.mdsays more precisely what the server stores and which limits apply.- Dependencies: tokio 1.54.1 (RUSTSEC-2026-0386), clipboard-win 5.4.3. The
advisory on crypto-bigint 0.5 (RUSTSEC-2026-0387, timing variability in
P-256 arithmetic) waits for ssh-key 0.7; P-256 only signs on the device,
after a click or consent (see
deny.toml). - The iOS simulator check looks for the app's process directly instead of
asking
launchctl, which once took too long on a busy runner.
Downloads
| File | What |
|---|---|
2Secret_*_aarch64.dmg |
macOS app for Apple silicon (M1 and newer) |
2Secret_*_x64.dmg |
macOS app for Intel Macs |
2Secret_*_x64-setup.exe |
Windows app (installs for your user and can update itself; removes an .msi version of 2Secret up to 1.7.0) |
*.deb, *.rpm, *.AppImage |
Linux app (x86_64) |
2Secret_*_android-arm64.apk |
Android app (Android 7 and newer) โ allow installing from your browser when asked |
2Secret_*_android-arm64.aab |
Android app bundle for app stores |
2secret-*-<platform>.tar.gz / .zip |
2secret CLI and 2secret-server for Linux, macOS (Apple silicon and Intel) and Windows |
2secret-web-*.tar.gz |
Web vault โ serve it with 2secret-server --web-dir |
2secret-extension-*.zip |
Browser extension for Chrome, Edge, Brave and Firefox (load unpacked) |
SHA256SUMS, SHA256SUMS.sig |
Checksums of all files, signed with 2Secret's update key (how to check) |
Server image for x86_64 and ARM64 (e.g. Raspberry Pi 4/5 with a 64-bit OS):
docker pull ghcr.io/joostiphone/2secret:latest โ see
self-hosting.
On macOS, drag 2Secret to Applications and open it. If macOS says it cannot verify the app, open System Settings โ Privacy & Security and click Open Anyway (on macOS 14 and older you can also right-click the app and choose Open). On Windows, SmartScreen may ask you to confirm (More info โ Run anyway).
FreeBSD, OpenBSD, NetBSD and iOS: build from source, see the README.