我最近遇到了椭圆曲线密码系统:



椭圆曲线理论导论(布朗大学)

椭圆曲线密码学( Wikipedia)

会话初始化协议(SIP)(IEEE)中的身份管理性能分析

椭圆曲线密码系统概述。 (RSA.com)

在我看来,RSA是用于银行和金融系统以及证书的公钥基础结构的实际加密系统的绝佳替代品,但并未使用!如果有人可以解释为什么不这样做,那将非常有帮助。将传统RSA与椭圆曲线密码学进行比较会有所帮助。

开始于:

RSA的优点:


完善的方法。

椭圆曲线的优点:


短键与RSA的长键一样强(请参阅IEEE论文)
CPU消耗。
内存使用率低。


评论

极好的答案。关于采用EC,实施一直是一个问题。但是,openssl(从0.9.8版开始)和最近的openssh(从openssh 5.7版开始)都内置了椭圆曲线,因此我们应该在将来看到更大的采用率。

RSA的另一个优点:公钥操作(加密/信号验证)仍然比具有相同强度的ECC更快。

@SmitJohnth:“ RSA”比“ ECC”快吗?怎么样? ECC较低的CPU消耗和较低的内存消耗不会自动转换为更快的算法吗?

@VineetMenoncrypto.stackexchange.com/questions/1190/…RSA可以使用非常短的公钥。不能与ECC一起使用的基于DH的密码一起使用。

RSA的另一个次要优势是,与ECC相比,它被认为可以更好地抵御量子计算机。我认为这不会使任何人选择RSA而不是ECC。

#1 楼

RSA首先在那儿。实际上,这足以说明其卓越性。 RSA于1978年首次发布,自1993年以来,PKCS#1标准(确切地解释了RSA的使用方式,并明确说明了哪个字节到达何处)已经问世。使用椭圆曲线进行密码学的想法诞生了。自1985年以来,相关标准自1990年代后期以来一直存在。此外,RSA和椭圆曲线均已获得专利保护,但RSA专利已于2000年到期,而某些椭圆曲线专利仍在使用中。两种算法(一种用于加密和一种用于签名)都可以使用相同的密钥和相同的核心实现。但这并不是真正的优势,因为对加密和签名使用相同的密钥通常不是一个好主意。另外,您可以在数学上对ECDH(密钥交换)和ECDSA(签名)使用相同的私钥,因此,这根本不是RSA相对于EC的“优势”。在于它的数学比椭圆曲线要简单一些,因此许多工程师认为他们比椭圆曲线更“了解” RSA;再次,这是一个谬误的论证,因为密码算法的实现充满了微妙的细节,并且最好留给专业人士使用-无需理解库的内部数学就可以简单地使用它(我们可以通过以下方式使该论证成为半有效的:指出RSA依赖于因式分解的硬度,这已经研究了2500年,而椭圆曲线上的离散对数只能进行大约25年的研究。

相对于椭圆曲线密码学,RSA唯一在科学上的优势是RSA使用公钥操作(例如签名验证,而不是签名生成)的速度更快。但是公钥操作很少成为瓶颈,我们谈论的是每秒8000次ECDSA验证,而不是每秒20000 RSA验证。

