Security
An SSH client has access to every server you run. This page describes how Termora protects that access.
The vault
Everything you save in Termora, including hosts, groups, keys and known hosts, is encrypted on your computer before it's written to disk.
- 1Your master password
Never stored or sent anywhere.
- 2Memory-hard key derivation
Deliberately slow, so guessing passwords is expensive.
- 3Your vault key
Random and unique to your vault. Only decrypted in memory.
- 4Encrypted records
Each item is encrypted separately with authenticated encryption, so tampering is detected.
One saved host, as stored on disk
9f2c 71ae 0b4d e83f 5a61 c9d0 7e12 44b8 a3f6 0c9e 2d57 b1a4 68ef 13c0 d95b 7a28 f041 6ce3 8b1d 52a9 e7c4 309f 1bd6 84e2 af73 c518 06bd 3e9a 72f5 d460web-01, deploy@web-01.prod.internal:22, in Production, tagged nginx and eu-westWithout your master password, the vault file can't be read. Names, addresses, users, tags and keys are all encrypted.
Tampering is detected
Each item is encrypted separately. If an item is edited, swapped or rolled back, Termora refuses to use it.
Hostnames too
Host names, addresses, users and tags are encrypted, so the vault file doesn't reveal your servers.
The Recovery Key
A random key, shown once during setup, that unlocks the vault if you forget your password. Termora doesn't keep a copy.
Secrets stay out of the interface
The interface handles what servers send back, the least trusted input, so it never has access to secrets.
Interface
- Does
- Draws Termora and your terminals.
- Holds
- Names, fingerprints and terminal text. Never a private key or password.
Main process
- Does
- Windows, menus and updates.
- Holds
- No secrets. Never connects to your servers.
Security core
- Does
- Connections, encryption, keys and the vault.
- Holds
- The only process that decrypts secrets, and only while they are needed.
The three processes communicate only through narrow, validated channels, so a flaw in one can't expose what the others hold.
Sandboxed interface
The interface runs sandboxed, with no file or system access, and loads nothing from the internet.
Server output is text
Terminal output, file names and login banners are rendered as text, never HTML, so a server can't inject content into Termora.
Only fingerprints reach the interface
Private keys are decrypted only when a connection needs them, then cleared from memory. The interface only receives public keys and fingerprints.
Connections
Host keys are checked on every connection
On first connect, Termora shows the server's fingerprint and asks you to confirm it. If the fingerprint later changes, the connection is blocked and both keys are shown. Trusting the new key is a separate step in the host's settings.
Saved passwords can't be read back
You can replace a saved password, but Termora never displays it.
Agent forwarding is off by default
Turn it on per host or per group.
Locking and unlocking
Termora locks after the idle time you choose, on sleep and when the screen locks. Locking clears every decrypted key and password from memory.
Your master password always works. Before 1.0, Termora will also support Touch ID, Windows Hello and FIDO2 security keys such as YubiKey, instead of the password or as a second factor.
What we can see
Nothing about your servers. Termora doesn't need an account. Other than your servers, Termora only contacts our update server to check for new versions.
The counters on Home, such as commands run and time connected, are counts only. They don't include what you typed, stay on this computer and can be reset in Settings.
Crash reports will come with the beta, off by default. Host names, commands, terminal output and keys are removed before a report is sent.
Sync will be end-to-end encrypted. Our servers will store data they can't read.
Testing
Every sign-in method, jump hosts and host key changes are tested against real SSH servers. The vault is tested to confirm it rejects tampered data.
Found a problem?
Please email security@termora.dev with the details. We'll confirm receipt and keep you updated until it's fixed. Please allow reasonable time for a fix before publishing.