SKIVA:高效安全的密码算法实现方案
1. 引言
在密码算法的实现中,安全性和效率是两个至关重要的因素。为了应对侧信道攻击和故障注入攻击等威胁,需要采用有效的防护措施。本文介绍了一种名为SKIVA的硬件方案,它通过自定义指令集扩展(ISE)来支持高效安全的密码算法实现。
2. 冗余计算方案
- 掩码计算 :支持1、2和4份额的掩码实现,分别对应未掩码、一阶和三阶掩码。使用字母D表示份额数量(D ∈ {1, 2, 4})。在机器字中,编码第i位的D个份额被分组在一起。
- 数据冗余计算 :采用指令内冗余(IIR)来保护实现免受数据故障的影响。支持直接冗余和互补冗余两种实现方式。在实践中,更倾向于使用互补冗余,因为它能降低单故障注入导致位翻转到一致值的可能性,并且能确保在密码计算过程中切片的汉明重量恒定,减少功耗泄漏。
- 时间冗余计算 :数据冗余计算无法防止控制故障,如指令跳过。因此,采用跨轮次的时间冗余(TR)策略。将连续两轮的执行流水线化,通过比较两轮的结果来检测控制故障。这种技术不会增加代码大小,只有最后一轮AES需要非流水线方式计算两次。同时,通过冗余循环计数器和循环控制结构的复制来保护循环的控制路径。
3. SKIVA硬件实现
3.1 自定义指令集扩展
-
新指令的添加 :为SKIVA添加了新指令,以支持在三个不同领域对聚合位片进行计算。这些指令包括从正常表示到位片形式