根据斯诺登的文件,最近在媒体上发表的文章表明,美国国家安全局(NSA)积极尝试通过将商业部署技术的弱点嵌入到技术中来实现监视-包括至少一项NIST标准。 186-3标准提供了可用于椭圆曲线密码学的曲线的推荐参数。这些推荐的参数已被广泛使用。人们普遍认为它们是一个合理的选择。

我的问题。我们可以相信这些参数吗?有什么方法可以证明它们是诚实生成的,从而使其不太可能包含后门吗?一堆秘密的Snowden文档,看到它们之后,他建议使用经典的基于整数离散对数的椭圆密码体制,而不是椭圆曲线密码体制。当被问及为什么他认为我们应该避免使用椭圆曲线密码时,他写道:


我不再相信这些常数。我相信,国家安全局已通过他们与行业的关系来操纵它们。 。这是令人担忧的地方。最近,我在tor-talk邮件列表上阅读了一条消息,似乎表明NIST曲线参数不是以可验证的方式生成的。该消息检查了参数的生成方式:


我查看了P-xxxr曲线的随机种子值。例如,P-256r的种子为c49d360886e704936a6678e1139d26b7819f7e90。该值没有任何正当理由。 >参数已煮熟。


根据我对FIPS 186-3的阅读,这似乎是对生成P-xxxr曲线的过程的准确描述。那么,人们应该对此予以关注吗?还是基于对国家安全局失去信任而产生的偏执狂?关于NIST参数选择。

评论

我从来没有信任过它们,如果您想要替代方法,请尝试Shamus标准曲线

由于种子不短(为什么?),创建者本可以尝试许多曲线(例如$ 2 ^ {70} $)以希望找到一个较弱的曲线。因此问题是,是否有很大一部分的$ b $值的曲线是弱的,而NSA在生成参数时才知道该弱点。

当您问“我们可以信任这些参数”时,我在前面看到Schneier的评论“密码学家是保守派:我们不喜欢使用甚至有问题的算法”。由于现在负责将标准应用于实际产品中的社区成员中存在合理的担忧,因此标准机构(即NIST)有责任对这些参数的来源做出很好的解释。只要它们下降,我就说要避免基于这些参数进行任何操作。

关于“抽烟枪”,我说整个程序比起犯规行为更像是官僚作风。产生种子的人很可能会真诚地使用来自某些PRNG的随机字节,并且一旦确定参数,就来不及更改它们。我至少有一半的日常工作环境是通过这种方式产生的。

@ThomasPornin:这些曲线是NIST在2000年代初由NSA推荐的。在此目的的文档中,这些人的“官僚主义失误”具有接近零的IMO概率。例如,SHA-1中的幻数很清楚,“什么也没给我穿”。这些应该并且本来就很清楚。

#1 楼

编辑:我做了一些测试,发现有些奇怪。参见结尾。


初始答案:

至少Koblitz曲线(在NIST术语中为K-163,K-233 ...)不能具有因为整个过程非常透明,所以我们专门对它们进行了“烹饪”:


以二进制字段$ GF(2 ^ m)$开始。对于每个m,只有一个这样的字段(您可以有几种表示形式,但是它们都是同构的。)
将自己限制为m的质数,以免陷入子字段中而导致弱点。
考虑一下曲线$ Y ^ 2 + XY = X ^ 3 + aX ^ 2 + b $其中$ b \ ne 0 $;这是二进制字段中非超奇异曲线的正常形式。
您只需要$ a = a ^ 2 $和$ b = b ^ 2 $的曲线,这样您就可以利用Frobenius同构来加快计算速度(基本上,您只需简单地对两个坐标进行平方运算就可以替换双点,这非常快)。当$ a = 1 $时,必须是2的倍数。 p $(取决于$ a = 1 $还是$ 0 $)。对于介于“有趣范围”(例如160到768)中的$ m $,您不会找到很多合适的曲线(我不记得确切的计数,但是它类似于6或7条曲线)。 NIST只是简单地将其中的5个与$ m $值相对应,这些值最接近(但不低于)它们的“安全级别”(80、112、128、192和256位“等效强度”)。这里没有“烹饪”的空间。当然,其他人则认为Koblitz曲线具有一些特殊的结构,可以利用它们来进行更快的攻击。而且有两种方式是正确的:


