安全设计

保密不靠承诺,
靠密码学

贵纸把「加密」当作第一性功能,而不是一个可选项。原件在离开手机之前就已经是密文;而「谁能解开」这件事,贵纸按密级分成两把锁,并把边界写在明面上。

一句话说清分级:普通级(证件、票据等日常单据)为支持换设备与忘记密码找回,钥匙信封由服务端托管,服务端技术上具备解开普通级密文的能力;敏感级与机密级(身份证、体检报告、私密合同等)采用端到端加密,服务端与云服务商都无法解密。AI 解析是唯一的临时明文例外,见下文。

先想清楚:防的是谁

威胁一

身边的人

手机借人、被翻看、放在桌上没锁屏。对策:敏感级查看需输入口令,且只留 5 分钟窗口;隐藏柜格与诱饵空间用来应对「打开看看」。

威胁二

云端失守

服务器被入侵、数据库被拖走、内部人员违规调取。对策:云端只有密文,没有密钥就无法解密。

威胁三

设备丢失或更换

手机丢了、换新机、误删小程序。对策:同一微信换设备免密直入;密码可凭绑定手机号重设,敏感级 / 机密级用 24 位找回码;密文已在云端,无需重新上传。

密钥链

两条钥匙链:一条可找回,一条只有你有

贵纸不保存密码明文。密码只用于「派生」主密钥,主密钥再包裹数据密钥。普通级额外有一份服务端托管的钥匙信封,因此可以免密进门、换设备与找回;敏感级 / 机密级没有这份托管,钥匙只能由你的密码或 24 位找回码在设备端解封。

普通级 · 可找回 微信身份 / 6 位密码 免密进门 · 仅作凭据 云端托管信封 服务端 KEK · AES-256-GCM 仅用于换设备 / 找回 DK_open 普通级数据密钥 AES-256-GCM 原件逐片密文 云端 存密文 敏感级 / 机密级 · 端到端 6 位密码 / 找回码 只在你这,不落云端 PBKDF2-SHA256 150,000 次 · 设备端派生 主密钥 MK 仅内存 DK_secret 敏感级数据密钥 AES-256-GCM 原件逐片密文 云端 无钥匙 普通级:服务端持有托管密钥,具备解开能力,仅用于用户主动发起的找回 敏感级 / 机密级:服务端与云服务商均无能力解密(AI 解析的临时明文除外)
加密参数(可核对的技术事实)
环节算法 / 参数说明
分级普通级:服务端托管钥匙信封;敏感级 / 机密级:端到端,无托管换设备与找回能力只对普通级默认开放
口令派生PBKDF2-SHA256,150,000 次迭代,每用户独立随机盐密码不存储;盐与信封可公开,但无法反推密码
内容加密AES-256-GCM每片独立随机向量与校验标签,先验签后解密
分片1MB / 片支持断点续传,缺片只补缺,不改动已传分片
用途绑定AAD(附加认证数据)绑定单据与用途,防止密文跨单据、跨用途拼接
缩略图独立加密,≤100KB与原件分属不同密文体系,列表懒加载时按需解密
找回码24 位,约 112 位安全强度创建时展示一次并寄送本人邮箱;重设密码后旧码失效

云端边界

云端到底能看到什么

「云端只看得到密文」不是一句口号,而是一张可以逐项核对的清单。下面列出上云与不上云的内容,以及普通级与敏感级在「云能不能解开」上的差别。

数据是否上云形态与用途
原件文件是AES-256-GCM 密文分片,云端无法解密
缩略图是加密缩略图,用于列表懒加载
密文包络是每片随机向量、校验标签、长度等公开件,不含密钥
元数据是分类、标题、原件位置、隐私级别、页数、大小、到期日
归属标识是openid 的 SHA-256 前 16 位,不含明文身份标识
脱敏操作日志是动作类型与时间,不含文件内容;90 天后自动清理
普通级钥匙信封是服务端托管密钥加密;仅用于换设备与忘记密码找回
敏感级钥匙信封是密码包裹 + 24 位找回码包裹两份密文;云端无钥匙
手机号是哈希 + 尾号 + 密钥加密密文,不存明文
密码明文否仅存在于输入页面变量
敏感级数据密钥否仅设备内存,退出即清零;普通级可由托管信封解出
找回码明文否创建时展示一次并寄送本人邮箱,不写日志、不上云
微信昵称与头像否只存本机,不上传云端
诱饵空间密钥否仅本机存储,永不参与云端字段
一个必要的例外:当你主动使用「AI 读懂」时,单据需要被临时转为可识别内容交 OCR 与大模型处理,这个瞬间云端会接触明文。处理完成后临时文件立即删除,不用于训练、不长期留存。除这一主动触发的场景外,云端始终只有密文。

