硬件安全技术——芯片安全设计技术1
Posted 摆渡沧桑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬件安全技术——芯片安全设计技术1相关的知识,希望对你有一定的参考价值。
一、常见的对称算法
- 对称密码算法
加密和解密的秘钥是一样的
加密过程:X是明文,K是秘钥,Y是密文
解密过程:Y是密文,K是秘钥,X是明文
- 常见的对称算法
-
AES (Advanced Encryption Standard)
-
DES/3DES (Data Encryption Standard)
-
SM4
-
ZUC
-
Chacha20
按照字节来划分,前三种AES,DES, SM4可分为一类,均按照8、16字节来分组,又称为分组密码。
对于ZUC,Chacha20则没有分组,又称为流密码。
- AES分组密码算法
AES是目前国际使用最为广泛的对称密码算法
其算法流程为:
AES算法有三个子类,分别为AES128、AES-192、AES-256。
区别:
秘钥长度:128,192,256
轮数:10,12,14
加解密的黑盒子SBOX不同
加解密使用轮秘钥的顺序不同
二、常见的使用模式与场景
-
分组密码操作模式
ECB模式(电子密码本模式)
在实际中,,加密数据往往大于8字节,16字节,最简单的方式就是将数据分割为若干个分组后,对这些分组数据分别进行加密,也就是ECB模式。关于操作模式说明:对于很长的数据,如1M,那么使用SM4,AES等对称密码算法,输入只能为固定字节数,如8字节或16字节。那么最简单的解决方式即为ECB模式。
ECB模式的缺点:采用ECB模式及每个数据都分别进行加密,各个加密之间互不干扰,因此,可以从密文中可以看出对应的结构变化趋势,这对于抵抗攻击来说是不安全的。
类似于一个模糊的图片,虽然被加密了,但还是能够看出其中的一些信息:
-
CBC模式
为了解决ECB模式的缺点,此外还有其他的模式,如CBC模式:
对于CBC加密过程,每一个分组异或后会与上一个得到的结果,在进行下一次的黑盒运算。这样可以打乱每一个分组的结构信息。 -
常见的对称算法加密模式
- ECB-Electronic Code Book
- CBC-Cipher Block Chaining
- CTR-CounTeR
- GCM-Galois/Counter,用于网络通信
- XTS-XEX-based Tweaked-codebook mode with ciphertext Stealing,用于数据存储
-
数据存储
安卓7.0以及更高的版本支持文件级别的加密(FBE)。采用文件级加密时,可以使用不同的秘钥对不同的文件进行加密,也可以对加密的文件单独解密。
所有加密都基于采用XTS模式的AES-256算法。内核的加密性能必须要在使用AES XTS时至少达到50MB/s,以确保良好的用户体验。
因为在使用数据存储加密时,会带来性能上的瓶颈,造成性能变差,因此需要对加密的算法提出合理的要求来达到良好的用户体验。
-
数据存储的常用模式-XTS
特点:
- NIST SP800-38E (标准化模式)
- 无需IV,初始向量(与CBC模式不同)
- i为sector number(与数据处理的位置相关)
- 可以随机访问
- 可以进行并行处理
- 网络通信
- SSL/TLS(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层
- TLS通信中数据都会使用对称密码算法进行加密,密码算法的种类在握手阶段进行确认
- TLS-AES-128-GCM-SHA256为TLS v1.3的必选算法
- 网络通信加密中常见的模式——GCM模式
特点
- NIST SP800-38D(标准)
- 即可以对数据加密,也可以用于提供校验值(auth tag)
- 处理速度可以比CBC快,因为加解密部分可以并行处理。
三、常见的抗攻击设计
- 侧信道攻击防护
思想1:对中间值进行随机化或掩码。
对中间值进行随机化处理,往往通过对中间值异或或掩码来达到随机化中间过程的目的:
-
线性操作往往使用布尔掩码
-
非线性操作使用乘法掩码、随机掩码和国定值掩码
思想2:增加随机延迟或伪操作
在功耗上无法区别延迟或者伪操作,使得攻击者无法对齐功耗曲线。
- FI防护(错误注入分析防护)
-
多次操作校验是否计算结果相同
- 可以使用加密后解密来判断明文是否一致,对运算前后几轮需要重点关注
-
关键参数保存CRC
- 例如秘钥的CRC值可以由硬件保存,不定时计算目前使用的秘钥CRC值是否一致
四、对称密码算法实现
-
SBOX黑盒设计实现策略
硬件上游两种主要实现方案:
a. 使用查找表
b. 二项式求逆
SMIC55, 100MHz,上面的是查找表实现,下面的是二项式求逆实现。可以看到查找表实现的面积大约为其一倍。一般是频率越高,二项式求逆的面积越小,因此,需要权衡面积和性能的关系(trade-off)。
-
轮秘钥的计算逻辑
使用两个寄存器来存储轮秘钥,regA存储第一轮或最后一轮轮秘钥,regB用于存储当前的轮秘钥(非高速应用中)需要有标识标志regA存储的为第一轮还是最后一轮轮秘钥
在一个时钟周期只进行一轮(或较少轮数)运算时,避免在一开始就讲坤秘钥全部扩展完成,占用大量寄存器。
-
密钥管理
关键密钥:关键密钥由硬件管理,软件不可见或控制访问权限,例如根密钥。应用密钥:应用密钥由软件协调管理,增加灵活性,例如会话秘钥。
4.指令集加速
通过查看CPU信息来确认是否支持指令集加速
user@root:grep aes -o -ml /proc/cpuinfo
aes
openssl 1.0.1版本后,运行时期自动检测是否支持AES-NI
只有使用openssl EVP的接口,定义函数才能使用AES-NI
如果CPU支持AES-NI指令扩展,其性能如下:
五、总结:
- 根据应用场景选择适合的算法和模式,根据标准规范使用
- 大多数算法还是可以使用空间换时间的方式进行加速
- 物理安全设计包含前端、后端整个IC设计流程,安全性措施在设计完成后还需要经过过实验室测试
- 常用的硬件对密码算法往往有加速支持
以上是关于硬件安全技术——芯片安全设计技术1的主要内容,如果未能解决你的问题,请参考以下文章