打印
[AURIX™]

英飞凌 TC3XX单片机HSM内核开发-Secure Boot(三)

[复制链接]
349|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-8-10 08:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
安全启动相关的加密服务
1 随机数生成器
伪随机数生成器(PRNG)基于由HSM实现的真随机数生成器(TRNG)生成的种子。PRNG序列使用AES-CTR模式生成,该模式使用一个从零开始的计数器进行生成。

种子生成:PRNG的种子由TRNG模块生成。
生成模式:使用AES-CTR模式生成伪随机数,确保生成的序列具有良好的随机性。
真随机数生成器(TRNG)TRNG模块利用非确定性现象生成随机数据流,该数据流符合德国BSI AIS-20/31出版物定义的质量标准[15]。

数据块大小:TRNG外设可以生成8位、16位或32位的数据块。
API组合:这些数据块进一步组合,以为用户提供128位的数据(由四个32位字组成)。
TRNG的随机性和不可预测性使其适用于需要高安全性的应用,如密钥生成和加密操作。

2 AES算法
高级加密标准(AES)指定了一个经过FIPS批准的加密算法,可用于保护电子数据。AES算法是一种对称块密码,可以加密(加密)和解密(解密)信息。加密将数据转换为称为密文的不可读形式;解密密文将数据恢复为原始形式,称为明文。AES算法能够使用128、192和256位的密钥对128位的块进行加密和解密。

在AURIX中,AES硬件外设的当前实现仅支持128位的加密密钥,并且处理128位的数据块。它能够对单个128位数据块(即明文或密文块)进行加密和解密,也可以对多个128位的数据块进行加密或解密。为此,实施了几种所谓的操作模式:

ECB(电子密码本模式):每个数据块独立加密。简单但不够安全,因为相同的明文块总是会加密成相同的密文块。

CBC(密码块链模式):每个数据块在加密前与前一个数据块的密文进行异或操作。提高了安全性,因为相同的明文块将被加密为不同的密文块。

CTR(计数器模式):使用计数器作为密钥流生成器,将密文和明文与计数器加密的结果进行异或操作。能够支持并行加密。

OFB(输出反馈模式):将加密后的密文块作为下一轮加密的输入。适合需要流模式加密的场景。

CFB(密码反馈模式):与OFB类似,但加密结果与明文块进行异或操作。适用于流模式加密。

GCM(Galois计数器模式):结合了计数器模式的加密和Galois/Counter模式的认证。提供加密和数据完整性验证。

XTS(XEX基于调节密码本模式与密文窃取):用于加密磁盘块设备的数据,提供更高的安全性和数据完整性。

2.1 填充
AES操作在128位块上进行。当数据长度不是128位的倍数时,该块必须进行填充。用户代码负责填充数据块,常用的填充模式有三种:

ANSI X.923
在ANSI X.923中,用零字节填充数据块,最后一个字节定义了填充的边界或填充字节的数量。例如,块大小为8字节,需填充4字节(以十六进制格式表示):
… | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 |

PKCS#7
PKCS#7描述在RFC 2315和RFC 5652中。填充是按完整字节进行的。每个填充字节的值是添加的字节数,即N字节,每个字节的值为N。添加的字节数取决于需要扩展到的块边界。填充将是以下之一:

01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
06 06 06 06 06 06
依此类推…
这种填充方法(以及前两种)在N小于256的情况下是明确定义的。例如,块大小为8字节,需填充4字节:
… | DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 |

零填充
所有需要填充的字节用零填充。例如,块大小为8字节,需填充4字节:

… | DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 00 |

2.2 加密模式
电子密码本模式(ECB)

ECB是最简单的加密模式。消息被划分为块,每个块单独加密。这种方法的缺点在于,相同的明文块会被加密成相同的密文块。由于没有块间的依赖性,这种模式在某些情况下会暴露数据模式的信息。例如,如果明文中有重复的数据块,那么加密后的密文中也会有相同的块,这可能使攻击者通过分析密文块之间的模式来推断出一些信息。

这种模式的优点是其实现简单,并且可以并行处理块,因为每个块的加密操作是独立的。然而,正是因为其结构上的简单性,ECB模式在处理需要高安全性的场合时通常不被推荐,因为它无法隐藏数据中的模式信息。



密文块链接(CBC)模式

密文块链接(Cipher-Block Chaining, CBC)模式是由Ehrsam、Meyer、Smith和Tuchman于1976年发明的。它通过在加密过程中引入块间的依赖关系,解决了电子代码本(ECB)模式的一些安全问题。以下是CBC模式的工作原理:

初始化向量(IV):CBC模式要求为第一个明文块使用一个初始化向量(IV)。IV是一个随机或伪随机的值,用于确保相同的明文在不同的加密操作中生成不同的密文。IV必须在每次加密会话中唯一且随机,以保持安全性。

