纽创信安-硬件安全系列课程笔记(二)


纽创信安-硬件安全系列课程笔记(二)

芯片安全设计技术

常见对称算法

分组密码:AES DES/TDES SM4

流密码:ZUC Chacha20

AES:

  • 密钥长度:128 192 256
  • 轮数:10 12 14
  • 加解密的SBOX不同
  • 加解密使用轮密钥的顺序不同

常见使用模式及场景

分组密码操作模式:ECB CBC CTR GCM XTS

使用场景:

  • 数据存储(Android7.0 AES-256 XTS)
  • 网络通信(SSL/TLS AES GCM)

ECB:将数据分割为若干个分组后分别加密

CBC: 使用前一分组的密文与本分组明文异或后加密

XTS:

  • NIST SP800-38E
  • 可随机访问
  • 可并行处理

GCM:

  • NIST SP800-38D
  • 既可以对数据加密,也可以提供校验值(Auth Tag)
  • 加解密可以并行处理,处理速度比CBC快

常见的抗攻击设计

侧信道攻击防护:

  • 对中间值进行随机化处理,随机化中间过程(线性操作使用布尔掩码,非线性操作使用乘法掩码、随即掩码和固定值掩码)
  • 增加随机延迟或伪操作,在功耗上无法区分延迟/伪操作,使攻击者无法对齐功耗曲线

FI防护:

  • 多次操作校验是否计算结果相同
  • 关键参数保存CRC

密钥的管理:

  • 关键密钥 硬件管理,软件不可见或控制访问权限,例如根密钥
  • 应用密钥 又软硬件协调管理,增加灵活性,例如会话密钥

常见公钥密码算法

RSA算法概述:

  • p和q分别是两个大素数,n=p*q
  • 加密:C = Me mod n
  • 解密:M = Cd mod n = Med mod n = M
  • 私钥:{d,n};公钥:{e,n}
  • 主要的运算量都集中在大数模幂

椭圆曲线密码:

  • 域K上的椭圆曲线E有下述方程定义:
    • E:y2 + a1xy + a3y = x3 + a2x2 + a4x + a6
    • 其中a1 a2 a3 a4 a6 属于K且E的判别式不等于0
  • 有倍点和点加两种运算法则
  • 点乘可以转换为点加和倍点运算
  • P和Q为为椭圆曲线上的点,k为标量,Q = kP,知道P和Q,很难得到k
算法家族 密码体制 安 全 级 别
80 128 192 256
因数分解 RSA 1024位 3072位 7680位 15360位
离散对数 DSA,DH 1024位 3072位 7680位 15360位
椭圆曲线 ECDSA,ECDH,SM2 160位 256位 384位 512位
对称密钥 AES,SM4 80位 128位 192位 256位

非对称算法应用

签名 验签:私钥用于签名,公钥用于验签

密钥协商:双方协商出一个共同密钥

加密 解密:公钥用于加密,私钥用于解密,加解密代价较大

网络认证:握手阶段进行验签、密钥交换

安全启动:验证固件/应用的签名,防止固件被第三方篡改

嵌入式设备的实际应用:mbedtls 使用C编程语言以最小的编码占用空间实现了SSL/TLS功能及各种加密算法

mbedTLS:

  • 完整的SSL v3、TLS v1.0、TLS v1.1和TLS v1.2协议实现
  • X.509证书处理
  • 基于TCP的TLS传输加密
  • 基于UDP的DTLS(Datagram TLS)传输加密

RSA、ECC的选择:

  • RSA的验签速度很快
  • ECC的验签速度一般比签名慢
  • RSA的存储占用远远大于ECC
  • RSA的密钥生成速度远远小于ECC

常见的抗攻击设计

点乘的防侧信道保护:

  • 固定时间:蒙哥马利阶梯
  • 标量掩码:标量加上阶的随机倍数
  • 随机坐标:对投影坐标进行随机化处理

模幂的防侧信道保护:

  • 固定时间:蒙哥马利阶梯
  • 指数掩码:对幂指数进行拆分
  • 底数掩码:对底数乘上任意随机数,在得到最终结果前脱掩

验签的防FI保护:

  • 硬件多次校验
  • 多次校验之间使用随机延迟
  • 使用蒙哥马利阶梯,利用两数之间的关系进行校验
  • 参数进行CRC校验

公钥算法总结

  • 主要用于身份识别,主要应用位签名/验签
  • ECDSA/ECDH和RSA是主流的公钥密码体系中的算法,SM2是国内主要的公钥密码算法
  • 公钥密码算法吞吐数据量小,运算时间长

安全解决方案对比

MCU TEE SE
敏感信息存放 通用区域 可信区域 安全区域
密码算法 软件 软件 硬件
运算时间 长 长 短
身份识别 弱 中 强
物理安全 弱 弱 强
BOM成本 低 中 高
使用成本 低 中 高

信任根(Root of Trust)

建立信任链(chain of trust)的来源,也是SoC中的安全根基

  • 安全启动
    • 硬件负责初始化安全启动过程中需要使用的模块
    • CPU从自身ROM中读取一级启动代码,对外部的二级Bootloader进行解密和验签
  • 密钥管理
    • 保护密钥的机密性
    • 确认密钥的完整性
    • 提前考虑各种角色,确保在实际场景中的可用性
    • 结构和芯片生命周期管控烧写、使用、Debug相关权限

关键安全模块

MPU/MMU:

  • 访问地址、权限隔离

Crypto Engine:

  • 提供各种密钥运算的支持
  • 提升密钥运算的性能和安全性
  • 避免软件可以访问到关键密钥

Detector:

  • 探测环境的异常变化

Storage Protection Unit:

  • 保护存储单元内的数据,地址总线和数据总线都需要加密/加扰

Bus Protection Unit:

  • 保护总线上传输的消息,地址和数据都需要加扰

Secure Processor:

  • 利用Memory Tagging等技术防止关于Memory的攻击
  • 利用Time constant技术防止Timing Attack

物理不可克隆函数(PUF)

利用芯片在制造过程中的不确定因素提取的唯一特征

  • 唯一性
  • 防克隆性
  • 不可预测性
  • 防篡改性
  • 不需要存储

SRAM PUF 密钥存储

SRAM PUF 特性

  • 容易部署
  • 高可靠性
  • 工艺适配性
  • 安全性