HostDock
安全

加密了什么,我们能看到什么

HostDock 拿着你服务器的钥匙,所以我们宁可说得准确,也不说好听的。这一页列出加密了什么、用什么加密、我们的服务端还能看到什么,以及已知的弱点。

简单说

在你的 Mac 上

HostDock 运行在 macOS 的应用沙盒里,用 Apple Developer ID 签名并经过苹果公证。它只能读你在选择文件的窗口里选中的文件。

密码、私钥、私钥口令、代理密码和 AI 的 API key,在写进 HostDock 本机的 SQLite 数据库之前都用 XChaCha20-Poly1305 加密,加密用的密钥只存在 macOS 钥匙串里。查看保存的密码或导出凭据时,要用触控 ID 或 Mac 的登录密码确认。

SSH、SFTP 和 TLS 都用 Rust 实现(russh 和 rustls)。HostDock 不调用系统的 ssh、scp,也不链接 OpenSSL。第一次连接时显示服务器的主机密钥指纹,之后指纹变了会警告你。

同步用的保险库

打开同步时,第一台设备随机生成一把 256 位的数据密钥。保险库里的每条记录离开你的 Mac 之前,都用从它派生出来的密钥加密。

记录的加密XChaCha20-Poly1305,每条记录一个随机的 24 字节 nonce。记录的 ID 和保险库的代数作为附加数据绑在一起,密文不能在记录之间调换,重置之后也不能被重放
记录的密钥由数据密钥经 HKDF-SHA256 派生
同步密码至少 10 个字符。Argon2id(64 MiB 内存、3 轮、16 字节随机盐)把它变成一把密钥,用来包住数据密钥
恢复码160 位随机数,只显示一次,写成 32 个字符。它包住数据密钥的另一份副本
服务端存什么你的邮箱、Argon2id 的盐和参数、包起来的两份数据密钥、加密后的记录
服务端拿不到什么你的同步密码、恢复码和数据密钥

服务端还能看到什么。保险库的每条记录带一个明文的类别(服务器、密码和密钥、凭据、转发规则、设置),用来执行套餐的上限。所以我们能看到你有几台服务器、几份保存的凭据,以及每条记录的大小和修改时间。看不到名字、地址、用户名、密码和密钥。

删除要用你的密钥。只有解得开的删除记录,HostDock 才会删掉本机的数据。服务端上少了某条记录,HostDock 当作是服务端弄丢了,重新上传。服务端重放的旧密文会被拒绝。

云空间不是端到端加密的

笔记、脚本库、文件站的文件和文件夹、外观设置和你的个人资料,走的是另一条通道,不用保险库的加密。它们传输时用 HTTPS 保护,存放时是原样的,也就是说我们的服务端能读到、也能改动这些内容。登录时应用里会告诉你这一点。

这样取舍是为了登录之后云空间马上能用,不需要同步密码。HostDock 从不把保险库的数据(服务器地址、凭据)放到这条通道上;但如果你把密码写进了笔记,它就是不加密存放的。密码这类东西请放进保险库。

文件的内容经短时有效(15 分钟)的签名地址,直接在你的 Mac 和对象存储之间传输,不经过我们的接口服务器;下载之后 HostDock 会核对每个文件的 SHA-256。

你的账号

AI 助手和 MCP

已知的弱点

报告安全漏洞

请把细节发到 security@hostdock.dev。公开之前,请给我们修复的时间。

把你的服务器收进一个窗口

免费下载,支持 macOS 12 Monterey 及以上。