异或操作:每个明文块在加密之前都会与前一个密文块进行异或(XOR)操作。这意味着每个密文块不仅依赖于明文,还依赖于前一个密文块。

加密:在与前一个密文块异或之后,结果将使用AES算法加密,生成当前的密文块。

解密:在解密过程中,操作过程会反转。每个密文块先被解密得到异或值,然后与前一个密文块(第一个块使用IV)进行异或,以恢复原始的明文块。

通过这种方式,CBC模式通过异或操作和加密将块链接在一起,确保即使明文块相同,每个密文块也都是唯一的。



基于密码的消息认证码(CMAC)

CMAC(Cipher-based Message Authentication Code)是一种基于对称密钥块密码(如高级加密标准AES)的密钥哈希函数。CMAC旨在提供比校验和或错误检测代码更强的数据完整性保证。下面是CMAC的详细介绍:

功能与优势:

数据完整性保证:CMAC提供的数据完整性保证比校验和或错误检测代码更为强大。校验和或错误检测代码只能检测到数据的意外修改,而CMAC则能够检测到有意的、未经授权的修改,此外也可以检测到意外的修改。
对称密钥算法:CMAC基于对称密钥块密码(例如AES),而HMAC(哈希消息认证码)则基于哈希函数(如SHA-1)。因此,当AES在系统中更为可用时,AES-CMAC是更合适的选择。
工作原理:

密钥:CMAC使用对称密钥进行操作,该密钥用于加密消息。
加密操作:AES-CMAC算法将消息分成块,并通过对称密钥和AES算法进行加密。每个消息块经过加密后与前一个密文块进行异或操作,直到处理完整个消息。
生成MAC值:最终生成的消息认证码(MAC)是对整个消息的唯一标识。任何对消息内容的修改都会导致MAC值的改变,从而能够检测到数据的篡改。



基于哈希的消息认证码(HMAC)
HMAC(Hash-based Message Authentication Code)是一种使用哈希函数和密钥的认证机制。它结合了哈希函数的安全性与密钥的保密性,以提供消息的完整性和认证。HMAC的定义来源于RFC 2104,具体公式如下:



其中:

H 是一个加密哈希函数。
K 是秘密密钥。
m 是需要认证的消息。
K_0 是从原始密钥 K 派生出的另一个秘密密钥。其生成方式是将 K 右填充额外的零,以适应哈希函数的输入块大小,或如果 K 的长度超过块大小,则对 K 进行哈希处理。
**||**表示拼接操作。
^ 表示异或(XOR)操作。
opad 是外部填充(0x5c5c5c…5c5c,长度为一个块的十六进制常量)。
ipad 是内部填充(0x363636…3636,长度为一个块的十六进制常量)。



HMAC 算法的文字描述

密钥处理:

长度等于块大小(B):如果密钥 K 的长度等于块大小 B,则直接将 K 作为 K0。
长度大于块大小(B):如果密钥 K 的长度大于 B,需要对 K 进行哈希计算得到一个长度为 L 的字符串,然后在其后附加零,直到其长度为 B,即 K0 = H(K) 后跟若干个零。
长度小于块大小(B):如果密钥 K 的长度小于 B,则在 K 的末尾添加零,使其长度达到 B 字节,从而得到 K0。
填充和异或操作:

用内部填充常量(ipad)与 K0 进行异或操作,得到一个长度为 B 字节的中间字符串。
将待认证的消息 m 附加到这个中间字符串后面。
计算哈希值:

对上述组合后的数据(K0 与 ipad 异或后的结果加上消息 m)应用哈希函数,得到一个哈希值。
外部填充和异或操作:

用外部填充常量(opad)与 K0 进行异或操作,得到另一个长度为 B 字节的字符串。
将步骤 3 中得到的哈希值附加到这个字符串后面。
最终哈希计算:

对上述组合后的数据(K0 与 opad 异或后的结果加上步骤 3 的哈希值)再次应用哈希函数,得到最终的 HMAC。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_36750998/article/details/140799714

使用特权

评论回复
沙发
Amazingxixixi| | 2024-10-30 16:52 | 只看该作者
安全启动会不会检查代码的安全性?

使用特权

评论回复
板凳
中国龙芯CDX| | 2024-10-30 19:14 | 只看该作者
高级加密标准(AES)指定了一个经过FIPS批准的加密算法,可用于保护电子数据。

使用特权

评论回复
地板
小夏天的大西瓜| | 2024-10-30 19:58 | 只看该作者
HSM内核安全开发

使用特权

评论回复
5
小小蚂蚁举千斤| | 2024-10-30 23:17 | 只看该作者
TC3XX单片机安全性能不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2028

主题

15903

帖子

13

粉丝