Uploaded by lihc1314i

第10讲 数字电路安全:密码芯片

advertisement
数字电路基础
第10讲
数字电路安全:密码芯片
数字电路安全
自主设计课程
密码芯片、硬件安全
课程材料借鉴资料
–
Gang Qu, “Hardware Security”, Coursera, 2022
 马里兰大学教授,硬件安全专家
–
Yier Jin, “Hardware Security and Trusted Circuit Design”, 佛罗里达州立大学,
 佛罗里达州立大学冠名教授,硬件安全专家
–
Cetin Kaya Koc (Editor): Cryptographic Engineering. 1st edition, Springer, 2009.
 作业
–
Xiao, Kan, et al. "Hardware trojans: Lessons learned after one decade of research." ACM
Transactions on Design Automation of Electronic Systems (TODAES) 22.1 (2016): 1-23.
–
Transactions on Computers/IACR CHES等会议、期刊上的文章
目录
1
数字电路安全概述
2
对称密码芯片设计
2
公钥密码芯片设计
数字电路安全概述
数字电路安全的需求
SRC美国半导体十年计划
十年内每年6亿美元投入
基与硬件的隐私与安全基础设施
数字电路安全概述
数字电路安全的需求
科技部国家重点研发计划
后量子加密芯片架构
机密计算芯片架构
数字电路安全概述
网络空间安全中的数字电路
密码算法的硬件实现
1. 对称加密:AES、SM4
2. 非对称(公钥)加密:RSA、ECC、SM2、Kyber
3. 哈希:SHA3、SM3
硬件安全
1. 侧信道攻击:功耗侧信道、磁场侧信道
2. 硬件安全攻防:硬件木马、物理不可克隆函数、可
信执行环境
目录
1
数字电路安全概述
2
对称密码芯片设计
2
公钥密码芯片设计
对称密码芯片设计
AES对称加密的硬件实现
AES密码算法
国密SM4在实验中涉及
对称加密
消息空间、密钥、密文空间:128-bit
…
AES
𝑘𝑘127
…
𝑚𝑚127
…
𝑚𝑚0
𝑚𝑚1
𝑘𝑘0 𝑘𝑘1
𝑐𝑐0
𝑐𝑐1
𝑐𝑐127
𝑐𝑐 = Enc 𝑚𝑚
𝑚𝑚 = Dec 𝑐𝑐
数字电路安全概述
AES对称加密的硬件实现
循环计算Cipher Round函数
Cipher Round中有四大混淆操作
数字电路安全概述
AES对称加密的硬件实现
四大混淆操作
SubBytes – 本质上是ℱ8 域上的多项式乘法
数字电路安全概述
AES对称加密的硬件实现
四大混淆操作
SubBytes – 本质上是ℱ8 域上的多项式乘法
Sbox 02 = 77,Sbox 13 = 7D
数字电路安全概述
AES对称加密的硬件实现
SubBytes的硬件实现
𝑠𝑠[0]
𝑠𝑠[0]
MUX
…
𝐂𝐂𝐂𝐂
𝟏𝟏𝟏𝟏
16 × 8 × 8选1数据选择器
MUX
…
𝟖𝟖𝟖𝟖
𝟕𝟕𝟕𝟕
𝑠𝑠[1]
MUX
𝐂𝐂𝐂𝐂
…
𝟔𝟔𝟔𝟔
16 × 8选1数据选择器
1152个8选1 MUX
Sbox 02 = 77,Sbox 13 = 7D
数字电路安全概述
AES对称加密的硬件实现
SubBytes的硬件实现
256 ∗ 8 = 2048比特只读存储器
Sbox 02 = 77,Sbox 13 = 7D
数字电路安全概述
AES对称加密的硬件实现
ShiftRows的硬件实现
桶形移位器(Barrel Shifter)
4 ∗ 32 log 32 = 640选择器
数字电路安全概述
AES对称加密的硬件实现
ShiftRows的硬件实现
桶形移位器(Barrel Shifter)
4 ∗ 322 = 4096选择器
数字电路安全概述
AES对称加密的硬件实现
MixColumn的硬件实现
移位+异或
数字电路安全概述
AES对称加密的硬件实现
AddRoundKey的硬件实现
掺入密钥:单纯异或
本轮密钥
MixColumns输出
本轮输出
数字电路安全概述
AES对称加密的硬件实现
整体的逻辑部分
纯组合逻辑:输入直达输出
SubBytes
ShiftRows
…
MUX
MUX
…
MUX
…
10~14轮
MixColumns
AddRoundKey
数字电路安全概述
AES对称加密的硬件实现
组合逻辑面积过大
利用时序逻辑
数字电路安全概述
AES对称加密的硬件实现
基于时序逻辑的AES实现
R1:寄存器
数字电路安全概述
AES对称加密的硬件实现
时序AES的问题
速度/吞吐量均不高
R1:寄存器
数字电路安全概述
AES对称加密的硬件实现
组合逻辑延迟过大
线性增加
信号传播延迟累积
 15%-85%规律
