椭圆曲率算法不同曲线的安全性

椭圆曲率加密算法 (ECC)是一种非对称加密算法。相比于RSA 算法,汽车行业越来越更倾向于使用ECC,因为

  1. 汽车上芯片资源有限;且
  2. 达到同样安全等级,ECC的密钥长度小于RSA,也就是ECC算法更省资源。
    ECC算法有很多曲线。本文介绍不同曲线的安全性。

目录

定义

  • ECC: Elliptic curve cryptography 椭圆曲线算法

为什么汽车行业越来越倾向于ECC算法?

NIST SP 800-57[1] 比较了不同加密算法的安全等级,见表 1.
根据表1, 要达到256为安全强度(“Security Strength "列),RSA 密钥长度为15360位,而ECC密钥只需要512位。

不同密码算法的比较是很复杂的、很难的工作,除了 NIST 给出了密钥长度的推荐外,还有其他机构。详细汇总见网站 www.keylength.com

所有机构给出的结论都认为:达到同样安全等级,ECC的密钥长度小于RSA,也就是ECC算法更省资源。

因为汽车上的芯片资源有限,所有将来大家会更倾向于使用 ECC。

表 1. 不同加密算法安全等级比较
椭圆曲率算法不同曲线的安全性

ECC 算法的安全性及选取注意事项

ECC 曲线汇总、安全性及选取在网站 http://safecurves.cr.yp.to/ 都有详细的介绍。
我这里只介绍自己的一些经验。

汽车行业当前主要用到的曲线是:

  1. Curve 25519
  2. brainpool
  3. NIST Curve

当前的芯片硬件也主要支持这几种曲线。比如英飞凌 HSM 培训材料[2] 中说支持上面几种曲线。

Curve 25519

Curve 25519 是由 Bernstein 在 2006 年发明的[3]。就如 [3] 中标题所说,Curve 25519 特点就是快!比其他两个曲线快,但是性能的提升是有代价的,就是它安全性降低了,更容易受到侧信道攻击[4]。

当前Curve 25519 的硬件加速一般没有做防侧信道攻击的保护。如果要防侧信道攻击,需要软件做一些措施。但软件措施会:

  1. 增加算法的复杂度,引入漏洞;
  2. 软件措施会降低算法性能,可能最终使 Cureve 25519 的性能和另外两个算法差别不大;
  3. 软件措施的有效性笔比较难验证。

NIST 曲线

NIST 是美国*制定的曲线。
NIST 曲线可以抵御侧信道攻击。
但是密码行业对 NIST 曲线有疑虑,怀疑它有不为人知道的后门。
在 safecurves.cr.yp.to (http://safecurves.cr.yp.to/rigid.html) 中,也是把 NIST 曲线标记为 ”manipulatable“。

如果在 bing (最好是 国际版)中搜索”NIST elliptic curve backdoor“,会弹出很多结果,比如:

  1. should-we-trust-the-nist-recommended-ecc-parameters: https://crypto.stackexchange.com/questions/10263/should-we-trust-the-nist-recommended-ecc-parameters
  2. Elliptic Curve Cryptography and Government Backdoors: https://services.math.duke.edu/~bray/Courses/89s-MOU/2016/Papers/BAS_Paper3_EllipticCurveCryptography.pdf
  3. The NSA Back Door to NIST: http://www.ams.org/notices/201402/rnoti-p190.pdf

这里顺便说一下国密算法 SM2。

因为担心 NIST 曲线有后门,所有国密局推出了自主可控的算法 SM2。算法详细规则见国密局官网 https://oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml

SM2 算法似乎遇到了类似的问题,就是部分参数在 SM2 规范里面没有给出令人信服的理由这么选取。比如 [5] 中搜索 SM2 就能找到相关内容。

brainpool 曲线

和中国一样,欧洲也担心 NIST 曲线有漏洞,所以推出了 brainpool 曲线。

brianpool 曲线的规范:

  1. ECC Brainpool. "ECC Brainpool standard curves and curve generation." October 2005. http://www.ecc-brainpool.org/download/Domain-parameters.pdf
  2. RFC. "Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation". 2010/03. https://www.rfc-editor.org/rfc/rfc5639

bianpool 可以抵御侧信道攻击。其参数选择也合理,目前密码行业没有怀疑它有后门。

参考

[1] NIST. SP 800-57 Recommendation for Key Management, Part 1, Rev 5 [EB/OL]. https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf, 2020/03.

[2] 英飞凌. AURIX Training Hardware Security Module[EB/OL]. https://www.infineon.com/dgdl/Infineon-AURIX_TC3xx_Hardware_Security_Module_Quick-Training-v01_00-EN.pdf?fileId=5546d46274cf54d50174da4ebc3f2265, 2020/09.

[3] Daniel J. Bernstein. 2006. Curve25519: New Diffie-Hellman speed records. In Public Key Cryptography (Lecture Notes in Computer Science), Moti Yung, Yevgeniy Dodis, Aggelos Kiayias, and Tal Malkin (Eds.), Vol. 3958. Springer, 207--228.

[4] May the Fourth Be With You: A Microarchitectural Side Channel Attack on Several Real-World Applications of Curve25519. ACM, 2017.

[5] Bernstein D J , Chou T , Chuengsatiansup C , et al. How to manipulate curve standards: a white paper for the black hat[J]. 2015.

上一篇:R计算获取决策曲线数据(Decision Curve Analysis,DCA)并使用python进行可视化


下一篇:qt 使用qwt绘制波形,一个点一个点绘制,QwtPlotDirectPainter的使用,