另一个互操作性问题是,可以进行椭圆曲线操作不同类型的曲线,如果坚持编写代码时已知的特定曲线,则可以广泛优化。对于具有不同密钥对的许多不同人员使用同一曲线不会有安全性问题。但这意味着大多数实现将仅支持两个或三个特定曲线。 NIST已定义15条标准曲线。但是,实际上,许多实现仅支持其中两个P-256和P-384,因为这是NSA推荐的(名称为“ suite B”)(一个臭名昭著的例子是NSS,即NSS用于SSL的Firefox Web浏览器。

有两个用于椭圆曲线的ANSI标准,用于签名的X9.62(在FIPS 186-3中部分冗余,但更为详细)和用于非对称的X9.63。加密。

因此,学术研究人员和机构组织都在政治上大力推动采用椭圆曲线进行加密。但是,根深蒂固的RSA的惯性需要时间才能战胜。同样,感知到的数学复杂性以及与专利相关的潜在法律风险仍然阻碍椭圆曲线的广泛接受。

(在您的列表中,您可以添加“密钥生成时间”:生成新密钥ECDH或ECDSA的密钥对比生成新的RSA密钥对快得多。)

评论


$ \ begingroup $
对我来说,RSA的主要卖点是,如果您的PRNG在签名时被错误地植入,它不会泄漏私钥。尽管有可能避免此问题,但大多数实现都没有。
$ \ endgroup $
– CodesInChaos
2012年4月18日在12:33

$ \ begingroup $
您可以使用大约50行python从零开始实现RSA。尝试使用椭圆曲线。懒惰无疑是RC4如此普及的部分原因。我认为RSA也是如此!
$ \ endgroup $
–西蒙·约翰逊(Simon Johnson)
2012年7月10日在11:04



$ \ begingroup $
@curious:我可以引用自己。但是您也可以进行基准测试(使用OpenSSL,请尝试使用openssl speed rsa2048 ecdsap224)。
$ \ endgroup $
–托马斯·波宁(Thomas Pornin)
13年3月3日在13:34

$ \ begingroup $
这是因为操作不完全相同。对于RSA,签名验证使用的公共指数可能非常短(对于RSA,公共指数的典型长度为16位,而专用指数则与模数一样大)。这极大地促进了RSA中的公钥操作。没有类似的椭圆曲线。
$ \ endgroup $
–托马斯·波宁(Thomas Pornin)
13年3月3日在16:53

$ \ begingroup $
我有一个问题。我听说用RSA加密的密文可能会提示使用的公钥(标识谁对该消息进行了加密或未加密),而椭圆曲线没有此弱点。这是真的?
$ \ endgroup $
– Xeoncross
2013年7月9日在16:25



#2 楼

这主要是对@ThomasPornin答案的补充,不是一个完整的答案(但是太长了,无法放入评论中。)

ECC使用有限域,因此即使椭圆曲线本身是相对的较新,大多数涉及对数离散对数的数学要古老得多。实际上,大多数使用的算法都是分解算法的相对较小的变种。

真正的问题(还有一个尚待解决的问题,AFIAK)是椭圆曲线上的离散对数是否具有相同的“平滑度”在基于筛的算法中用于分解大素数乘积的特性。如果椭圆曲线不是“平滑的”(并且很多数学家似乎认为它们不是),那么筛式分解因式算法就不能适应于对椭圆曲线采用离散对数。如果它们是平滑的(并且很多其他数学家似乎都认为这很可能是正确的),则可以采用筛式算法。这将是对ECC的重大“突破”-您需要大幅增加密钥大小以维护安全性(对于等效的安全性,可能不至于RSA的大小,但相当接近)。这一切归结为一件事:2500年与几十年之间的差异并不明显。如果有的话,实际上是相反的:大多数较旧的分解因式算法的变体都可以用来在椭圆曲线上找到离散对数。 (至少基于现有知识)不适用于椭圆曲线是对基于筛子的算法的最近几十年的研究。

就专利情况而言,我认为情况比@poncho所暗示的要清楚得多。是的,Certicom拥有一些专利(目前并非所有专利都在ECC上,目前有120项),但是这些专利所涵盖或未涵盖的内容多年来一直很明确。他们的专利涵盖了优化ECC的一些特定方法,但绝对不涵盖ECC本身。实际上,专利本身具有“发明领域”(或在某些情况下为“发明背景”)部分,可告诉您专利之前的已知知识,并且这些内容对如何使用提供了相当完整的解释。 ECC用于加密和签名。例如,请参见美国专利号6,141,420,其中对椭圆曲线所涉及的数学以及如何实现具有椭圆曲线的ElGamal进行了相当不错的解释-所有这些都描述了专利之前的已知技术。

评论


$ \ begingroup $
黑莓和Certicom在IIRC领域申请了300多项专利。例如,请参阅国家安全局与Certicom Corp.的ECC许可协议中的NSA SublicenseFAQ。Certicom和Blackberry还声称拥有涵盖CA颁发椭圆曲线证书(可能与实现有关)所需的专利。例如,请参阅Certicom对IETF的IKE,SSL,TLS,CMS和S / MIME的IPR许可贡献。
$ \ endgroup $
–user10496
2013年12月26日4:44



#3 楼

部分原因是信任。 RSA的存在时间比EC长,人们感到自己理解它,并且对它更加信任(在安全方面,这很重要)。

但是,我认为(至少对于大型公司而言)更大的担忧是担心被起诉;一家名为Certicom的小公司拥有许多与EC相关的专利,并威胁要起诉任何可能侵犯其专利的人(当然,对这些专利的实际覆盖范围没有明确的定义)。他们已经起诉了索尼(并最终在庭外和解)。

底线:很长一段时间以来,公司坚持使用RSA / DH更加容易,而不是要么支付Certicom要么法律风险。

最近,情况发生了变化;人们已经发现,他们可以使用可以证明Certicom专利之前有据可查的东西来实施EC(因此可以不受诉讼);椭圆形曲线似乎更常用了。

评论


$ \ begingroup $
由于您在谈论实现,因此Wiki表示openSSH和其他版本中提供了开源实现。因此,作为程序员,如果系统提示我使用它,会对我或我的公司造成伤害吗?我猜不会!!
$ \ endgroup $
–Vineet Menon
2011-11-15 18:42

$ \ begingroup $
在PGP,我们在SDK中提供了EC的实现,但是由于专利问题,它们在编译时被剥离。您不必担心的是核心实现,这是所有性能方面的问题和实现细节。
$ \ endgroup $
– Mrvil
2013年6月10日15:58

#4 楼

您忘了提及椭圆曲线的另一个优点:密钥的生成比RSA快得多。

在欧洲,许多政府智能卡解决方案现在都基于ECC:


欧洲电子通行证端口
奥地利卡
德国身份证
新的德国健康保险卡


评论


$ \ begingroup $
谁可能会担心,德国身份证确实使用Brainpool P256r。
$ \ endgroup $
– hdev
16年7月7日在9:18

$ \ begingroup $
没有人证明Brainpool的“ r”曲线不是随机的……除了512r以外?
$ \ endgroup $
– Erik Aronesty
18年9月11日在21:10