跳转至

APK 签名验证

当前状态资格验证

运行时 4fcbdf6fb78873b47f424c5e15ebda6af715befe,树 5cadce8a73107560d77045de481559b6eb6ef666, 集成主分支 2c3dd946d59c870388b03c3417eeb5218af96eeb。最新的评审暴露了两个额外的 派生事实错误:未变化的多签名者集合可能看起来已轮换,以及 未知的当前签名者可能被替换为其可读的血统来源。 三个回归测试针对先前发布的所有者失败,包含14个对照组。 该所有者现在共享一个签名者集合比较,并保留缺失的身份。

  • 225 个源码测试 /14 个套件,11 个公共 CLI/MCP 测试 /3 个套件, 23 个真实 SDK 案例,未缓存的类型检查/风格检查及 CI 静态检查均通过。
  • 新的公共回归通过真实 CLI、SDK 摘要以及源码删除后保留的血统读取证明了缺失身份结果。之前的416项测试组合注册/模式矩阵仍固定于8f8541c;此处契约、原始帧和进程级准入均未改变。
  • 当前完整与精选 F-Droid 任务,相同答案和完整父级:5,246 → 4,230 tokenx 估计, 3.850 → 3.591s 运行时间, 4.732 → 4.666 CPU 秒, 694,124,544 → 689,983,488 字节 峰值家族 RSS。

JSON latest_posture_fix 记录了精确的概况和范围。先前的三提供者比较仍固定于35a9b13。这些是新进程、热缓存观察结果;实际模型 token、统计加速、密码学真实性和独立的 Windows/macOS 行为均未验证。当前头部 CI/评审在发布之后进行。

8f8541c 集成资格验证

运行时 8f8541c39586d78911e4743d6ec07f75c449a0d5,树 50b93dccf15c40f9067030614d743d59e0aa334c, 集成主分支 2c3dd946d59c870388b03c3417eeb5218af96eeb。先前发布的头部通过了所有技术性 CI 和5/5评审,之后新的上游 Python pyc 注册导致了三个附加冲突。文档链接、测试适配器覆盖范围以及命名工具效果现在保留了两种能力。APK 提供者/域/视图和稳定文件读取器与35a9b13字节完全相同。

  • 222 个源码测试 /14 个套件,416 个编译公共测试 /15 个套件 (包括实际公布的架构以及组合 CLI/MCP 注册), 23 个真实 SDK 案例,未缓存的类型检查/风格检查及精确 CI 静态检查均通过。
  • 完整与精选 F-Droid 任务,相同答案和完整父级: 5,243 → 4,227 tokenx 估计, 3.616 → 3.799s 运行时间, 4.389 → 4.825 CPU 秒, 709,554,176 → 717,103,104 字节 峰值家族 RSS。 这些新进程观察使用热 OS 缓存;使用过的输入声明以及每次调用/回复/导出均被计入,完整目录估计记录在 JSON 中。
  • 先前的三提供者内存比较仍固定于35a9b13;它不是对此集成的新的测量。没有任何选择绕过哈希,也不声称密码学真实性或统计加速。

JSON latest_main_integration 记录了精确的命令和输入回执。先前部分保留其原有的提交特定证据。当前头部 CI 和评审在发布之后进行。

35a9b13 评审跟进资格验证

该评审运行时为 35a9b13adaaccff109125664898d99886d76d959,树 db41f5fbee2d1dca69544c221324daa8238b8e8b。 下方原始资格验证在 f85a887 处保持历史性;JSON review_followup 记录了新的命令、结果和成本。

  • 216 个源码测试 /13 个套件,394 个编译边界测试 /13 个套件, 23 个真实 SDK 案例,未缓存的类型检查/风格检查及精确 CI 静态检查均通过。 未更改的架构契约保留了早期15项检查的资格。
  • 已更正的回归复现了针对发布的生产者源码的 13 个断言失败和67 个通过对照。所需血统和 CMS 签名帧、存在的空签名者集合、完整 ZIP/Zip64 目录范围以及预中止的取消原因现在在其归属边界处处理。
  • 共享 FIFO 允许一个活动 APK 扫描和八个待处理请求跨提供者实例存在。待处理扫描不持有任何 APK 字节。容量、取消、释放恢复以及关闭/排空均有确定性测试;生产边界测试使用具有受控描述符暂停的真实文件。
  • 对相同生成/重新签名的180MB输入进行三个同时扫描: 981,049,344 → 448,929,792 字节 峰值进程家族 RSS,2.355 → 2.257s 运行时间, 3.116 → 2.491 CPU 秒。每个结果都与相同来源 SHA、SDK 签名者指纹以及声明的内容摘要匹配。
  • 当前完整与精选 F-Droid SDK 任务,相同答案和完整父级:5,243 → 4,227 tokenx 估计, 3.564 → 3.824s 运行时间, 4.289 → 4.271 CPU 秒, 754,368,512 → 762,630,144 字节 峰值 RSS。

这些是带有热 OS 缓存的单次新进程观察结果。队列边界约束实时物化;它不会使选择跳过哈希,也不建立统计加速。早期失败的测试夹具探测、风格检查和库准备检查均保留在 JSON 记录中。当前头部 CI/评审在发布之后进行。

原始资格验证

问题 #4537,现有 PR #4158。运行时 f85a887a05fa62d0675139746dbce6eba7548aee, 树 ff1f42613847e198988bf84dfb2d50d578084bdb,集成主分支 a4a548718d696d7329ffc7b9caa64ee72a215461,同时保留贡献者头部 76445a83c8e6542131f7b38290ec749b3a199ba4。JSON 记录 固定了命令、输入、资源概况、失败对照和限制。

