8.1.2 破解者的动机
在信息安全领域,一般把安全分成三部分,即机密性(confidentiality)、完整性(integrity)和可用性(有时这三部分也被缩写成CIA)。在2002年通过的《联邦信息安全管理法》中,这三个术语的定义如下。
所谓“信息安全”是指让受保护的信息和信息系统不被非法访问与使用,并使信息免于被泄露、破坏、篡改或毁灭。
(1)完整性是指保护信息不被篡改或毁灭,其中包括信息的防抵赖和防假冒。
(2)机密性是指保证只有经过授权的人员才能按其权限访问数据以及防止信息泄露,其中涉及保护个人隐私和企业的商业机密。
(3)可用性是指保证信息可以被及时、可靠地访问和使用。
而破解者的目标当然也就是阻止你达到上述目的,并从攻击中得到一定的(经济上或精神上的)满足。
但是在本书中,我们讨论的情况与大多数安全专家们所关注的问题迥然不同,多数安全专家关心的是如何保证网络中计算机系统的完整性、机密性和可用性,而我们关心的则是某个特定的计算机程序或者程序中所包含信息的完整性、机密性和可用性。比如防篡改技术就是用来保护程序完整性的——防止程序被破解者按照他的意图进行修改;代码混淆技术保护的则是程序中所使用的算法或其他秘密(比如加密的密钥)的机密性;而水印/指纹技术的设计目标就是保证水印的可用性——确保水印提取器能随时随地地从程序中提取出水印来,而破解者则会千方百计地干扰防御方提取水印,进而使自己能随心所欲地复制软件而不会受到软件作者的追查。
保护程序完整性的一个方法是把程序从语义上分为两个部分:一个是实现程序正常功能的核心代码,另一个则是为了使核心部分免受攻击而添加的防护代码。破解者的目标则是在保证核心代码不被破坏的情况下,干掉防护代码,并加上实现他自己功能的代码(比如在大部分公测版游戏中玩家是不能随时存盘的,而破解者却会给游戏加上这一功能),如图8.2所示。
图8.2 代码保护模型
为了形象地说明这个问题,我们来看之前给出的那个DRM播放器代码,看看在这个播放器代码中都包含有哪些值得破解的信息以及破解者得到这些信息,或者修改了播放器代码之后都能获得些哪些好处(经济上的或其他方面的)。
首先,加密了的音频文件本身就有一定的价值。由于解密后数字信号的保真度比解码出来的模拟信号要髙,所以自然也就比模拟信号更有价值。获取明文数字信号的动机可能有多种——有些人可能只是想方便自己欣赏(可能他只是想在自己的车里,或者便携式CD机里播放这些音乐,而不是只能用指定的播放器才能做到这一点),而另一些人则想把它们卖掉赚钱。
其次,如果他能拿到播放器里的密钥——play_key,破解者和他的客户就能随意地解密和欣赏这些音乐了。如果他愿意的话,他还能用这个密钥自己编写一个能兼容这类加密音频文件的播放器软件,从竞争对手手中挖走一大块利润。
第三,我们的程序中执行了两种用户合法性验证:防止用户在超过使用期限之后再使用软件,防止没有正确激活码的用户使用软件。若是没有这些限制的话,对于某些人来说这个软件可能就更加有价值。尽管这一幕一般不会发生在数字版权保护系统中(在数字版权保护系统中一般是把播放器送给用户使用的,而商家则主要是通过销售加密音频文件赚钱的)。
第四,即使用户确实已经付费购买了你的程序,他也可能会以此为母版来制作盗版。如果他想这样做的话,他必须要确认他已经把你在程序中做的所有暗记都擦掉了,否则等待他的就一定是牢狱之灾。所以如果他能把程序中的标记这份程序是谁买走的用户指纹(Oxb0b5b0b5)抹除掉的话,这个程序对他无疑就更具价值。
最后,你的对手还有可能是你的商业竞争对手,他可能会寻找并使用你在播放器中使用的算法,以便改进他自己的播放器的性能。
综上所述,播放器里所包含的值得破解的信息既有静态数据(播放器的密钥),也有动态数据(解密产生的数字音频流),还有程序中使用的算法。假使播放器中的一些软件保护代码被去掉,无疑也会使某些人能够得益。比如有人想要去掉程序中的使用期限设置,也有人不想每次运行程序都输入激活码,还会有人想要把程序中的用户指纹去掉,以便把它卖掉赚钱。
虽然我们这里是用一个数字版权保护系统的例子来说明问题,但并不是说只有数字版权保护系统需要软件保护技术保护,有攻击的地方就会有防御的需求。如Skype VoIP客户端程序中就含有一个加密密钥和不公开的算法,若是能把这些信息搞到手,就能写出自己的客户端程序,把大批用户从Skype手中抢走。所以Skype的客户端程序中也使用了hash技术来保护自身代码不被修改。