白盒密码技术白皮书
有关白盒的概念
其实白盒黑盒之类概念其实是软件保护方面的概念,在很多方面都有应用,例如
黑盒:
传统的加密技术是默认假定处于黑盒中的,也就是假定攻击者无法获得密钥。具体而言,认为攻击者并未实质性地接触到密钥(执行加密或者解密的算法)或者任何内部操作,仅仅能观察到一些外部信息或者操作,这些信息包括系统内的明文(输入)或者密文(输出),并且认为代码执行以及动态加密不可被观察。
灰盒:
灰盒认为攻击者可以实质性地接触到部分密钥或者泄露的信息(也就是所谓的边信道信息)。边信道分析攻击(Side Channel Analysis, SCA)利用了从密码系统运行过程中泄露的信息。泄露信息是通过被动观察时间信息、功率消耗、电磁辐射等而获得的。
白盒:
白盒即攻击者已经完全控制了整个操作过程且对此完全可见,攻击者可以自如地观察动态密码运行过程,并且内部算法的详细内容完全可见,可随意更改。举例而言,只要软件是在本地运行的,攻击者就可以通过调试器运行程序,并观察软件运行的过程。所有涉及解密部分的代码也就一览无余了。定义如下:
攻击者对主机和软件具有完全控制权
软件动态执行过程是可见的
加密算法内部细节完全可见、可修改
白盒密码
白盒密码技术是假定攻击者已经完全控制了整个加密的操作过程且对此完全可见,在这种情况下处理面临的严重威胁。黑客们可以不受限制的观察动态密码的运行过程(拥有示例密钥),并且内部算法的详细内容是完全可见,可随意更改。
尽管白盒密码技术的方法完全透明,但是它将密码进行了组合使得密钥不容易被提取。总而言之,白盒加密是能抵御白盒攻击的加密技术。
密钥明文通过白盒加密后会受到保护,它不会直接出现在内存中,所以不会被提取到。
白盒攻击
白盒攻击(White-Box Attack)是指攻击者对加密系统的运行环境和可执行程序拥有完全控制,可观察和修改任意的内部操作和数据,包括设备的CPU、寄存器、内存等数据等等,如图4所示。在白盒攻击环境下,密码算法的一般软件实现方式通常会导致密钥通过内存等途径直接泄露。
白盒攻击是三种攻击类型中最强的一种,且涉及到密码算法本身的理论安全性及其工程实现的应用安全性。如何设计能够抵抗白盒攻击,保护白盒环境下密钥和敏感数据不被攻击者窃取的有效方案是目前密码技术领域的一个重要问题。
将攻击类型和技术对应
白盒加密基本思想
白盒加密属于对称加密,是指能够在白盒环境下抵御攻击的一种特殊的加密方法。首先举个例子帮助理解,这里引用最早提出白盒加密实现方法的大牛Chow在论文《White-Box Cryptography and an AES》中所说的,“举一个极端的例子,就是将AES加密用一个简单的查表来表示,那么AES128可以用一个
bytes的表格替换,这样一来,AES就变成了一个完全的黑盒。”听起来很简单吧,但是这是极端情况,一个如此大的表,没有硬盘能够装得下,所以在具体算法实现的时候必须有针对性的进行优化。
核心思想:
核心思想是混淆,混淆的意思就是让人看不懂,如果说加密是隐藏信息,混淆就是是扰乱信息。它们之间的最大区别是,加密就是信息放进了保险箱,但是一旦我有了钥匙,我就能打开这个保险箱。而混淆则是让信息以一种完全无法理解的形式存在,尽量让人无法理解中间的过程(也就是只能看到输入和输出,但无法理解结果是如何得到的),但不影响信息本身发挥作用(一个加了密的程序,在源码未解密前是无法执行的,但是经过混淆的程序,可以正确执行)。
特点
传统的加密算法中算法和密钥是完全独立的,也就是说算法相同密钥不同则可以得到不同的加密结果,但白盒加密将算法和密钥紧密捆绑在了一起,由算法和密钥生成一个加密表和一个解密表,然后可以独立用查找加密表来加密,用解密表解密,不再依赖于原来的加解密算法和密钥。
优势:
正是由于算法和密钥的合并,所有可以有效隐藏密钥,与此同时也混淆了加密逻辑。具体而言白盒加密的一种实现思路就是将算法完全用查表来替代,因为算法已知,加密的密钥已知。所以将算法和密钥固化成查表表示,这就是白盒密钥的实现过程。
缺点:
有利必有弊,白盒加密由于需要将加密和解密的算法固化到表格中,势必要增加空间开销,因为要保存这一系列的表。具体在实现的过程中,大部分情况需要用时间换空间,需要对具体的实现算法进行优化,也就是样将大表分解成若干个小表,增加了查表的次数即时间开销但是减少了表占用的空间。
白盒密码技术
完全理想的白盒密码安全需要从基础理论到工程实现全方位的突破。主要的白盒密码技术包括以下几种:
混淆技术
通过密钥与算法的混淆,使得交给用户的密码功能是有限的,用户无法获取其他密码功能。一切都是算法,没有密钥或者密钥可以公开,是混淆理论发展的可能方向。把一个混淆的密码功能移交给用户的时候,所有的原理、系统结构和密钥都可以对用户公开。现代的非对称密码给出了这样的示例,例如,用户只能加密,不能解密;用户只能验证签名和不能仿造签名。混淆密码机制需要在非对称的密码理论上有更大的突破,区分出不同的独立的密码功能,确保一个密码功能不影响其他密码功能的安全,从而产生安全的完全白盒化的密码应用。
密钥隐藏技术
密钥隐藏技术是白盒密码的另一个重要思路,其方法是将需要保护的密钥隐藏到复杂的代码中,隐藏在系统中。直接的密钥隐藏技术一般采用密钥拆分技术,通过改变算法流程,将用户的密钥拆分成多个无关的子密钥,隐藏到系统的不同地方。需要密码执行的时候通过调用看似无关的密码函数计算出需要的密码计算结果。密钥分散隐藏到代码中是另一种密钥隐藏思路,需要有好的算法实现密钥与代码的混淆。通过代码混淆使得敌手通过代码分析无法获得算法和密钥,其安全的假设就是完全复制全部的代码是困难的。
尽管密钥隐藏技术依赖工程实现,难以做到完全白盒,但相关密钥隐藏技术已经成为现代密码系统安全的一种必备手段。特别是软件密码模块,不得不使用多种密钥隐藏技术来保护密钥安全。
密钥攻击容忍技术
当密钥隐藏技术被敌人破解的时候,我们是否有能力保证,即使敌手获得了部分密钥,我们的密码系统仍旧是安全的。密钥攻击容忍就是在这样一种白盒假设下的技术思考。密钥攻击容忍是在密钥保护,密钥检测和自毁的基础上对密钥安全的进一步延伸。
子密钥不影响密钥安全的密钥拆分技术是密钥攻击容忍技术的一种技术思路。通过将密钥拆分成多个无关的子密钥,并保证即使敌手获得部分子密钥也不影响原密钥的安全就可以构成一种密钥攻击容忍的解决方案。在密码算法设计上就具备密钥攻击容忍就更具有基础性意义。
多方协同密码计算
多方协同计算的本质就是在不信任的个体间进行协同,产生出各自满意的结果。在可信体系的支持下,协同计算是简单的。以可信计算为基础的可信体系能够确保信息的真实、完整、抗抵赖和合法使用,协同计算相对容易。当信任体系被打破或难以建立的时候,也就是现在的零信任假设下,我们的信任又无法建立,如何合作计算就成为多方协同密码计算的主要研究方向。
同态密码就是两方协同密码计算的代表性工作。甲方通过加密将数据交给乙方,乙方在完全不知道甲方信息内容的前提下,帮助甲方处理数据,返回处于密文状态的处理结果。甲方对处理结果进行解密得到明文的结论。利用同态密码的双方协作不需要建立强的信任关系,将原来加密隐藏的功能与委托计算的功能融合起来,使得对方能够进行计算而无法了解信息内容。
多方协同密码技术,是密码技术从通信保密到计算安全的一种思想变革,需要基础理论研究的大力支持。开放的安全多方协同计算必然会用到非对称的密码机制,以确保对某一方面的密码功能优势。我们要将一种数据的计算能力交给敌手,同时还用保证我们的交给敌手处理的信息的安全。这也是白盒化密码的基本思路。
从理论上说,签名和验签功能的分离就是一种功能拆分的非对称多方密码计算的范例。验证签名的代码和密钥可以完全开放,而只需要保护好自己的签名私钥就行。代理重加密技术可以让一方对信息进行重新加密而不需要了解信息内容;基于身份的加密能够确保只有拥有相应身份的人才能阅读信息。诸多非对称密码学的进展使我们有望在不远的将来拥有更多的多方安全密码计算的手段。
白盒密码构造
白盒密码的一般构造方法通常基于标准密码算法白盒化策略,通过将标准密码算法中的密钥与算法实现融合和混淆,使得密钥与加密程序不可区分,即使攻击者掌握了对白盒密码系统的控制能力,也无法进一步获取原始的密钥信息。
标准密码算法白盒化又可根据密钥是否可更新分为静态白盒技术与动态白盒技术两种
静态白盒:白盒生成后密钥是确定的,更新密钥需要重新生成并分发白盒。
动态白盒:白盒与密钥不完全绑定,可通过对输入中经白盒处理后的密钥进行替换实现密钥的更新。
白盒密码技术发展
白盒密码系统,包括入侵容忍的密码和密码应用系统,多方安全的密码协同,是密码系统发展的一个重要方向。密码系统应该确保即使攻击者获得系统结构和部分安全信息,密码系统依旧安全可控。
白盒密码技术就是在开放条件下的一种密码技术,采用的是开放的假设,具备更好的互联网适应能力。
开放的、白盒化的密码应用技术也是未来的重要方向。通过开放体系结构让建设参与者和使用者明确自己的责任和义务,更好地参与到密码应用系统的安全中来是大型密码应用的基本要求。比特币所依赖的区块链技术,就是一种白盒安全技术的典范。比特币的区块链系统不仅将原理全部公开,其运行的源代码也是完全公开的。这种在完全“开放”的环境下保证系统的安全也许是未来密码应用的主要方向。
SOTP密码算法体制
SOTP(Super One-Time-Password)密码算法体制是一种新型白盒密码。
SOTP算法根据用户密钥信息设计均匀、非线性的单项扩散变换,保证由配置数据到用户密钥的不可逆性,根据参数配置信息生成相应的密码部件,构建用于加密的密码墙
具体而言,密钥通过特定算法生成与之一一对应的配置参数,配置参数确定了密码墙中的密码砖、数据回流、交织层等各个组件的信息。根据配置信息生成的密码墙即为与密钥唯一对应的白盒加密算法,可理解为将标准加密算法中的各类组件和过程进行随机重组,生成与密钥唯一对应的独一无二的新算法。密码墙的示例结构如图所示
通过密钥生成与密钥绑定的独一无二的密码墙(即白盒算法)后,可将数据输入密码墙中以实现加密,加密步骤如图所示。攻击者无法通过密码墙恢复出密钥信息,可以抵抗白盒密钥攻击。
参考资料
【密码篇】白盒加密基本思想
物联网场景下的白盒加密技术
密码技术的现状与白盒化发展趋势