安全架构
Rust/Tauri 技术栈、.rkvey v5 格式、隔间、延迟解密与威胁模型。
QubKey 的安全基于 分层架构 与 纵深防御(Defense in Depth) 原则:文件系统、.rkvey v5 格式、密码学与 Rust 应用核心在每一步——从存储到解锁——保护您的密钥。
每一层提供互补保障。即使缺少系统级保护(例如未启用磁盘加密),应用层与密码学层仍会保护您的保险库。在 v5 格式下,条目的密钥 仅在您查看或复制时解密 —— 打开保险库或浏览列表时不会解密。
界面(React + Tauri)
- 避难所
- 文件夹
- 搜索
- 发电机
- 一次性代码
- 仪表板
- 同步
- 分享
- 浏览器扩展
Rust 核心(QubKey 核心)
- .rkvey v5 格式
- Argon2id 推导
- 认证加密
- 搜索索引
- 安全提交
- 内存擦除
- 崩溃恢复
文件系统上的 .rkvey v5 文件
- 前言
- 加密标头
- 加密索引
- 秘密隔间
- 附件
- 提交历史
安全层级
解锁流程
解锁遵循严格流水线:主密码进入 Rust 核心,Argon2id 派生主密钥,子密钥解密头部与 B-Tree 索引。条目的 隔间(密钥、附件)保持加密,仅在需要时 读取。锁定时从内存清除所有密钥与密钥材料。
主密码+盐
.rkvey 序言(明文)
- 进入 Rust 核心(Tauri IPC)——从未暴露于 WebView
- 随机盐存储在前导码中(16 字节)
氩气2id
- 64 MB RAM · 3 iter · p=4(默认“KdfParams”)
- GPU/ASIC 抗性
- 校准约 250–500 毫秒,具体取决于平台
万能钥匙
256 位 · `KeyManager::derive_master_key`
子密钥派生
HKDF-SHA256(主控,盐=文件∥条目,信息=种类)
标头键
安全标头
索引键
B 树索引
隔间钥匙
隔间
AEAD解密
- AES-256-GCM 或 XChaCha20-Poly1305
- 标题·索引·隔间(按需)
解锁后内存
- 列表/视图:仅元数据
- 仅根据需要解密机密和附件
锁
- `KeyManager::clear_keys()` + 归零
- 秘密被抹去,剪贴板被清除
威胁模型
QubKey 针对本地密码管理器最常见的威胁场景设计。下表说明攻击向量与内置对策(.rkvey v5 格式)。
| 威胁 | 向量 | QubKey 应对 |
|---|---|---|
| 未授权文件访问 | 窃取或复制 .rkvey | AEAD 加密 + Argon2id 派生 |
| 网络外泄 | 云拦截 / MITM | Local-first:QubKey 不上传您的密钥 |
| 数据损坏 | 写入时崩溃 | 已验证仅追加提交 + 启动时恢复 |
| 保险库篡改 | 手动修改文件 | 按隔间 AEAD 认证 + 校验和 |
| 内存快照(浏览中) | 保险库已解锁,列表/查看 | 密钥保持加密直至您查看 |
| 弱主密码 | 离线暴力破解 | 校准 Argon2id(约 500 ms)+ 熵检测 |
| 密码复用 | 其他网站泄露 | 安全仪表盘(本地检测) |
| 剪贴板泄露 | 复制密钥 | 剪贴板超时(30 秒)+ 锁定时清除 |
| 侧信道攻击 | 密码操作时序 | 恒定时间实现(RustCrypto) |
最佳实践
本模型覆盖 QubKey 通过架构直接应对的威胁。为获得最佳保护,请结合系统最佳实践:启用磁盘加密、保持系统更新、使用强主密码。
内置保护
| 领域 | QubKey 如何保护您的数据 |
|---|---|
| 静态数据 | AEAD(AES-256-GCM / XChaCha20)、Argon2id 密钥、按隔间独立密钥 |
| 保险库完整性 | 已验证仅追加提交、校验和与原子写入 |
| 机密性 | Zero-Knowledge:密钥在设备上保持加密 |
| 延迟解密 | 列表与查看不含密钥;查看/复制按需进行 |
| 密钥派生 | 校准 Argon2id(约 500 ms,64 MB)保护主密码 |
| 应用程序 | 隔离 Rust 核心、Tauri IPC UI、锁定时 Zeroization |
| 浏览器扩展 | 本地 Native Messaging —— 扩展从不获得主密码 |
| 同步 | 可选加密多设备同步(云或自托管),或加密 .rkvey 文件(云、USB、NAS) |
信任架构
Zero-knowledge
QubKey 在多个互补层级组织信任:
-
您控制访问 —— 主密码及可选的 恢复密钥 控制保险库访问。QubKey 无法读取或重置它们。
-
系统集成 —— QubKey 利用操作系统安全:文件权限、磁盘加密(FileVault、BitLocker、LUKS)、安全存储(Keychain、Credential Manager)与进程隔离。
-
Rust / UI 分离 —— 全部密码学在 Rust 核心 中运行,具备编译期内存安全。React UI 通过 Tauri IPC 通信;WebView 无法直接访问主密码。
-
谨慎的内存处理(v5) —— 解锁时仅解密头部与索引。密钥与附件保持加密,直至显式操作(查看、复制、下载)。锁定时:Zeroization 并清空剪贴板。
-
浏览器扩展 —— 本地 Native Messaging;扩展从不获得主密码。
保护功能
自动锁定
可配置无操作时间后锁定保险库(默认:5 分钟)。触发 Zeroization 与剪贴板清除。
延迟解密
条目密钥仅在查看或复制时解密。列表与查看不显示受保护字段。
Zeroization
锁定时从 RAM 清除密钥(Rust zeroize crate);清空缓存,仅在需要时临时解密。
剪贴板超时
30 秒后自动清空剪贴板。可在保险库设置中配置。