本地加密与数据恢复说明
Termark 会在本机保存主机、凭证、同步配置等数据。为了避免敏感信息以明文形式直接落盘,Termark 对本地敏感字段做字段级加密。
普通安装版会把解密所需的本地数据密钥交给操作系统的安全存储管理;Windows 便携版会要求你设置本地加密口令,并用这个口令直接派生本地数据密钥。
这意味着:数据可以在你的设备上正常使用,但我们无法拿到你的本地数据密钥,也无法在没有密钥或同步密码的情况下帮你解开数据。
本地数据如何加密
本地敏感字段会使用一个 32 字节本地数据密钥加密。这个密钥不会以明文写入 Termark 的普通数据库文件。
普通安装版会把本地数据密钥保存到系统 keychain 中:
| 普通安装版平台 | 系统安全存储 |
|---|---|
| macOS | Keychain |
| Windows | Credential Manager |
| Linux | Secret Service |
普通安装版首次启动时,Termark 会生成一个 32 字节随机密钥,作为本地数据加密密钥,并保存到系统 keychain 中。Termark 在系统 keychain 中使用的服务名是 termark.app,普通安装版的本地数据密钥条目名是 local-data-key。
Windows 便携版使用独立的 portable 密钥模式:Termark 首次启动时会要求你设置一个本地加密口令,并使用 Argon2id 从该口令和随机 salt 派生出 32 字节本地数据密钥。数据库中只保存非秘密的 KDF 参数,包括版本、KDF 名称、salt、time、memory 和 threads;不会保存你的明文口令,也不会保存明文的本地数据密钥。
便携版成功设置或解锁后,会把派生出的本地数据密钥缓存到系统 keychain 中,服务名同样是 termark.app,条目名是 portable-local-data-key。这个条目和普通安装版的 local-data-key 相互独立,避免便携版覆盖安装版的本地数据密钥。
便携版启动时会优先尝试读取 portable-local-data-key 缓存;如果缓存不存在、不可访问,或者校验失败,Termark 会要求你重新输入本地加密口令。输入正确后,Termark 会根据数据库中保存的 KDF 参数重新派生本地数据密钥,并再次缓存到系统 keychain。也就是说,迁移到新设备时不需要携带旧设备上的 portable-local-data-key 缓存,但必须保留完整数据目录、记住本地加密口令,并确保当前系统 keychain 可访问。
数据库写入时,Termark 会使用这个本地数据密钥,通过 AES-256-GCM 加密敏感字段。每次加密都会生成新的随机 nonce,所以即使两次保存相同内容,落盘后的密文通常也不同。
数据库读取时,Termark 会先读取或派生本地数据密钥,再解密数据库中的敏感字段,然后提供给应用界面和连接逻辑使用。普通安装版会从系统 keychain 读取 local-data-key;Windows 便携版会从系统 keychain 读取 portable-local-data-key,或者通过你输入的本地加密口令重新派生。如果对应的密钥来源不可用、本地加密口令错误,或者本地数据密钥无法通过校验,Termark 会拒绝以未加密状态继续写入新数据。
哪些内容会加密
当前本地字段级加密主要覆盖连接和凭证中的敏感内容,包括:
- 主机手动登录密码
- 主机代理密码
- 凭证密码
- SSH 私钥
- SSH 私钥密码短语
主机名、地址、端口、分组、备注、终端偏好等用于展示和管理的普通配置仍然会以可读配置形式保存。这样可以保证列表、搜索、排序等功能正常工作,同时把真正敏感的口令和密钥类字段加密落盘。
同步数据如何加密
如果你启用了数据同步,同步数据会使用另一套加密方式。
同步密码由你设置,Termark 使用 PBKDF2-SHA256 从同步密码和随机 salt 派生 32 字节密钥,再使用 AES-256-GCM 加密需要上传的同步数据。上传到同步服务端或第三方存储中的内容是密文。
同步密码不会上传给服务端。服务端只负责保存和传输密文,无法解密你的主机、凭证、私钥等信息。
如果你选择“记住同步密码”,Termark 会把同步密码保存到系统 keychain 中,服务名同样是 termark.app,但条目名是 sync-passphrase。它和普通安装版的本地数据密钥条目 local-data-key 是两个不同条目,互不替代。
为什么我们无法解开你的数据
Termark 的加密设计把解密能力留在你的设备和你本人手里:
- 本地数据库中的敏感字段需要本地数据密钥才能解密。
- 普通安装版的
local-data-key保存在你设备的系统 keychain 中,不会上传到 Termark 服务端。 - Windows 便携版的本地数据密钥由你的本地加密口令和数据库中的 KDF 参数派生;系统 keychain 中的
portable-local-data-key只是本机缓存,不会上传到 Termark 服务端。 - 同步数据需要你设置的同步密码才能解密。
- 同步密码不会上传给服务端;即使选择记住,也只是保存在你设备的系统 keychain 中。
- AES-GCM 带有完整性校验,使用错误密钥或错误同步密码时,解密会失败,而不是得到可读数据。
因此,如果你只提供数据库文件、同步密文或服务端数据,我们无法从中还原你的密码、私钥或其他敏感字段。普通安装版没有对应的系统 keychain 条目,Windows 便携版没有本地加密口令,或者同步数据没有同步密码时,密文对我们也是不可读的。
丢失密钥或密码会发生什么
以下情况可能导致原有敏感数据无法解密:
- 删除或重置了系统 keychain 中的
termark.app / local-data-key条目。 - 使用普通安装版时,重装系统或迁移数据只迁移了 Termark 数据库,没有迁移系统 keychain。
- 使用普通安装版时,在另一台设备上直接复制本地数据库文件,但没有对应的本地数据密钥。
- 使用 Windows 便携版时,忘记了首次设置的本地加密口令。
- 使用 Windows 便携版时,数据库中的 portable KDF 参数或本地数据密钥校验值被删除、损坏。
- 忘记同步密码,且没有在任何仍可访问的设备上保留它。
- 操作系统 keychain 损坏、被清理工具删除,或当前用户无法访问 keychain。
如果本地数据密钥丢失,Termark 无法解密原数据库中的敏感字段。你仍可能看到部分非敏感配置,但密码、私钥、代理密码等密文字段无法恢复。
如果同步密码丢失,Termark 无法解密云端同步数据。我们也无法通过服务端数据帮你重置或找回同步密码。
备份建议
为了避免误删或迁移时丢失访问能力,建议:
- 迁移普通安装版数据时,不要只复制 Termark 数据目录,也要使用操作系统提供的迁移工具迁移 keychain。
- 迁移 Windows 便携版数据时,请完整复制程序目录下的
data目录,并妥善保存你设置的本地加密口令。新设备上如果没有portable-local-data-key缓存,可以通过这个口令重新解锁;同时要确保新设备当前用户可以访问系统 keychain。 - 启用同步时,请妥善保存同步密码,例如放入你信任的密码管理器。
- 在旧设备仍可使用时完成新设备登录和同步确认,再清理旧设备。
- 如果你需要长期归档,请同时确认本地数据、对应密钥来源和同步密码的可用性。普通安装版需要确认系统 keychain 可用;Windows 便携版需要确认数据目录完整,并确认本地加密口令可用。
Termark 不会为你托管本地数据密钥或同步密码。这个限制会带来一个结果:我们不能代为恢复丢失的敏感数据;同时也避免了服务端或工作人员拥有解密用户数据的能力。