范 涛,毛继曙,王国中
(1.上海大学 通信与信息工程学院,上海 200072;2.上海广电电子科技有限公司,上海 200233)
责任编辑:许 盈
随着网络技术和数字多媒体技术的迅猛发展,数字视频通信获得了广泛应用,人类正在步入一个全新的数字时代[1]。数字电视系统是指音频、视频和数据信号从信源编码、调制到接收和处理均采用数字化技术的系统方案。按照功能其可分为头端发送系统和终端接收系统两大部分。其中头端包括数字电视信源系统、信号处理系统和调制输出系统;终端接收系统包括机顶盒、电视机或数字电视一体机等,其各模块间的通信如图1所示。
在数字电视的系统中,头端编码器占有绝对的核心地位,其成本与价值非常高昂,而且倾注了开发者大量的心血,然而一旦软件被盗用,无论对于开发者还是编码器的制造商都会造成非常严重的后果。为了保护产品制造商以及开发者的权益,设计较好的编码器软件加密系统方案有着至关重要的作用。
目前编码器在授权时大部分采用传统的序列号保护法,该方法成本较低,但安全性和可靠性也较低[2]。采用注册码验证的软件保护机制一般对不同用户使用相同的注册码,极易造成注册码的非法扩散,任何拷贝到软件的用户都可以用该注册码进行软件注册,从而给开发商造成相当大的损失。针对上述的问题,本文设计的方案主要基于如下4点考虑:
1)遵循“一机一码”的原则。软件注册码是唯一的,即一个注册码只能在一台机器上注册使用软件,不能复制使用。
2)每次运行软件时,要对用户身份进行验证,只有合法用户才能使用软件。
3)防恶意攻击,攻击者不能掌握注册码规律,无法写出注册机。
4)方便使用,成本低,推广加密系统的应用。
根据上述4点需求,本文提出了一种基于硬件信息的软加密技术。以具有唯一性的多项硬件信息为加密依据,采用MD5算法对获得的信息进行加密,充分考虑了编码器“一机一码”的需求,从而可以有效防止非法注册。此外,系统合理地选择了非对称算法来防止非法注册的生成,对编码器软件进行加密保护,有效维护开发者和制造商的权益。
软件加密是解决非法复制的有效手段,根据加密原理和方式的不同,软件加密技术可分为软加密、硬加密和网络加密3类。
软加密是指不依赖于特别硬件,用纯软件方式来实现对软件的加密保护,最大优势在于极低的加密成本。目前主要有序列号法、时间限制、功能限制、警告(NAG)窗口、注册文件法和加壳法等。
序列号保护法是软加密的一种,是以复杂的数学算法为核心的软件加密技术,也是应用最为广泛的方法之一。为达到识别用户身份的目的,用户必须到软件公司去注册后才能继续使用。序列号保护法加密比较简单,不需要额外的成本,用户购买也非常方便,网络上80%的软件都是按照这种方式进行保护的,微软的操作系统也曾使用过这种方法。
硬加密是通过硬件和软件结合的方式,将加密信息固化到某个硬件中作为软件的附加设备来实现软件加密的。加密后运行软件时,需要访问相应的硬件,这类加密方式主要依赖于硬件信息不易被更改和复制的特点。主要有光盘加密、加密狗、加密芯片和软盘加密等。
网络加密技术被誉为是最安全的加密方式,但缺点也很明显。用户必须一直在线,一旦网络不稳定,被加密的软件将无法使用。国外曾有一些游戏软件使用过网络加密方式,要求玩家必须在线,一旦网络不稳定或是掉线,程序就会自动关闭,给用户带来了极大的不便。
在数字电视的系统中,为了保证音视频的有效传输,需要高效的编码算法。编码器在系统中具有核心的地位,所以一旦被不法分子拷贝将会对设备制造商、运营商以及研发人员的权益造成极大的损失。不同于其他应用软件,编码器一般应用于广播网且需快速注册,所以传统的加密方法并不能很好地达到系统的要求。针对“一机一码”的需求,本文提出了一种基于硬件信息的软加密技术,通过数字签名,散列、密钥交换等多个可靠的密码学算法进行多重加密保护,保证了编码器软件的安全。
基于硬件信息的软件加密方案,当用户获得软件进行安装时,首先通过机器码获取模块从用户的计算机上取得该机器的一些硬件信息(如硬盘序列号、网卡MAC地址、CPU ID等)。然后,对这些信息进行计算获得序列号,从而达到软件与硬件信息绑定。用户需要把这一序列号用Internet、Email或邮寄等方法告知软件发行商,软件发行商利用注册码生成模块(即注册机)生成相应的注册码寄给用户,用户根据安装提示输入注册码进行软件注册。由于不同计算机的硬件信息不相同,即使用户信息被盗用,验证模块可保证其他计算机不能成功注册使用软件,从而使软件加密的可靠性和安全性大大提高,真正实现“一机一码”的软件注册。系统流程图如图2所示。
如图2所示加密系统按照功能划分模块主要可以分为ID码生成模块、注册码生成模块、注册模块和验证模块4个部分。基于硬件信息的软件加密系统采用计算主机的多个硬件信息,如CPU序列号、MAC地址、主板序列号等作为注册源,经过散列函数计算得到散列值进行签名。软件只有在注册后才能使用,且获取的硬件信息具有唯一性,经过单向函数加密可以保证用户信息的保密性,同时方便软件发行商使用注册机产生唯一的注册码,实现“一机一码”的注册机制。使用非对称密码对注册码进行注册,使攻击者无法得到注册码,写出注册机程序,保证软件的安全。
1)ID码生成模块
ID码获取模块主要完成两个功能:自动获取计算机硬件信息,对硬件信息进行加密生成ID码。
每台计算机都有内存、硬盘、CPU、显示器等配件,这些信息有很多都是相同的,不具唯一性,对软件加密没有意义。网卡MAC地址、CPU ID、硬盘的出厂序列号、显卡型号以及BIOS序列号等信息,对于不同计算机是不相同的。可以选取这些信息并将它们组合起来,这样信息相同的几率就会很小,基本可以保证用户身份的唯一性,从而有效地防止软件的非法使用,保护软件发行商的合法权益。
因此在选取硬件信息对软件进行加密的过程中,可以选取计算机CPU ID、主板序列号、MAC地址等多个硬件信息,构成计算机特征值。由于这些信息本身就具有唯一性,通过多个硬件信息组合得到的计算机特征值可以说完全具备了唯一性的要求,满足“一机一码”条件。为避免攻击者对其他计算机硬件信息的修改,需要将自动获取的计算机硬件信息用特定加密算法进行加密,以保证用户信息的安全,具有单向性的Hash函数是最合适的选择。
Hash函数也称为散列函数,是一种单向密码体制,是一个从明文到密文的不可逆映射,只有加密过程,不能解密。同时,Hash函数可以将任意长度的输入经过变换后得到固定长度的输出。MD5算法就是Hash函数的一种,在这里选取MD5算法[4]对硬件信息进行加密,得到ID码。
MD5算法可简单描述为:将任意长度的字节串(即需要产生摘要的硬件信息)映射为一个128位的信息摘要,即使可看到源程序和加密算法描述,也无法将一个MD5的值反推导回原来的字符串。算法实现如图3所示。
图3 MD5算法流程图
MD5算法是一种单向加密算法,数据只能加密,不能被解密,也就是说攻击者不能由消息摘要推得用户计算机信息,保证了用户信息的安全。另外任意一段数据,经过加密后,其结果永远是相同的;任意两段数据加密之后的密文是不相同的,可以保证每个用户信息经MD5算法加密后生成各不相同的ID码。用户需要将该模块生成的ID码发送给软件发行商。
2)注册码生成模块
软件发行商提供唯一的软件注册码给用户进行安装与注册,安装时注册信息将写入注册表,用以验证每次运行时的信息是否存在与正确,在使用注册码进行软件授权机制中,注册码是整套软件保护方案中最重要的部分。
注册码是根据用户信息生成的,具有唯一性。软件发行商在给用户分发注册码时通过某种算法f将用户信息换算成注册码(用SN表示),注册码生成过程可表示为
注册码生成过程与注册码合法性验证环节有着密切的联系,常见的软件合法性验证计算方式可表示为
软件破解的难易程度与换算关系设计有直接关系,因为验证过程是在用户计算机上运行的,攻击者可以使用工具软件对其进行分析,可能造成合法注册码泄露,并在网上传播,任何复制了这个软件的人都可以使用这个注册码进行软件认证,造成软件盗版。破解者也可能会通过进一步分析换算方法g,写出非法注册机,这样软件就能被随意复制并使用,并被非法的通过认证,同样会造成软件保护的失效,严重损害了软件发行商的利益。针对这些情况,本文采用“一机一码”制,即一台计算机对应一个注册码,那么即使此注册码被破解,也不能在其他计算机上使用。另外,在合法性验证环节采用注册码算法的逆算法,即
软件合法性验证过程是在用户计算机上进行,容易被攻击者破解,如果采用非对称加密算法,那么就可以进一步限制盗版的可能。RSA算法[5]作为非对称加密算法的一种,是第一个既能用于加密又能用于数字签名的算法,加解密原理简单,易于理解和操作,具有良好的安全性,目前已成为公钥密码的国际标准。在本系统中选用RSA算法进行加密生成软件注册码。算法步骤如下:
步骤一,RSA加解密算法的初始化。
(1)随意选择两个互异的大素数p和q,要求p不等于q;
(2)计算n=p×q,根据欧拉公式得φ(n)=(p -1)(q -1);
(3)选择一个整数e,满足e与φ(n)互素,且e小于φ(n);
(4)计算整数d,d=e-1mod(p-1)(q-1),且d〉;
(5)为安全起见将p和q的记录销毁,返回n,d。
步骤二,RSA加解密变换。
将明文划分成块,使得每个明文报文长度满足m〈n,然后对每个数据块m进行加密和解密变换。
(1)加密变换,对于待加密消息m,其对应的密文为c=E(m)=memod n;
(2)解密变换,m=D(c)=cdmod n。
注册码生成模块是一个独立于应用软件的模块,不随应用软件一起发布,软件发行商独立拥有,用于产生用户注册密码。使用非对称RSA算法对用户ID码进行加密获得注册码,攻击者即使得到了公钥,也无法推算得到私钥,不可能自行根据消息摘要计算得到注册码。保证了攻击者不能写出注册机程序。
3)注册模块
注册模块的主要功能是用户端在接收到软件发行商发回的注册码后自动完成注册并将其写入注册表,供以后每次运行软件时验证模块使用。
4)验证模块
注册码验证实际上就是验证签名的过程,判断用户是不是已注册为合法用户。验证模块主要完成在用户每次运行软件时,用软件开发商提供的公钥,也就是RSA算法的公钥还原出计算机的ID码,将还原得到的ID码与原始用户ID码进行比较和签名验证,只有一致的情况下软件才能正常运行,否则无法注册。
本文加密系统设计主要采用了数据加密技术和注册表操作技术,运用多重加密算法对用户信息进行保护。用户注册软件时,软件自动采集计算机的硬件信息(如硬盘序列号、网卡MAC地址、CPU ID等)作为信息源,经过特定算法得到扰乱后的ID码,发送给软件发行商,软件发行商利用RSA非对称加密算法生成注册码对用户授权,用户利用注册码进行认证注册。软件安装时将注册信息写入注册表,用于以后使用软件时检查注册表中的信息是否正确,若正确则编码器正常编码,否则编码器对视频进行不正常编码,终端解码得到的节目流将会非常不清晰,用户不能得到正常信息,这将迫使用户重新注册编码器软件。
为了验证有效性,将该加密系统的方案成功用于编码器软件进行测试。图4是采用加密算法获得的用户计算机的ID码,可以看出图中的码字为不规则的乱码。图5是采用非对称RSA加密算法获得的注册码,由此可知算法有效可行。
图4 用户计算机ID码
图5 用户获得注册码
通过测试分析,得出基于硬件信息的编码器软件加密方法具有以下优点:
1)与多数软件注册方式不同,本设计采用“一机一码”注册,保护了软件发行商的合法权益;
2)直接选取计算机硬件信息作为注册依据,不需要添加外置软盘、硬盘等设备;
3)在没有正确注册的情况下,允许编码器工作;
4)采用特别技术,攻击者很难找到产生注册码的规律,不会出现非法注册码;
5)纯软件实现,可实现批量处理,方便使用,价格低。
本文采用基于具有唯一性的多项硬件信息,用数字签名、散列、密钥交换等多个可靠的密码学算法,考虑了“一机一码”防止非法注册,合理选择了非对称算法来防止非法注册码的生成,对数字电视编码器软件进行加密保护。从测试结果可以看出,算法加密强度很高,破解强度也很高,很好地完成了编码器软件加密要求,可以较好地保护编码器软件发行商的合法权益。
[1]朱耀光.数字电视条件接收前端系统的研究与实现[D].武汉:武汉理工大学,2006.
[2]王晟宇.关于计算机软件保护方法的探讨[J].计算机安全,2008(10):82-85.
[3]江兵.一种软件加密的方案与设计[J].信息技术,2010(12):185-190.
[4]张兴红,甄彤,包晖.基于DES和MD5算法的安全注册系统[J].计算机与数字工程,2010,38(5):96-98.
[5]王印明,李阳.一种基于DES,RSA的随机加密算法[J].计算机技术与发展,2012,22(4):235-237.