摘要:在白盒攻击环境下, 攻击者可以访问密码算法的实现过程, 观测算法运行的动态执行和内部细节, 并任意修改. 2002年Chow等人首次提出了白盒密码的概念, 利用查找表技术提出了AES算法和DES算法的白盒实现, 所采用的方法称为CEJO框架. 白盒实现将已有的密码算法进行编码混淆, 在白盒攻击环境下以软件的形式达到保护密钥的目的, 同时保证算法结果的正确性. SIMON算法是一种轻量级分组密码算法, 因其良好的软硬件实现性能被广泛应用于物联网设备中, 研究该算法的白盒实现具有重要现实意义. 给出SIMON算法的两种白盒实现. 第1种方案(SIMON-CEJO)采用经典的CEJO框架, 利用网络化编码对查找表进行保护, 从而混淆密钥. 该方案占用内存为369.016 KB, 安全性分析表明SIMON-CEJO方案可以抵抗BGE攻击和仿射等价算法攻击, 但不能抵抗差分计算分析. 第2种方案(SIMON-Masking)采用Battistello等人提出的编码方式, 对明文信息和密钥信息进行编码, 利用编码的同态性, 将异或运算和与运算转化为模乘运算和表查找操作; 最后进行解码, 得到对应的密文结果. 在算法运行过程中, 对与运算添加布尔掩码, 编码的随机性保护了真实密钥信息, 提高了方案抵抗差分计算分析和其他攻击的能力. SIMON-Masking占用内存空间为655.81 KB, 基于勒让德符号的二阶差分计算分析的时间复杂度为O(n2klog2p). 这两种方案的对比结果表明, 经典的CEJO框架无法有效防御差分计算分析, 运用新型编码并添加掩码是一种有效的白盒实现方法.