最近的新闻报道表明,NSA可能会参与尝试影响公共标准或商业部署软件中的加密,以使NSA能够解密加密的流量。例如,请参阅《纽约时报》上的这篇文章。

《纽约时报》上的文章专门提到了2006年的NIST标准,两名Microsoft工程师后来在该标准中发现了该方案中的一个严重问题。 《纽约时报》的文章解释了由国家安全局(NSA)制定标准的方法,而国家安全局则大力推动该计划:


同时,国家安全局(NSA)一直在故意削弱开发人员采用的国际加密标准。该机构2013年预算要求中的一个目标是“影响最常见的加密方法商业公钥技术的政策,标准和规范”。

密码学家长期以来一直怀疑该机构在标准中植入了漏洞。美国国家标准技术研究所(National Institute of Standards and Technology)是美国加密标准机构于2006年通过的,后来又由拥有163个国家的国际标准化组织(International Organization for Standardization)通过。

NSA分类备忘录似乎证实了致命的弱点,该弱点是由该机构设计的,该弱点是由两名Microsoft密码学家于2007年发现的。 N.S.A.编写了该标准并积极地将其推向了国际组织,私下称其为“一项严峻的挑战”。


经过一番侦查,我敢肯定这是对NIST SP 800-90中描述的Dual_EC_DRBG伪随机数生成器方案的引用。缺点是Dual_EC_DRBG似乎包含一个后门,任何知道该后门的人都可以完全破坏PRNG。该弱点首先在CRYPTO 2007的一次下场演讲中得到了描述,随后由Wired中的Bruce Schneier进行了讨论。结果,现在有充分的理由怀疑Dual_EC_DRBG包含NSA后门,并且NSA可能能够监视使用Dual_EC_DRBG的任何人。

我的问题:


谁使用Dual_EC_DRBG?
有没有商业产品使用Dual_EC_DRBG?
有人使用吗?


评论

这个数量不多,因此我只作评论,但是一家安全研究/咨询公司的著名创始人最近表示,在他的评估中,没有人真正使用它。
后门于2005年设计并获得专利:US 8396213 B2-椭圆曲线随机数生成

@nymble该专利似乎对Dual_EC_DBRG专利无效。它似乎也没有申请任何后门专利。相反,该专利列出了现有技术中的Dual_EC_DBRG,并要求获得一种以可验证的无后门方式生成点P,Q的方法的专利。

#1 楼

RSA BSAFE库(用于Java和C / C ++)都将其用作默认PRNG。

Java:


http://developer-content.emc .com / docs / rsashare / share_for_java / 1.1 / dev_guide / group__LEARNJSSE__RANDOM__ALGORITHM.html

C / C ++:


https://community.emc.com/ servlet / JiveServlet / previewBody / 4950-102-2-17171 / Share-C_1.1_rel_notes.pdf

这显然会影响“ McAfee Firewall Enterprise Control Center”之类的库用户。

另请参阅https://lwn.net/Articles/566329/

评论


$ \ begingroup $
哇。很棒的发现!令人惊讶的是,在BSAFE文档中,RSA将基于SHA-1的PRNG归类为“弱”(用他们的话来说),并以提供更好的安全性为由推荐Dual_EC_DRBG。给实施者的建议真糟糕。
$ \ endgroup $
– D.W.
2013年9月14日在0:29



$ \ begingroup $
如果我有使用BSAFE的产品,我将尽快更换它。它有后门是合理的,如果没有后门,那么它的设计就很粗心。由于有人显然正在使用它,因此该论点失败了。)
$ \ endgroup $
– K.G.
2013年9月14日上午11:26

$ \ begingroup $
RSA确认了该问题,并“将视情况更改RSA BSAFE Toolkit和RSA DPM中的默认RNG”。 arstechnica.com/security/2013/09/…
$ \ endgroup $
–安德拉斯·萨拉蒙(AndrásSalamon)
2013年9月27日在20:37

$ \ begingroup $
Bsafe不仅使用它,而且NSA似乎向RSA支付了1000万美元,使其成为BSafe中的首选算法。
$ \ endgroup $
–user11028
2013年12月21日23:57

$ \ begingroup $
@sampablokuper留下的链接已死,但可以在archive.org上找到
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
16年4月1日在19:24

#2 楼

这是已通过NIST验证其EC DRBG算法的产品和公司的列表。
http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgval.html

