上传前开始保护
文件内容、文件名、MIME 类型、缩略图、保管库名称以及文件夹名称和结构在上传之前会在您的设备上进行加密。该服务存储密文和包装密钥。仅获取这些存储记录的入侵者不会获取明文保管库密钥、设备机密或您的恢复密钥。
这假设当您创建或解锁保管库时,浏览器、操作系统、交付的应用程序代码和随机数生成器是值得信赖的。静态加密无法保护未锁定的保管库免受设备上运行的恶意代码的影响。
每个保险库都有独立的钥匙
每个保管库都以随机生成的 256 位 AES 主密钥开始。密钥由浏览器的加密随机数生成器生成,而不是直接从您的手势导出。单独的保管库密钥限制了公开的单个保管库密钥的影响。
设备模式将有序点序列与随机 256 位设备秘密相结合。 PBKDF2 与 HMAC-SHA-256(新的 128 位盐)和 600,000 次迭代得出 256 位包装密钥。然后,AES-256-GCM 在该包装密钥下加密主密钥。该服务接收加密的包装器、其盐和公共派生参数。设备秘密保留在该浏览器的本地 IndexedDB 数据库中。
图案仅使用 5 × 5 网格和至少六个不同的点。不支持以前的模式格式。现有保管库需要其恢复密钥来注册新模式。网格大小并不保证密码强度:可预测的手势仍然更容易猜测。设备密钥增加了对仅拥有服务器记录的人的保护,但它不是硬件支持的密钥。复制本地秘密和包装器的人可以尝试离线模式猜测。
密钥使用公钥质询响应来验证您的帐户。帐户身份验证不会派生保管库密钥或解密您的文件。有效的帐户会话和成功的保管库解锁是正常申请流程中的单独要求。
| 目的 | 建造 |
|---|---|
| 保管库主密钥 | 随机256位AES密钥 |
| 密钥包装 | PBKDF2-HMAC-SHA-256 · 600,000 次迭代 · 128 位盐 → AES-256-GCM |
| 元数据和缩略图 | AES-256-GCM · 随机 96 位随机数 · 128 位身份验证标签 |
| 文件密钥派生 | HKDF-SHA-256 · 每个文件随机 256 位盐 · 256 位 AES 输出 |
| 恢复秘诀 | 192个随机位,显示为六组十六进制字符 |
保密和篡改检测
保管库元数据、文件元数据、缩略图和包装密钥使用带有 128 位身份验证标签的 AES-256-GCM。每个独立加密都使用新的随机 96 位随机数。解密在返回明文之前验证标签;修改密文或错误密钥会导致身份验证失败。
其他经过身份验证的数据将每个加密对象与其格式版本、保管库标识符、对象标识符和用途绑定。例如,缩略图和文件元数据记录使用不同的上下文。将加密对象移动到不同的保管库或将其替换为另一个对象会更改经过身份验证的上下文并使验证失败。
经过身份验证的上下文不会隐藏标识符,也不会证明新鲜度。有效的旧记录仍然可以具有有效的标签。应用程序修订检查会检测普通的并发更新,但这并不是针对重放完整旧状态的恶意服务的加密防御。
大文件使用经过身份验证的段
文件内容使用 Tink 描述的 AES-256-GCM-HKDF-SHA-256 流结构,使用浏览器加密原语实现。每个新文件流都有一个 40 字节的标头,其中包含其长度标记、随机的 32 字节盐和随机的 7 字节随机数前缀。
HKDF 从保管库主密钥中派生出单独的文件加密密钥。其上下文包括保管库和文件标识符、明文字节长度和配置的段大小。每个段的 12 字节随机数结合了随机前缀、一个四字节段计数器和一个最终段标志。段携带 128 位 GCM 标签。
该应用程序以大约 5 MiB 的有限段处理文件。段位置、最终段标志和预期字节长度使交换、更改或截断的段无法通过验证。下载在发布每个片段之前对其进行验证;流中后期的错误可能会导致下载不完整,因此成功完成很重要。上传重试会重用已加密的字节,而不是使用相同的段随机数加密新内容。
施工遵循 Tink AES-GCM-HKDF 流媒体规格。 Revault的实施和段配置尚未经过Tink的独立审计或认证。
恢复是获得同一密钥的第二条路径
恢复密钥由 24 个随机字节生成,提供 192 位随机输入。它使用 PBKDF2-HMAC-SHA-256 及其自己的盐独立导出包装密钥,并使用 AES-256-GCM 加密相同的保管库主密钥。任何获得恢复密钥和加密保管库副本的人都可以解密该保管库。
恢复密钥在设置过程中显示,并且服务不会以明文形式存储。将其与加密文件分开保存。清除浏览器数据会删除设备机密;恢复访问需要您帐户的加密云副本和恢复密钥,或导出的加密备份及其恢复密钥。没有提供商持有的主解密密钥。
恢复工具包包含秘密和密钥包装器,但没有文件内容。加密备份包含经过身份验证的清单和加密的文件段,没有浏览器的设备机密。导入验证加密数据并使用新标识符和密钥创建新保管库。
更改图案会替换该设备的包装。它不会轮换保管库主密钥、撤销其他设备、使旧备份失效或更改现有的恢复密钥。如果保管库密钥或恢复机密遭到泄露,请将数据移动到具有新密钥的新保管库中。
本机共享使用独立加密
移动端共享默认使用新的共享密钥封装所选文件版本的密钥,并复用已加密的文件字节。可选的额外隔离会重新加密文件。源保险库密钥保持私密。相同密文可能使共享记录被关联;两种模式都无法收回接收者已保存的副本。
iOS 可以将此密文放置在具有私有只读邀请的单独 CloudKit 记录层次结构中。它不共享保管库的同步区域。跨平台本机共享使用带有 SHA-256 校验和的有界服务器部分。独立随机256位读取和管理能力以散列形式存储在服务器上。解密秘密是单独传递的并且从不上传。受控股份将在发送者选择的时间(30 天内)到期。该服务以原子方式对访问会话进行计数并强制执行所选的最大值、到期和撤销。下载会话最多持续 15 分钟,并且永远不会超过共享过期时间。
接收方验证每个加密段,并使用发送方的单独秘密打开一个隔离的共享保管库。不需要帐户、个人库或模式。个人保管库保持锁定状态。允许导出时,收件人可以保存使用该共享密钥打开的加密 .qvault 副本。否则,出口管制就不存在。临时会话验证正在进行的访问。这些是应用程序控制:无法通过加密方式阻止屏幕截图、修改的客户端和保留的副本。共享是没有持续源更新的快照。无限制的 CloudKit 邀请不会强制执行访问计数或自动过期;访问持续到所有者停止共享为止。删除原件并不会撤销其单独的共享,并且任何撤销都不能撤回已保留的副本。
可选的跳马活动
本机审核日志默认处于关闭状态,并在每台设备上的每个保管库进行配置。最新的 500 个本地事件使用保管库的主密钥和专用的经过身份验证的上下文进行加密。它们排除密钥、模式、文件内容和其他保管库的数据,不同步,并且可以清除或禁用。它们不是防篡改证据。失败的解锁不会分配给保管库。
启用日志记录后创建的新受控共享在共享服务上保留最多 100 个访问会话时间戳。只有管理能力才能找回;该日志不包含收件人身份或解密秘密。禁用本地日志记录会影响未来的共享。现有共享日志保留其原始设置,直到撤销或到期并清理。
可选加密闯入照片
所有者可以为每台设备上的每个保管库单独启用闯入警报。经过三种无与伦比的模式后,前台应用程序可以捕获前置摄像头照片,但需要获得许可、相机可用性和一分钟的冷却时间。系统摄像头指示灯仍然可见。最新的十个警报存储在本地,不会添加到照片或上传。不匹配的模式无法识别目标保管库,因此每个选择加入的保管库都会收到单独加密的设备尝试记录。
专用的 RSA-3072 公钥使用带有 SHA-256 和 MGF1-SHA-256 的 OAEP 为每个警报包装一个新的 256 位 AES-GCM 密钥。这允许在保管库锁定时进行加密。相应的私钥本身在该保管库的主密钥下通过专用的经过身份验证的上下文进行加密。只有解锁该保险库才能解密其照片。警报显示在其审核视图中,独立于普通活动日志记录,并且可以在闯入警报设置中清除。它们不是防篡改证据。
加密上传到您自己的存储桶
保管库的存储设置可以将此浏览器直接连接到用户指定的 S3 兼容 HTTPS 端点。选定的设备文件使用相同的文件结构进行本地加密。每个都成为一个单独的、可移植的 .qvault 对象,其中包含经过身份验证的加密清单和包装的保管库密钥。随机对象名称可以避免暴露原始文件名。恢复需要下载的对象和保管库恢复密钥。
端点配置和凭证通过专用的经过身份验证的上下文在保管库主密钥下进行加密,并保存在该设备的 IndexedDB 中。它们不会同步或发送到 Revault 的 API。请求签名使用 AWS 签名版本 4、HMAC-SHA-256 以及每个有界请求正文的哈希。八 MiB 多部分部分将已加密的字节直接传送到存储提供商。存储桶访问仍然受该提供商的权限和 CORS 策略的约束。
提供者可以查看访问密钥标识符、对象路径、字节大小、上传时间和连接信息。保持存储桶的私有性,并将其凭据限制在所需的操作范围内。上传的对象独立于Revault云同步和共享。锁定或取消尝试以中止未完成的上传;选项卡关闭或连接丢失可能会留下孤立的部分,因此请配置不完整上传生命周期规则。 Safe Exit 删除其他保管库的本地存储凭证,但不会从其存储桶中删除对象。
Safe Exit 删除本地访问
您可以在此浏览器中将一个保管库指定为 Safe Exit 保管库。输入该金库的模式可以正常打开它,没有触发确认或完成通知。其他保管库的本地快照、加密块、设备机密和排队更改将被删除。未同步的数据可能会丢失。
持久的本地边界会阻止这些保管库自动列出或通过此浏览器上的同步进行恢复。他们的加密云副本和其他设备上的副本保持不变。恢复是明确的,一次一个保管库,并且需要该保管库的恢复密钥才能注册新的设备模式。
这是本地访问删除,不保证物理擦除或取证隐藏。浏览器配置文件、文件系统快照、之前的下载、屏幕截图、服务记录和其他设备都可以保留证据。清除该浏览器的本地数据也会清除本地隔离边界;全新安装可以在身份验证后再次列出帐户的云保管库。
仍然可见的内容
加密保护的是内容,而不是有关存储的所有事实。该服务可以观察帐户关联、随机对象标识符、对象计数、字节大小、修订、时间戳、加密包装器、流标头和请求活动。网络和操作记录可以揭示连接信息。这不是匿名系统,也不提供流量分析阻力。
当应用程序通过 HTTPS 提供服务时,传输加密可保护传输中的请求。这与客户端加密不同,客户端加密在服务中对存储的文件内容进行加密。
保护结束的地方
当私人会话结束时,私人浏览通常会删除本地存储。持久存储请求不会使隐身会话永久化。同步的云副本仍然存在,但本地模式、未同步的更改、缓存的文件和 Safe Exit 设置可能会丢失。新的私人会话需要帐户访问权限和您的恢复密钥才能注册新模式。
应用程序会在锁定时删除其内存保管库密钥引用并撤销私有预览 URL。当隐藏时或五分钟不活动后,它会自动锁定。本机应用程序还会在后台锁定、删除临时预览以及在操作完成时擦除拥有的密钥缓冲区。浏览器、Swift 和 JVM 内存管理无法保证立即擦除每个密钥副本或解码的媒体缓冲区。
恶意软件、不安全的扩展、受损的应用程序代码或查看解锁屏幕的人都可以捕获明文和秘密。加密无法防止帐户拒绝服务、删除云对象、勒索软件、恢复密钥丢失或服务扣留数据。保留单独的加密备份并保护设备本身。
Revault尚未经过独立的安全审核。这些是对所实施的加密设计的描述,而不是针对每次入侵的认证或保证。