跳转到内容
HexaTransfer
返回博客
加密与安全

零信任文件共享:不信任任何人,加密一切

将零信任安全原则应用于文件共享。了解为什么假设每个网络都是敌对的能带来更好的加密实践。

零信任文件共享假设网络是敌对的、服务器已被攻陷、接收方的设备可能已感染恶意软件——然后据此进行加密。文件在发送方浏览器中用 AES-256-GCM 加密后才传输任何字节,密钥从密码加上存储在 URL 片段中的 salt 派生,服务器只处理不透明的密文。这是 NIST SP 800-207 应用于文件传输的运营模式:明确验证、授予最小权限、在每一层都假设已发生泄露。

驱动设计的三个前提

零信任始于三个假设。第一,传输信道已被攻陷——企业代理进行 TLS 检查,咖啡馆 Wi-Fi 运行 ARP 欺骗,国家级骨干网监听客观存在(斯诺登 2013 年记录,彭博社 2024 年报道仍在运作)。第二,服务器已被攻陷——云提供商会遭遇泄露(AWS 2019 年,微软 2023 年),管理员可能变节,传票会悄然到达。第三,接收方的设备可能已被感染——员工笔记本运行着过时的 Chrome,恶意软件会抓取解密后的文件。所有设计决策都从这三个假设出发。

客户端加密作为第一原则

如果服务器能看到明文,就不是零信任。一切从发送方浏览器运行 Web Crypto API 开始:生成 256 位密钥,用 PBKDF2 以 600,000 次迭代从用户密码派生,以 AES-256-GCM 加密文件,然后才将密文流式传输到服务器。Firefox Send 在 Mozilla 于 2020 年关闭它之前已在消费者规模上证明了这一方案的可行性。现代继承者——HexaTransfer、Wormhole、Skiff——延续了这一模式。服务器持有它无法读取的字节。

密钥材料永不离开端点

解密密钥必须在不接触服务器的情况下到达接收方。两种机制可行:第一,URL 片段技巧:密钥存储在下载 URL 的 # 之后,浏览器永远不会在 HTTP 请求中发送片段内容。第二,密码派生密钥:发送方通过独立渠道(Signal、电话、1Password Psst!)告知接收方密码,接收方的浏览器重新派生密钥。两种方式都使密钥材料远离服务器日志、CDN 缓存和数据库备份——这在不可避免的泄露发生时至关重要。

验证在浏览器中运行的代码

客户端零信任比服务端更难,因为服务器负责传输执行加密的 JavaScript。恶意服务器可以向特定目标用户推送含后门的包。缓解措施:发布每个版本所有文件的 SHA-384 哈希,以 Sigstore 或企业 PGP 密钥签名,鼓励高级用户通过 Code Verify 等浏览器扩展(Meta 为 WhatsApp Web 提供)进行验证。带有 script-src 'self' 的 CSP 头和子资源完整性(Subresource Integrity)可阻止来自被攻陷 CDN 的注入。这些措施都不完美,但能显著缩小攻击面。

无需在服务端存储共享密钥的认证

通过电子邮件发送并存储在服务器数据库中的密码,是零信任的对立面。用绑定到接收方设备的 WebAuthn 通行密钥替换它——私钥永不离开安全飞地(Secure Enclave),服务器只存储公钥。对于一次性传输,使用 OPAQUE(RFC 9380)进行密码认证,该协议在服务端既不传输也不存储密码。发送到预验证邮件地址的魔法链接提供了中间路径:令牌的熵值(128 位)消除了对存储密钥的需求。

按敏感度划分传输类别

并非每个文件都需要相同的控制措施。零信任文件共享服务应让发送方对上传内容进行分类:公开(无密码,7 天过期)、内部(密码,48 小时过期)、机密(密码加 2FA,4 小时过期,单次下载)、受限(通行密钥加 IP 绑定,15 分钟过期)。尽可能根据文件类型自动分类:.pdf 税务记录 → 机密;.docx 合同 → 内部;.psd 营销素材 → 公开。NIST SP 800-171 将其称为受控非密信息处理,可直接映射到传输工作流程。

将接收方设备视为不可信

Bob 解密了 Alice 的 5 MB 法律简报后,文件就存储在他的下载文件夹中。如果他的笔记本受到攻击,文件就会泄露。零信任思维延伸至此:鼓励接收方在临时存储中解密(Tails OS、Chrome OS 访客会话),避免在共享设备上解密,并在使用后积极清除。对于高风险传输,使用受保护查看器——在沙箱化的浏览器标签页中解密并防止下载,接收方看得到 .pdf 但永远得不到磁盘上的字节。这对用户体验有所影响,应仅在最高级别使用。

审计日志中的最小必要原则

零信任审计跟踪仅记录事件响应和合规所必需的内容,不多一字。每日对 IP 地址进行哈希处理,只存储 User-Agent 家族(而非完整字符串),永不记录密码或密钥,按各法规要求的最短期限保留——GDPR 第 30 条目的保留 90 天,HIPAA 164.316 保留 6 年。日志本身存储在只追加存储上(S3 对象锁定,合规模式),使被攻陷的管理员无法掩盖痕迹。每日将 Merkle 根发布到公开公告板可增加外部验证。

零信任与法律现实的交汇

零信任不能使您免于执法请求。它改变的是您所能交出的内容——您无法解密的密文、您无法反转的 IP 哈希、谁访问了哪个标识符的日志。这通常已足以满足有效的法院命令,同时保护用户数据不受大规模监控。发布透明度报告(参考 Twitter 的旧有模式),展示请求量和响应率。在隐私政策中记录您的数据最小化措施,让用户理解权衡:您可以验证文件已被传输,但无法读取内容,也无法确定地识别接收方身份。

在 hexatransfer.com 上试试 — 免费、无需注册、最多 10 GB。

通过端到端加密安全发送大文件

通过端到端加密免费传输最大10GB的文件。无需注册账户。文件在上传前在浏览器中加密,其他人无法读取。

发送文件