直接回答
存储加密审查要先说清楚存了什么、声称哪种保护。应用私有目录、Android 文件级加密、数据库封装和应用自管密文不能混为一谈。Android 文档指出,内部应用存储受应用沙箱限制;外部存储中的敏感内容可能需要应用层加密。设备加密的威胁边界又不同于应用自管密码学。Android Keystore 能帮助保护密钥材料免于导出并限制用途,但不会自动加密每个文件。ANDROID-PRIVACY-01 与 PRIVACY-01 支持证据驱动的边界盘点,却不证明 Cove 当前数据已经加密。\n\n本文只讨论静态保存的应用数据:转录、生成结果、暴露用户活动的设置,以及实现中确实存在的派生索引。导出是另一种数据交接,应单独分析格式、接收方和加密方式,不属于此范围。云备份和设备迁移恢复也是不同生命周期路径,不能用文件加密替代“数据是否离开设备”的核查。“静态加密”必须说明涵盖哪些数据库页、文件、临时副本、备份副本、密钥和设备状态。\n\n根据可观察代码路径绘制数据位置图。记录目录或数据库、存储在应用私有空间还是共享空间、哪些进程读取、是否创建临时文件,以及备份规则是否包含。不要将应用私有目录称为端到端加密:沙箱是平台访问控制边界,不是密码学威胁模型。同样,不能因为 Android 使用设备加密就推断应用还实现了另一层加密。结合清单配置、存储 API、密码学调用和恢复行为说明实际证据。\n\n如果确实有应用自管加密,要记录密钥创建、别名、授权用途、认证要求、轮换或失效,以及密钥不可用时密文如何处理。Keystore 文档说明密钥材料可设置为不可导出,也能限制操作;实际属性仍取决于配置和设备。测试密钥缺失、失效或不可访问时的恢复,不得顺手删除无关用户数据。不能把秘密密钥和密文放在同一个文件旁边就称为受到保护。算法选择要参照 Android 官方密码学指南;本文不是 Cove 的实现配方。\n\n测试改变访问行为的生命周期状态:前台使用、进程重建、锁屏、重启、适用时凭据解锁、应用更新、备份、恢复到原设备、恢复到另一设备及删除应用数据。结果会受 Android 版本、存储配置和备份策略影响。锁屏时受保护的文件可能在解锁后可读;卸载重装或迁移后密钥可能不可恢复。除非实现验证并记录硬件支持属性,不要承诺所有设备的密钥都由安全硬件保护。\n\n用合成内容检查真实文件和请求。除主数据表外,还要查看数据库日志、预写日志、缩略图、临时明文、缓存、崩溃报告和调试导出。核对备份排除规则是否符合策略,恢复后是否悄悄带回已删除记录或旧同意状态。一次检查发现某数据库文件像密文,不足以证明其他副本、备份和瞬时缓冲都受保护。不能用生产用户内容制作测试样例。\n\n最终证据应列出构建、Android 版本、数据清单、清单与备份配置、密钥事件、锁定和解锁状态、恢复结果及已知例外。结论应写窄,例如本构建中哪些数据类别使用了实测机制。不要承诺设备绝对安全、抵御已攻陷系统或适用于所有设备。未单独测试时,导出、模型文件、诊断和远端服务不得包含在结论里。精确范围使隐私文案可审计,并避免一次密码学测试变成广泛产品保证。
用户检查换机后保存的 AI 笔记
用户保存私人转录和派生搜索记录,开启系统备份后迁移到另一台手机。产品团队要查明哪些记录会恢复、密钥是否仍可用,以及旧备份能否逆转删除或同意状态。
决策
分别盘点数据和密钥生命周期,测试实际备份路径,并把加密说法限定在观察到的文件和状态。
预期结果
审查区分沙箱访问、设备加密、应用密文、备份与导出,不承诺普遍保护。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- ANDROID-PRIVACY-01:数据访问与保护责任应明确
- PRIVACY-01:本地推理不表示其他数据路径自动受保护
隐私声明需要数据清单和流量证据;“本地模型”标签本身不是证明。
实施流程
- 盘点持久和临时数据. 追踪数据库、文件、日志、缩略图、缓存、临时明文和派生索引的存储位置、读取方与保留路径。
- 写出精确保护声明. 对每类数据分别说明沙箱访问控制、平台加密、应用自管加密、备份行为和用户导出,并注明所据实现配置。
- 检查密钥归属和失败行为. 若实现了加密,记录 Keystore 别名、授权操作、认证策略、轮换、失效和密钥不可用时的处理。
- 测试锁屏、重启、升级和恢复. 用合成记录覆盖进程死亡、重启、锁定/解锁、应用升级、备份恢复、重装及迁移等相关状态。
- 验证删除与用户披露. 删除选定记录、检查派生副本和恢复状态,再让隐私说明逐项匹配证据、例外和恢复异常。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 每项加密声明都注明覆盖的数据类别、副本、密钥前提和测试过的设备状态。
- 记录备份、恢复、密钥丢失和删除结果,不将应用私有存储等同于应用层加密。
- 未独立审核的导出与远端路径不纳入结论,也不作绝对安全或普遍设备承诺。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 应用私有存储 | 使用平台沙箱边界 | 在文档模型下限制应用访问,但本身不等于应用自管加密。 |
| 设备文件级加密 | 使用已配置的平台保护状态 | 必须限定锁定和解锁行为,不构成备份或导出保证。 |
| 应用自管加密 | 用受管理密钥加密所选内容 | 需要测试密钥生命周期、密文副本、失败恢复和威胁前提。 |
需要避免的失败模式
- 把应用私有目录说成应用层加密
- 从锁屏状态推断备份安全
- 密钥失效时删除无关用户记录
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
Android Keystore 会自动加密应用数据库吗?
不会。Keystore 提供密钥管理和密码学操作;应用必须主动使用密钥加密目标数据,并测试数据与密钥的完整生命周期及调用方访问边界。
应用私有文件自动等于端到端加密吗?
不等于。应用私有存储描述访问控制位置。要分别说明文件是否由应用加密、受平台保护、进入备份或由用户导出,并指出核验过的实际副本。
设备加密能证明备份中没有可读数据吗?
不一定。备份和恢复是另一条路径。应检查实际规则和恢复内容,不能由锁屏行为推断备份机密性,还需测试恢复到具体设备后的结果。