CN101236590A - 一种基于门限密码体制的软件分割保护的实现方法 - Google Patents

一种基于门限密码体制的软件分割保护的实现方法 Download PDF

Info

Publication number
CN101236590A
CN101236590A CNA2008101015314A CN200810101531A CN101236590A CN 101236590 A CN101236590 A CN 101236590A CN A2008101015314 A CNA2008101015314 A CN A2008101015314A CN 200810101531 A CN200810101531 A CN 200810101531A CN 101236590 A CN101236590 A CN 101236590A
Authority
CN
China
Prior art keywords
software
personnel
file
encryption
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008101015314A
Other languages
English (en)
Other versions
CN101236590B (zh
Inventor
徐国爱
张淼
王茹
杨义先
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN2008101015314A priority Critical patent/CN101236590B/zh
Publication of CN101236590A publication Critical patent/CN101236590A/zh
Application granted granted Critical
Publication of CN101236590B publication Critical patent/CN101236590B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

一种基于门限密码体制的软件分割保护的实现方法,是将软件的应用程序分割成两部分,并将分割出来的应用程序的数据进行加密后的密文和参与加密人员的密钥,分别存入多个电子钥匙里,而在原来的软件中只保留头文件和节表,并复制该部分软件用作备份文件;再将存有密文和每个参与加密人员私钥的多个电子钥匙分发给每个参与加密人员,每人负责保管存有本人私钥和密文的电子钥匙;当参与解密人员聚集在一起的人数超过门限值,才能提取电子钥匙中的不同密钥,对电子钥匙中的密文进行解密,将密文恢复为原来的二进制数据,再将其与该软件中的其它数据合并在一起运行;并在该软件运行完成后,再用备份文件覆盖刚才运行的完整软件,实现保护该软件的目的。

Description

一种基于门限密码体制的软件分割保护的实现方法
技术领域
本发明涉及一种防止窃取或盗版计算机软件的方法,确切地说,涉及一种基于门限密码体制对软件进行分割保护的实现方法,属于信息安全中的软件安全技术领域。
背景技术
目前,比较广泛使用的软件保护技术主要有“软加密”和“硬加密”两大类,这两大类中又各自分别包括一些不同的软件保护技术。其中软加密是指不依靠特殊硬件来对软件实现加密保护。软加密方面的现有技术主要有:序列号法、注册文件法、加壳法等。
序列号法是一种以复杂的数学算法为核心的软件加密技术,它的应用最广泛。该方法的具体步骤是:开发者通过用户信息计算出序列号,用户要使用该序列号,必需按照必要的步骤在软件中输入注册信息和序列号,再经过该软件对其合法性进行验证后,该软件就会取消其本身设置的各种限制,供用户使用。
目前,国内外很多软件的保护方式都比较简单,如利用系统的一些特征码(如CUP的IP号、网卡MAC地址、硬盘序列号等)生成注册码,并以此验证用户的合法性。虽然这些注册码都具有唯一性,但是,比较和跳转指令非常明显,破解者用调试软件很容易跟踪到比较和跳转的位置,然后强行将跳转地址改为继续执行的地址,就能够实施破解。即便采用相当复杂的生成和验证注册码机制,如果可执行程序能够被任意修改,破解者还是可通过上述方法破解软件。
注册文件法(KeyFile)是一种利用文件注册软件的保护方式。FileKey的内容是被加密或未加密的用户名、注册码等数据,当用户付费注册后,会收到注册文件,然后只要将该注册文件放入指定的目录,就可以让该软件成为正式版本。每次启动时,软件都从该文件中读取数据,再利用某种算法进行处理,并根据处理结果判断是否为正确的注册文件。因此,其安全性明显有问题:注册过程中或在传递注册文件时,注册文件很容易被截获,从而文件被破解。
加壳法是在被加密程序上加上一个“壳”,然后用这个壳防止软件被复制,还可通过这个壳,对付跟踪和反编译等。这个“壳”是一段专门负责保护软件不被非法修改或反编译的程序。加壳实施加密的方法比较简便,所以软件开发者在开发过程中,不需过多考虑如何加密的问题。然而,尽管加壳软件设计得非常复杂,现在仍然有了能够将许多著名的加壳软件进行成功破解的方法。
硬加密是指利用硬件和软件相互结合来对软件实现加密,在执行已经采用硬加密的软件时,需要先和相应的硬件交换数据;若没有相应的硬件,加密后的软件将无法执行。它的典型应用包括软盘硬加密方式、加密狗和加密卡。
其中软盘硬加密方式通常是在软盘上制造物理的坏扇区(在软盘上作硬标记-指纹),同时在被保护的软件中配上一段识别硬标记的程序。该被保护的软件在运行时,就会去寻找这个硬标记。若坏扇区存在,则必然产生CRC错误,表明该盘合法;否则,认为该盘为复制品,拒绝运行该被保护的软件。
加密锁有两种:加密狗和软件狗。加密狗是一个安装在接口上的硬件,并带有驱动软件和工具包。它是利用相互结合的、复杂的软硬件技术来防止盗版,因此加密成本比较高,目前只有价格比较昂贵的软件才使用加密狗来保护。
软件狗的发展已经到了第四代。第一代是存储型的加密锁,最早的加密锁内部只有存储体,只有厂商才能对其进行读、写。第二代是不公开算法的加密锁,在硬件内部增加了单片机。厂商主要利用算法功能进行加密。第三代加密锁被称为“可编程”加密锁,其设计初衷是希望用户能够将软件中的重要代码或模块移植到加密保护设备中运行,使软件与加密锁实现真正无缝链接。第四代产品是在第三代软件狗基础上增加一个单片机芯片(如PI116C5X),并在该芯片中存储用户设定的算法程序,利用该算法程序对数据进行加密变换,以对抗逻辑分析仪,增强系统的安全性。
加密保护卡是直接利用主板上的插卡与被加密软件相结合使用的,其原理类似于加密狗。但是,由于它是采用相当部分的软件直接与硬件结合来加密,使得破解难度大幅度提升,从而明显提高其安全性。但是,成本的增加和灵活性的降低,使得它在普及应用率上付出了代价。
综上所述,目前使用的软件保护技术大都存在一定的缺陷。例如,加密方式单一(都只是通过软件或硬件的方式进行加密)、通用性差、性价比低(许多硬件加密的产品成本较高,效果却不理想)。通常只要采用动态跟踪内存、对物理介质进行分析复制、或者进行功率分析(包括简单功率分析和微分功率分析)等方法,都能够对目前这些采用现有技术进行保护的软件实现破解。
目前,软件保护中的软加密的最大优势是加密成本低,但是,各种软加密方法都是对正常软件人为设置运行障碍,不但影响软件性能,甚至会给软件引入许多未知的错误。而且没有任何硬件支持的纯软件加密,很容易被人跟踪执行过程或反编译,无法避免被破解的命运。虽然硬加密相对于软加密有明显的优势,因为对于盗版者而言,尽管硬加密的破解比较难,复制硬件的成本也比较高,故其安全性相对较高。但是同样存在不足之处:它是给本可正常运行的程序加设人为阻碍,一旦绕过该障碍,盗版者就可轻易得到整个可运行的程序。
众所周知,计算机软件的开发是一项技术复杂、投入巨大、耗时漫长的高强度脑力劳动。然而,软件的复制却极其简单、容易,造成软件盗版现象日益严重,严重侵犯了软件开发商的经济利益。更为严重的是,大量盗版软件的销售和使用使得软件开发者的巨额投资难以回收,无力再去研发新的软件,从而使得软件的多样性、创造性和软件的质量都受到严重影响,并对计算机软件的产业发展造成非常不利的影响。
发明内容
有鉴于此,本发明的目的是提供一种基于门限密码体制的软件分割保护的实现方法,该方法是将软件的应用程序进行分割后,将该软件的关键代码提取出来进行加密,再将密文和参与加密人员的密钥存放在多个电子钥匙里分别保管,只有超过密码门限值设定的人数都聚齐在一起,才能完整恢复电子钥匙中的数据和程序,使存储在电子钥匙中的数据与该软件中的其它代码结合起来运行。本发明方法能够比较安全、可靠地防止软件盗版,而且加密和解密的工作效率高,还能够防止PE型病毒的侵入软件,更好地保护软件。
为了达到上述目的,本发明提供了一种基于门限密码体制的软件分割保护的实现方法,其特征在于:利用软件分割技术,将软件的应用程序分割成两部分,并将分割出来的应用程序的数据进行加密后的密文和参与加密人员的密钥,分别存入多个电子钥匙里,而在原来的软件中只保留头文件和节表,并复制该部分软件用作备份文件;再将存储有密文和参与加密人员的密钥的多个电子钥匙分别发给每个参与加密人员;所述密钥是每个参与加密人员的私钥,每人只负责保管存有本人私钥和密文的电子钥匙;只有当参与解密人员聚集在一起的总人数超过设定的门限数值,才能提取电子钥匙中的不同密钥,对电子钥匙中的密文进行解密,将该密文恢复为原来的二进制数据,再将其与该软件中的其它数据合并在一起运行;并在该软件运行完成后,再用所述备份文件覆盖刚才运行的完整软件,实现保护该软件的目的。
本发明与目前有关软件保护的其他技术进行比较,其技术上的创新特点是:
(一)分割软件的PE文件:本发明是对存储在电脑中PE格式文件的软件进行分割,将该软件的重要信息数据进行加密,并存储于电子钥匙。用户必须拥有电子钥匙才有资格和可能运行该软件,从而极大地提高了软件的安全性。
(二)利用可靠的门限密码体制进行加密和解密:本发明分割PE文件后,采用一种可验证的(n,t)门限秘密共享方法对分割后的数据进行加密存储。由于本发明不需要进行密钥的分配,且在分发电子钥匙过程中,每人获得自己的私钥,再临时设定一个参与解密人员作为秘密计算者,由他计算少量的公开信息,也不需要向其它参与解密人员传递任何信息,因此,能够大大提高加密和解密的工作效率。而且,本发明方法的安全性是立足于离散对数的难解性上,安全性能非常高。
(三)清除PE类型病毒:PE型病毒通常是以修改PE结构来感染、破坏文件的,主要有下述两种方式:将PE型病毒代码插入PE文件中的未用区域,且不增加文件长度,如CIH病毒;在原文件的后面建立新的节,附加病毒代码而增加文件长度,如“Win32 Xorela”病毒。本发明方法在对PE文件进行分割时,自动将PE头文件、节表结构与第一节之间的空白区域删除,这样就能够自动地防止部分PE型病毒的侵入,进而提高文件的安全性能。
附图说明
图1是采取保护措施的软件内部结构组成示意图。
图2是PE文件格式结构示意图。
图3是本发明基于门限密码体制的软件分割保护方法的实现方法操作步骤流程图。
图4是本发明方法的一个实施例示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
参见图1,先介绍目前采用保护措施的软件系统的结构,通常由三个部分组成:其中核心部分是以文件形式存在的、完成有效功能的软件代码1,这部分是是用户购买该软件的价值所在。第二部分是软件标识2,是表明其合法性的唯一标志,用于向软件认证机关和软件公司证实其用户的合法性,阻止非法拷贝。第三部分是认证代码3,即藉由该认证代码标明该软件的有效性和正确性,网络服务器也能够通过认证代码确认软件标识的有效性和正确性。其中第二、三两个部分对用户没有直接的使用价值,而是软件公司保护自身利益的一种技术措施。现在比较流行的软件版权保护软件都是基于第二、三部分做的。图1展示了该采用保护措施的软件系统的认证过程示意。
本发明的构思也是建筑在上述软件架构的基础上,它是利用软件分割技术,将软件中的关键代码提取出来,使之与该软件其它部分隔离开来,再对分割出来的软件应用程序的数据采用基于门限密码体制的方法进行加密,将密文存储于多个电子钥匙,达到保护软件的目的。
目前,人们使用最广泛的应用软件大部分都是可移植的执行体PE(PortableExecutable)格式的,包括:Windows的可执行程序(除了Windows9X特有的虚拟设备驱动程序VxD和16位的动态链接库Dll以外)都采用PE文件格式,驱动程序(kernel mode drivers)都是基于PE格式的文件。因为PE格式已经成为Windows下可执行文件的标准。所以,本发明对软件的应用程序进行分割,实际上就是针对PE格式文件的应用程序进行分割。
参见图2,介绍PE格式文件的结构。从该图可见,PE的头文件、节表是相连的(节表是一个结构体数组,每个结构体包含一个节的信息:该节映射到内存中的起始地址和长度、该节的属性及其在PE文件中的偏移和长度的相关信息),PE文件的主体是节,PE文件的程序代码、数据和资源信息都被组织存储在多个节中。因此,本发明分割PE文件的位置就是在节表与第一个节之间,分割后的PE文件头和节表仍然存储在原来软件中,而且要对该部分软件拷贝一份备份文件。再将剩余的、PE文件的有价值部分的代码数据进行加密后,存入多个电子钥匙中,这样就完成了对应用软件的分割。
本发明使用的门限密码体制是一种对数据文件进行加密和解密的方法,在该体制中,对密文的解密操作是由参与加密的多个人员共同执行的,即只有当参与加密的人员聚集在一起的人数超过该门限密码体制所设定的门限值时,才能将该密文成功解密。例如,在一个(n,t)门限密码体制中,解密密文的能力由n个参与加密人员P1、P2、...Pn按如下方式分享:对任意给定的密文,参与加密人员中的t个或更多的人员聚集一起,可以协作产生一合法的解密方法。但是,聚集一起的人员少于门限值t时,就不可能对密文解密。而电子钥匙是具有保密功能的移动式存储装置。
门限密码的加密方法的思想很早就提出来了,例如1979年shamir利用有限域上的lagrange插值公式构造了一个门限加密方案,目前已经使用于许多技术方面的门限密码方案。但是,大多数方案中,参与解密者的秘密份额都是由秘密分发者选取,并负责将其安全地传送给各位参与者。本发明方法,各位参与加密人员的密钥(秘密份额)是由所有参与加密人员动态协商确定,具有较高的随机性和安全性;且在分发密钥过程中,分发者不需要向各个参与加密人员传递任何秘密信息,只需计算一些公开信息。解密时,只需不少于门限值t个原来参与加密人员聚集一起,就可以对密文解密。
因此,本发明是一种基于门限密码体制的软件分割保护的实现方法:利用软件分割技术,将软件的应用程序分割成两部分,并将分割出来的应用程序的数据进行加密后的密文和参与加密人员的密钥,分别存入多个电子钥匙里,而在原来的软件中只保留头文件和节表,并复制该部分软件用作备份文件;再将存储有密文和参与加密人员的密钥的多个电子钥匙分别发给每个参与加密人员;所述密钥是每个参与加密人员的私钥,每人只负责保管存有本人私钥和密文的电子钥匙;只有当参与解密人员聚集在一起的总人数超过设定的门限数值,才能提取电子钥匙中的不同密钥,对电子钥匙中的密文进行解密,将该密文恢复为原来的二进制数据,再将其与该软件中的其它数据合并在一起运行;并在该软件运行完成后,再用所述备份文件覆盖刚才运行的完整软件,实现保护该软件的目的。
参见图3,具体介绍本发明方法的各个操作步骤:
步骤(1)、分割软件,并对分割后存储于电脑的软件进行拷贝,制成备份文件:根据软件在内存中的存储结构,找到软件的应用程序的分割位置,将该应用程序分割成两部分,在原来的软件中只保留PE头文件和节表,并对该部分软件进行复制,用作备份文件,再对该备份文件重新命名后,将其存储于该被分割软件的原路径下。该步骤又可以细分为下列操作内容:
(11)因PE头文件Header和节表在文件中的位置决定于DOS头结构中的相对偏移地址字段e_lfanew,故先寻找存储PE头文件Header在文件中的偏移地址字段e_lfanew,用于确定需要分割的PE数据在内存中的地址;分别读取软件路径和PE头文件结构,得到节表个数;找到分割软件的节表与第一个节之间的地址;
(12)将N个电子钥匙同时插入计算机的USB接口,N是不小于2的自然数,表示参与加密人员的数量;
(13)在配置文件“参数.ini”中写入软件路径和两个加密参数N和t,其中,自然数t是解密时要求原来参与加密人员聚集在一起的人数门限值,即解密时所需的最少人数;再将配置文件“参数.ini”存入电子钥匙中;
(14)对分割后仍然存储于电脑中的、包括PE头文件和节表的部分软件进行拷贝,制成备份文件,并对该备份文件重新命名,存储于该被分割软件的原路径下。
步骤(2)、计算参与加密人员的私钥、公钥和群公钥,并对分割出来的PE数据进行加密:利用门限密码体制,分别计算每个参与加密人员的私钥、公钥和群公钥,再利用该公钥和群公钥对分割出来的包括程序、数据和资源信息的PE数据进行加密处理。该步骤又可以细分为下列操作内容:
(21)设置用于数据加密的基本参数:设n个参与加密的人数Mi共同组成集合M={M1,M2,...,Mn},再分别选用n个互不相同的自然数Di作为个人身份值,用于分别代表每个参与加密人员Mi的公开身份,式中,下标i是自然数,表示参与加密人员的序号,其取值范围是[1,n];然后,参与加密人员一起协商选定三个加密参数:大素数p、q和元素g,其中,p和q两数的值都应超过512bit,且q是p-1的一个素因子,元素g在素域Zp上的阶为q;
(22)每个加密人员分别计算各自的个人安全参数di:每个参与加密人员分别在自然数区间[1,q-1]中随机选取一个整数di,用作其个人安全参数di,并保护该个人安全参数di的数值,不得向外人泄露;
(23)每个参与加密人员分别计算各自的个人公开验证多项式fi(x)相对于其它成员的个人身份值的值fi(Dj),并向其余人员公布该fi(Dj)数值:随机构造一个(t-1)次多项式fi(x)=fi,0+fi,1x+...+fi,t-1xt-1,其中系数fi,0,fi,1,...,fi,t-1为素域Zq中的元素,并满足fi(0)=fi,0=di且fi,t-1≠0;计算fi(Dj);其中的自然数i和j的取值范围都是[1,n],且他们分别是用来表示不同的参与加密人员的序号,即i和j不能同时取相同的值;
(24)分别计算每个参与加密人员的私钥Si、公钥Ki和群公钥G:每个参与加密人员Mi根据其接收到的其他人员Mj(j≠i)的个人验证多项式fj(Di),分别计算下述三个密钥:本人的私钥 S i = Σ j = 1 n f j ( D i ) mod q , 本人的公钥 K i = g S i mod p , 群公钥 G = Π i = 1 n g f i , 0 mod p ;
(25)将每个参与加密人员的本人公钥和群公钥均写入电子钥匙中的配置文件“参数.txt”中;
(26)对分割出来的PE数据S进行加密:从自然数区间[1,q-1]中随机选取一个整数w用作加密安全参数,并保密该w数值;每个参与加密人员从电子钥匙中的配置文件“参数.txt”中读取本人公钥和群公钥,再分别计算下述三个数值:B=gw mod p,C=SGw mod p, R i = g K i w mod p , 式中,自然数i是参与加密人员的序号,其取值范围是[1,n];然后,将上述B,C,Ri组成对所述分割的PE数据进行加密后的字符串密文E=(B,C,Ri)。
步骤(3)、将密文和密钥分别存储于多个电子钥匙,并交由多人保管:在每个电子钥匙中分别存储有:对PE数据加密后的密文和其中一位参与加密人员的私钥,再分给多人保管,每个参与加密人员只负责保管存储有本人私钥和密文的电子钥匙。
步骤(4)、对密文进行解密:将不少于设定门限值数量的多个电子钥匙插入计算机接口,从电子钥匙中提取密文、私钥和相关信息,并对参与解密人员的每个人的个人验证码进行确认后,对电子钥匙中的密文进行解密。该步骤又可以细分为下列操作内容:
(41)将超过门限值的多个电子钥匙插入计算机USB接口,读取电子钥匙中存储的信息:先从电子钥匙中存储的配置文件“参数.ini”中获取原来设置的被保护的软件路径和解密人数的门限值t,再判断该软件是否存在,且软件是否为PE文件格式;若存在PE头,表明该软件存在,且为PE文件格式,则读取该PE头文件;否则,结束流程;然后根据读取到的PE文件是否只包含PE头文件和节表来判断该软件是否已被分割;最后,从电子钥匙中分别提取参与解密人员每个人的私钥和密文;
(42)原来参与加密人员集合M中的不少于门限值t的人员聚集在一起开始进行解密操作:这些解密人员分别利用本人电子钥匙中的私钥Si计算个人验证码Ei E i = B S i mod p , 再将该个人验证码的计算结果提交给指定的秘密计算者,该秘密计算者是上述所有参与解密人员中任选的一位;
(43)秘密计算者对t位解密人员的个人验证码Ei进行验证,并分别计算每个解密人员的解密值ei:秘密计算者收到解密人员的个人验证码后,通过公式 g E i = R i mod p 分别验证每人的个人验证码是否有效,如果每个等式都成立,则他们提交的信息有效;然后,秘密计算者再分别计算每个解密人员的解密值: e i = E i a i , 式中,指数 a i = Π j = 1 , j ≠ i t ( D j / ( D j - D i ) ) , 其中自然数i和j的取值范围都为[1,t],分别用来表示不同的参与解密人员的序号,即i和j不能同时取相同的值;如果任意一个等式不成立,则解密人员提交的信息无效,流程结束;
(44)秘密计算者对密文E=(B,C,Ri)进行解密,得到分割后的原始PE数据:秘密计算者根据解密值ei计算得到被分割文件的原始PE数据S:
S = C / Π i = 1 t e i mod p .
步骤(5)、恢复并运行原来的软件,并在该软件运行后,用备份文件覆盖该恢复完整的软件:将解密后的PE数据与原来的程序文件合并,恢复并运行该PE格式的软件;并在该软件完成运行任务后,使用备份文件覆盖刚才运行的、恢复完整的原有软件,防止该软件被盗版,使得该软件更加安全。该步骤又可以细分为下列操作内容:
(51)恢复原来软件的完整性:将电子钥匙中已解密的PE数据S写入到电脑中存储的、仅包括头文件和节表的原来部分软件数据的底部,使该被解密的PE数据成功地添加到电脑中已被分割的PE文件中,完整恢复原来的软件;
(52)运行该恢复完整的软件,然后用备份文件覆盖该软件:运行该已经恢复完整的软件,并在该软件运行完毕后,将所述备份文件的文件名修改为该软件的原有文件名,使之成功覆盖刚才运行的完整软件,防止该软件被盗版,使得软件更加安全。
本发明方法已经进行了实施试验,试验的结果是成功的,实现了发明目的。下面参见图4,介绍本发明方法的一个实施例(图中左侧是加密情况,右侧是解密情况):该软件的门限密码体制的加密参数是(n=5,t=3),因此存储该加密软件的电子钥匙有5个,该加密软件的每个使用者得到其中一个电子钥匙,并将将分割后的该软件部分存入其个人电脑。使用该软件时,必须在其电脑中至少插入其中任意三个电子钥匙,再采用本发明方法将电子钥匙中的密文恢复为原来的二进制数据,再将其添加到原来被分割的PE文件中的位置,即恢复该软件后,就可以正式运行该软件了。而在使用完毕后,需要及时用备份文件覆盖刚才运行的完整软件,保护该软件,防止盗版。

Claims (9)

1、一种基于门限密码体制的软件分割保护的实现方法,其特征在于:利用软件分割技术,将软件的应用程序分割成两部分,并将分割出来的应用程序的数据进行加密后的密文和参与加密人员的密钥,分别存入多个电子钥匙里,而在原来的软件中只保留头文件和节表,并复制该部分软件用作备份文件;再将存储有密文和参与加密人员的密钥的多个电子钥匙分别发给每个参与加密人员;所述密钥是每个参与加密人员的私钥,每人只负责保管存有本人私钥和密文的电子钥匙;只有当参与解密人员聚集在一起的总人数超过设定的门限数值,才能提取电子钥匙中的不同密钥,对电子钥匙中的密文进行解密,将该密文恢复为原来的二进制数据,再将其与该软件中的其它数据合并在一起运行;并在该软件运行完成后,再用所述备份文件覆盖刚才运行的完整软件,实现保护该软件的目的。
2、根据权利要求1所述的软件分割保护的实现方法,其特征在于:所述门限密码体制是一种对数据文件进行加密和解密的方法,在该体制中,对密文的解密操作是由参与加密的多个人员共同执行的,即只有当参与加密的人员聚集在一起的人数超过该门限密码体制所设定的门限值时,才能将该密文成功解密。
3、根据权利要求1所述的软件分割保护的实现方法,其特征在于:所述电子钥匙是具有保密功能的移动式存储装置。
4、根据权利要求1所述的软件分割保护的实现方法,其特征在于:所述对软件的应用程序进行分割是对可移植的执行体PE格式文件的应用程序进行分割,所述PE格式文件已经作为Windows操作系统下可执行文件的标准;在PE格式文件的结构组成中,PE的头文件与节表相连,节表是一个结构体数组,每个结构体包含一个节的该节映射到内存中的起始地址和长度、该节的属性及其在PE文件中的偏移和长度的相关信息;节是PE文件的主体,PE文件的程序代码、数据和资源信息都被组织存储在多个节中;PE文件的分割位置是在节表与第一个节之间。
5、根据权利要求1所述的软件分割保护的实现方法,其特征在于:所述方法包括下列操作步骤:
(1)分割软件,并对分割后存储于电脑的软件进行拷贝,制成备份文件:根据软件在内存中的存储结构,找到软件的应用程序的分割位置,将该应用程序分割成两部分,在原来的软件中只保留PE头文件和节表,并对该部分软件进行复制,用作备份文件,再对该备份文件重新命名后,将其存储于该被分割软件的原路径下;
(2)计算参与加密人员的私钥、公钥和群公钥,并对分割出来的PE数据进行加密:利用门限密码体制,分别计算每个参与加密人员的私钥、公钥和群公钥,再利用该公钥和群公钥对分割出来的包括程序、数据和资源信息的PE数据进行加密处理;
(3)将密文和密钥分别存储于多个电子钥匙,并交由多人保管:在每个电子钥匙中分别存储有:对PE数据加密后的密文和其中一位参与加密人员的私钥,再分给多人保管,每个参与加密人员只负责保管存储有本人私钥和密文的电子钥匙;
(4)对密文进行解密:将不少于设定门限值数量的多个电子钥匙插入计算机接口,从电子钥匙中提取密文、私钥和相关信息,并对参与解密人员的每个人的个人验证码进行确认后,对电子钥匙中的密文进行解密;
(5)恢复并运行原来的软件,并在该软件运行后,用备份文件覆盖该恢复完整的软件:将解密后的PE数据与原来的程序文件合并,恢复并运行该PE格式的软件;并在该软件完成运行任务后,使用备份文件覆盖刚才运行的、恢复完整的原有软件,防止该软件被盗版,使得该软件更加安全。
6、根据权利要求5所述的软件分割保护的实现方法,其特征在于:所述步骤(1)进一步包括下列操作内容:
(11)因PE头文件Header和节表在文件中的位置决定于DOS头结构中的相对偏移地址字段e_lfanew,故先寻找存储PE头文件Header在文件中的偏移地址字段e_lfanew,用于确定需要分割的PE数据在内存中的地址;分别读取软件路径和PE头文件结构,得到节表个数;找到分割软件的节表与第一个节之间的地址;
(12)将n个电子钥匙同时插入计算机的USB接口,n是不小于2的自然数,表示参与加密人员的数量;
(13)在配置文件“参数.ini”中写入软件路径和两个加密参数n和t,其中,自然数t是解密时要求原来参与加密人员聚集在一起的人数门限值,即解密时所需的最少人数;再将配置文件“参数.ini”存入电子钥匙中;
(14)对分割后仍然存储于电脑中的、包括PE头文件和节表的部分软件进行拷贝,制成备份文件,并对该备份文件重新命名,存储于该被分割软件的原路径下。
7、根据权利要求5所述的软件分割保护的实现方法,其特征在于:所述步骤(2)进一步包括下列操作内容:
(21)设置用于数据加密的基本参数:设n个参与加密的人数Mi共同组成集合M={M1,M2,...,Mn},再分别选用n个互不相同的自然数Di作为个人身份值,用于分别代表每个参与加密人员Mi的公开身份,式中,下标i是自然数,表示参与加密人员的序号,其取值范围是[1,n];然后,参与加密人员一起协商选定三个加密参数:大素数p、q和元素g,其中,p和q两数的值都应超过512bit,且q是p-1的一个素因子,元素g在素域Zp上的阶为q;
(22)每个加密人员分别计算各自的个人安全参数di:每个参与加密人员分别在自然数区间[1,q-1]中随机选取一个整数di,用作其个人安全参数di,并保护该个人安全参数di的数值,不得向外人泄露;
(23)每个参与加密人员分别计算各自的个人公开验证多项式fi(x)相对于其它成员的个人身份值的值fi(Dj),并向其余人员公布该fi(Dj)数值:随机构造一个(t-1)次多项式fi(x)=fi,0+fi,1x+...+fi,t-1xt-1,其中系数fi,0,fi,1,...,fi,t-1为素域Zq中的元素,并满足fi(0)=fi,0=di且fi,t-1≠0;计算fi(Dj);其中的自然数i和j的取值范围都是[1,n],且他们分别是用来表示不同的参与加密人员的序号,即i和j不能同时取相同的值;
(24)分别计算每个参与加密人员的私钥Si、公钥Ki和群公钥G:每个参与加密人员Mi根据其接收到的其他人员Mj(j≠i)的个人验证多项式fj(Di),分别计算下述三个密钥:本人的私钥 S i = Σ j = 1 n f i ( D i ) mod q , 本人的公钥 K i = g S i mod p , 群公钥 G = Π i = 1 n g f i , 0 mod p ;
(25)将每个参与加密人员的本人公钥和群公钥均写入电子钥匙中的配置文件“参数.txt”中;
(26)对分割出来的PE数据S进行加密:从自然数区间[1,q-1]中随机选取一个整数w用作加密安全参数,并保密该w数值;每个参与加密人员从电子钥匙中的配置文件“参数.txt”中读取本人公钥和群公钥,再分别计算下述三个数值:B=gw mod p,C=SGw mod p, R i = g K i w mod p , 式中,自然数i是参与加密人员的序号,其取值范围是[1,n];然后,将上述B,C,Ri组成对所述分割的PE数据进行加密后的字符串密文E=(B,C,Ri)。
8、根据权利要求5所述的软件分割保护的实现方法,其特征在于:所述步骤(4)进一步包括下列操作内容:
(41)将超过门限值的多个电子钥匙插入计算机USB接口,读取电子钥匙中存储的信息:先从电子钥匙中存储的配置文件“参数.ini”中获取原来设置的被保护的软件路径和解密人数的门限值t,再判断该软件是否存在,且软件是否为PE文件格式;若存在PE头,表明该软件存在,且为PE文件格式,则读取该PE头文件;否则,结束流程;然后根据读取到的PE文件是否只包含PE头文件和节表来判断该软件是否已被分割;最后,从电子钥匙中分别提取参与解密人员每个人的私钥和密文;
(42)原来参与加密人员集合M中的不少于门限值t的人员聚集在一起开始进行解密操作:这些解密人员分别利用本人电子钥匙中的私钥Si计算个人验证码Ei E i = B S i mod p , 再将该个人验证码的计算结果提交给指定的秘密计算者,该秘密计算者是上述所有参与解密人员中任选的一位;
(43)秘密计算者对t位解密人员的个人验证码Ei进行验证,并分别计算每个解密人员的解密值ei:秘密计算者收到解密人员的个人验证码后,通过公式 g E i = R i mod p 分别验证每人的个人验证码是否有效,如果每个等式都成立,则他们提交的信息有效;然后,秘密计算者再分别计算每个解密人员的解密值: e i = E i a i , 式中,指数 a i = Π j = 1 , j ≠ i t ( D j / ( D j - D i ) ) , 其中自然数i和j的取值范围都为[1,t],分别用来表示不同的参与解密人员的序号,即i和j不能同时取相同的值;如果任意一个等式不成立,则解密人员提交的信息无效,流程结束;
(44)秘密计算者对密文E=(B,C,Ri)进行解密,得到分割后的原始PE数据:秘密计算者根据解密值ei计算得到被分割文件的原始PE数据S:
S = C / Π i = 1 t e i mod p .
9、根据权利要求5所述的软件分割保护的实现方法,其特征在于:所述步骤(5)进一步包括下列操作内容:
(51)恢复原来软件的完整性:将电子钥匙中已解密的PE数据S写入到电脑中存储的、仅包括头文件和节表的原来部分软件数据的底部,使该被解密的PE数据成功地添加到电脑中已被分割的PE文件中,完整恢复原来的软件;
(52)运行该恢复完整的软件,然后用备份文件覆盖该软件:运行该已经恢复完整的软件,并在该软件运行完毕后,将所述备份文件的文件名修改为该软件的原有文件名,使之成功覆盖刚才运行的完整软件,防止该软件被盗版,使得软件更加安全。
CN2008101015314A 2008-03-07 2008-03-07 一种基于门限密码体制的软件分割保护的实现方法 Expired - Fee Related CN101236590B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101015314A CN101236590B (zh) 2008-03-07 2008-03-07 一种基于门限密码体制的软件分割保护的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101015314A CN101236590B (zh) 2008-03-07 2008-03-07 一种基于门限密码体制的软件分割保护的实现方法

Publications (2)

Publication Number Publication Date
CN101236590A true CN101236590A (zh) 2008-08-06
CN101236590B CN101236590B (zh) 2010-11-03

Family

ID=39920200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101015314A Expired - Fee Related CN101236590B (zh) 2008-03-07 2008-03-07 一种基于门限密码体制的软件分割保护的实现方法

Country Status (1)

Country Link
CN (1) CN101236590B (zh)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826014A (zh) * 2010-04-20 2010-09-08 北京邮电大学 一种软件工程源代码的分割方法
CN102271035A (zh) * 2011-09-02 2011-12-07 华为技术有限公司 传输密码的方法和装置
CN102831361A (zh) * 2012-08-14 2012-12-19 游艺春秋网络科技(北京)有限公司 服务器防泄漏系统
CN102893284A (zh) * 2011-03-15 2013-01-23 松下电器产业株式会社 篡改监视系统、管理装置、保护控制模组及检测模组
CN103077333A (zh) * 2013-01-22 2013-05-01 北京理工大学 一种Linux系统下软件代码保护方法
CN103561005A (zh) * 2013-10-24 2014-02-05 桂林电子科技大学 基于映射几何性质的秘密共享方法
CN104166810A (zh) * 2014-07-29 2014-11-26 苏州乐米信息科技有限公司 手机游戏软件的加密方法
CN104462885A (zh) * 2014-12-30 2015-03-25 大连楼兰科技股份有限公司 防止原始代码被获取的方法
CN104486311A (zh) * 2014-12-04 2015-04-01 东南大学 一种支持可扩展性的远程数据完整性检查方法
CN104917780A (zh) * 2009-11-25 2015-09-16 安全第一公司 对移动中数据进行保护的系统和方法
CN105740699A (zh) * 2016-03-04 2016-07-06 浙江大华技术股份有限公司 一种可执行程序的保护方法及装置
CN106027234A (zh) * 2016-05-12 2016-10-12 山东渔翁信息技术股份有限公司 一种密钥保护方法
CN106302720A (zh) * 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种用于区块链可生存存储系统及其方法
CN104050426B (zh) * 2014-06-12 2017-03-22 南京理工大学 一种基于tcm的涉密信息移植系统
CN106599628A (zh) * 2016-12-08 2017-04-26 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106656512A (zh) * 2017-01-17 2017-05-10 武汉理工大学 支持门限密码的sm2数字签名生成方法及系统
CN106850208A (zh) * 2017-02-28 2017-06-13 北京信安世纪科技有限公司 一种秘密数据分割的方法及装置
CN107403486A (zh) * 2017-06-28 2017-11-28 宁波久婵物联科技有限公司 一种电子锁的一次性密码验证方法
CN110798313A (zh) * 2019-10-31 2020-02-14 武汉理工大学 基于秘密动态共享的包含秘密的数的协同生成方法及系统
WO2020063354A1 (zh) * 2018-09-28 2020-04-02 北京金山安全软件有限公司 一种区块链私钥的存储、恢复方法、装置及系统
CN111868724A (zh) * 2017-12-12 2020-10-30 约翰·阿尔梅达 病毒免疫计算机系统和方法
CN112149192A (zh) * 2020-09-30 2020-12-29 南京工程学院 一种基于运行时锚点的移动存储介质软件保护方法
CN112242970A (zh) * 2019-07-16 2021-01-19 丁爱民 一种数据分割加密安全加固方法及装置
CN112543102A (zh) * 2019-09-20 2021-03-23 云控蜂核(北京)科技有限公司 一种抗丢失且云端可干预的密钥存储方法

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104917780A (zh) * 2009-11-25 2015-09-16 安全第一公司 对移动中数据进行保护的系统和方法
CN101826014B (zh) * 2010-04-20 2013-05-08 北京邮电大学 一种软件工程源代码的分割方法
CN101826014A (zh) * 2010-04-20 2010-09-08 北京邮电大学 一种软件工程源代码的分割方法
CN102893284A (zh) * 2011-03-15 2013-01-23 松下电器产业株式会社 篡改监视系统、管理装置、保护控制模组及检测模组
CN102893284B (zh) * 2011-03-15 2016-07-06 松下电器产业株式会社 篡改监视系统、管理装置、保护控制模组及检测模组
US9311487B2 (en) 2011-03-15 2016-04-12 Panasonic Corporation Tampering monitoring system, management device, protection control module, and detection module
CN102271035A (zh) * 2011-09-02 2011-12-07 华为技术有限公司 传输密码的方法和装置
CN102271035B (zh) * 2011-09-02 2014-12-24 华为技术有限公司 传输密码的方法和装置
CN102831361A (zh) * 2012-08-14 2012-12-19 游艺春秋网络科技(北京)有限公司 服务器防泄漏系统
CN102831361B (zh) * 2012-08-14 2015-04-08 游艺春秋网络科技(北京)有限公司 服务器防泄漏系统
CN103077333A (zh) * 2013-01-22 2013-05-01 北京理工大学 一种Linux系统下软件代码保护方法
CN103077333B (zh) * 2013-01-22 2016-01-20 北京理工大学 一种Linux系统下软件代码保护方法
CN103561005B (zh) * 2013-10-24 2016-05-25 桂林电子科技大学 基于映射几何性质的秘密共享方法
CN103561005A (zh) * 2013-10-24 2014-02-05 桂林电子科技大学 基于映射几何性质的秘密共享方法
CN104050426B (zh) * 2014-06-12 2017-03-22 南京理工大学 一种基于tcm的涉密信息移植系统
CN104166810A (zh) * 2014-07-29 2014-11-26 苏州乐米信息科技有限公司 手机游戏软件的加密方法
CN104486311A (zh) * 2014-12-04 2015-04-01 东南大学 一种支持可扩展性的远程数据完整性检查方法
CN104462885A (zh) * 2014-12-30 2015-03-25 大连楼兰科技股份有限公司 防止原始代码被获取的方法
CN105740699A (zh) * 2016-03-04 2016-07-06 浙江大华技术股份有限公司 一种可执行程序的保护方法及装置
CN105740699B (zh) * 2016-03-04 2018-12-07 浙江大华技术股份有限公司 一种可执行程序的保护方法及装置
CN106027234A (zh) * 2016-05-12 2016-10-12 山东渔翁信息技术股份有限公司 一种密钥保护方法
CN106302720B (zh) * 2016-08-13 2019-12-13 青岛莱月网络科技有限公司 一种用于区块链可生存存储系统及其方法
CN106302720A (zh) * 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种用于区块链可生存存储系统及其方法
CN106599628A (zh) * 2016-12-08 2017-04-26 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106599628B (zh) * 2016-12-08 2019-04-02 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106656512A (zh) * 2017-01-17 2017-05-10 武汉理工大学 支持门限密码的sm2数字签名生成方法及系统
CN106656512B (zh) * 2017-01-17 2019-07-09 武汉理工大学 支持门限密码的sm2数字签名生成方法及系统
CN106850208A (zh) * 2017-02-28 2017-06-13 北京信安世纪科技有限公司 一种秘密数据分割的方法及装置
CN107403486A (zh) * 2017-06-28 2017-11-28 宁波久婵物联科技有限公司 一种电子锁的一次性密码验证方法
CN111868724A (zh) * 2017-12-12 2020-10-30 约翰·阿尔梅达 病毒免疫计算机系统和方法
WO2020063354A1 (zh) * 2018-09-28 2020-04-02 北京金山安全软件有限公司 一种区块链私钥的存储、恢复方法、装置及系统
CN112242970A (zh) * 2019-07-16 2021-01-19 丁爱民 一种数据分割加密安全加固方法及装置
CN112242970B (zh) * 2019-07-16 2022-09-02 丁爱民 一种数据分割加密安全加固方法及装置
CN112543102A (zh) * 2019-09-20 2021-03-23 云控蜂核(北京)科技有限公司 一种抗丢失且云端可干预的密钥存储方法
CN110798313A (zh) * 2019-10-31 2020-02-14 武汉理工大学 基于秘密动态共享的包含秘密的数的协同生成方法及系统
CN110798313B (zh) * 2019-10-31 2020-10-02 武汉理工大学 基于秘密动态共享的包含秘密的数的协同生成方法及系统
CN112149192A (zh) * 2020-09-30 2020-12-29 南京工程学院 一种基于运行时锚点的移动存储介质软件保护方法
CN112149192B (zh) * 2020-09-30 2024-02-27 南京工程学院 一种基于运行时锚点的移动存储介质软件保护方法

Also Published As

Publication number Publication date
CN101236590B (zh) 2010-11-03

Similar Documents

Publication Publication Date Title
CN101236590B (zh) 一种基于门限密码体制的软件分割保护的实现方法
EP1942430B1 (en) Token Passing Technique for Media Playback Devices
JP4206529B2 (ja) コンテンツ管理方法及びコンテンツ記憶システム
CN101719205B (zh) 一种数字版权管理方法及系统
CN103179086B (zh) 数据的远程存储处理方法与系统
US20060161772A1 (en) Secure authenticated channel
TW200822066A (en) Apparatus for writing data to a medium
CN102143232A (zh) 一种基于对等网络的数字版权保护方法
CN112383391A (zh) 基于数据属性授权的数据安全保护方法、存储介质及终端
CN105468940A (zh) 软件保护方法及装置
CN112364305A (zh) 基于区块链平台的数字内容版权保护方法和装置
CN111327419A (zh) 基于秘密共享的抗量子计算区块链的方法及系统
CN110837634B (zh) 基于硬件加密机的电子签章方法
Atallah et al. Binding software to specific native hardware in a VM environment: The PUF challenge and opportunity
CN1559026A (zh) 防止非法使用信息的方法和装置
WO1999046691A1 (en) Internet, intranet and other network communication security systems utilizing entrance and exit keys
CN100504896C (zh) 基于安全芯片的软件保护方法和系统
CN101547098B (zh) 公共网络数据传输安全认证方法及系统
Kim et al. A selective encryption/decryption method of sensitive music usage history information on theme, background and signal music blockchain network
JPH07131449A (ja) ディジタル情報通信システム
CN112632602A (zh) 区块链混币方法、装置、终端及存储介质
Buchmann et al. SAFE: A secure and efficient long-term distributed storage system
CA2557516C (en) Non-algorithmic vectored steganography
Sharma et al. A Blockchain-Trusted Scheme Based on Multimedia Content Protection
CN110519223B (zh) 基于非对称密钥对的抗量子计算数据隔离方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101103

Termination date: 20140307