锁与退路

进得去,也退得出

安全设计如果只考虑「别人进不来」,很容易变成「自己也进不去」。贵纸在锁与恢复之间做了明确取舍,并把代价写在明面上。

免密进门

冷启动时用微信身份向云端取回托管钥匙,直接进柜;取不到才静默回落到密码输入。日常不用记、也不用输密码。

敏感件的 5 分钟窗口

敏感级 / 机密级查看前输入同一组 6 位密码;通过后 5 分钟内连着看几份都不必重输,切出小程序即失效。连续输错触发冷却,避免短时间枚举。

退出与锁柜

退到后台不锁柜,避免来回切应用反复验证;「我的 → 退出」清除本机钥匙,下次冷启动重新取回。上传不设卡,验证只看密级。

24 位找回码

创建时展示一次,并寄送到你绑定的本人邮箱(每天限 3 封、60 秒限频)。忘记密码时用它验证后重设;重设会轮换找回码、重建云端信封,密文不需要重新上传。

密码重设与找回边界

普通级单据可凭绑定手机号重设密码并恢复;敏感级 / 机密级必须提供 24 位找回码。两者都不可用时,这部分数据永久无法解密——这是端到端加密的代价,不是可以绕开的流程。

藏得住:隐私分级与隐藏柜格

普通 / 敏感 / 机密三级。机密文件放进隐藏柜格,柜名本身就是唤醒它的暗号:建好即隐,未唤醒时不出现在任何列表、分类计数与搜索结果里,即使拿到单据直达详情也会被拦下;锁柜即重新隐身,只在当次会话内有效。另有另一组密码才能进入的诱饵空间,只显示普通内容且禁止写入。

安全边界

必须说清楚的四件事

没有绝对的安全。把边界写清楚,比给一个「万无一失」的承诺更负责。

一、敏感级的钥匙丢了,柜子就打不开了。敏感级 / 机密级在密码、24 位找回码、绑定手机号全部不可用时,加密数据永久无法解密,开发者也没有后门。普通级可由服务端托管信封协助找回——这是分级设计的差别,也是我们必须提前讲清的地方。

二、AI 提取需要临时明文。存储态是密文,但识别必须让机器「看见」内容。该过程由你主动触发,临时文件处理完即删除;如果你不接受这一点,可以不使用 AI 提取,仅使用加密归档。

三、不防「已打开小程序的手机」。加密保护存储与传输,不阻止他人在你已解锁、且小程序正开着的手机上直接查看。请给真正敏感的纸设置「敏感」或「机密」,并善用隐藏柜格与诱饵空间。

四、导出即交出明文。你把文件导出、发送给他人后,对方就拥有了这份内容,加密无法收回。请只发给可信对象。

合规与数据处理

除了加密,还遵守什么

内容安全检测

AI 提取的输入与输出均接入内容安全检测;命中违规即拦截,不落库、不返回。

AI 标识

AI 结果区角标「AI 提取」,同区附「以上信息由人工智能(AI)生成,仅供参考,请与原件核对后使用」,符合生成式内容标识的监管要求。

数据最小化

不收集通讯录、位置、相册全量权限;只在用户主动选择时读取指定图片或文件。

日志留存

脱敏操作日志保留 90 天后自动清理;不含文件内容、密钥或密码。

反馈数据

意见反馈内容仅用于改进产品与回复本人,保存 12 个月,可申请提前删除。

无广告与跟踪

当前未接入广告 SDK、统计 SDK 或第三方跟踪服务,不出售、不共享用户信息。