所选文件提供者拥有 ZIP/签名/PKCS#7 解析和摘要工作。共享应用程序工作流拥有身份验证、取消和证据保留。CLI/MCP 使用相同的摘要以及签名者/摘要/血统投影;不可变报告缓存会重新检查父主题身份。所选页面在源码删除后保留身份链接、源范围和未知项。完整源码证据仍然可访问,CLI 紧凑交付可导出它。

执行的检查

  • 201 个源测试 / 12 个套件通过,未缓存的类型检查/lint 也通过。 测试在精确暂存的树上运行;提交钩子保持该树完全一致。
  • 408 个已编译公共测试 / 14 个套件通过,包括 15 项宣称的 schema 检查、两个 SDK 输入配置、CLI/MCP 对等性、删除后的保留读取、 批处理/字段/页面语义、部分 v1/lineage 事实、缓存的主题身份、 取消/清理、稳定读取器,以及 CI 选择/必需门禁。
  • 原始真实工具链验证器在前后均通过:23 个验证器报告的 CLI/SDK 案例, 包括 v1 RSA/EC、旧版 v1+v2+v3、轮换、v3.1、源戳、被篡改的字节和伪造的声明摘要。 伪造的声明可以使字节匹配,但 apksigner 会拒绝其签名; REA 保留这一区别。Build Tools 36.1.0/platform36 从 Google 下载, 已对照仓库元数据检查并固定 SHA-256。
  • 精确的 CI 静态检查已通过。文档验证跟随此生成的报告; 当前 head 的 GitHub CI 和审查将单独检查。

初始矩阵有四个失败和 28 个控制项。两个缺失/截断的帧结构案例和一个丢失的算法字段案例是真实问题;其普遍拒绝后缀的断言不正确,现已撤回。所有者现在检查完整的签名者帧结构、匹配的签名/外部 v3 SDK 边界,以及精确的算法记录。报告保留原始未签名算法 ID、声明摘要的十六进制、签名长度和未知算法。真实 SDK 签名暴露了一个额外的空 signed-data 字段,Android 读取器接受该字段。Scheme/signer/signed-data/record 后缀现在保留显式的未解释计数,而不是被误标为畸形;所需长度和重复的 v3 SDK 边界仍会被检查。表示扩展在报告分配之前计费。共享 fixtures 现在产生完整的帧结构。不声称进行任何密码学签名验证。

更大的公共矩阵暴露了两个旧的 30 秒测试超时。SDK 矩阵现在通过其实际宣称的定义;畸形无状态输入共享一个生产 stdio 会话,同时保留代表性 CLI 案例。所有原始断言和截止时间均被保留。失败的准备和已被取代的运行在 JSON 中显式记录。

公开工件与资源证据

未更改的官方 F-Droid APK 为 12,569,951 字节,SHA-256 19d51fad482239f6df6a99120e34513667e9a86d136dafdc4a211a68c3327b52。SDK apksigner verify -v --print-certs 验证了 v3 并识别出 43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab;每个任务都复现该 指纹并导出完整的父报告。URL、响应元数据和 输入身份被保留。从未执行 Android 代码。

一个不同的生成式压力输入向该 APK 添加了一个 160MiB 存储资产,并 使用生成的 fixture 密钥重新签名。该文件为 180,350,384 字节,SHA-256 cf3a3936f90bb79dabe2598dc4290f8c47d10680993c054fe8cac9d391fadaaf;apksigner 验证通过。每个输入的三次 provider 调用检查精确的源身份、签名者和内容摘要相等性。 它们的首次/重复进程内计时被单独记录。一个额外的 512MiB+1 稀疏文件在整文件分配之前被拒绝。

整体资源探测:2.047 s / 2.393 CPU s / 449,503,232 字节峰值采样家族 RSS。整文件 读取器保留数据块和拼接后的缓冲区;其 512MiB 输入上限并不等于 512MiB 进程内存声明。选择减少了交付,并且不会跳过文件 SHA-256 或受支持的摘要分析。

等效的已完成 SDK 任务

任务:识别未更改 APK 中每个声明的 v3 签名者指纹,并 导出完整 Evidence。当前完整任务和选中任务导出相同的父 Evidence 身份。 早期规范化事实不同,因为原始报告省略了原始算法细节;所有三个答案和源 SHA-256 一致。原始基线早于后来的主集成; 整个目录的更改包括其他上游工具。只有当前这两个任务 共享相同的宣称定义和完整的父身份。

交付 使用的完整输入声明 + 所有调用/回复,tokenx 整个目录 + 所有调用/回复,tokenx 任务资源
原始完整任务 4,156 1,140,214 3.282 s / 4.083 CPU s / 751,788,032 字节峰值采样家族 RSS
当前完整任务 5,246 1,157,394 3.612 s / 4.339 CPU s / 698,650,624 字节峰值采样家族 RSS
当前选中任务 4,230 1,156,378 3.508 s / 4.384 CPU s / 700,706,816 字节峰值采样家族 RSS

这些是估算值,而非实际模型 token。计数包括实际的广告、 参数、完整回复和导出;初始化和 JSON-RPC 信封 未进行测量。进程/会话是全新的,OS 缓存为热状态。不声称磁盘冷启动 或统计稳定的计时。CPU 使用 payload-family wait-rusage 差值; RSS 每 20ms 采样一次,并对后代进程求和。重型任务 在两个 CPU 上串行运行,带有 8GiB/420s 防护;没有防护触发。

新增的 GitHub 通道需要固定的 SDK 预言机工具,并且没有静默跳过。 本地结果确立了 Linux 静态读取器行为。Windows/macOS APK 行为、 平台安装、真实性、密码学签名者/lineage 有效性以及 v1 条目覆盖仍未验证。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea