APP下载

基于注册码的软件加密设计和实现

2018-02-25江志俭张燕平

电子技术与软件工程 2018年9期

江志俭 张燕平

摘要 随着信息技术的突飞猛进的发展和航空软件交付的增多,开发者为了维护自身软件的成果、技术、版权以及购买人的利益,必需对软件进行加密保护。本文针对传统基于序列号的软加密存在的序列号固定、加密强度低、软件供应商不易控制的缺点,提出了根据随机产生的序列号,设计非对称的加密算法,动态生成对应的注册码的方法,对交付的软件实现加密注册,实现一个终端,一个注册码,完成注册码验证的终端才能运行应用软件。经试验验证,基于该方法实现软件加密,操作简单,可靠性强,解密难度大,且不需要额外的成本,有效地防止软件被复用或盗用。

【关键词】注册码 软件加密 加密算法WINDOWS CE

1 引言

随着信息技术的突飞猛进发展,直升机航空电子系统的体系结构的改变,软件在直升机航空电子设备作用日趋明显,推动着直升机航电技术的发展。为了保障交付的软件产权和成果,和软件購买人利益,使软件不被随意拷贝复用或盗用,软件开发商采用某种加密方法对其软件产品进行保护,就非常有必要。

目前对软件保护方法就是对软件加密,加密的方法可分为软加密和硬加密两种,主流的硬加密方法是提供外带软件狗加密保护,该方法需要外带软件狗,遗失或故障均导致软件不可用。主流软加密提供唯一的序列号,序列号公开,则软件可随意使用。

本文以软件加密技术和算法为研究背景,对数据加密方案和算法做系统,全面分析,并提出一种基于注册码方法加密技术实现对交付的应用软件进行加密,序列号为根据时间信息采用加密算法生成6位随机数字,依据序列号,设计解密算法产生唯一的注册号,只有提供该注册号的设备可运行配置的应用软件。基于注册码的软件加密技术,成功应用于WINCE嵌入式系统PDA设备交付的应用软件中。

2 加密方案

当前,加密方案存在多种方式,主要可以归类为两种,一种为不依赖硬件的加密f软加密)方案和依赖硬件(硬加密)的加密方案。

2.1 软加密

软加密是不需要辅助硬件,直接在软件中设密码,一般才用序列号或许可证文件的授权方式,通过特定的软件算法,可以降低加密成本的加密方法,常见的软加密位为序列号加密方法,密码表加密方法。

序列号加密方案:为软件供应方提供购买者安装该软件使用的唯一正确的序列号,用户只要输入正确的序列号,就可以使用该软件。该方案如果序列号被盗,该软件可以随意拷贝复用,且软件能够正常运行,加密强度低,不易于供应商控制。

密码表加密方案:为应用程序运行时,提出问题,目前主流为提供特定长度数字的序列号,根据序列号,输入对应的密码来解锁相应的应用程序。只要密码输入正确,软件才能正确运行。该使用者为合法用户。该方案运行和使用简单,得到广泛的运用。每个设备在使用该应用程序时,必须先输入正确的注册密码,且每个设备注册码异同,易于供应商控制和防止应用软件被盗用或复用。

2.2 硬加密

硬加密是将应用程序的加密信息存储到某个特定的硬件存储区中或是硬件的电路中,然后座位软件的附加设备一起提供给软件购买人。在使用该软件时,必须插入该附属硬件,软件方可正常运行。软件运行时,检测该硬件存储区或电路中对应的密钥信息,如密钥不存在,软件运行异常或软件某些功能异常。常见的硬加密有软件狗,智能锁。

软件狗:软件狗是目前主流的一种加密工具,它是插入计算机并行口上可插入USB口的软硬件结合软件加密设备。该设备具有几十或几百字节的非易失性存储空间,供应商可将密钥信息存储在该区域,用于读写密钥信息。软件狗加密用户使用简易。

智能卡:为了防止密钥信息被取出或盗用,在软件狗基础上内部增加一个单片机,软件开发商将软件部分程序或算法写入卡中,使用户与外接设备之间实现无缝链接.和加密硬件有效结合,保证软件提供者利益。智能卡加密强度高,兼容性强,但成本高。

2.3 软加密和硬加密比较

硬加密:优点为加密强度高,加密性能好、加密方法灵活,缺点为无法方便用户实现试用版本和按需购买,硬件作为附属设备本身需要安装和维护成本,且丢失,软件不可正常使用,难以升级和管理。额外的硬件设备影响了客户用户体验。

软加密:优点为不需要加密锁硬件,也不需要安装驱动和客户端组件,实现软件电子化发行。易于管理和维护,有助于提高授权效率和改善用户体验。降低购买者的管理成本。

3 加密算法

软件加密的核心在于密钥,密钥生成核心在加密算法,常用的加密算法有置换加密、对称加密算法和非对称加密算法。目前主流为后两种,对称加密算法是采用相同的密钥进行加密和解密,代表算法有DES算法,非对称加密算法使用两种不同的密钥,公钥和私钥,其中公钥公开,用于加密,私钥由用户保存,用于解密。该类算法代表有RSA算法。

3.1 对称加密算法DES

