硬件安全技术——芯片安全设计技术1

一、常见的对称算法

  1. 对称密码算法
    加密和解密的秘钥是一样的
    加密过程:X是明文,K是秘钥,Y是密文
    解密过程:Y是密文,K是秘钥,X是明文
    在这里插入图片描述
  2. 常见的对称算法
  • AES (Advanced Encryption Standard)

  • DES/3DES (Data Encryption Standard)

  • SM4

  • ZUC

  • Chacha20

    按照字节来划分,前三种AES,DES, SM4可分为一类,均按照8、16字节来分组,又称为分组密码

    对于ZUC,Chacha20则没有分组,又称为流密码

  1. AES分组密码算法
    AES是目前国际使用最为广泛的对称密码算法
    其算法流程为:
    在这里插入图片描述
    AES算法有三个子类,分别为AES128、AES-192、AES-256
    区别:
    秘钥长度:128,192,256
    轮数:10,12,14
    加解密的黑盒子SBOX不同
    加解密使用轮秘钥的顺序不同

二、常见的使用模式与场景

  1. 分组密码操作模式
    ECB模式(电子密码本模式)
    在实际中,,加密数据往往大于8字节,16字节,最简单的方式就是将数据分割为若干个分组后,对这些分组数据分别进行加密,也就是ECB模式。

    关于操作模式说明:对于很长的数据,如1M,那么使用SM4,AES等对称密码算法,输入只能为固定字节数,如8字节或16字节。那么最简单的解决方式即为ECB模式。
    在这里插入图片描述
    ECB模式的缺点:采用ECB模式及每个数据都分别进行加密,各个加密之间互不干扰,因此,可以从密文中可以看出对应的结构变化趋势,这对于抵抗攻击来说是不安全的。
    类似于一个模糊的图片,虽然被加密了,但还是能够看出其中的一些信息:
    在这里插入图片描述

  2. CBC模式
    为了解决ECB模式的缺点,此外还有其他的模式,如CBC模式:
    在这里插入图片描述
    对于CBC加密过程,每一个分组异或后会与上一个得到的结果,在进行下一次的黑盒运算。这样可以打乱每一个分组的结构信息。

  3. 常见的对称算法加密模式

  • ECB-Electronic Code Book
  • CBC-Cipher Block Chaining
  • CTR-CounTeR
  • GCM-Galois/Counter,用于网络通信
  • XTS-XEX-based Tweaked-codebook mode with ciphertext Stealing,用于数据存储
  1. 数据存储
    安卓7.0以及更高的版本支持文件级别的加密(FBE)。采用文件级加密时,可以使用不同的秘钥对不同的文件进行加密,也可以对加密的文件单独解密。
    在这里插入图片描述

    所有加密都基于采用XTS模式的AES-256算法。内核的加密性能必须要在使用AES XTS时至少达到50MB/s,以确保良好的用户体验。

    因为在使用数据存储加密时,会带来性能上的瓶颈,造成性能变差,因此需要对加密的算法提出合理的要求来达到良好的用户体验。

  2. 数据存储的常用模式-XTS
    在这里插入图片描述

特点:

  • NIST SP800-38E (标准化模式)
  • 无需IV,初始向量(与CBC模式不同)
  • i为sector number(与数据处理的位置相关)
  • 可以随机访问
  • 可以进行并行处理
  1. 网络通信
  • SSL/TLS(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层
  • TLS通信中数据都会使用对称密码算法进行加密,密码算法的种类在握手阶段进行确认
  • TLS-AES-128-GCM-SHA256为TLS v1.3的必选算法
    在这里插入图片描述
  1. 网络通信加密中常见的模式——GCM模式
    在这里插入图片描述
    特点
  • NIST SP800-38D(标准)
  • 即可以对数据加密,也可以用于提供校验值(auth tag)
  • 处理速度可以比CBC快,因为加解密部分可以并行处理。

三、常见的抗攻击设计

  1. 侧信道攻击防护
    思想1:对中间值进行随机化或掩码。
    在这里插入图片描述
    中间值进行随机化处理,往往通过对中间值异或或掩码来达到随机化中间过程的目的:
  • 线性操作往往使用布尔掩码

  • 非线性操作使用乘法掩码、随机掩码和国定值掩码

    思想2:增加随机延迟或伪操作
    在功耗上无法区别延迟或者伪操作,使得攻击者无法对齐功耗曲线
    在这里插入图片描述

  1. FI防护(错误注入分析防护)
  • 多次操作校验是否计算结果相同

    • 可以使用加密后解密来判断明文是否一致,对运算前后几轮需要重点关注
  • 关键参数保存CRC

    • 例如秘钥的CRC值可以由硬件保存,不定时计算目前使用的秘钥CRC值是否一致

四、对称密码算法实现

  1. SBOX黑盒设计实现策略
    硬件上游两种主要实现方案:
    a. 使用查找表
    b. 二项式求逆
    在这里插入图片描述

    SMIC55, 100MHz,上面的是查找表实现,下面的是二项式求逆实现。可以看到查找表实现的面积大约为其一倍。一般是频率越高,二项式求逆的面积越小,因此,需要权衡面积和性能的关系(trade-off)。

  2. 轮秘钥的计算逻辑
    使用两个寄存器来存储轮秘钥,regA存储第一轮或最后一轮轮秘钥,regB用于存储当前的轮秘钥(非高速应用中)

    需要有标识标志regA存储的为第一轮还是最后一轮轮秘钥

    在一个时钟周期只进行一轮(或较少轮数)运算时,避免在一开始就讲坤秘钥全部扩展完成,占用大量寄存器。

  3. 密钥管理
    关键密钥:关键密钥由硬件管理,软件不可见或控制访问权限,例如根密钥

    应用密钥:应用密钥由软件协调管理,增加灵活性,例如会话秘钥

4.指令集加速
通过查看CPU信息来确认是否支持指令集加速

user@root:grep aes -o -ml /proc/cpuinfo
aes

openssl 1.0.1版本后,运行时期自动检测是否支持AES-NI
只有使用openssl EVP的接口,定义函数才能使用AES-NI

如果CPU支持AES-NI指令扩展,其性能如下:
在这里插入图片描述

五、总结:

  1. 根据应用场景选择适合的算法和模式,根据标准规范使用
  2. 大多数算法还是可以使用空间换时间的方式进行加速
  3. 物理安全设计包含前端、后端整个IC设计流程,安全性措施在设计完成后还需要经过过实验室测试
  4. 常用的硬件对密码算法往往有加速支持

猜你喜欢

转载自blog.csdn.net/vivid117/article/details/117339683
今日推荐