上传前开始保护
本机保管库在本地工作,无需 Revault 帐户。文件内容、文件名、MIME 类型、缩略图、保管库名称、文件夹、标签和收藏夹均在设备上加密。本地使用不会将 Vault 文件上传到 Revault。本机云同步和共享是可选的单独操作。
该模型假设创建或解锁保管库时有一个值得信赖的操作系统、已安装的应用程序和加密随机源。如果没有所需的秘密,仅拥有加密文件和密钥包装器的人无法解密它们。在保管库打开时运行的恶意软件或受感染的应用程序可以捕获明文和密钥。
每个保险库都有独立的钥匙
每个保管库都以随机的 256 位 AES 主密钥开始,该主密钥是使用操作系统的加密随机源生成的。手势并不直接决定这个键。每个保险库都有独立的主密钥材料,因此泄露一个保险库密钥不会衍生出另一个。
设备模式将其有序点序列与随机 256 位设备秘密相结合。生成的输入使用 NFKC 进行归一化,并使用新的 128 位盐和 600,000 次迭代传递到 PBKDF2-HMAC-SHA-256。派生的 256 位密钥使用 AES-256-GCM 包装主密钥。该应用程序不保存纯文本模式或单独的模式指纹。
图案使用具有 6 到 25 个不同点的 5 × 5 网格,并且在同一设备上注册的保管库中必须是唯一的。匹配的图案只会打开它的金库;其他保管库名称和内容仍然隐藏。可预测的手势仍然更容易猜测。获得设备秘密及其加密包装的人可以尝试离线模式猜测。
打开本机保管库需要其本地模式或显式恢复流程,而不是 Revault 帐户或密钥。可选的云同步使用平台的Apple或Google授权,商店购买使用平台计费帐户。云授权和购买都不提供保管库解密密钥。
| 目的 | 建造 |
|---|---|
| 保管库主密钥 | 随机256位AES密钥 |
| 密钥包装 | PBKDF2-HMAC-SHA-256 · 600,000 次迭代 · 128 位盐 → AES-256-GCM |
| 元数据和缩略图 | AES-256-GCM · 随机 96 位随机数 · 128 位身份验证标签 |
| 文件密钥派生 | HKDF-SHA-256 · 每个文件随机 256 位盐 · 256 位 AES 输出 |
| 恢复秘诀 | 生成:18个随机字(198位);自定义:至少 6 个不同的单词和 32-512 个字符 |
仅设备密钥保护
在 iOS 上,设备锁使用 WhenUnlockedThisDeviceOnly 保护存储为非同步 Keychain 项。仅当设备解锁且不通过 Keychain 同步迁移时才可访问。存储的秘密不是 Secure Enclave 密钥。
在 Android 上,设备锁使用 AES-256-GCM 在需要解锁设备的不可导出 Android Keystore 密钥下进行加密。加密的锁定文件位于应用程序的无备份目录中。 Keystore 硬件支持取决于设备;该应用程序不承诺每个设备都使用硬件支持的密钥。
本地解锁机密不包括在本机云同步和便携式保管库备份中。拥有 Apple 或 Google 帐户不会重新创建这些秘密或自动解锁已恢复的保管库。新设备必须验证独立的恢复秘密并注册自己的模式。
保密和篡改检测
保管库元数据、文件元数据、缩略图和包装密钥使用带有 128 位身份验证标签的 AES-256-GCM。每个独立加密都使用新的随机 96 位随机数。解密在返回明文之前验证标签;修改密文或错误密钥会导致身份验证失败。
其他经过身份验证的数据将每个加密对象与其格式版本、保管库标识符、对象标识符和用途绑定。例如,缩略图和文件元数据记录使用不同的上下文。将加密对象移动到不同的保管库或将其替换为另一个对象会更改经过身份验证的上下文并使验证失败。
经过身份验证的上下文不会隐藏标识符,也不会证明新鲜度。有效的旧记录仍然可以具有有效的标签。应用程序修订检查会检测普通的并发更新,但这并不是针对重放完整旧状态的恶意服务的加密防御。
大文件使用经过身份验证的段
本机文件加密使用 Tink 描述的 AES-256-GCM-HKDF-SHA-256 流式构造。 iOS 使用 CryptoKit 表示 AES-GCM 和 HKDF; Android 使用平台加密原语。每个新流都有一个 40 字节标头,其中包含其长度标记、随机 32 字节 salt 和随机 7 字节随机数前缀。
HKDF 从保管库主密钥中派生出单独的文件加密密钥。其上下文包括保管库和文件标识符、明文字节长度和配置的段大小。每个段的 12 字节随机数结合了随机前缀、一个四字节段计数器和一个最终段标志。段携带 128 位 GCM 标签。
本机应用程序以大约 5 MiB 的有限段处理文件。段计数器、最终段标志和预期字节长度检测更改、重新排序或截断的段。每个片段在使用前都会经过身份验证,只有在其文件完成解密后才会发布私人预览。失败时丢弃不完整的输出;重试传输现有的加密字节。
施工遵循 Tink AES-GCM-HKDF 流媒体规格。 Revault的实施和段配置尚未经过Tink的独立审计或认证。
私人存储、导入和预览
加密的保管库文件位于私有应用程序存储中。文件名、MIME 类型、文件夹、标签、收藏夹和缩略图都是经过身份验证的加密记录。解锁后,对活动金库的解密元数据进行搜索和标签过滤;没有明文服务器搜索索引。
照片、视频和文件导入可以在加密前使用私有临时暂存。库内相机捕获不会自动将副本保存到图库中。从照片或其他提供商导入时,该提供商的原始内容保持不变。可选的媒体优化在加密之前在本地进行,并且仅更改新导入的媒体。
私人预览在打开时需要临时纯文本。这些应用程序会在关闭、锁定和随后启动时删除临时预览; iOS 对解密的预览文件应用完整的文件保护。明确导出到另一个应用程序的文件会离开保管库的保护。临时文件删除并不能保证取证擦除。
可选的本机云同步
同步默认关闭,并为每台设备上的每个保管库单独启用。 iOS 将加密记录和文件段存储在用户的私有 CloudKit 数据库中的 iCloud 中。 Android 使用 Google Drive 的私有 appDataFolder。两种传输都不需要 Revault 帐户或将本机同步数据上传到 Revault 的网络云。
云接收加密的元数据、文件段和密钥包装器,而不是明文保管库主密钥、本地设备机密或恢复机密。同一平台上的另一台设备需要相同的本机云帐户和保管库恢复密钥来注册其自己的本地模式。 Apple 和 Google 授权控制对加密记录的访问,而不是解密。
关闭同步会停止从当前设备对该保管库进行进一步传输;现有的加密云副本仍然存在。同步更改和删除可能会传播,并发编辑可能需要冲突审查。 iCloud 和 Google Drive 是独立的商店,没有自动跨平台桥接。使用加密电话传输在 iPhone 和 Android 之间移动。
恢复是获得同一密钥的第二条路径
Revault 生成一个恢复短语,其中包含从捆绑的 2,048 个单词列表中独立选择的 18 个单词,提供 198 位随机性。创造不提供自定义短语或再生。该短语使用 PBKDF2-HMAC-SHA-256 和新鲜盐独立导出包装密钥,然后使用 AES-256-GCM 包装保险库主密钥。任何拥有该短语和加密保管库的人都可以解密它。现有的自定义短语和十六进制恢复密钥与其原始保管库保持兼容。
恢复密钥在设置过程中显示,不会保留在本机应用程序存储中或上传到本机云存储。将其与加密文件分开保存。注册另一台设备需要原始本机云帐户中的加密保管库或加密备份以及恢复密钥。机密无法恢复丢失的文件数据,并且 Revault 没有提供商持有的重置密钥。
便携式 .qvault 备份包含加密密钥包装器、经过身份验证的加密清单和加密文件段。它不包括本地设备解锁秘密。导入会在使用新标识符、主密钥、文件密钥和新设备模式恢复到保管库之前验证库存、元数据和每个段。恢复后保存新的恢复密钥。
新的恢复短语保留大小写,使用 NFKC 规范 Unicode 并折叠多余的空格。仍然支持旧的十六进制密钥。保存新短语后,您可以在其设置中替换保管库的恢复短语。这取代了当前的恢复包装器;旧的备份和尚未同步的设备仍然可以保留旧的包装器。更改模式或恢复短语不会轮换保管库主密钥或撤销副本。如果密钥材料遭到泄露,请将文件移至具有新密钥的新保管库中。
加密的电话到电话迁移
电话传输使用新的保管库标识符、主密钥、文件密钥和流标头创建便携式加密副本。其独立传输密钥无法解锁源保管库,并且不包括源恢复密钥和设备解锁密钥。加密包和传输秘钥必须单独传递。
接收应用程序对包及其文件段进行身份验证,然后使用新的本地模式和恢复密钥恢复到新的保管库中。这适用于 iOS 和 Android 之间,无需桥接他们的云帐户。原件保留在旧设备上;确认恢复的内容并在删除之前保存新的恢复密钥。
锁定和会话清理
默认情况下,移动应用程序在后台运行和 60 秒不活动后立即锁定。每个跳马可以选择30秒、1分钟、2分钟、5分钟或10分钟。共享保管库使用 60 秒默认值。退出返回到模式屏幕并结束解密会话。
锁定会取消会话工作、清除解密的元数据和搜索状态、关闭预览、删除临时文件并在释放之前覆盖拥有的密钥缓冲区。临时派生密钥在使用后也会被清除。 Swift 和 JVM 内存管理、加密库和媒体解码器可以创建副本;无法保证立即删除所有副本。
iOS 覆盖了具有隐私保护的应用程序切换器快照。 Android 使用 secure-window 标志来限制屏幕截图和最近的应用程序预览。这些平台保护措施不会阻止某人拍摄解锁的屏幕,也不会撤回之前导出到其他应用程序的文件。
Revault Cloud
Revault Cloud 是用于跨平台同步的可选 Pro 存储提供程序。加密的段和加密的文件元数据链接到假名计费安装。该服务可以观察存储标识符、大小、校验和、修订和传输活动,但不会接收未包装的保管库密钥或恢复短语。单独的随机连接代码授权存储访问;连接其他设备也需要恢复短语。 Pro 到期后,现有云数据仍可读取以进行恢复。
本机共享传输和访问控制
在 iOS 上,私有只读 CloudKit 邀请将加密快照放置在个人同步区域之外的单独共享记录层次结构中。 Apple 控制邀请访问;接收者仍然需要单独的解密密钥。 CloudKit 邀请不会强制执行服务器的访问会话计数、固定到期或销毁计时器。所有者可以停止将来的 CloudKit 访问。
跨平台共享将加密部分上传到Revault的共享服务。独立的随机 256 位读取和管理功能存储为 SHA-256 哈希值。网站链接在其片段中携带读取能力,而不是解密秘密。打开它会深层链接到共享保管库,并提示输入发件人的秘密;不需要个人图案或现有的库。个人保管库保持锁定状态。
受控服务器共享强制执行发送者的最大访问会话数、30 天内的固定到期日、撤销和可选的导出权限。会话以原子方式授予,最多持续 15 分钟,受共享截止日期的限制。即使下载或解密失败,在授予会话时也算作一次访问。查看器检查正在进行的访问并在截止日期前关闭。
SHA-256 校验和验证传输的部分,而验证加密则验证其内容。允许导出时,查看者可以保存使用共享密钥打开的加密 .qvault 副本。禁用导出会删除该应用程序操作;它无法以加密方式阻止屏幕截图或修改后的客户端保留明文。删除源文件不会撤销独立创建的共享。
可选的跳马活动
本机审核日志默认处于关闭状态,并在每台设备上的每个保管库进行配置。最新的 500 个本地事件使用保管库的主密钥和专用的经过身份验证的上下文进行加密。它们排除密钥、模式、文件内容和其他保管库的数据,不同步,并且可以清除或禁用。它们不是防篡改证据。失败的解锁不会分配给保管库。
启用日志记录后创建的新受控共享在共享服务上保留最多 100 个访问会话时间戳。只有管理能力才能找回;该日志不包含收件人身份或解密秘密。禁用本地日志记录会影响未来的共享。现有共享日志保留其原始设置,直到撤销或到期并清理。
可选加密闯入照片
所有者可以为每台设备上的每个保管库单独启用闯入警报。经过三种无与伦比的模式后,前台应用程序可以捕获前置摄像头照片,但需要获得许可、相机可用性和一分钟的冷却时间。系统摄像头指示灯仍然可见。最新的十个警报存储在本地,不会添加到照片或上传。不匹配的模式无法识别目标保管库,因此每个选择加入的保管库都会收到单独加密的设备尝试记录。
专用的 RSA-3072 公钥使用带有 SHA-256 和 MGF1-SHA-256 的 OAEP 为每个警报包装一个新的 256 位 AES-GCM 密钥。这允许在保管库锁定时进行加密。相应的私钥本身在该保管库的主密钥下通过专用的经过身份验证的上下文进行加密。只有解锁该保险库才能解密其照片。警报显示在其审核视图中,独立于普通活动日志记录,并且可以在闯入警报设置中清除。它们不是防篡改证据。
Safe Exit 删除本地访问
设备上的一个保管库可以指定为 Safe Exit。输入其模式可以正常打开它,同时删除其他本地保管库记录、加密块、设备解锁材料和排队的更改。该应用程序保留持久的本地白名单,因此同步无法静默地重新填充排除的保管库。已经进行中的加密传输可能仍会完成。
保留本机云副本和其他设备上的副本。在注册新的本地模式之前,显式恢复需要排除的保管库的恢复密钥。没有单独备份的仅离线保管库可能会丢失。此设置适用于当前安装,而不是使用相同云帐户的每个设备。
Safe Exit 不保证被法医删除或隐藏。闪存、操作系统缓存、备份和先前导出可以保留痕迹。删除应用程序数据或重新安装可以消除本地隔离边界;然后可以通过本机云帐户再次发现云记录。只有恢复秘密才能解锁这些记录。
仍然可见的内容
加密隐藏内容,而不是所有操作信息。本地记录和云提供商可以观察标识符、记录关系、对象计数、大小、修订、时间戳、加密密钥包装器和流标头。标识符使用 UUIDv7 并包含创建时间信息;它们不是秘密。 Apple 或 Google 可以将本机同步活动与平台帐户关联。
Revault 的受控共享服务可以观察加密包大小、部分校验和、过期设置、访问会话计数和可选会话时间戳,但不能观察单独传递的解密密钥。 CloudKit 共享会将邀请和参与者信息公开给 Apple。网络和操作记录可能会暴露连接信息。 Revault 不提供匿名或流量分析阻力。
HTTPS 保护传输中的网络请求。设备上经过身份验证的加密分别保护本地存储和云中存储的保管库内容。传输加密和密文都无法隐藏有关何时、何地或多少数据传输的所有事实。
保护结束的地方
解锁的保管库必然会向其应用程序会话公开解密的信息。恶意软件、受损的操作系统或应用程序、查看屏幕的人或不受信任的收件人都可以捕获它。仅设备密钥存储是一个额外的边界,并不能保证设备不受完全破坏。一旦其本地秘密被泄露,可预测的模式就是不安全的。
加密不能防止云删除、勒索软件、恢复密钥丢失、提供商扣留记录或回滚整个先前有效的加密状态。在删除旧设备之前,保留独立的加密备份并验证恢复情况。撤销无法撤回他人已保留的屏幕截图、导出或副本。
Revault尚未经过独立的安全审核。这些是对所实施的加密设计的描述,而不是针对每次入侵的认证或保证。
现有的浏览器库
本参考描述了本机应用程序。现有的浏览器库有单独的帐户、设备存储和网络云模型。特定于浏览器的 S3 上传和浏览器共享链接不是本机云同步。浏览器帐户不会让您登录移动应用程序;使用加密备份及其恢复密钥将现有浏览器数据移至本机保管库中。