IN
T1
IN
1
T1
1
T2
1
T3
1
T2
OUT
T3
OUT
Latency
数字电路安全概述
AES对称加密的硬件实现
流水线设计
提高吞吐量,减少平均延迟
T1
IN
1
1
T2
1
线性增加
T1
IN
1
T3
1
1
OUT
T2
1
时钟控制
CLK
IN
T1
T2
T3
OUT
IN
T1
T2
T3
OUT
Latency
Latency
T3
1
OUT
数字电路安全概述
AES对称加密的硬件实现
IN
1
非流水线设计的问题
吞吐量低
IN
T1
T2
T3
OUT
𝟎𝟎 → 𝟏𝟏延迟
𝟏𝟏 → 𝟎𝟎延迟
T1
1
T2
1
T3
1
OUT
数字电路安全概述
AES对称加密的硬件实现
非流水线设计的问题
延迟不稳定
IN
IN
1
𝟏𝟏 → 𝟎𝟎延迟
𝟎𝟎 → 𝟏𝟏延迟
T1
T2
T3
OUT
Latency
T1
1
T2
1
T3
1
OUT
数字电路安全概述
AES对称加密的硬件实现
IN
1
流水线设计
𝟎𝟎 → 𝟏𝟏延迟
CLK
𝟏𝟏 → 𝟎𝟎延迟
IN
T1
T2
T3
OUT
Latency
T1
1
T2
1
T3
1
OUT
数字电路安全概述
AES对称加密的硬件实现
流水线设计
T1
IN
1
1
𝟎𝟎 → 𝟏𝟏 → 𝟎𝟎延迟=平均3个周期
𝟎𝟎 → 𝟏𝟏延迟=5个周期
CLK
𝟏𝟏 → 𝟎𝟎延迟
IN
T1
T2
T3
OUT
Latency
T2
1
T3
1
OUT
数字电路安全概述
AES对称加密的硬件实现
流水线设计
T1
IN
1
1
𝟎𝟎 → 𝟏𝟏 → 𝟎𝟎 → 𝟏𝟏 → 𝟎𝟎延迟=平均2个周期
𝟎𝟎 → 𝟏𝟏延迟=5个周期
CLK
T2
𝟏𝟏 → 𝟎𝟎延迟
IN
T1
T2
T3
OUT
Latency
T3
1
1
𝐎𝐎𝐎𝐎𝐎𝐎 − 𝐈𝐈𝐈𝐈
= 𝟏𝟏
𝓵𝓵→∞
𝓵𝓵
lim
OUT
𝓵𝓵:输入的个数
数字电路安全概述
AES对称加密的硬件实现
AES的流水线实现
模块间流水线
寄存器
SubBytes
ShiftRows
块内流水线
MixColumns
…
MUX
MUX
…
MUX
…
k级流水线
K级流水线
AddRoundKey
数字电路安全概述
AES对称加密的硬件实现
AES的流水线实现
吞吐量
面积
单次延迟
面积
目录
1
数字电路安全概述
2
对称密码芯片设计
2
公钥密码芯片设计
公钥密码芯片设计
公钥密码体系
基于大整数分解困难问题的方案
RSA、ECC(椭圆曲线)
基于格上困难问题的方案(后量子加密标准)
LWE、LPN
公钥𝑒𝑒
事先分配密钥𝑘𝑘
Enc𝑘𝑘 (𝑥𝑥)
Dec𝑘𝑘 Enc𝑘𝑘 𝑥𝑥
Enc𝑒𝑒 (𝑥𝑥)
拥有私钥𝑑𝑑
Dec𝑑𝑑 Enc𝑒𝑒 𝑥𝑥
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
大整数(≥ 300比特)模乘
在RSA中大于2048比特
25195908475657893494027183240048398571429282126204032027777137836
04366202070759555626401852588078440691829064124951508218929855914
91761845028084891200728449926873928072877767359714183472702618963
75014971824691165077613379859095700097330459748808428401797429100
64245869181719511874612151517265463228221686998754918242243363725
2065536 mod
90851418654620435767984233871847744479207399342365848238242811981
63815010674810451660377306056201619676256133844143603833904414952
63443219011465754445417842402092461651572335077870774981712577246
79629263863563732899121548314381678998850404453640235273819513786
36564391212010397122822120720357
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
大整数模乘
2048-bit × 2048-bit / 2048-bit 取余
32比特乘法器:面积约𝟎𝟎. 𝟎𝟎𝟎𝟎𝟎𝟎𝐦𝐦𝐦𝐦𝟐𝟐
计算2048比特乘法,
需要多少32比特乘法器?
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
64比特乘法需要几个32比特乘法器?
𝒙𝒙, 𝒚𝒚 ∈ ℤ𝟐𝟐𝟔𝟔𝟔𝟔
𝒂𝒂, 𝒃𝒃, 𝒄𝒄, 𝒅𝒅 ∈ ℤ𝟐𝟐𝟑𝟑𝟑𝟑
单纯乘法拆分
𝒙𝒙 = 𝒂𝒂𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒃𝒃
𝒚𝒚 = 𝒄𝒄𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒅𝒅
𝒂𝒂𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒃𝒃 × 𝒄𝒄𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒅𝒅 = 𝒂𝒂𝒂𝒂𝟐𝟐𝟔𝟔𝟔𝟔 + 𝒂𝒂𝒂𝒂 + 𝒃𝒃𝒃𝒃 𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒃𝒃𝒃𝒃
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
64比特乘法需要几个32比特乘法器?
𝒂𝒂𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒃𝒃 × 𝒄𝒄𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒅𝒅 = 𝒂𝒂𝒂𝒂𝟐𝟐𝟔𝟔𝟔𝟔 + 𝒂𝒂𝒂𝒂 + 𝒃𝒃𝒃𝒃 𝟐𝟐𝟑𝟑𝟑𝟑 + 𝒃𝒃𝒃𝒃
𝒂𝒂
𝒄𝒄
𝒂𝒂
𝒅𝒅
𝒃𝒃
𝒄𝒄
𝒃𝒃
𝒅𝒅
32
32比特
[127:64]
64
+
32比特
+
32比特
32比特
64
65
[95:32]
[95:32]
128
+
128
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
64比特乘法需要几个32比特乘法器?
4个
128比特乘法需要几个32比特乘法器?
需要4个64比特乘法器=16个32比特乘法器
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
64比特乘法需要几个32比特乘法器?
4个
128比特乘法需要几个32比特乘法器?
4*4=16个
𝑛𝑛比特(𝑛𝑛 ≥ 25 )乘法需要几个32比特乘法器?
2𝑛𝑛
25
= 2𝑛𝑛−5 次递归,每次递归需4个乘法器
𝟒𝟒𝒏𝒏−𝟓𝟓 个32比特乘法器(指数级增长)
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
2048比特乘法需要几个32比特乘法器?
411−5 = 46 = 4096个
2048比特乘法器面积258mm2
32比特乘法器:面积约𝟎𝟎. 𝟎𝟎𝟎𝟎𝟎𝟎𝐦𝐦𝐦𝐦𝟐𝟐
对比:华为升腾910旗舰AI加速芯片



热设计功耗350W
半精度浮点性能256TFlops
内核面积182.4平方毫米
一个乘法器比整个AI加速芯片还要大
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
时序展开乘法器
用时间换空间
乘法器
…
MUX
…
𝒏𝒏比特存储器
32比特
MUX
写入地址选择
读取地址选择
𝒏𝒏比特存储器
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
2048比特乘法所需周期: 411−5 = 46 = 4096个
需要多少个乘法器,就会折算成多少个周期
写入地址选择
读取地址选择
乘法器
…
MUX
…
𝒏𝒏比特存储器
32比特
MUX
•
𝒏𝒏比特存储器
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
Karatsuba乘法
AD+BC
=AC+AD+BC+BD-AC-BD
=(A+B)(C+D)-AC-BD
可以复用乘法结果!
AC AD+BC BD
AD+BC是两个乘法
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
Karatsuba乘法
AC AD+BC BD
AD+BC是两个乘法
AC (A+B)(C+D)-AC-BD BD
(A+B)(C+D)仅需一次乘法
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
2048比特乘法需要几个32比特Karatsuba乘法器?
311−5 = 36 = 729个
• 递归Karatsuba算法,比基本方法乘法器数量少5倍
32比特乘法器:面积约0.063mm2
—— 2048比特乘法器面积46mm2
对比:华为升腾910旗舰AI加速芯片



热设计功耗350W
半精度浮点性能256TFlops
内核面积182.4平方毫米
在可接受范围内
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
Karatsuba只提高乘法速度
递归Karatsuba算法:𝑂𝑂 4𝑛𝑛 → 𝑂𝑂(3𝑛𝑛 )
取模算法
正常需要除法取余(除法器的硬件设计极为复杂)
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
Karatsuba只提高乘法速度
递归Karatsuba算法:𝑂𝑂 4𝑛𝑛 → 𝑂𝑂(3𝑛𝑛 )
取模算法
𝒂𝒂 𝐦𝐦𝐦𝐦𝐦𝐦 𝒏𝒏 = 𝒂𝒂 − 𝒂𝒂/𝒏𝒏 𝒏𝒏
正常需要除法取余(除法器的硬件设计极为复杂)
• 在嵌入式小型设备中,通常会用乘法代替除法
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
取模算法
Barrett取模
Montgomery取模
FFT大整数模乘
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
取模算法
Barrett取模
Montgomery取模
FFT大整数模乘
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
取模算法
注意:设𝑠𝑠 = 1/𝑛𝑛(实数)
𝒂𝒂 𝐦𝐦𝐦𝐦𝐦𝐦 𝒏𝒏 = 𝒂𝒂 − 𝒂𝒂/𝒏𝒏 𝒏𝒏
= 𝒂𝒂 − 𝒂𝒂𝒂𝒂 𝒏𝒏
完全精确
方法:设整数𝑚𝑚,通过 𝑚𝑚/2𝑘𝑘 (实数除法)逼近𝑠𝑠 = 1/𝑛𝑛
整数的2次幂除法=位移
计算精度依赖于𝑘𝑘
(11)10 = 1×23+0 ×22+1 ×21+1 ×20
11/2 = ( 1×22+0 ×21+1 ×20+1 ×20 )=(101) 2 =(5)10
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
取模算法
方法:设整数𝑚𝑚,通过 𝑚𝑚/2𝑘𝑘 (实数除法)逼近𝑠𝑠 = 1/𝑛𝑛
𝒂𝒂 𝐦𝐦𝐦𝐦𝐦𝐦 𝒏𝒏 = 𝒂𝒂 − 𝒂𝒂/𝒏𝒏 𝒏𝒏
= 𝒂𝒂 − 𝒂𝒂𝒂𝒂 𝒏𝒏
完全精确
𝒎𝒎
≈ 𝒂𝒂 − 𝒂𝒂 ⋅ 𝒌𝒌 𝒏𝒏
计算精度依赖于𝑘𝑘
𝟐𝟐
𝑎𝑎 � 𝑚𝑚可用乘法器
2𝑘𝑘 除法取整可以位移
整个运算无需除法
结果与𝑛𝑛相乘
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
基于Barrett取模的模乘
方法: 𝒙𝒙 ⋅ 𝒚𝒚 = (𝒙𝒙𝒙𝒙) − (𝒙𝒙𝒙𝒙) ⋅
𝒙𝒙
𝒚𝒚
𝒎𝒎
𝟐𝟐𝒌𝒌
𝒎𝒎
移位器
-
𝒏𝒏
𝒏𝒏
公钥密码芯片设计
公钥密码的核心运算:大整数模乘
基于Karatsuba+Barrett取模的大整数模乘
𝒙𝒙
𝒚𝒚
𝒎𝒎
移位器
Karatsuba乘法器
-
𝒏𝒏
小结
对称加密硬件架构
数据混淆计算 – 多为数据选择器
流水线设计 – 减少延迟,增加吞吐量
公钥密码硬件架构
Karatsuba+Barrett大整数模乘
设计规模大于现有芯片制造能力
总体思想
软硬件协同设计:选择算法+设计硬件
结论:面向网安的硬件设计还有很多未知
课堂作业
设计一个4比特的S Box电路
X2X3
X0X1
00
01
10
11
00
0
F
8
A
01
1
3
4
9
10
B
C
D
E
11
2
5
6
7
可用与或非门、数据选择器或存储器
课堂作业
通过Karatsuba及Barrett模乘计算𝒙𝒙 � 𝒚𝒚 𝐦𝐦𝐦𝐦𝐦𝐦 𝒏𝒏
基于2比特乘法器计算 𝑥𝑥 = 12, 𝑦𝑦 = 7, 𝑛𝑛 = 5
• 写出具体计算步骤,计算所需乘法次数
Download