🔒 安全白皮书 v1.0 2026-03-22

ZQMF 私有协议
安全白皮书

本文档详述 ZQMF(朱雀媒体格式)的五层防御体系、对优酷/爱奇艺/B站加密方案的逆向分析,以及 ZQMF 针对性规避策略与攻击面评估。

AES-128-CTR 全量加密 每分片独立密钥 设备指纹绑定 密钥服务器实时下发 私有二进制格式

1 执行摘要

视频内容保护是流媒体平台的核心商业诉求。现有主流方案(HLS AES-128、CENC/Widevine)在 Android 设备上普遍存在被逆向的风险,国内三大主流平台优酷、爱奇艺、B站的加密方案均已被研究者逆向并公开破解工具。

ZQMF(朱雀媒体格式,ZhuQue Media Format)是朱雀 SDK 自研的私有加密协议,通过私有格式 + 分片加密 + 设备绑定 + 噪音流量 + 请求混淆五层防御体系,从根本上提升了内容保护的门槛。

3/3
国内主流平台
已被破解
5 层
独立防御机制
层层递进
无法
制作通用
破解工具

2 五层防御体系

每一层独立生效,即使某一层被突破,其他层仍然有效。防御对象从"普通用户"到"专业逆向工程师"层层递进。

1

私有格式

防御目标:脚本小子 + 99% 普通用户

ZQMF 使用完全私有化的二进制文件格式:索引文件 .zqm 和分片文件 .zqs,均为加密二进制,与任何现有视频格式标准不兼容。

防御效果
  • • VLC / ffplay / ffmpeg 无法识别
  • • 任何标准播放器直接报错
  • • 抓包工具看到的是无结构二进制
与 B站 .bbts 的区别
  • • B站 .bbts 内部仍是标准 TS 结构
  • • ZQMF 索引和分片全部加密,无标准结构暴露
2

分片加密

防御目标:知道格式但没密钥的人

采用 AES-128-CTR 模式对每个分片进行全量加密,每个分片使用独立的 8 字节随机 Nonce,并附加 HMAC-SHA256 截断认证(基于密文 + 密钥,攻击者无法伪造)。

// 每分片独立密钥派生
SegmentKey = HMAC-SHA256(VideoKey, SegmentIndex || Nonce)
CipherText = AES-CTR(SegmentKey, Nonce, PlainText)
MAC = HMAC-SHA256(SegmentKey, CipherText)[0:16]
3

设备绑定

防御目标:有密钥想分发给多人的人

视频密钥(VideoKey)不存储在客户端,每次播放时携带设备指纹向密钥服务器请求。密钥有 TTL 时效,过期自动失效,无法离线转移。

  • 设备指纹由硬件 ID + 软件指纹综合生成,不可伪造
  • 换设备播放需要重新向密钥服务器授权
  • 密钥传输有应用层加密(TransportKey),即使 HTTPS 被劫持也安全
4

噪音流量

防御目标:批量抓取资源 URL 的同行

SDK 在请求真实分片时,同步发送随机生成的虚假请求,真假请求混合,流量监控工具无法区分哪些是真实视频请求,无法批量扫描和缓存视频资源。

5

请求混淆

防御目标:追踪 CDN 路径的人

CDN 分片 URL 路径通过 SHA-256 混淆,每次播放请求的路径不同。即使攻击者知道 CDN 域名,也无法通过路径规律追踪或预测具体视频的存储位置。

3 竞品逆向分析

以下分析基于对优酷、爱奇艺、B站三家平台客户端的逆向研究,所有信息均来自公开的安全研究社区。目的在于理解行业加密弱点,指导 ZQMF 设计规避相同错误。

平台 加密模式 密钥管理 加密粒度 状态
优酷 AES-ECB(最弱) 整个视频一个 Key,无 IV PES Payload 级(TS 内部) 已被逆向
爱奇艺 AES-256-CBC + BigNum XOR TLV License,固定 IV "0000…" 视频级 已被逆向
B站 AES-128-CTR + CRC16 License 文件 + PMT 私有数据 NAL 单元级(选择性) 已被逆向
ZQMF AES-128-CTR 服务器实时下发 + 设备绑定 + TTL 分片级(全量加密)

