芯片安全原理解析之 RSA 算法简述

关键字 :E3芯片安全

一、RSA 加密算法简介

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

                                                                                     

RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。RSA密钥长度随着保密级别提高,增加很快。下表列出了对同一安全级别所对应的密钥长度。

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

二、RSA 加密解码过程

RSA的加密过程可以使用一个通式来表达:



也就是说RSA加密是对明文的E次方后除以N后求余数的过程。从通式可知,只要知道E和N任何人都可以进行RSA加密了,所以说E、N是RSA加密的密钥,也就是说E和N的组合就是公钥,我们用(E,N)来表示公钥:



不过E和N不并不是随便什么数都可以的,它们都是经过严格的数学计算得出的,关于E和N拥有什么样的要求及其特性后面会讲到。E是加密(Encryption)的首字母,N是数字(Number)的首字母。

RSA的解密同样可以使用一个通式来表达:



也就是说对密文进行D次方后除以N的余数就是明文,这就是RSA解密过程。知道D和N就能进行解密密文了,所以D和N的组合就是私钥:



从上述可以看出RSA的加密方式和解密方式是相同的,加密是求“E次方的mod N”;解密是求“D次方的mod N”。此处D是解密(Decryption)的首字母;N是数字(Number)的首字母。
小结如下:



生成密钥对:

既然公钥是(E,N),私钥是(D,N),所以密钥对即为(E,D,N),但密钥对是怎样生成的?步骤如下:

①求N
②求L(L为中间过程的中间数)
③求E
④求D

1、求N:

准备两个互质数p,q。这两个数不能太小,太小则会容易破解,将p乘以q就是N。如果互质数p和q足够大,那么根据目前的计算机技术和其他工具,至今也没能从N分解出p和q。换句话说,只要密钥长度N足够大(一般1024足矣),基本上不可能从公钥信息推出私钥信息。
N = p * q

2、求L:

L 是 p-1 和 q-1的最小公倍数,可用如下表达式表示
L = lcm(p-1,q-1)

3、求E:

E必须满足两个条件:E是一个比1大比L小的数,E和L的最大公约数为1;
用gcd(X,Y)来表示X,Y的最大公约数则E条件如下:
1 < E < L
gcd(E,L)=1
之所以需要E和L的最大公约数为1,是为了保证一定存在解密时需要使用的数D。现在我们已经求出了E和N也就是说我们已经生成了密钥对中的公钥了。

4、 求D:

数D是由数E计算出来的,数D必须保证足够大。D、E和L之间必须满足以下关系:
1 < D < L
E*D mod L = 1
只要D满足上述2个条件,则通过E和N进行加密的密文就可以用D和N进行解密。简单地说条件2是为了保证密文解密后的数据就是明文。
现在私钥自然也已经生成了,密钥对也就自然生成了。总结如下:



实践:

为了计算方便,p q 的值取小一旦,假设:p = 17,q = 19,则:

(1)求N:N = p * q = 323;
(2)求L:L = lcm(p-1, q-1)= lcm(16,18) = 144,144为16和18对最小公倍数;
(3)求E:1 < E < L ,gcd(E,L)=1,即1 < E < 144,gcd(E,144) = 1,E和144互为质数,E = 5显然满足上述2个条件,故E = 5,此时公钥= (E,N)=(5,323);
(4)求D:求D也必须满足2个条件:1 < D < L,E*D mod L = 1,即1 < D < 144,5 * D mod 144 = 1,显然当D= 29 时满足上述两个条件。1 < 29 < 144,5*29 mod 144 = 145 mod 144 = 1,此时私钥=(D,N)=(29,323);
(5)加密:准备的明文必须是小于N的数,因为加密或者解密都要 mod N,其结果必须小于N。
假设明文 = 123,则 密文=(123的5次方)mod 323=225
(6)解密:明文=(225的29次方)mod 323 =123,所以解密后的明文为123。

三、E3 中芯片安全模块

对于 Semidrive 的 E3 系列而言,在如下官方地址进行下载相关的 Datasheet :

首页 - 客户支持系统 - 芯驰科技SemiDrive

 

 

 

E3的系列如下:由于我们使用的是 E3103F2 这颗芯片,故选择 E3100_MCU_Datasheet_Rev00.07

中芯片安全的相关资料。



E3400_E3600_MCU_Datasheet_Rev00.09

E3300_MCU_Datasheet_Rev00.09

