目录椭圆曲率加密算法 (ECC)是一种非对称加密算法。相比于RSA 算法,汽车行业越来越更倾向于使用ECC,因为
- 汽车上芯片资源有限;且
- 达到同样安全等级,ECC的密钥长度小于RSA,也就是ECC算法更省资源。
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 曲线汇总、安全性及选取在网站 http://safecurves.cr.yp.to/ 都有详细的介绍。
我这里只介绍自己的一些经验。
汽车行业当前主要用到的曲线是:
当前的芯片硬件也主要支持这几种曲线。比如英飞凌 HSM 培训材料[2] 中说支持上面几种曲线。
Curve 25519 是由 Bernstein 在 2006 年发明的[3]。就如 [3] 中标题所说,Curve 25519 特点就是快!比其他两个曲线快,但是性能的提升是有代价的,就是它安全性降低了,更容易受到侧信道攻击[4]。
当前Curve 25519 的硬件加速一般没有做防侧信道攻击的保护。如果要防侧信道攻击,需要软件做一些措施。但软件措施会:
NIST 是美国政府制定的曲线。
NIST 曲线可以抵御侧信道攻击。
但是密码行业对 NIST 曲线有疑虑,怀疑它有不为人知道的后门。
在 safecurves.cr.yp.to (http://safecurves.cr.yp.to/rigid.html) 中,也是把 NIST 曲线标记为 ”manipulatable“。
如果在 bing (最好是 国际版)中搜索”NIST elliptic curve backdoor“,会弹出很多结果,比如:
这里顺便说一下国密算法 SM2。
因为担心 NIST 曲线有后门,所有国密局推出了自主可控的算法 SM2。算法详细规则见国密局官网 https://oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
SM2 算法似乎遇到了类似的问题,就是部分参数在 SM2 规范里面没有给出令人信服的理由这么选取。比如 [5] 中搜索 SM2 就能找到相关内容。
和中国一样,欧洲也担心 NIST 曲线有漏洞,所以推出了 brainpool 曲线。
brianpool 曲线的规范:
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.