纪玄没有停顿,立刻开始破解第二层加密——自定义的流加密算法。
这一层更难。
流加密算法的核心是一个伪随机数生成器,用密钥作为种子,生成一个无限长的随机数序列,与明文进行异或运算得到密文。要破解,必须知道伪随机数生成器的算法,或者找到算法的漏洞。
纪玄调出解密后的第一层数据。
看起来依然是一堆乱码,但有规律可循。他启动频率分析工具,统计每个字节出现的频率。在正常的加密数据中,字节频率应该是均匀分布的。但这段数据不是——某些字节出现的频率明显偏高。
这是流加密算法常见的漏洞:如果伪随机数生成器的周期不够长,或者算法有缺陷,就会导致密钥流出现重复模式。而重复模式,就是突破口。
纪玄写了一个自相关分析程序。
程序运行,屏幕上出现一张波形图。横坐标是偏移量,纵坐标是自相关值。正常情况下,波形应该是一条平直的线。但现在,波形在偏移量为256的位置,出现了一个明显的峰值。
周期是256字节。
伪随机数生成器每生成256个字节后,就会重复。
纪玄立刻写了一个破解程序:截取256字节的密文,与256字节后的密文进行异或运算。因为密钥流重复,所以两次异或的结果,就是两段明文的异或值。而如果其中一段明文是已知的——比如常见的文件头、协议头——就可以反推出密钥流。
他尝试了几种常见的文件头。
JPEG文件头,失败。
MP4文件头,失败。
MPEG-TS流头……成功。
屏幕上的乱码突然变得清晰。
那是一段视频流的传输协议头:同步字节0x47,包标识符0x100,适配域控制……这是标准的MPEG-TS流,用于数字电视和流媒体传输。纪玄立刻启动协议解析器,将数据流重组为完整的TS流。
然后,他开始破解第三层加密。
这一层,吴涛说从未见过。
纪玄看着解密后的TS流数据。依然是乱码,但乱得很有规律——每隔188字节(一个TS包的长度),就会出现一个固定的32字节字段。字段的内容每次都不一样,但结构相同:前8字节是时间戳,中间16字节看起来像哈希值,最后8字节是序列号。
这是……数字版权管理(DRM)加密。
本章未完,请点击下一页继续阅读!