E3648_MCU_Datasheet_Rev00.05

E3100_MCU_Datasheet_Rev00.07

从 E3100_MCU_Datasheet_Rev00.07 中可以看到芯片的功能安全模块如下:

 

 在 E3 文档中对于 HSM 的描述如下:Its internal HSM supports true random number generator and high-performance crypto engines for AES, RSA, ECC, SHA as well as SM2/3/4/9 standards. It is designed to meet the security requirement on secure boot, secure communication, OTA etc.

在Datasheet 中关于HSM 的功能介绍如下:

17.4 Hardware Security Module

17.4.1 Overview

This section defines the architecture of SEIP-eHSM.

Secure Element IP is a security subsystem based on RISC-V instruction set, it includes the

cryptoengine, root of trust and controlled interface.

17.4.1.1 Feature

SEIP-eHSM is a security subsystem, which has following major features.

  • Symmetric Key Engine(SKE)

– AES-128,AES-192, AES-256, SM4 with ECB/CTR/CBC/CFB/OFB/XTS/GCM/CMAC mode

– DES, 3DES-EDE and 3DES-EEE with ECB/CTR/CBC/CFB/OFB mode

  • Public Key Engine(PKE)

– ECDSA/ECDH support secp192r1, secp256r1, secp384r1, secp521r1

– RSA support 1024/2048/4096

– SM2 and SM9

  • HASH Engine

– SHA-2 and SM3

– hardware HMAC

  • True random generation (TRNG)
  • Fast Hybird random generation (HRNG)
  • Include the active shielding and voltage/temperature/freq sensor
  • Secure Boot, Secure Key management and life cycle management


以下是 HSM 功能模块:

 

具体使用方法,需要参考《E3100_MCU_Technical_Reference_Manual_Rev00.03.pdf》中查看具体使用手册才行。

注:对HSM的功能简介:可参考如下资料

随着汽车上通信系统越来越复杂,云端远程通信的场景越来越多,信息安全变得越来越重要,在通信领域常用的AES、SHA、RSA等加密算法被越来越多地应用到汽车上。但通常这类加解密算法都需要大量的数学运算,需要消耗很多CPU时间和资源,汽车上的ECU又有比较高的实时性要求,为了节省主CPU的资源,HSM应运而生。

HSM(Hardware Security Module),是MCU上专门用于实现加解密算法的一个外设,它一般会有一个独立的CPU,专门用来进行加解密运算,还有一些针对特定算法的硬件加速器(如AES-128、SHA-256等)。有了HSM模块,程序中就可以把加解密运算交给HSM来执行,主CPU就可以去做其他工作,一段时间后来查询结果,或等待HSM计算完成后通过中断等方式通知主CPU计算结果即可。

而且HSM通常还拥有单独的存储区,包括RAM和NVM,HSM的存储区在正常运行状态下应只允许HSM核读写,主核不能读写。这样就可以把算法秘钥等重要数据存储在HSM存储区,与主核进行隔离,进一步加强安全性。此外HSM模块还会带有真随机数生成器等加密算法常用外设。

一般常见的 MCU 支持的算法如下:

对称加密:AES-128:支持硬件实现,支持ECB、CBC两种模式;

摘要算法:MD5(128 bits)SHA-1(160 bits)、SHA-2(224 bits)、SHA-2(256 bits)、SHA-2(384 bits)、SHA-2(512 bits):其中MD5(128 bits)SHA-1(160 bits)、SHA-2(224 bits)、SHA-2(256 bits)支持硬件实现,SHA-2(384 bits)、SHA-2(512 bits)可以用软件实现。

非对称加密:RSA、ECC等,是否支持硬件实现待验证,可用软件实现。

四、内容总结

       本博文主要介绍了芯片安全中最常使用的 RSA 加密算法的原理,以及 E3 中HSM 模块的部分。使得读者能够了芯片安全所使用的算法原理。当然还有很多其他的例如 ECC 等加密算法,后续有机会再进行介绍。

五、参考资料

1、《RSA 加密原理是什么?》
https://www.zhihu.com/question/25038691/answer/388573650
2、《E3100_MCU_Technical_Reference_Manual_Rev00.03.pdf》
3、关于秘钥的百科
https://baike.baidu.com/item/%E5%AF%86%E9%92%A5/101144?fromtitle=%E7%A7%98%E9%92%A5&fromid=9200183&fr=aladdin

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论