3.1 优酷方案分析(TSParser)

实现方式
  • 纯 Java MPEG-TS 解析器,按 PID 识别视频/音频流
  • PID 硬编码(0x100 视频 / 0x101 音频),不解析 PAT/PMT
  • 同一 PES 的所有 TS Payload 拼接后做 AES-ECB 解密
  • 解密后原地回写到 TS 数据,TS 封包结构不变
致命弱点
  • ! AES-ECB:相同明文块 → 相同密文块,存在模式泄露
  • ! PID 硬编码,逆向者只需关注两个固定 PID
  • ! 密钥无保护,无设备绑定
  • ! TS 同步字节 0x47、TS Header 全部明文

3.2 爱奇艺方案分析(MonalisaTLV + LicenseKeyDecryptor)

实现方式
  • License 为 Base64 编码的 TLV 结构,包含 7 个记录
  • 两步解密:AES-256-CBC 解密 Encrypted Key → BigNum XOR 得最终 Key
  • 最终密钥用于 AES-CTR 解密视频内容
致命弱点
  • ! 固定 IV "0000000000000000",降低 CBC 安全性
  • ! 固定 XOR 掩码(32 字节硬编码),逆向一次永久有效
  • ! License 结构公开,TLV 解析后所有字段一目了然
  • ! License 是静态文件,可被转移复制

3.3 B站方案分析(bbts_decrypt)

实现方式
  • 自定义 .bbts 格式,但内部仍是标准 TS 结构
  • 解密参数嵌入 TS 文件的 PMT 私有数据中
  • 选择性加密:只加密关键帧,VPS/SPS/PPS 保留明文
  • CRC16-CCITT 校验解密完整性
致命弱点
  • ! 解密参数(nonce、skip、interval)随文件分发
  • ! 选择性加密保留了编码参数明文,缩小破解范围
  • ! CRC16 仅 16 位,碰撞概率 1/65536
  • ! License JSON 文件本身无加密,密钥可直接提取

4 ZQMF 针对性规避策略

竞品弱点 踩坑方 ZQMF 规避方式
AES-ECB(相同明文 = 相同密文) 优酷 AES-CTR,每分片独立 Nonce,无模式泄露
固定 IV "0000000000000000" 爱奇艺 每分片随机生成 8 字节 Nonce,不重复
固定 XOR 掩码(硬编码) 爱奇艺 密钥派生用 HMAC-SHA256,无固定掩码
解密参数嵌在文件内部 B站 VideoKey 不随文件分发,必须从密钥服务器实时获取
License 是静态文件可转移 爱奇艺/B站 密钥有 TTL + 设备指纹绑定,不可离线转移
PID 硬编码 优酷 ZQMF 整文件加密,不需要解析 TS 内部 PID 结构
选择性加密留明文区域 B站 整个分片全量加密,解密前看不到任何 TS/NAL 结构
CRC16 校验太弱 B站 HMAC-SHA256 截断(基于密文 + 密钥,攻击者无法伪造)
TS 同步字节 0x47 明文暴露 优酷/B站 .zqs 文件无任何标准视频格式特征,工具无法识别
密钥传输无二次加密 三家均无 VideoKey 传输有应用层加密(TransportKey),HTTPS 被劫持也安全

核心结论

  1. 1. 纯靠加密算法强度不够:爱奇艺用了 AES-256 + BigNum XOR + AES-CTR 三层加密,仍然被逆向。根因是密钥和参数都可以从客户端/文件中提取。
  2. 2. 密钥管理比加密算法更重要:三家的共同弱点是密钥/参数可以被截获和转移。ZQMF 通过密钥服务器 + 设备绑定 + TTL 过期从根本上解决。
  3. 3. 私有格式是第一道门槛:.zqm/.zqs 从索引到内容全部私有化,逆向者无法用任何现有工具分析,需要从零开始理解格式。
  4. 4. 整文件加密优于选择性加密:选择性加密节省计算量但暴露结构信息。在现代设备 AES 硬件加速下,整文件加密的性能损失可忽略不计。

