Termius 安全概览 | 加密、密钥管理、后量子加密的完整图景
安全是 Termius 的产品骨架
和很多 SSH 客户端把安全当作附加功能不同,Termius 的安全模型是从产品设计第一天就嵌进去的——Vaults 的端到端加密决定了它必须有加密密码,加密密码的本地派生决定了它无法做密码找回,后量子加密的前瞻性说明它在认真对待长期安全威胁。
安全全景图
┌─────────────────────────────────────────────────────┐
│ Termius 安全层 │
├─────────────────────────────────────────────────────┤
│ 终端层安全 │
│ ├── 标准 SSH / SFTP / Mosh 加密传输 │
│ ├── FIDO2 硬件密钥身份认证 │
│ ├── TOTP 多因素认证 │
│ └── post-quantum KEX (mlkem768x25519) │
├─────────────────────────────────────────────────────┤
│ 数据存储层安全 │
│ ├── Vaults 端到端加密 (AES-256-GCM) │
│ ├── 加密密码本地派生密钥 (Argon2id) │
│ ├── 密钥对加密存储 │
│ └── 加密密码从不离开设备 │
├─────────────────────────────────────────────────────┤
│ 协作层安全 │
│ ├── Vaults 权限隔离 (完全访问 / 只读) │
│ ├── Business 版审计日志 │
│ └── SSO + MFA (Business / Enterprise) │
├─────────────────────────────────────────────────────┤
│ 同步层安全 │
│ ├── 增量加密同步 (只传变化的加密块) │
│ ├── 冲突自动解决 (last-writer-wins) │
│ └── grpc + HTTP/2 传输 (TLS) │
└─────────────────────────────────────────────────────┘
终端层安全
标准协议支持
- SSH 2.0:标准加密传输,密钥交换算法支持 curve25519、ed25519、rsa-sha2-512 等
- SFTP:基于 SSH 的安全文件传输
- Mosh:基于 UDP 但仍加密(在 SSH 握手之后加密流量)
- Telnet / Serial:Termius 不加密这两个协议(它们本身是明文的),但连接本身仍有 SSH 封装(如果是通过 Jump Host 转发的话)
硬件密钥(FIDO2)
- 支持 YubiKey 5 / Bio、Google Titan、Feitian 等 FIDO2 设备
- OpenSSH 8.2+ 的
sk-ssh-ed25519@openssh.com和sk-ecdsa-sha2-nistp256@openssh.com - 硬件密钥的私钥永远烧在硬件里,无法导出
- 连接时需要物理按下硬件密钥确认
后量子加密(Post-Quantum Cryptography)
9.25.0 版本起支持 mlkem768x25519-sha256 密钥交换算法。
这是 NIST 选定的后量子加密标准之一,用来防范未来量子计算机对经典椭圆曲线加密(ECDH、curve25519)的威胁。Termius 客户端和支持该算法的服务器协商时,会用混合密钥交换方案(X25519 + ML-KEM-768)。
实际意义:
- 现在的量子计算机还解不开 curve25519,但量子计算在加速发展
- 后量子加密是一种「前置防御」——现在先迁移,等量子计算威胁变成现实时已经有保护
- Termius 主动跟进了这个前沿,说明安全投入在持续进行
数据存储层安全
Vaults 加密链路
加密密码 → Argon2id 派生 → AES-256-GCM 密钥 → 加密所有 Vaults 数据 → 上传 Termius Cloud
↓
加密密码在本地内存中,从不发送到服务器
加密密码的属性(再次强调):
- 只在本地内存中,不持久化、不上传
- Argon2id 是内存消耗型哈希,抗 GPU 暴力破解
- AES-256-GCM 同时提供机密性和完整性校验
- 忘记 = 数据永远找不回来(这正是安全的体现)
什么数据被加密
Vaults 里所有数据都加密:
- 主机连接配置(IP、端口、用户名)
- 凭证(密码、API Token、密钥对私钥部分)
- Snippets(命令脚本)
- 端口转发规则
- Known Hosts 指纹
- 命令历史
什么数据不加密(纯本地)
- 终端输出历史(太占空间,而且包含敏感的运行时输出)
- 本地终端会话(Local Terminal)
- 应用 UI 偏好(字体、主题、布局)
协作层安全
Vaults 权限隔离
- 三种 Vault 类型(Personal / Team / Custom)天然隔离
- 每个 Vault 成员权限独立分配
- 只读权限成员能使用 Vault 数据但不能修改
Business / Enterprise 增强
- SAML / OIDC SSO:用公司身份提供商登录 Termius 云账号
- SCIM 用户管理:自动同步公司用户到 Termius
- 审计日志:记录 Vault 数据的访问和操作行为
- 组织级策略:强制启用某些安全要求(比如必须用 FIDO2、必须设强加密密码)
同步层安全
- 传输层:所有同步走 TLS 1.3 + HTTP/2
- 增量同步:只传变化的加密块,传输量最小
- 离线缓存:本地保留所有 Vault 数据的加密副本,断网不影响使用
- 冲突解决:last-writer-wins,不会出现双写冲突
密码管理建议汇总
Termius 里有三个独立的密码 / 密钥,各司其职:
| 名称 | 存哪里 | 用途 | 能否找回 |
|---|---|---|---|
| Termius 登录密码 | Termius 服务器 | 验证你是谁 | ✅ 可以 |
| 加密密码(Encryption Password) | 仅本地内存 | 解密 Vaults 数据 | ❌ 不能 |
| SSH 密钥 passphrase | SSH Key 元数据 | 加密 SSH 私钥 | ❌ 不能 |
最关键的:加密密码一定要存密码管理器。 这是唯一不能找回的东西。
Termius 自身的安全透明性
| 方面 | 现状 |
|---|---|
| 加密方案 | 官方安全白皮书公开 |
| 加密密码处理 | 明确说明从不离开设备 |
| 第三方审计 | 有安全审计历史(未公开完整审计报告) |
| 源码开源 | 不开源(商业软件) |
| 安全漏洞披露 | 有专门的安全联系渠道 |
继续「密钥管理最佳实践」讲 SSH 密钥对的安全管理。