更快的计算意味着更快的机械攻击;
可以解决离散对数“模制Frobenius内同态”的问题,这意味着K-233的强度大约等于225位的曲线(因为233是8位数字)。

我仍然认为这样曲线是认真进行密码工作的合理候选者。它们已经“野外生存”了至少15年,而且仍然毫发无损,就这些事情而言,这还不错。列举$ GF(2 ^ m)$中$ m $的所有Koblitz曲线,范围从3到1200。对于每个$ m $,有两个曲线要测试,$ a = 0 $和$ a = 1 $。如果曲线的阶次等于$ 4p $(对于$ a = 0 $)或$ 2p $(对于$ a = 1 $),且其质数为$ p $,则认为该曲线是“适当的”(这是因为曲线始终是$ GF(2)$中同一条曲线的扩展,因此曲线顺序必定是$ GF(2)$中曲线的倍数,取决于$ a $)为4或2。对于$ m $在160到768之间的“有趣范围”,有14条适当的曲线:


$ m = 163 $,$ a = 1 $
$ m = 233 $,$ a = 0 $
$ m = 239 $,$ a = 0 $
$ m = 277 $,$ a = 0 $
$ m = 283 $,$ a = 0 $
$ m = 283 $,$ a = 1 $
$ m = 311 $,$ a = 1 $
$ m = 331 $,$ a = 1 $
$ m = 347 $,$ a = 1 $
$ m = 349 $,$ a = 0 $
$ m = 359 $,$ a = 1 $
$ m = 409 $,$ a = 0 $
$ m = 571 $,$ a = 0 $
$ m = 701 $,$ a = 1 $

NIST的目标是它们的五个“安全级别”分别为80、112、128、192和256位,并且曲线只有在其大小至少为该级别的两倍时才会与该级别匹配。因此,每个级别的标准曲线应该是最小的曲线,该曲线对于该级别足够大。这应该分别在大小为163、233、277、409和571位的字段中产生Koblitz曲线。

奇怪的是,这与NIST的选择匹配,除了“ 128位”级别外,在该级别中,他们选择$ m = 283 $而不是$ m = 277 $。我不知道原因。对于这两个字段大小,最小的可能约简多项式是五项式($ X ^ {277} + X ^ {12} + X ^ {6} + X ^ {3} + 1 $ for $ m = 277 $,$ X ^ {283} + X ^ {12} + X ^ {7} + X ^ {5} + 1 $ for $ m = 283 $),因此两个字段都不具有计算优势,而另一个字段使用多项式基,则277位字段要短一些,因此要快一些)。如果使用普通基数,则277位字段实际上更有效,因为它接受“ 4类”高斯普通基,而283位字段是“ 6类”(较小的类型可提高性能)。所有合适的Koblitz曲线的列表都很容易重建,事实上,NIST / NSA确实做到了(例如,从NSA雇用的JA Solinas看到这篇文章-搜索“ 277”)。

为什么它们选择283位字段对我来说是个神秘事物。我仍然认为这不太可能构成“烹饪”;仅当NIST(或NSA)知道如何在283位字段而不是277位字段中打破Koblitz曲线时,这才是后门程序,这不仅需要假设“未发表的大密码分析进展”,而且还要求认为新颖的突破技术很怪异。

评论


$ \ begingroup $
(对于任何一条曲线)是否有可能选择它们很难进行恒定时间操作?
$ \ endgroup $
– imichaelmiers
2013年9月11日下午5:24

