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

椭圆曲率加密算法 (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位,远远小于 RSA。
当前推荐达到 128 位安全等级,RSA需要 3072 位,ECC 需要256位。
行业目前使用比较多的是 RSA 2048,不使用 RSA 3072 的一个原因就是密钥太长了。如果要更高安全等级,更倾向于使用 ECC 256。

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

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

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

表 1. 不同加密算法安全等级比较

ECC 算法的安全性及经验

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

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

  1. Curve 25519
  2. brainpool
  3. NIST Curve
  4. SM2 (国密)

当前国外的芯片硬件主要支持曲线 1-3。比如英飞凌 HSM 培训材料[2] 中说支持曲线 1-3。
国内的安全芯片一般会支持曲线4,其他曲线就不清楚了。
听说国外的芯片因为没有国密局的批准,所以不能支持 SM2 曲线(不确定真伪)。

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.

原文地址:https://www.cnblogs.com/byronsh/p/ecc-algorithm-security-and-selection.html