VeilShare 如何保护你的文件安全

VeilShare 的设计初衷,就是让你根本不必把文件托付给我们。所有内容在上传前都会在你的设备上加密,密钥始终掌握在你手中。本页将详细介绍其工作原理、我们如何保护你的账号,以及数据中心出现问题时你的数据会怎样。

最后更新:

安全概览

  • 文件、文件和文件夹名称以及预览图,都会在上传前于浏览器中使用 AES-256-GCM 加密
  • 加密密钥从不会以可用形式到达我们的服务器,所以我们无法读取你的文件
  • 你的账号密码永远不会离开你的设备
  • 可选的两步验证,通过邮件发送一次性验证码
  • 文件冗余存储在多个数据中心,可抵御火灾和水灾
  • 服务器和数据库位于芬兰,受 GDPR 和芬兰数据保护法约束

AES-256-GCM 端到端加密

上传文件时,你的浏览器会专门为这个文件生成一个全新的随机 256 位密钥。文件会被切分成多个数据块,每个数据块都使用各自唯一的随机数(nonce)通过 AES-256-GCM 加密,然后才会发送给我们。文件名也用同一个密钥加密,所以我们连你分享的是什么都不知道。对于照片和视频,浏览器会生成一张小预览图,并用同一个密钥加密。

文件夹的原理相同。每个文件夹都有自己的随机密钥,用于加密文件夹名称,并锁住其中所有内容的密钥。因此,分享一个文件夹只会开放该文件夹的访问权限,不涉及其他任何内容。

AES-GCM 是一种认证加密算法。只要加密文件中有一个比特发生变化,无论是磁盘故障还是有人篡改,解密都会直接失败,而不会悄悄交给你一个损坏的文件。

密钥存放在哪里

每个分享链接都有自己的随机密钥,放在链接中 # 后面的部分。浏览器从不会把 URL 的这部分发送给服务器。收件人打开链接时,他们的浏览器会用这个密钥解开文件的密钥,下载加密文件并在本地解密。我们自始至终只能看到加密数据。

零知识账号

使用 VeilShare 不需要账号。即使你注册了账号,我们也依然无法读取你的文件,而且你的密码永远不会离开你的设备。

登录时,你的浏览器会用 Argon2id 处理你的密码。这是一种内存密集型算法,专门用来让密码猜测变得缓慢且代价高昂。浏览器会从结果中派生出两个独立的密钥:一个用于向我们的服务器证明你的身份,另一个用于解锁你的个人主密钥。服务器只保存第一个密钥的加盐哈希,而你的主密钥则用第二个密钥加密后存储。

保存在你账号中的每个文件和文件夹,其密钥都直接或通过所在文件夹由你的主密钥锁住。这样你登录后就能在任何设备上打开文件,而我们手里始终只有上了锁的副本。

恢复密钥与密钥轮换

注册时你会获得一个恢复密钥。如果你忘记了密码,它是保住已保存文件访问权的唯一方法,因为我们无法重置我们根本不持有密钥的加密。如果你认为密钥可能已经泄露,可以在设置中更换主密钥,浏览器会用新的主密钥重新锁住你保存的所有文件。

两步验证

在账号设置中开启两步验证后,仅凭正确的密码将无法登录。

  • 验证码由密码学安全的随机数生成器生成
  • 每个验证码 10 分钟后失效,且只能使用一次
  • 验证码以哈希形式存储,从不保存明文
  • 验证码尝试和重新发送请求都有频率限制,以阻止暴力破解

你还可以查看登录了你账号的所有设备,并逐个或一次性退出你不认识的会话。

保护分享链接

任何拿到链接的人都能解密链接指向的内容,因此我们提供了相应的工具,帮你限制谁可以使用链接以及可以使用多久。文件夹链接包含文件夹中的所有内容,包括你之后添加的文件,直到链接被停用或达到设定的限制为止。

密码保护

为分享链接设置密码后,没有密码就无法打开。密码在发送前会先在浏览器中经过 PBKDF2 哈希处理,以恒定时间方式校验,连续输错会被拦截。这只是给链接多加了一把锁,并不是额外的加密层,所以链接和密码仍应通过不同的渠道分享。

有效期与下载次数限制

分享链接可以在设定的时间后或达到设定的下载次数后失效,你也可以随时停用它们。链接一旦失效,任何人都无法再通过它访问文件,而且无法重新启用。如果想再次分享该文件或文件夹,你需要创建新的分享链接。未注册账号时上传的文件和文件夹随后会在一小时内被永久删除;账号中的文件会一直保留,直到你删除为止。

抵御火灾、水灾和硬件故障

加密保护你的文件不被他人窥探。下面介绍我们如何保护文件免受火灾、水灾和硬件故障等物理灾害的影响。

即使整个数据中心损毁,文件也不会丢失

加密后的文件存储在 Cloudflare R2 上,它专为极高的持久性而设计。每个文件都以多个副本或纠删码分片的形式,分散存储在同一区域内多个数据中心的大量磁盘上。Cloudflare 的设计目标是:即使发生磁盘故障,或数据中心遭受火灾、水灾等物理损坏,数据也能完好保存。

位于芬兰的服务器和数据库,每日备份

我们的应用服务器和数据库运行在芬兰赫尔辛基的 Hetzner 数据中心,该数据中心通过了信息安全管理国际标准 ISO/IEC 27001:2022 认证。这意味着你的账号数据受 GDPR 和芬兰《数据保护法》保护。

数据库每天自动备份,并保留最近七天的备份。如果服务器出现故障,我们可以从最近的备份中恢复。

硬件被盗也不会泄露你的文件

你的文件、文件和文件夹名称以及预览图,都使用我们从不持有的密钥加密。因此,无论是磁盘被盗、备份泄露,还是我们的服务器遭到入侵,都无法暴露你分享的内容。

我们无法防范的情况

没有任何服务能承诺绝对安全,我们宁愿坦诚地告诉你风险在哪里:

  • 你或收件人设备上的恶意软件
  • 我们能看到运行服务所需的基本元数据,比如文件大小、链接过期日期,以及文件如何归入各个文件夹
  • 我们能看到运行服务所需的基本元数据,比如文件大小、过期日期和其他一些非敏感数据

我们处理哪些数据、保留多久,完整清单请见隐私政策。发现了安全问题?请告诉我们,我们会尽快调查。

常见问题

不能。文件在上传前就已在浏览器中加密,密钥保存在你的分享链接中;如果是账号中的文件,则由你的密码锁住。我们存储的只有我们无法解密的加密数据。

AES-256-GCM,与银行和政府机构使用的认证加密标准相同。每个文件都有自己的随机 256 位密钥,账号密码则使用 Argon2id 加固。

加密文件存储在 Cloudflare R2 上,每个文件都分散存放在多个数据中心的多块磁盘上,即使一个站点损毁也能重建。我们的数据库每天也会自动备份。

没有恢复密钥就不行。对于分享链接,密钥本身就是链接的一部分。对于账号中的文件,你可以用注册时显示的恢复密钥重置密码。如果两者都没有,包括我们在内,任何人都无法解密这些文件。

支持。在账号设置中开启后,每次登录还需要输入发送到你邮箱的 6 位验证码,有效期 10 分钟。

参考来源

安全地分享文件

免费,无需注册。文件在上传前就已在浏览器中加密,我们无法读取。

分享文件