椭圆曲率算法不同曲线的安全性
椭圆曲率加密算法 (ECC)是一种非对称加密算法。相比于RSA 算法,汽车行业越来越倾向于使用ECC,因为
- 汽车上芯片资源有限;且
- 达到同样安全等级,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/ 都有详细的介绍。
我这里只介绍自己的一些经验。
汽车行业当前主要用到的曲线是:
- Curve 25519
- brainpool
- NIST Curve
- SM2 (国密)
当前国外的芯片硬件主要支持曲线 1-3。比如英飞凌 HSM 培训材料[2] 中说支持曲线 1-3。
国内的安全芯片一般会支持曲线4,其他曲线就不清楚了。
听说国外的芯片因为没有国密局的批准,所以不能支持 SM2 曲线(不确定真伪)。
Curve 25519
Curve 25519 是由 Bernstein 在 2006 年发明的[3]。就如 [3] 中标题所说,Curve 25519 特点就是快!它比其他两个曲线运算速度快。但是性能的提升是有代价的,就是它安全性降低了,更容易受到侧信道攻击[4]。
当前Curve 25519 的硬件加速一般没有做防侧信道攻击的保护。如果要防侧信道攻击,需要软件做一些措施。但软件措施会:
- 增加算法的复杂度,引入漏洞;
- 软件措施会降低算法性能,可能最终使 Cureve 25519 的性能和另外两个算法差别不大;
- 软件措施的有效性笔比较难验证。
NIST 曲线
NIST 是美国政府制定的曲线。
NIST 曲线可以抵御侧信道攻击。但是密码行业对 NIST 曲线有疑虑,怀疑它有不为人知道的后门。
在 safecurves.cr.yp.to (http://safecurves.cr.yp.to/rigid.html) 中,也是把 NIST 曲线标记为 ”manipulatable“。
如果在 bing (最好是 国际版)中搜索”NIST elliptic curve backdoor“,会弹出很多结果,比如:
- should-we-trust-the-nist-recommended-ecc-parameters: https://crypto.stackexchange.com/questions/10263/should-we-trust-the-nist-recommended-ecc-parameters
- Elliptic Curve Cryptography and Government Backdoors: https://services.math.duke.edu/~bray/Courses/89s-MOU/2016/Papers/BAS_Paper3_EllipticCurveCryptography.pdf
- 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 曲线的规范:
- ECC Brainpool. "ECC Brainpool standard curves and curve generation." October 2005. http://www.ecc-brainpool.org/download/Domain-parameters.pdf
- 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.