-
作者|姜钰
-
来源|
翼安研习社
-
发布时间|2022-01-28
1. 白盒密码为何成为密码工程与密码理论的研究热点
白盒密码是一个古老的密码研究方向,到今天再度被提及,是因为该技术代表了一种适合当今时代的新理念。
白盒密码基于这样的假设,即敌手能够进入密码系统,并获知密码系统中的所有信息。在这样的假设下设计密码系统并保证密码安全就是白盒密码的主要研究内容。
白盒密码(或者理解为密码系统白盒化)就意味着开放密码系统的体系结构和部分细节,其理由有以下几点:
1.1 保障密码系统体系结构不被人知晓(保密),即黑盒假设,难度增加了。
-
a) 硬件和软件的攻击技术不断打破密码系统的边界,使得原本安全的环境和假设不再存在。这种假设与“零信任”的思想是一致的。对于硬件密码系统来说,过去设立的保密边界很难被打破。但随着硬件分析技术的进步,这种假设在发生变化。
例如过去无法读取的密码芯片,现在利用现在市场上的技术就很容易刨开染色,读取其中的信息,包括电可擦除的信息;又如高精度的定向探针,也能深入到芯片或硬件内部获取运行时数据;黑客还可以通过设备的电源消耗等侧信道攻击,恢复出设备中的敏感关键信息;通过注入硬件错误或数据错误使设备暂时紊乱从而泄露敏感数据等。 -
b) 对于软件密码模块,包括含有软件的密码模块,其安全边界也非常脆弱。
例如敌手可通过系统的漏洞,入侵密码系统;通过身份假冒,绕过系统的访问控制进入系统内核;敌手可以越过进程间隔离,跨进程读取密钥信息;系统的直接内存读取机制、内存数据扩散,如系统休眠时数据从内存到硬盘、存在未清零的动态内存以及软件编程中的漏洞等都给敌手带来获取内部信息的机会。
1.2 当密码设备走向大众,随身携带的时候,依靠密码系统的技术保密来支撑安全就变得非常危险。
例如敌手可通过购买密码设备进行使用或结构剖析;也可以对用户不经意放置的设备进行快速分析;丢失的设备更是给敌手以更多的时间进行分析。先进的黑客技术,能够使市场上的密码产品的系统体系结构很快大白于天下。
密码算法的研究给密码系统安全研究展示了开放的发展途径。密码算法的公开和标准化所带来的算法安全增益,大大超过了算法公开所带来的安全损失。开放的密码算法不仅仅使得密码更加普及,也使得密码技术更加安全。在算法的公开和标准化的假设下,掌握公开的密码算法对敌手完全没有作用。
白盒安全,不同于传统的黑盒安全,其目标就是在敌人攻入系统、了解全部系统内容的情况下,确保系统安全的技术。如果密码机不存储密钥,只要用户保护好密钥,密码机丢失并不影响密码安全。如果密钥保存在密码机里,白盒密码机制则需要更多的技术防止黑客透过设备分析拿到密钥,密钥隐藏和密钥的泄露容忍就成为这种密码白盒安全的一个重要研究内容。
传统的密码安全性:
基于黑盒的安全,即敌手只能控制输入输出,但是不假设能够获取算法的内部状态。
白盒安全:
区别于传统密码模型中定义的攻击类型, 它假设攻击者对设备终端(即应用程序的运行环境)拥有完全的控制能力, 能够观测并更改软件运行时的所有内部数据, 攻击者具有更强的攻击能力。
2. 白盒加密基本思想和技术方案的实现
2.1 白盒加密基本思想
白盒加密是指能够在白盒环境下抵御攻击的一种特殊的加密方法。这里引用最早提出白盒加密实现方法的大牛Chow在论文《White-Box Cryptography and an AES》中所说的,“举一个极端的例子,就是将AES加密用一个简单的查表来表示,那么AES128可以用一个 5.4*10^39 bytes的表格替换,这样一来,AES就变成了一个完全的黑盒。”听起来很简单,但是这是极端情况,一个如此大的表,没有硬盘能够装得下,所以在具体算法实现的时候必须有针对性的进行优化。
白盒加密核心思想:
即混淆,让人看不懂,如果说加密是隐藏信息,混淆就是扰乱信息。它们之间的最大区别是,加密是将信息放进了保险箱,但是一旦我有了钥匙,我就能打开这个保险箱。而混淆则是让信息以一种完全无法理解的形式存在,尽量让人无法理解中间的过程(也就是只能看到输入和输出,但无法理解结果是如何得到的),但不影响信息本身发挥作用(一个加了密的程序,在源码未解密前是无法执行的,但是经过混淆的程序,可以正确执行)。
特点:
传统的加密算法中算法和密钥是完全独立的,也就是说算法相同密钥不同则可以得到不同的加密结果,但白盒加密将算法和密钥紧密捆绑在了一起,由算法和密钥生成一个加密表和一个解密表,然后可以独立用查找加密表来加密,用解密表解密,不再依赖于原来的加解密算法和密钥。正是由于算法和密钥的合并,所有可以有效隐藏密钥,与此同时也混淆了加密逻辑。具体而言白盒加密的一种实现思路就是将算法完全用查表来替代,因为算法已知,加密的密钥已知。所以将算法和密钥固化成查表表示,这就是白盒密钥的实现过程。然而有利必有弊,白盒加密由于需要将加密和解密的算法固化到表格中,势必要增加空间开销,因为要保存这一系列的表。具体在实现的过程中,大部分情况需要用时间换空间,需要对具体的实现算法进行优化,也就是样将大表分解成若干个小表,增加了查表的次数即时间开销但是减少了表占用的空间。
2.2 白盒密码实现技术方案
完全理想的白盒密码安全需要从基础理论到工程实现全方位的突破。
主要的白盒密码技术包括以下几种:
-
a) 混淆技术。通过密钥与算法的混淆,使得交给用户的密码功能是有限的,用户无法获取其他密码功能。一切都是算法,没有密钥或者密钥可以公开,是混淆理论发展的可能方向。把一个混淆的密码功能移交给用户的时候,所有的原理、系统结构和密钥都可以对用户公开。现代的非对称密码给出了这样的示例,例如,用户只能加密,不能解密;用户只能验证签名和不能仿造签名。混淆密码机制需要在非对称的密码理论上有更大的突破,区分出不同的独立的密码功能,确保一个密码功能不影响其他密码功能的安全,从而产生安全的完全白盒化的密码应用。
-
b) 密钥隐藏技术。密钥隐藏技术是白盒密码的另一个重要思路,其方法是将需要保护的密钥隐藏到复杂的代码中,隐藏在系统中。直接的密钥隐藏技术一般采用密钥拆分技术,通过改变算法流程,将用户的密钥拆分成多个无关的子密钥,隐藏到系统的不同地方。需要密码执行的时候通过调用看似无关的密码函数计算出需要的密码计算结果。密钥分散隐藏到代码中是另一种密钥隐藏思路,需要有好的算法实现密钥与代码的混淆。通过代码混淆使得敌手通过代码分析无法获得算法和密钥,其安全的假设就是完全复制全部的代码是困难的。尽管密钥隐藏技术依赖工程实现,难以做到完全白盒,但相关密钥隐藏技术已经成为现代密码系统安全的一种必备手段。特别是软件密码模块,不得不使用多种密钥隐藏技术来保护密钥安全。
-
c) 密钥攻击容忍技术。当密钥隐藏技术被敌人破解的时候,我们是否有能力保证,即使敌手获得了部分密钥,我们的密码系统仍旧是安全的。密钥攻击容忍就是在这样一种白盒假设下的技术思考。密钥攻击容忍是在密钥保护,密钥检测和自毁的基础上对密钥安全的进一步延伸。子密钥不影响密钥安全的密钥拆分技术是密钥攻击容忍技术的一种技术思路。通过将密钥拆分成多个无关的子密钥,并保证即使敌手获得部分子密钥也不影响原密钥的安全就可以构成一种密钥攻击容忍的解决方案。在密码算法设计上就具备密钥攻击容忍就更具有基础性意义。
应用场景:
数字版权管理【通过对播放软件的白盒加密,白盒密码可以保证数字媒体只在经过付费的终端播放】、云计算、手机安全使用问题(即使手机被掌控,也不会泄露固有的机密信息)等
特别提醒:此条信息来自于互联网,目的在于传递更多信息,并不代表本主体赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本主体有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。