纽创信安-硬件安全系列课程笔记(二)
纽创信安-硬件安全系列课程笔记(二)
芯片安全设计技术
常见对称算法
分组密码: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};公钥:
- 主要的运算量都集中在大数模幂
椭圆曲线密码:
- 域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 特性
- 容易部署
- 高可靠性
- 工艺适配性
- 安全性

浙公网安备 33010602011771号