diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-05 10:56:52 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-05 10:56:52 +0100 |
| commit | d0b09ad8115c29d67bcbbc4c7b5aab0a41f16fa2 (patch) | |
| tree | 38a70272a395b0e74f94207ea51f806aaa2811ce /content/en/hardenedpass/reference/security/index.md | |
| parent | 6d5e2e7bc9877fc9b29d3eee4ec6879bcbbd4bec (diff) | |
| download | danixxyz-d0b09ad8115c29d67bcbbc4c7b5aab0a41f16fa2.tar.gz danixxyz-d0b09ad8115c29d67bcbbc4c7b5aab0a41f16fa2.zip | |
content: write HardenedPass reference and landing pages
Every setting, the security model, troubleshooting and the landing page,
in both languages. Also adds the Firefox save prompt tip and full menu
paths on the sync and autofill pages. Still drafts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'content/en/hardenedpass/reference/security/index.md')
| -rw-r--r-- | content/en/hardenedpass/reference/security/index.md | 59 |
1 files changed, 55 insertions, 4 deletions
diff --git a/content/en/hardenedpass/reference/security/index.md b/content/en/hardenedpass/reference/security/index.md index 0c1ba30..c865c1d 100644 --- a/content/en/hardenedpass/reference/security/index.md +++ b/content/en/hardenedpass/reference/security/index.md @@ -1,13 +1,64 @@ +++ title = "Security" date = 2026-11-05T00:00:00Z -description = "" +description = "What HardenedPass protects, where each secret lives, what it sends over the network and which threats it does not cover." weight = 100 draft = true +++ -Placeholder. +This page says what the app does for you and, just as important, what it does not do. -## First heading +## Where your secrets live + +| Secret | Where it is | How it is protected | +|---|---|---| +| Entries | Files in the app's private storage, and on your git server | OpenPGP, the same as `pass` on a computer | +| OpenPGP private key | The app's private storage | Its own passphrase | +| Key passphrase | Nowhere, unless you enable caching | If cached: AES-GCM under an Android Keystore key | +| Git and proxy passwords | The app's private storage, if you tell it to remember them | AES-GCM under an Android Keystore key | +| SSH key made on the phone | Android Keystore | The system, plus your screen lock if you ask for it | +| SSH key you imported | The app's private storage | Its own passphrase, if it has one | + +Android Keystore keys are held by the system and cannot be copied out of the phone, even +by the app that uses them. + +## What the app does + +- **No telemetry.** No analytics, no crash reports, no Google Play Services. The app + only connects to the git server you configured, and to your proxy if you set one. +- **Blocks screenshots of secrets.** Entries, the editor, the generator, passphrase + dialogs and autofill windows cannot be captured by screenshots, and do not appear in + the recent apps view. +- **Clears the clipboard.** A copied password is removed after a timeout. +- **Checks the SSH server.** The server's host key is saved on first connection and + checked after that. The first connection is trusted without asking, so make it on a + network you trust. +- **Trusts known browsers only.** Autofill works only in browsers whose signing + certificate the app recognizes, and warns you if an app's publisher changes. See + [Autofill]({{< relref "/hardenedpass/using/autofill" >}}). +- **Refuses outside files.** Other apps can open the app, but it only opens paths that + really are inside your store. + +## What the app does not protect you from + +- **A compromised phone.** Malware that controls an unlocked phone can see what you + see. Keep the system up to date. +- **Your keyboard.** A keyboard app sees everything you type, the passphrase included. + Use one you trust, with network access off if your system allows that. +- **Other apps reading the clipboard** before the timeout runs out. Autofill avoids the + clipboard altogether. +- **A weak passphrase.** If someone gets your key file, the passphrase is all that is + left. +- **Your git server seeing names.** Entry and folder names are file names, and they are + not encrypted, so the server can read them, along with the dates of your commits. +- **Biometric lock as encryption.** **Enable biometric authentication** is a gate at app + start. It keeps out someone holding your unlocked phone for a moment, and it does not + encrypt anything. +- **Losing your key.** No one can recover a store without its private key and passphrase. + +## Passphrase caching + +Caching is convenient, but while the passphrase is cached, anyone who gets into the +unlocked app can open every entry. It is experimental. If you use it, turn on +**Automatically clear passphrase cache** as well. -Text. |
