基于比特切片实现的虚拟洗牌保护方案的生成器研究
1 背景
与传统密码分析的危险信道模型不同,白盒密码学假定运行密码算法被部署在不安全的执行环境中, 攻击者对于运行密码算法的设备具备完全的掌控能力,可以通过提取代码组件、分析运行过程中产生的中间状态等方式恢复密钥。 由于其适用于移动支付、数字版权管理等商用场景,在近些年愈发受到 关注。
从保护方案上来看,主流的、受到关注的白盒保护方案共分为三种:基于编码(Encode)的白盒保护方案 [1, 2]、基于高次非线性掩码(Masking)的白盒保护方案 [3] 以及基于虚拟洗牌的白盒保护方案 [4]。 而随着白盒密码的发展,编码和掩码保护方案被证明是脆弱的,由于无法引入随机数,所以使得内存迹(程序执行期间记录的内存访问和操作的详细数据)中的变量与猜测部分密钥信息就可以获取的可预测变量存在较高的相关性,容易受到差分计算分析(differential computation attack,DCA)攻击 [5, 6]。 虚拟洗牌方案是迄今为止唯一一个可以达到其所声明的安全性的方案,因此备受关注。
虚拟洗牌方案是 WhibOx19 白盒竞赛的三个优胜方案之一,并在欧密 2021 中由其设计者 Biryukov 和 Udovenko 公布具体细节。 它旨在对抗代数攻击,采用冗余操作来掩盖真实计算的值。对于不同的明文,dummy shuffling 会选择不同的主槽,使得敏感中间变量并不出现在 Trace 的固定位置,进一步提升了安全性。
虚拟洗牌方案需要配合掩码方案才能达到预期的安全性。 其中,结合线性掩码即可达到预期的安全性。 值得一提的是,虚拟洗牌方案的实现效率及低,因此,在 WhibOx19 竞赛中使用者采用了比特切片(bitslice)[7] 的实现方式。 然而,公布的论文 [4] 中并未提及该方案的具体实现细节,只给出了该方案的伪代码,而这个伪代码本身并无法进行比特切片操作。 除此之外,论文并未公布生成器的相关代码,这使得使用虚拟洗牌方案保护密码算法在实际应用中的安全性成为了一个没有解决的难题。