隐私与数据边界

本地 AI 导出文件的加密边界

审查用户导出流程中的字段、明文临时文件、密钥生命周期和接收方保留边界。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-04 · Fact IDs: ANDROID-PRIVACY-01, PRIVACY-01

直接回答

称导出文件“已加密”并不完整,除非产品说明哪些字节受到保护、什么时候出现明文、密钥由谁控制,以及密钥丢失后怎么办。应区分加密的应用数据库、为导出生成的加密归档、分享过程中的传输,以及接收应用保存的副本。`ANDROID-PRIVACY-01` 将存储与用户控制归于应用责任;`PRIVACY-01` 提醒本地推理并不能决定其他数据路由。这些事实支持审计方法,不证明 Cove 现有任何导出已加密。 先画出完整导出生命周期:用户选记录、拼装字段、创建临时文件、加密或打包、预览、交给 Android Sharesheet 或文档提供器、可选地重新导入,再删除本地临时数据。每一步记录数据类别、存储位置、权限边界和是否会出现明文。界面标签或文件扩展名都不是加密证据。如果导出里包含转录、提示词、图像、模型元数据或账号标识,逐项列出字段并给用户预览,不要往客服包里偷偷加诊断数据。 在检查实现前先定义加密边界。只有实现和官方库契约确实提供时,才写明算法和模式;记录密钥生成、存储、使用、轮换或替换以及备份/恢复策略。Android Keystore 可以保护密钥材料并限制密钥使用,但它不会自动加密任意导出文件,也不能单独解决用户恢复问题。应用还要确保密文与预期数据绑定,并拒绝格式错误或被更改的归档。不能把密钥明文放在导出旁边就称为安全。如果使用口令恢复,要说明口令怎样产生、是否离开设备以及丢失后会怎样,不要承诺代码无法兑现的可恢复性。 临时明文常被遗漏。导出可能先在缓存或应用私有目录拼装,然后才加密;加密失败、崩溃或取消都可能留下可读文件。检查文件权限和生命周期清理,在写入前、写入中、加密后和分享交接期间分别注入中断。清理应可重试;导出失败不能删除唯一的用户源记录。文件交给接收应用后,它可能复制、解密或按自己的政策保存;导出方不能承诺控制对方的目的地。 用带明显金丝雀文字的合成内容测试。创建导出后按文档化方法检查字节和元数据,用授权密钥尝试往返读取,测试错误密钥拒绝;只有格式包含完整性机制时才测试字节篡改行为。检查金丝雀是否泄漏到文件名、日志、临时残留、通知或分析事件。另查 Android Sharesheet/提供器行为和实际 URI 授权,并确认只导出用户选择的记录,预览和载荷内容一致。 报告应限定加密结果范围:确切构建、导出格式版本、密钥路径、包含字段、本地明文阶段、恢复方法、目的地边界和测试。没有设计依据时不要写“端到端加密”“安全导出”或“仅保存在本机”。用户可以主动分享加密文件;这种传输以及接收方能否解密,都与本地模型推理分开。本文应帮助团队作出可验证的有限承诺,而不是把“加密”一词当成完整隐私说明。

用户导出选定转录用于个人归档

应用提供可选的加密本地笔记归档。团队需查明是否生成临时明文、密钥如何保存或恢复,以及接收应用可能如何保留文件。

决策

绘出明文和加密边界,测试预览与密钥失败,并在用户分享前说明交接边界。

预期结果

记录明确写出哪些载荷和本地阶段已经测试,不承诺控制接收方存储或普遍可恢复。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • ANDROID-PRIVACY-01:应用负责存储和用户控制
  • PRIVACY-01:本地推理不决定其他数据路径

隐私声明需要数据清单和流量证据;“本地模型”标签本身不是证明。

实施流程

  1. 列出导出字段和生命周期. 盘点所选记录、生成字段、临时文件、归档格式、预览、URI 交接、导入/恢复及清理,标出明文和密文出现阶段。
  2. 审核密钥创建和恢复设计. 识别实际密钥 API、存储、许可操作、丢失后行为和备份策略。Keystore 存在并不能证明具体文件已加密。
  3. 测试临时文件和失败路径. 在创建、加密、取消和分享交接时注入中断。检查应用自有存储中是否留下可读残留,确认失败不删源记录。
  4. 核验内容与密码学行为. 使用合成金丝雀检查载荷,测试授权往返、错误密钥拒绝和格式支持的完整性机制,并检查日志、文件名与元数据。
  5. 说明目的地和恢复限制. 检查 Sharesheet/提供器 URI 权限,预览准确字段,并解释文件交接后接收方保留不受导出方控制。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 报告区分应用存储、导出归档、传输和接收方副本,指出实际受保护字节与明文阶段。
  • 记录密钥创建/存储/恢复行为;取消或崩溃测试没有留下未预期应用自有明文。
  • 只导出用户选定且已预览字段;安全和恢复承诺限定于被测格式和实现。

决策对照表

维度选择或证据解读方式
应用存储加密保护配置机制下静态保存的数据不证明后来生成的导出归档同样加密。
加密导出归档用密钥保护指定载荷字节仍需测试密钥生命周期、恢复、明文清理和格式完整性。
分享后的接收方副本文件交给其他应用或提供器接收方可复制或保留,导出方不能承诺控制目的地。

需要避免的失败模式

  • 只根据扩展名宣称加密
  • 把 Keystore 存在说成任意导出文件已加密
  • 忽略分享后的接收方副本

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

Android Keystore 会自动加密导出文件吗?

不会。Keystore 可以保护密钥材料和密钥操作,但应用仍要对实际导出字节实现并验证加密、恢复、权限、密钥范围和存储边界,不能只看标记。

分享后还能称为端到端加密吗?

只有完整设计支持接收方密钥和解密边界时才可这样说。设备上的加密文件本身不足以证明端到端保护或接收端安全。

取消导出后可以忽略临时明文吗?

不可以。取消、崩溃和加密失败后要检查应用缓存与临时目录,验证清理,并确保不会删除唯一源记录或用户派生资料,保留恢复入口。