验证列出了所有已验证的模式,因此您可以查看哪些模式已验证了Dual_EC_DRBG的实现。蒂姆·迪克斯(Tim Dierks)指出,对于Lancope的认证(NIST验证#288),Dual_EC_DRBG是唯一经过测试或验证的列出的操作模式。很难知道,如果Lancope不使用它们,为什么会提交其库进行验证。因此,听起来好像至少有一种使用Dual_EC_DRBG的实现。 (感谢蒂姆·迪尔克斯的分析。)

评论


$ \ begingroup $
该列表似乎主要是实现该算法的库以及来自同一标准的其他库。尚不清楚这些公司中是否有任何一家实际使用EC_DRBG RNG。例如,据我所知,OpenSSL实现了它,在任何地方都没有使用它。
$ \ endgroup $
– imichaelmiers
2013年9月6日5:09



$ \ begingroup $
在Stack Exchange上不建议仅链接的答案。最好在答案本身中总结链接页面中的要点,以便如果链接由于任何原因而变得无效,答案仍然有用。
$ \ endgroup $
–用户
2013年9月6日7:33



$ \ begingroup $
@MichaelKjörling,我认为劝阻仅链接的答案的标准原因不适用于此。维护经过验证的算法列表是NIST的工作之一,因此我认为他们不会只是停止发布该列表。此外,它们是此信息的权威来源,并且信息会随着时间而变化,因此将信息复制到此答案中将是一个坏主意(此答案将过时)。底线:在这种情况下,我认为指向此信息的权威来源是有用和适当的。
$ \ endgroup $
– D.W.
2013年9月6日20:55在

$ \ begingroup $
@ D.W .:我同意该链接很有用,但是对IMO进行总结(当然还有该链接)会更好。一方面,NIST表并不十分容易阅读;另一方面,令我惊讶的是,撰写本文时,对当前情况进行总结对将来的读者也可能会有用。
$ \ endgroup $
–伊尔马里·卡洛宁(Ilmari Karonen)
2013年9月8日在16:49



$ \ begingroup $
链接不见了...
$ \ endgroup $
–马腾·博德威斯♦
2013年9月16日在7:18

#3 楼

坦白说,如果有人使用它,我会感到惊讶。甚至早在2007年就发现了潜在的后门程序之前,与NIST SP 800-90中的所有其他随机数生成器相比,Dual_EC_DRBG已知速度要慢得多,而且偏向要稍大一些。引用布鲁斯·施耐尔(Bruce Schneier)的话:

”“如果这个故事让您感到困惑,请加入俱乐部。我不明白为什么国家安全局如此坚持将Dual_EC_DRBG纳入标准。这毫无意义。 door:它是公共的,很明显,从工程学的角度讲是没有意义的:任何人都愿意使用它太慢了;从向后兼容的角度来看这是没有意义的:将一个随机数生成器换成另一个很容易。”

我想NSA可能只有一个人认为后门会工作,他们的等级太高而无法真正理解实际问题。我可以轻易地想象出这样的对话:

“ SIGINT的人们一直在寻求一种我们可以破解的算法,但没人能做到。这可能吗?”是的,但是它真的很慢。没人会想要使用它。无论如何,它看起来真的很可疑。“
”没关系,只是这样做。我真的很想让那些家伙离我远去。”

我能想到的唯一另一种可能性是,也许某些人在加密产品中使用Dual_EC_DRBG,这仅仅是因为NSA一直在依赖他们这样做。但是,将后门引入到密码系统中似乎仍然是一种尴尬的方式,这时只需要塞入一两个故意的错误就会容易得多。尽管如此,它还是经过NIST批准的算法,因此使用Dual_EC_DRBG至少可以让您合法地声明您的代码已经过测试和验证,同时还有后门。

评论


$ \ begingroup $
我认为这个答案很准确。尽管NSA肯定有聪明人,但我怀疑他们偶尔不会遭受官僚主义情况的困扰,例如您在此处概述的假设情景……任何大型组织,无论其成员有多聪明(而且也许是因为他们的智慧)可能会具有官僚作风。
$ \ endgroup $
–里德
2013年9月5日23:24



$ \ begingroup $
不是摆在眼前-听起来像是对国家安全局内部政治的无端猜测。他们有一个目标(成为NIST / FIPS批准的标准的后门)并实现了它。查看已经通过NIST认证Dual_EC_DRBG实现的供应商列表(与该问题的其他答案链接),其中列出了许多硬件,软件和网络公司。这些供应商中似乎至少有一些已经交付使用Dual_EC_DRBG进行“安全”通信的产品。令人惊讶的是什么?
$ \ endgroup $
–cce
2013年9月6日4:42



$ \ begingroup $
@cce:您说的也听起来像是猜测……谁说他们的目标是使后门成为标准?即使是这样,他们使用Dual_EC_DRBG是否成功,还是正在考虑其他标准?我的观点是,与NSA相关的讨论中的几乎所有内容都是基于一些模糊的一般事实进行的推测。我认为认为国家安全局可能遭受官僚主义的困扰并非没有道理:政府的其余部分似乎被官僚主义所吞噬,那么,国家安全局的特殊之处是什么?
$ \ endgroup $
–里德
2013年9月11日19:25

$ \ begingroup $
被RSA宣布其旗舰BSAFE产品默认使用它的说法所反对。令人惊讶但真实。关于密码工程学的一些想法:RSA警告开发人员不要使用RSA产品
$ \ endgroup $
–nealmcb
2013年9月28日14:23在

$ \ begingroup $
@nealmcb:是的。使我惊讶。
$ \ endgroup $
–伊尔马里·卡洛宁(Ilmari Karonen)
2013年9月28日19:15在

#4 楼

自2013年9月9日起,NIST建议不要使用Dual_EC_DRBG。从链接中引用:


建议不要使用SP 800-90A双椭圆曲线确定性随机
位生成:NIST强烈建议在解决安全问题之前并且不再使用SP 800-90A的重新发行,如2012年1月版SP 800-90A中指定的Dual_EC_DRBG。 [强调原始内容]


此外,SP 800-90A的评论期已重新开放至2013年11月6日。 ,NIST特别出版物800-90A将重新发布,作为征求公众意见的草案,截止日期为2013年11月6日。可在http://csrc.nist.gov/publications/PubsDrafts.html上找到。

#5 楼

对于那些想知道微软(作为大厂商)是否使用它的人……Windows不使用它。实际上,您必须显式更改默认的RNG,即AES-CTR RNG。

专门:

在Windows7上进行的调试显示CryptGenRandom使用具有48字节种子的AES256-CTR ,通过在每次调用后对其后48个字节的输出进行XOR运算来重新设置密钥,以为RNG状态提供前向安全性。

每个线程都提供RNG状态,而该线程又从整个进程的RNG状态提供。

有点怪异的是,为该进程维护了8 x 48字节状态(每个状态最初是从对CNG.sys的内核调用中植入的,再加上其他信息)RNG,它们循环循环以提供每个线程的初始RNG种子。

评论


$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
16年4月1日在15:50