密码学考古:伪随机数算法dual_ec_prng的后门

dual_ec_prng 是基于椭圆曲线上的运算,由 NSA 提出,曾作为标准的伪随机数发生器。后被指出随机数序列有一定偏好;后被指出可能存在后门,攻击者可以根据当前随机数预测将来的随机数;再后来被明确废弃。本文从数学原理上仔细分析该伪随机数算法存在的缺陷,使用代码复现攻击的情景,非原创,是将数学论文里描述的内容展示出来。

一、背景

网上乱七八糟的新闻新闻多的去了,我就不介绍背景了,搜关键词 dual_ec_prng 就有很多报道性的新闻了。作为一个搞技术的,只讲技术,不讲别的,结论是:知道"点P"和"点Q"生成方式的人,有能力通过观测伪随机的片段,预测出将来随机数的内容。

懒得markdown排版了,贴个 git 地址直接看吧,

https://github.com/LeadroyaL/dual_ec_prng_poc/blob/master/docs.md,反正就是密码学原理,

完整代码位于:https://www.github.com/LeadroyaL/dual_ec_prng_poc