Blurry Box 密码技术
Kerckhoffs’ Principle
奥古斯特· 柯克霍夫早在19世纪就提出:“即使密码系统的任何细节已为人悉知,只要密匙(key,又称金钥或密钥)未泄漏,它也应是安全的。” 该理论被称为柯克霍夫原则。这意味着一个有效的安全方法并不需要绝对保密。原因是什么呢?
德国威步多年来一直坚信该理论。当市面上其他加密狗都基于专有算法设计时,威步已经开始使用著名的公有FEAL算法,并在1992年,首次推出WibuKey产品时,即在WibuBox产品使用手册中即公布了密钥源的组成。一些未公开的密码系统早在初期就已经被破解,WibuKey则经受住了时间的考验,一直到40位密钥(由于输出限制使用)因为太简单才可以暴力破解。目前WibuBox使用长为64位的密钥,至今仍未被破解。随后在2003年,CodeMeter首次发布,其采用的是AES 128位加密算法,该算法也是公开算法。同样CmDongle至今仍未被破解。
概念
与在加密锁(Dongle)中执行的加密过程不同,迄今为止,尚未有将安全保护机制集成到软件中的方法被公开发表。这导致了所谓的“隐晦式安全”(Security by Obscurity),与柯克霍夫原则(Kerckhoffs' Principle)的主张完全背道而驰。这些未公开的方法既无法进行评估,也无法相互比较。在此背景下,威步一直通过其讲座与活动,为业界提供探讨 CodeMeter Protection Suite 方法与功能的机会。
借助 Blurry Box,密码技术被提升到了一个全新的高度。Blurry Box 密码技术提供了一种完全基于公开方法的软件保护方案,因此它是可以被客观评估和比较的。毋庸置疑,Blurry Box 密码技术完全可以与 CodeMeter Protection Suite 的传统方法相结合。
Blurry Box 密码技术的基本原理是利用加密锁(Dongle)中的一个或多个安全密钥,并结合软件通常具有高度复杂性这一事实。其目标是使非法复制软件所耗费的精力,高于完全重写同一款软件所需的工作量。本质上,如果攻击者了解某款特定软件的工作原理,没有人能阻止他们直接开发出一款类似的软件——能够阻止他们的,唯有其背后所需的庞大工作量。
变体的创建
为了增加软件的复杂性,软件函数(Functions)被复制为多个函数变体。封装函数(Wrapper function)会根据给定的函数输入参数,选择执行哪一个变体。
变体的修改
对各个变体进行修改,使其仅在对每个变体有效的数值范围内工作。这可以防止攻击者通过修补(Patching)封装函数来使其每次都执行同一个变体。
变体的加密
所有变体均被加密,以阻止攻击者在未先进行解密的情况下对代码进行逆向工程。