DES算法为密码体系的对称密码体制,又被称为数据加密标准,是IBM公司由1972年研制的对称加密算法,自推出以来,一直为国际上商用保密通讯和计算机通信最常用的加密算法。DES算法为对称加密算法,加密密钥和解密密钥一致。明文按64位进行分组,密钥长64位,密钥事实为56位参与DES计算,分组后的明文组合56位密钥按位替代后交换的方法形成密文组的加密方法。算法特点为分组比较短,密钥太短、密码生命周期短,运算速度较慢。

3.2 非对称加密算法RSA

RSA公钥加密算法是1977年由美国学者提出的公钥密码体制,其基础为是数论中的欧拉定理,。公钥加密体制的特点采用不同的加密密钥和解密密钥,通讯双方不需要事先传递密钥便可以建立通讯链接。保密性好,计算量大,不适合大量信息的加密。RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前绝大多数密码的攻击,已被ISO推荐为数据加密标准。

4 注册码加密技术

本文采用的注册码加密技术是密码表软加密技术的改进。注册码为自动生成6位随机数字,根据该6位数字,通过设计的非对称加密算法产生唯一的注册码,用户通过输入正确的6位注册码,软件方可正确使用,软件验证注册码合法性的过程,实际上就是验证序列号和注册码的换算关系是否符合加密算法,由于该过程在手执PDA终端是进行的,必须保证该过程关键性数据和加密算法的可靠性,不被轻易解密,注册码技术的关键在于加密算法的换算过程。算法公式可自行设计,本文的基于注册码的加密方法设计架构图如图1,应用软件启动流程图如图2。

4.1 注册表创建

本文采用Embedded Visual C++开发工具,采用MFC的工程对话框、文本框、按钮等控件,创建注册表程序为:LPCTSTR keyName=L”MySofiware\\RegTest”;

IResult=RegCreateKeyEx(HKEY_CURRENT_USER,keyName,O,L””,O,O,NULL,&hOpenKey,&dwOpenStyle);

AS SERT (IResult==ERROR_SUCCESS);

创建注册表的目的为在注册表中存储密钥,创建注册表的过程为先创建键名,在键值中存储密钥,应用程序启动时,取出该数据进行验证或处理,满足条件时运行应用程序,否则终止运行,保护应用程序的合法性。

注册表常用的类为:RegCreateKeyEx:创建关键字,如果关键字己被创建,则执行打开操作。

RegOpenKey: 用于打开某键值。RegSetValueEx:打开某键后,设定某键的值。

RegQueryValueEx:查询一个存在的值,如果匹配,返回成功,否则失败。

4.2 注册码写入注册表

解密成功,将特定密码数据写入到对应注册表中,将程序写入注册表的核心代码为:

LPCTSTR dwKeyName=L”密码”;

IRe sult=RegS etValueEx(hOpenKey,dwKeyName,O,REG_SZ,(BYTE*)& dwKeyValue,sizeof(dwKeyValue》;ASSERT(lResult==ERRORSUCCESS);

固定密码写入注册表之后,PDA设备加密的应用程序启动时,匹配特定的密码,如正确,应用程序正常运行,否则不可用。

4.3 设定序列号和注册号

密钥=F逆(序列号),将序列号加密生成密钥,应考虑F算法复杂度和可靠性的设计.使解密者不容易分析F逆而解密加密算法,设计为非对称算法,采用一对用于加密的序列号和用于解密的注册号,从序列号难以推算出注册号,加密强度高,不易解密。

序列号:根据时间数据,采用加密算法Serial Number= cal(T),生成6位数字序列号算法图3。

注册号:根据序列号,采用解密算法生成Registration code= caI(Serial Number),算法为图4。

4.4 WinCE下Embedded Visual C++实现和验证

本文采用基于嵌入式平台WinCE操作系统,以Embedded Visual C++为编译开发工具,基于MFC框架实现,辅助与对话框,按钮,文本框实现,运行在PDA设备的界面如图5。

基于注册码的加密技术,成功运用于WINCE嵌入式平台PDA设备的应用软件的加密,己完成两型机外场验证,并交付多套PDA设备,每台PDA设备必须通过序列号,申请到注册号,完成注册,方可正常运行该应用软件,PDA设备维修返厂,再注册使用。

5 结束语

对比传统的软加密序列号技术,软件供应方提供该软件使用的唯一正确的序列号,如果序列号被盗,该软件可以随意拷贝复用,加密强度低,本文基于注册码的加密技术,注册码是依据给定的随机的序列号,动态生成的,且不唯一,因此可靠性更强,解密难度更高,保证了应用软件使用的合法性,且易于供应商控制。

基于注册码的软件加密技术,加密软件本身啟动时无需注册,设备第一次运行应用程序时注册一次,正确后写入注册表,启动时再匹配固定的密码,整个过程操作简易,可靠性强,维护软件提供人的成果,同时也是最经济可行的方案,容易实现。

基于注册码的加密技术,成功运用于WINCE嵌入式平台,其核心在于算法计算随机序列号和由序列号生成注册码的过程,但过程和算法本身是跨平台的、可移植的,是一种通用的、可行的软件加密技术,具有很强的工程实用价值。

参考文献

[l]Douglas Boling,Microft Windows CE程序设计[M].北京大学出版社,1998.

[2]顾刚.加密与解密[M].北京:电子工业出版社,2003.

[3]李树彬,一种实用软件保护方案和实现[J].现代计算机,2007.

[4]侯爱民,利用加密狗实现软件版权的保护[J].东莞理工学院学报,2005.

[5]徐海风,软件加密方法及技术[J].山西冶金,2007 (01).