说到加密,自然少不了密钥。密钥的存储,可以加密后写在代码里,一起编译到最后的二进制文件中,也还可写个函数,用代码来生成密钥等。这些方法,对于黑盒攻击来说,其实都是相对来说比较安全的。但是还有另外一种攻击叫做白盒攻击,比黑盒攻击更进一步,拿到了加密设备的运行环境,包括内存信息,磁盘的读写权限等。此类攻击就可以dump出内存的数据,从而使运行在内存中的密钥不再安全。
白盒加密就是为白盒攻击而生,它的目的是不在运行环境中出现完整的密钥。为此,首先要对密钥本身做尽量复杂的混淆,同时提供函数来处理。举个例子,比如明文密钥是abcd,混淆后的密钥变成了非常复杂的矩阵,根据算法,每次生成的4个中间密钥,aefg,hbigk,lmcn,opqrstd,根据某个算法,用这些密钥生成4个密文,然后在把4段密文用算法生成一段密文,如此可以不断重复,直到最后生成密文。整个过程中最原始的密钥一直没有出现在内存中,白盒攻击想拿到密钥难度就大大增加了。