在整个文献中,都指出EC密码系统优于RSA和离散对数密码系统,但是我无法理解ECC在计算和存储方面如何比RSA和DL更有效。

是否有比较这些密码系统的实用性能分析,以便我能够理解?

评论

请参阅:crypto.stackexchange.com/questions/3958/…特别是Thomas的答案。

当然,实际性能可能会因实现方式而异。正如Thomas所给出的那样,您最好进行理论比较,因为其他任何比较都是不正确的。或自己进行性能比较,然后在目标平台上运行。

#1 楼

简而言之,椭圆曲线允许您使用较小的字段。

考虑Diffie-Hellman:给定$ p $,$ g $和$ x $,您可以计算$ g ^ x \ mod p $。为了确保安全性,必须使用足够大的值来抵抗已知攻击的$ x $和$ p $值。实际上,$ x $至少需要160位长,而$ p $则必须是1024位素数。

现在,椭圆曲线变体:您有一条曲线$ E $,其中点坐标是基数$ q $的元素,您可以为整数$ x $和常规点$ G $计算$ xG $。为了获得安全性,与普通DH情况一样,您需要$ x $是一个160位长的整数。但是,$ q $也是一个160位整数(例如160位素数)就足够了。计算$ xG $所需的现场操作大约是计算$ g ^ x $的十倍,但是这些操作将在更小的字段中进行,比原来的小六倍以上。实际上,由于字段操作的基本成本是字段大小的二次方,因此可以推断,以$ q $为模的字段操作将比以$ p $为模的字段操作快约40倍。即使您执行十倍的操作,曲线的速度仍然比普通DH快四倍。

性能比率随着安全级别的提高而提高(例如224位曲线将使您大致与2048位普通DH密钥具有相同的安全性,导致使用曲线的系数要大于8。)对于存储,椭圆曲线也更好:224位曲线点可以用225位来表示(至少对于Diffie-Hellman,通常可以将其降低到224),而2048位整数则使用2048位。

RSA公共操作(提升为幂e以模n为模,其中e是公共指数)仍然比使用ECC驱动算法的公钥操作快一点,但是对于私钥操作,曲线会顺手(如果正确实施) ,当然)。

评论


$ \ begingroup $
我不太了解RSA与Diffie-Hellman之间的区别。它们都具有g ^ x(mod p)操作。但是您在运行时说RSA $ \ endgroup $
– satya
18年19月19日在18:49

#2 楼



ECC和RSA的执行时间分别与RSA模数的位长(n ^ 3)或域位长的立方成比例。因此,如果增加位长,则渐近行为没有区别。


ECC每点运算大约需要10个乘法。 ECC中的点加倍和点加法(对应于RSA中的平方和乘法)的行为有些不同。



对RSA的最佳攻击的复杂度为n / 3(如果n是位长),则对RSA的最佳攻击ECC具有n / 2(例如,pollards rho算法)。因此,对于相同的安全级别,ECC需要比RSA短的位长。 NSA发布了一张表格,比较了ECC和RSA的可比较安全级别的比特长度。他们声称256位ECC与3072位RSA一样安全。
因此,在某些位长的ECC以上,总是比同等安全RSA更快,而在RSA以下,则更快。交叉发生的位置取决于手头的实现细节。


硬件性能的提高和分解的进步将为未来的RSA应用程序增加比特长度。因此,即使将来在边际安全方面,我们也肯定会遇到交叉。根据经验,您可以期望ECC比256位ECC更快,而3072位RSA更快。


如果要查看ECC在系统上运行,可以使用例如开源程序“学术签名”并检查高达1024位ECC域的性能。
Openssl可能更容易在其上运行基准测试,但目前它最多只能提供521位ECC,并且仅允许由NSA特制的域,其中包含快速的快捷键,某些专家对这些域非常谨慎。

评论


$ \ begingroup $
nsa.gov/business/programs/elliptic_curve.shtml当前产生“未知错误” :-)。
$ \ endgroup $
– Jan-Philip Gehrcke
17年2月6日在13:34

$ \ begingroup $
@ Jan-Philip Gehrcke:由于有了网络存档,答案的链接现在可以正常使用了。
$ \ endgroup $
–fgrieu♦
18年6月23日在12:56