5 攻击面分析

攻击手段 防御措施 防御等级
抓包获取 M3U8 地址 无 M3U8,索引文件是加密的二进制格式(.zqm) ★★★★★
VLC / ffplay 直接播放 无法识别 .zqm/.zqs 格式,直接报错 ★★★★★
下载 .zqs 文件本地解密 无密钥无法解密,密钥绑定设备指纹 ★★★★★
中间人劫持 HTTPS VideoKey 有应用层加密(TransportKey),即使 HTTPS 被劫持也安全 ★★★★★
抓包获取分片 URL 批量下载 URL 被 RequestDisguiser 混淆 + 噪音流量掩护,无法区分 ★★★★☆
逆向 APK 提取密钥逻辑 密钥不在 APK 中,每次从服务器获取;appSecret 可 SO 加固 ★★★★☆
Frida Hook 拦截解密后数据 需要 Root + 实时 Hook,门槛极高,无法批量操作,仅能针对单个视频 ★★★☆☆
录屏 非协议层能解决的问题,需配合水印溯源(规划中:动态水印 + 设备 ID 追踪) ★★☆☆☆
防御等级说明:★★★★★ 完全防御 / ★★★★☆ 高门槛防御 / ★★★☆☆ 中等门槛 / ★★☆☆☆ 有限防御

6 安全架构概览

// 加密端(云端 ZQMF Worker)
原始视频 → 转码 → ZQMF 加密处理
├── 生成 VideoKey(服务器端持久化)
├── 逐分片:随机 Nonce → AES-CTR 加密 → HMAC-SHA256 认证
├── 生成加密索引 .zqm
└── 分片文件 .zqs 写入 S3
// 播放端(客户 App + 朱雀 SDK)
用户点播 → SDK 请求密钥服务器
├── 请求携带:设备指纹 + appKey + 时效签名
├── 服务器验证后返回:VideoKey(TransportKey 加密传输)
├── SDK 解密 VideoKey → 下载 .zqm → 解析分片列表
└── 按需下载 .zqs → C 层 AES-CTR 解密 → 送入 IJK 解码

7 存量视频迁移方案

迁移流程

  1. 1. 优先迁移已选择 ZQMF 的高价值客户
  2. 2. ZQMF Worker 读取存量 HLS .ts 分片,执行加密后处理
  3. 3. 生成 .zqm 索引 + .zqs 加密分片,写回 S3
  4. 4. 数据库标记 format = "ZQMF"
  5. 5. SDK 自动根据 format 字段选择解密路径

迁移规格

并行 Worker 数 10 个
1PB 存量预计耗时 约 14 天
格式共存 HLS + ZQMF 并存,自动识别
失败重试 自动重试 3 次
原始文件 保留不变,可随时回滚

迁移期间用户无感知:SDK 的 SourceType 检测会自动识别视频是 HLS 还是 ZQMF 格式,选择对应的播放路径。用户看到的只是正常播放,不会出现因格式迁移导致的播放失败。

8 结论

ZQMF 并非宣称在密码学上不可破解——理论上任何加密都可以被暴力破解。ZQMF 的优势在于将破解成本提升到无法规模化的程度

  • 优酷/爱奇艺/B站的破解工具之所以流行,是因为一次逆向对所有用户有效。ZQMF 的播放器是客户自己的 App,每个客户不同,逆向者必须对每个 App 单独操作,无法做成通用工具。
  • 即使某个客户的 App 被逆向,影响范围仅限于该客户的视频,不影响其他客户,且密钥 TTL 限制了被盗密钥的有效期。
  • Frida Hook 虽然理论上可以拦截解密后的数据,但需要 Root 设备 + 实时操作,无法批量化,对大规模内容盗版没有商业价值。
有安全研究发现?请负责任地披露给我们:
support@suzaku.jp

准备好保护你的内容了吗?

申请试用,30 天内免费体验 ZQMF 内容保护全部功能。