端到端加密是什么意思?
大多数传输服务会在传输过程中(TLS)和存储在服务器上时对文件加密。这对外部攻击很有效,但密钥掌握在服务方手里,技术上服务方是能读取文件的。端到端加密(E2EE)把加密移到了两端:你的浏览器在上传前加密,收件人的浏览器在下载后解密,中间服务器上的数据,没有不在服务器上的那把密钥就无法读取。
| 普通传输 | 端到端加密传输 | |
|---|---|---|
| 传输加密(TLS) | 有 | 有 |
| 存储加密 | 有(存储端) | 有,上传前用你的密钥 |
| 密钥保存在我们的服务器上 | 由存储管理 | 完全不保存 |
| 服务器能看到文件名、标题、留言 | 能 | 不能,已加密 |
| 下载页预览 | 服务器生成 | 浏览器解密,单个文件最大 2GB |
| 在 Transfr 上的费用 | 免费 | 免费 |
实际的区别是:用了 E2EE,即使存储被入侵、被误访问,或者服务方收到法律要求,能拿到的也只是加密数据。想通俗地了解原理,可以读「通俗讲解端到端加密」。
发送端到端加密传输的步骤
第 2 步
开启端到端加密
在传输设置里打开。浏览器会生成一把随机密钥,在上传的同时逐个加密文件。
第 3 步
需要的话再加密码
密码会参与生成密钥,即使拿到完整链接,没有密码也无法解密。
第 4 步
分享完整链接
复制包含“#”后面部分的完整链接,或者通过 Transfr 发邮件给最多 10 人。收件人打开链接后,由他的浏览器解密文件。
给下一次传输加密
端到端加密免费,单次最大 100GB。
技术原理
- 每次传输都在浏览器里生成一把新的随机密钥。
- 每个文件用 AES-GCM 加密,并分小块流式处理,大文件也不必整个放进内存。这一方案沿用了 Mozilla 开源项目 Send 的设计。
- 密钥放在 URL 的片段(“#”后面)里。 浏览器打开页面时不会把片段发给服务器,所以打开链接时密钥也不会传到我们的服务器。
- 文件名和留言同样加密: 文件名、文件类型、传输标题和留言没有密钥都无法读取。
- 同时设置了密码时,解密密钥在浏览器里由链接中的密钥和密码共同生成。服务器只保存用于校验密码的哈希值。
端到端加密也隐藏不了的东西
做安全判断时,清楚了解局限很重要。即使使用 E2EE,服务器仍然知道传输存在、加密文件的大小和数量、创建时间以及下载时间。另外,任何拿到完整链接的人都能解密。所以和密码、较短的过期时间一起用效果更好。
链接的安全也取决于你把它放在哪里。含完整链接的邮件会像其他邮件一样留在收件人的邮箱里,发到群里的链接群成员都能看到。如果担心,可以自己复制链接、通过可信的渠道发送,再用另一种方式告知密码。这样只偷看到一条消息是打不开文件的。
开启前需要了解的不便之处
| 功能 | 普通传输 | 使用 E2EE 时 |
|---|---|---|
| 文件夹结构 | 保留 | 以文件列表形式发送(文件夹路径会暴露名称) |
| 关闭页面后续传 | 可以(6 天内) | 不可以(密钥只在该页面里) |
| 预览 | 所有支持的格式 | 浏览器解密,单个文件最大 2GB |
| 从 Drime 导入的文件 | 支持 | 不可用 |
| 密码、过期时间、最大下载次数 | 可用 | 可用 |
需要保留结构的文件夹,先打包成 ZIP 再用端到端加密发送。如果要在不稳定的网络下上传 100GB,为了能续传,也可以改用密码加较短的过期时间。参考「发送文件夹」和「发送 100GB 文件」。
什么时候应该用端到端加密
- 法律、医疗、财务文件: 合同、病历、账单、身份证件扫描件。详见「律师事务所的安全文件传输」。
- 未公开的创作: 电影、专辑、尚未发布的营销素材。
- 个人信息: 限定谁能读取本身就是义务的一部分。处理欧洲个人数据时请看「符合 GDPR 的文件传输」。
- 一旦链接泄露就说不清楚的任何东西。
如果只是分享旅行照片这类日常用途,普通传输加密码往往就够了,还能保留文件夹和续传。各种保护方式的对比见「如何安全地发送文件」,两者如何搭配见「给文件设置密码后发送」。
从设计上保护隐私
在浏览器中加密,密钥不保存在我们的服务器上。免费。