白盒密码技术是一项能够抵抗白盒攻击的密码技术。

白盒攻击是指攻击者对设备终端拥有完全的控制能力,能够观测和更改程序运行时的内部数据。这种攻击环境称为白盒攻击环境。大多智能终端环境(Android、iOS等)在很多情况下就是一个白盒攻击环境。

白盒加密属于对称加密,是指能够在白盒环境下抵御攻击的一种特殊的加密方法。首先举个例子帮助理解,这里引用最早提出白盒加密实现方法的大牛Chow在论文《White-Box Cryptography and an AES》中所说的,“举一个极端的例子,就是将AES加密用一个简单的查表来表示,那么AES128可以用一个$$$5.4\times 10^{39}$$$ bytes的表格替换,这样一来,AES就变成了一个完全的黑盒。”听起来很简单吧,但是这是极端情况,一个如此大的表,没有硬盘能够装得下,所以在具体算法实现的时候必须有针对性的进行优化。

核心思想是混淆,混淆的意思就是让人看不懂,如果说加密是隐藏信息,混淆就是是扰乱信息。它们之间的最大区别是,加密就是信息放进了保险箱,但是一旦我有了钥匙,我就能打开这个保险箱。而混淆则是让信息以一种完全无法理解的形式存在,尽量让人无法理解中间的过程(也就是只能看到输入和输出,但无法理解结果是如何得到的),但不影响信息本身发挥作用(一个加了密的程序,在源码未解密前是无法执行的,但是经过混淆的程序,可以正确执行)。

Blackbox

黑盒攻击是指攻击者只能获取到程序的输入和输出,不能实质性地接触到任何内部操作和数据;对密码算法来说就是,攻击者可以获取明文和密文,但观测不到算法运行时的内部数据。

Graybox

灰盒攻击,又称侧信道攻击,通过程序运行时泄露的物理信息(如时间信息、功率消耗、电磁辐射等)可以实质性的部分或完全获取程序运行的内部数据,从而完成对程序的破解或数据(密钥)的窃取。

白盒密码需要抵抗白盒攻击,构造白盒密码算法有两种策略,标准密码算法白盒化和构造全新密码算法。

  • 标准密码算法白盒化,在标准密码算法安全理论的基础上和不改变原算法功能的前提下,将原有密码算法通过白盒密码技术进行设计,在白盒攻击环境下能够有效保证其密钥安全。
  • 构造全新密码算法,新算法密码分析结果不能弱于标准密码算法同时具备抵抗白盒攻击的能力。


进展

  • 查找表技术:2002年,Chow等人首先提出了白盒攻击的概念,并先后给出了AES、DES的白盒化实现。2009年,Xiao-Lai给出了Chow白盒AES的一个改进方案和国密SM4算法的白盒化实现。
  • 其他技术:2006年Bringer等人提出一个采用了插入扰乱项技术新的AES白盒实现方法。2014年, Alex Biryukov等人提出了一种基于 ASASA(Affine-Sbox)结构的白盒密码设计方法。


白盒密码技术从实现方式上可以分为两类:静态白盒和动态白盒。

  • 静态白盒是指密码算法结合特定的密钥经过白盒密码技术处理后形成特定的密码算法库,称为白盒库,白盒库具备特定的密码功能(加密、解密以及加解密),并能在白盒攻击环境下有效保护原有密钥的安全。静态白盒更新密钥,需要重新生成白盒库。
  • 动态白盒是指白盒库生成后就不需要再更新,原始密钥经过同样的白盒密码技术转化为白盒密钥。白盒密钥传入相匹配的白盒库可以进行正常的加密或解密功能。白盒密钥是安全的,攻击者不能通过分析白盒密钥得到任何关于原始密钥的信息。


  1. https://zhuanlan.zhihu.com/p/21273220 - 【密码篇】白盒加密基本思想
  2. https://www.jianshu.com/p/8bfae6fc6845 - 浅谈白盒加密
  3. https://zhuanlan.zhihu.com/p/23295431 - 【科普】白盒密码技术
  4. https://www.whiteboxcrypto.com/ - White-box cryptography