YD/T 3647-2020 标准解读

YD通信标准信息

现行

作者:标准下载站
发布时间:2026‑10‑12
2389 字
阅读约 8 分钟

一、标准适用场景与实施阶段

  • 适配业务类型:面向电信运营商、移动应用分发平台(含自有应用商店)、终端制造商及第三方安全检测机构开展的移动应用程序(Android/iOS平台)代码签名合规性验证活动;不适用于Web应用、小程序、H5页面及未封装为APK/IPA格式的运行时脚本。
  • 实施环节:限于应用发布前的安全准入测试阶段,具体包含应用包提交至分发平台后的自动化签名验证环节,以及人工复核环节;不覆盖开发过程中的签名密钥管理、证书生命周期运维等非测试行为。
  • 验收阶段:属于软件产品上线前强制性安全准入验收项,须在应用版本通过功能、性能、兼容性测试后,独立完成并出具《代码签名符合性测试报告》方可进入灰度发布流程。

二、现场实操合规规范

  1. 签名文件提取:使用apksigner verify --verbose(Android)或codesign -dv --verbose=4(iOS)命令提取签名信息,禁止采用非标准工具链解析;输出日志须完整保留至原始日志文件,时间戳精度不低于毫秒级。
  2. 证书链验证:验证证书链完整性,要求Android平台至少包含2级证书(应用签名证书→中间CA证书),iOS平台必须包含3级(应用签名证书→Apple Worldwide Developer Relations CA→Apple Root CA);证书有效期偏差阈值≤±15分钟(UTC时间)。
  3. 签名算法强制要求:Android平台必须启用SHA-256withRSA或SHA-256withECDSA,禁用SHA-1、MD5;iOS平台必须启用SHA-256withRSA,且私钥长度≥2048位;算法标识符须与Signature Algorithm字段完全一致。
  4. 签名完整性校验:执行apksigner verify --print-certs比对APK中MANIFEST.MF与CERT.SF哈希值,差异率必须为0%;iOS应用须校验_CodeSignature/CodeResources文件中每个资源条目的SHA-256哈希值与实际文件哈希值逐字节匹配。
  5. 现场质量管控:每批次测试需留存原始APK/IPA文件哈希(SHA-256)、测试命令执行环境快照(含Java/Python版本、OpenSSL版本)、网络时间协议(NTP)同步状态截图;测试环境系统时间与UTC偏差≤500ms。

三、成果验收核验标准

核验项目合格判定指标标准化验收流程
签名证书有效性证书未过期、未被吊销(OCSP响应码=0,CRL分发点可访问且最新更新时间≤72小时)调用RFC 6960 OCSP接口验证,记录响应HTTP状态码、responseStatus字段值、certStatus字段值
签名完整性APK:Verified using v1 scheme (JAR signing): true且Verified using v2 scheme (APK Signature Scheme v2): true;iOS:status=0且valid on device=true执行双模式校验命令,截取完整终端输出,关键布尔值须高亮标注
签名算法合规性证书Signature Algorithm字段值与YD/T 3647-2020表1中允许算法列表完全一致,无子字符串匹配解析X.509证书DER编码,提取OID值(如1.2.840.113549.1.1.11),比对标准附录A白名单
签名时间戳可信性Android:Timestamp Authority证书有效且签名时间在证书有效期内;iOS:CMS时间戳签名由Apple TSA服务签发,TSA证书链可上溯至Apple Root CA解析apksigner输出中Timestamp段落,提取TSA证书Subject DN,比对Apple公开根证书库DN字段

四、实操常见问题与质控方案

  • 问题1:APK仅通过v1签名未启用v2/v3签名 质控方案:强制执行apksigner sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true重签名;验收时v1/v2/v3任一模式返回false即判不合格。
  • 问题2:iOS应用使用自签名TSA证书或第三方TSA服务 质控方案:校验codesign -dvvv输出中Authority字段必须包含“Apple Timestamping Authority”;非Apple TSA证书直接拒绝入库。
  • 问题3:证书链缺失中间CA证书导致验证失败 质控方案:要求开发者提供完整证书链PEM文件(含root+intermediate+leaf),使用openssl verify -untrusted intermediate.pem -CAfile root.pem cert.pem预验证;缺失即退回整改。
  • 问题4:签名时间与设备本地时间偏差>500ms触发OCSP验证失败 质控方案:测试前执行ntpdate -s time.apple.com(iOS)或systemctl restart systemd-timesyncd(Android模拟器宿主机),验证timedatectl status | grep "System clock synchronized"返回yes。
  • 问题5:CERT.RSA中证书序列号与MANIFEST.MF中Digest值不匹配 质控方案:使用keytool -printcert -jarfile app.apk提取序列号,与unzip -p app.apk META-INF/MANIFEST.MF | grep "SHA-256-Digest"输出哈希值进行Base64解码后SHA-256再哈希比对,不一致则判定签名篡改。
标准解读不等同于原文,以标准原文为准

更多解读

标准号标准名称状态发布日期实施日期
YD/T 3646-2020移动应用程序代码签名技术要求现行2020-04-162020-07-01