针对以上所描述的问题,Chow 等在 2002 年提出了一个概念;白盒攻击环境[1]。所谓的 白盒攻击环境就是指攻击者对软件执行过程完全可见的环境。依照上文所述,用户(或攻击者) 通过运行密码软件或者直接观察便能轻而易举地获取到密钥信息。在这种状况下,如果依旧 对密钥进行保护无异于“亡羊补牢,为时晚矣”,此时就迫切的需要对于密钥的特殊保护,需 要用密码算法的实现来对密钥信息进行隐藏,由此,白盒密码应运而生。它的目的和作用很 明确,即将密钥信息隐藏于白盒攻击环境之中,避免密钥在密码软件执行过程中被攻击者强 行获取。79040
Chow 等对白盒密码的设计思想[2]就是混淆;打乱明文到密文之间的映射关系即将密码算 法的输入和输出进行置乱,使得密码算法被混淆,从而避免攻击者强行得出密钥信息。根据此思路,白盒 DES 算法[1]便被设计了出来用于避免攻击者强行得出密钥信息;在 2003 年, Chow 等又提出白盒 AES 算法[3],用查找表的形式来代替密码算法的执行全程,而密钥信息 就隐藏在查找表中,攻击者从查找表中侦听到密钥信息的实现将变得很无奈。在 2005 年, Billet 等提出了针对该白盒 AES 算法的攻击方法[4],通过对查找表的分析论文网,在 230 的时间复杂 度内可以恢复查找表所混淆的信息,从而获取密钥信息。在 2010 年,肖雅莹和来学嘉提出一 种能够抵抗 BGE 攻击的白盒 AES 的可靠实现[5],将密码算法的实现由查找表和矩阵乘法共 同完成,此算法可以得到更高的复杂度和安全性,也需要耗费更大的内存空间,在 PC 上可 用几秒钟将此算法步骤运行出来。笔者在此论文中主要对 Chow 等的白盒 AES 设计进行实现 和一些优化。