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

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

芯片安全设计技术

常见对称算法

分组密码: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 特性

  • 容易部署
  • 高可靠性
  • 工艺适配性
  • 安全性
posted @ 2020-07-12 22:52  jjz2016  阅读(1153)  评论(0)    收藏  举报