$ \ begingroup $
这是不可能的。在曲线方程式中,$ a $参数仅用于加倍,而$ b $则根本不使用,这意味着它不会影响计算速度。对于P- *曲线,$ a = -3 $,这将使一次运算节省一倍,实际上使获得恒定时间运算稍微容易些。
$ \ endgroup $
–托马斯·波宁(Thomas Pornin)
2013年9月11日11:00

#2 楼

FIPS 186-3本身至少部分回答了您的问题……

附录A描述了如何从种子开始并使用涉及SHA-1的迭代过程,直到找到有效的椭圆曲线。
因此,相信NSA会煮熟这些常数,相信以下两点之一:要么可以反转SHA-1,要么必须有足够比例的曲线满足其隐藏条件,才能通过蛮力搜索找到合适的SEED值。 ,“什么也不想干”的构造从简单的东西开始,例如小整数的$ sin $(对于MD5)或$ sqrt $(对于SHA-1)。据我所知(我错了吗?),NIST曲线的SEED值不太容易描述,这本身可疑。获得FIPS认证,允许其被美国政府机构购买并用于保护机密数据。他们有信心其他人不会很快发现漏洞。 br />
这就是...

来自最新披露的大量证据表明,NSA知道与SSL / TLS有关的密码学知识。也许这意味着ECDHE,也许不是。 (哎呀,也许这只是意味着某些通用的实现。)但是,鉴于我们有Dan Bernstein(Curve25519)之类的替代产品,即使您想使用NIST曲线也没有令人信服的理由忽略Schneier的直觉,完全避免ECC。

[更新]

Bernstein / Lange的演讲说NIST椭圆曲线是由“ NSA的Jerry Solinas”创建的。我在一读时就错过了。

我已将此问题发送到Perry Metzger的密码学列表:

http://www.metzdowd.com/pipermail/cryptography/2013 -September / 017446.html

也许有人可以与Solinas先生取得联系,并问他如何选择种子价值以及为什么。即使没有人相信它,也可以从源头上听到答案。

[更新2]

另请参阅http://safecurves.cr .yp.to / rigid.html

评论


$ \ begingroup $
“或者足够多的曲线必须满足其隐藏条件,才能通过蛮力搜索找到合适的SEED值。”如果使用此方法创建弱化的曲线,我不会感到惊讶。
$ \ endgroup $
– Richie车架
2013年9月9日5:48



$ \ begingroup $
据我了解,ECDHE并未在TLS中大量部署,因此不会导致大量数据被拦截。詹姆斯·班福德(James Bamford)认为,“巨大的突破”肯定不是布莱夫代尔所必需的。
$ \ endgroup $
– imichaelmiers
2013年9月11日下午5:29

$ \ begingroup $
@imichaelmiers:ECDHE是当前OpenSSL的默认值,这意味着它是所有现代Linux Web服务器的默认值(在浏览器允许的情况下)。 (转到Chrome中的self-evident.org,然后单击锁定图标。我正在使用该服务器的默认设置。)我不了解当前的IIS和IE。我提出了一个问题,但到目前为止还没有答案。我认为“突破”是EC知识(可能只是关于NIST曲线)的结合,并且说服所有人开始转向ECC。但是那时我只是个曲柄...
$ \ endgroup $
– Nemo
2013年9月11日15:32

$ \ begingroup $
我删除了有关杰里·索利纳斯(Jerry Solinas)的评论,该评论声称种子是由HSM生成的,因为我找不到它了(不再吗?),所以我将其删除。没有可用的资源,对不起。请注意,即使不是不可能,也很难证明是否使用了HSM。
$ \ endgroup $
–马腾·博德威斯♦
17年1月3日,18:22



#3 楼

如果NSA知道足够大的椭圆曲线的弱曲线类别,那么他们就有可能选择弱曲线并对其进行标准化。

据我所知,没有任何暗示足以暗示椭圆曲线

关于选择曲线:如果NIST使用“明显”的字符串作为种子,那会更好。 “ P-256编号1的种子”,“ P-256编号2的种子”等,递增计数器直到找到一个好(根据指定的标准)。 (我们知道NSA和NIST从(例如)SHA-1中的常量知道并使用了“显而易见的”字符串。)

我们是否应该以他们没有像这样做为事实呢?他们知道一大类弱曲线吗?当一个诚实的人生成曲线时,选择随机种子与“显而易见的”字符串一样好。诚实的人没有预料到当前的妄想症水平,因此没有选择“显而易见的”字符串,而是产生了一些随机性,这似乎是合理的。因此,由于更简单的解释(这是一个错误),因此这不能证明NSA知道大量的弱椭圆曲线。我们现在已有13年以上的经验,这些泄漏带来了不确定性。 Bernstein-Lange幻灯片表明,NIST曲线不是最佳选择(曲线存在于较容易正确且安全地实现较快算法的位置)。我们现在就应该毫不犹豫地做出更好的选择。

评论


$ \ begingroup $
我不是要指责任何人或避免使用ECC。我只是想知道信任NIST ECC参数是否有正当理由。我不认为这是不合理或苛刻的。 (我认为NIST的世界;它们确实是社会的福音,而且我对我所认识的NIST员工充满信任和尊重。但这并没有使问题消失;仍然存在着问题,是否有合理的技术依据可信任这些参数。)
$ \ endgroup $
– D.W.
2013年9月9日在6:57



$ \ begingroup $
与您所写的相反,选择随机种子不仅效果很好,还因为它无法证明它们没有烹制参数。假设,例如,1/1000000000的曲线容易受到NSA发现的一些晦涩的攻击,但公众对此并不了解。然后,选择任意种子将使他们选择一条秘密受到其秘密攻击的曲线。 (就其价值而言,为NIST选择ECC参数的人显然是……正在等待……一名NSA雇员。)
$ \ endgroup $
– D.W.
2013年9月9日在6:58



$ \ begingroup $
@ user7863:我想您与提出修改建议的人是同一个人...您可以通过使用相同的邮件地址注册一个帐户来再次声明帖子的所有权。您可能会尝试在发布答案的同一浏览器中执行此操作,这样会变得更容易...否则涉及更多的官僚机构。
$ \ endgroup $
–PaŭloEbermann
2013年9月9日17:23

$ \ begingroup $
“诚实的人没有预料到当前的妄想症似乎是合理的”,我不这么认为,因为对DES S盒的讨论年代久远,而其他人则一无所有袖子号是理所当然的。
$ \ endgroup $
– starblue
2013年9月11日在18:48

#4 楼

这个侦探卫星旁边的公告机构“无所不能”(例如NROL-39)。答案为“否”的原因得到了分类。

评论


$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
18/12/23在21:38

$ \ begingroup $
这不是评论-这是对所问确切问题的认真回答。仅仅因为您不喜欢这个答案,或者对它的准确性持有相反的意见,并不意味着您应该滥用特权并检查我。
$ \ endgroup $
–安农·科沃德(Anon Coward)
19年2月17日在10:59

$ \ begingroup $
你和森林之间的讨论是一场讨论。评论不用于讨论。他们旨在要求对答案/问题进行澄清。同样,您的答案本身也未经任何形式的审查,每个人都可以阅读。它只是在答案列表的底部。可能是因为它几乎没有为“否”的答案提供理由。还要说“如果您毫无理由地不相信这个答案,那么您显然没有资格,应该找另一份工作”,这并不是一种礼貌的说法。评论讨论只是被软删除,我将其恢复,因此您可以重新阅读。
$ \ endgroup $
– SEJPM♦
19年2月17日在12:19

$ \ begingroup $
在评论中进行冗长的讨论以进行聊天是标准做法,并且经常发生。我没有阅读评论,而是以回应的方式迁移它们。我要提到的是,我们有一个行为准则,每个人都必须遵循该行为准则才能被允许在这里参与(其中“这里”是stackexchange网络中的所有站点)。请阅读并确保您的用户将来发布的内容与之一致。
$ \ endgroup $
–艾拉·罗斯(Ella Rose)
19年2月17日在16:18