一种实现软件保护的系统及方法
技术领域
本发明涉及计算机软件技术,尤其涉及实现软件保护的系统及方法。
背景技术
尽管计算机技术发展的历史并不久远,但是软件行业经过短短十几年的发展,获得了可观的收入。截止到2011年上半年,中国软件产业实现软件业务收入8065亿元。软件产品有着巨大的利润空间,而就目前来说,盗版问题一直未能完全解决,它是使得软件厂商利益受损的重矢之重。
中国专利公开号为CN 1448842A的专利,利用网络数据库记录一套软件的使用时间,如果同一软件编号SN有一套以上软件同时运行,则说明此软件编号的软件有盗版。该方法的缺点是,开发商需要购置数据库系统以用来维护软件的编号SN,并且客户的应用环境需要连接网络。这样,一方面提高了开发商的成本,另一方面软件的使用亦受到了限制,由此会损失大批的用户。
中国专利公开号为CN 1514375A的专利,利用机器的特征码信息以及相应的加密算法,生成被保护软件的使用证书。在一定程度上,该方法能够解决软件版权的保护问题,但该方法缺乏严格的身份认证,缺乏权威性和不可抵赖性,同时无法保证用户通过修改软件的二进制文件来破解软件。
中国专利公开号CN200610099202的专利,通过在程序文件的基础上以加入软件保护代码并结合智能密钥装置的方式解决软件版权保护存在的问题。
综上分析目前的软件保护技术,要么需要额外的装置或组建的保障;要么保护方法过于单一,容易被破解。因此,需要提供一种能够综合多种手段保护软件的方法,它不依赖于任何外部设备或组件实现,所有保护功能都通过软件内部实现,因此,毋需提高软件开发商的成本,同时不会使得软件的使用受到任何限制。
发明内容
本发明所要解决的技术问题是提供一种实现软件保护的系统及方法,能够保证软件不被恶意传播使用的同时,防止软件文件被破解。
为了解决上述技术问题,本发明提供了一种实现软件保护的系统,包括软件开发装置和软件使用装置,其中:
软件开发装置,用于将软件验证模块植入在开发的软件中,并将针对程序文件内容生成的数字签名写入开发完成的程序文件中;
软件使用装置,用于在用户启动软件运行时通过植入的软件验证模块进行软件使用的合法性验证。
进一步地,软件开发装置包括软件文件处理模块和软件注册机模块,软件使用装置包括在启动软件安装时在软件文件中生成的软件注册模块,其中:
软件文件处理模块,用于将用于验证用户的软件使用权限以及软件中程序内容是否完整的软件验证模块植入在开发的软件中,并将针对程序文件内容通过加密算法生成的数字签名写入开发完成的程序文件中;
软件注册模块,用于将软件使用的用户信息和/或终端硬件信息提供给软件注册机模块;将软件注册机模块返回的软件注册信息写入使用软件的终端中;
软件注册机模块,用于根据软件注册模块提供的用户信息和/或终端硬件信息生成软件注册信息,并返回给软件注册机模块;
软件验证模块,用于对软件使用的合法性进行验证,包括根据软件注册信息验证用户的软件使用权限,以及根据针对程序文件内容通过加密算法生成的数字签名判断程序文件内容是否完整。
进一步地,
软件注册机模块生成并返回给软件注册模块的软件注册信息,包括软件使用者信息、终端硬件信息、软件版本信息、软件模块标识以及软件使用的起始时间、结束时间中的一种或多种信息。
进一步地,
软件文件处理模块通过非对称加密算法对软件注册信息进行加密;针对程序文件内容通过不可逆的加密算法生成的数字签名写入开发完成的程序文件中;
软件验证模块用与软件文件处理模块使用相同的非对称加密算法对软件注册信息进行解密,根据解密的软件注册信息验证用户的软件使用权限,包括判断使用软件的用户和/或终端是否合法;用与软件文件处理模块使用相同的不可逆的加密算法生成数字签名,并根据生成的数字签名与程序文件中写入的数字签名是否一致判断程序文件内容是否完整;根据判断结果返回软件使用是否合法相应的信息。
为了解决上述技术问题,本发明提供了一种实现软件保护的方法,涉及软件开发装置和软件使用装置,该方法包括:
软件开发装置将软件验证模块植入在开发的软件中,并将针对程序文件内容生成的数字签名写入开发完成的程序文件中;
软件使用装置在用户启动软件运行时通过植入的软件验证模块进行软件使用的合法性验证。
进一步地,软件开发装置将软件验证模块植入在开发的软件中,并将针对程序文件内容生成的数字签名写入开发完成的程序文件中,具体包括:
软件开发装置将用来验证用户的软件使用权限是否符合要求以及软件中程序文件内容是否完整的软件验证模块植入在开发的软件中,并将针对程序文件内容通过非对称加密算法生成的数字签名写入开发完成的程序文件中。
进一步地,软件使用装置在用户启动软件运行时通过植入的所述软件验证模块进行软件使用的合法性验证,具体包括:
软件使用装置在用户启动软件运行时提供软件使用信息,包括软件使用者信息和/或终端硬件信息;
所述软件开发装置根据软件使用装置提供的软件使用信息生成软件注册信息,并返回给软件使用装置;
软件使用装置将软件开发装置返回的软注册信息写入使用软件的终端;在用户启动软件运行时进行软件使用合法性验证,包括验证用户的软件的使用权限和验证软件运行的程序文件内容是否完整。
进一步地,软件开发装置生成的软件注册信息,包括软件使用者信息、终端硬件信息、软件版本信息、软件模块标识以及软件使用的起始时间、结束时间中的一种或多种信息。
进一步地,软件使用装置将所述软件开发装置返回的软注册信息写入使用软件的终端,具体包括:
软件使用装置用与软件开发装置使用的相同的非对称加密算法对软件注册信息进行解密,并将解密的软件注册信息写入使用软件的终端。
进一步地,软件使用装置在所述用户启动软件运行时进行软件使用合法性验证,具体包括:
根据解密的软件注册信息验证用户的软件使用权限,包括判断使用软件的用户和终端是否合法,即若判断软件为试用版,则通过检查软件使用起始时间,判断软件的使用是否过期,根据使用是否过期返回相应的使用是否合法的信息;若判断软件为正式版则继续检查终端硬件信息是否正确,根据检查的结果返回相应的使用是否合法的信息;
用与软件开发装置使用的相同的不可逆的加密算法生成数字签名,并根据生成的数字签名与程序文件中写入的数字签名是否一致,判断程序文件内容是否完整;根据判断结果返回相应的软件使用是否合法的信息。
本发明能够极大程度地保护软件,防止非法用户的使用和破解软件,由此极大地保护了软件开发商的利益,使得中国软件产业朝着健康的方向发展。
附图说明
图1为本发明的实现软件保护的系统实施例的结构示意图;
图2为本发明的软件注册信息内容示意图;
图3为本发明的实现软件保护的方法实施例的流程图;
图4为图3所示的方法实施例中将数字签名写入程序文件处理实施例的流程图;
图5为图3所示的方法实施例中验证用户的软件使用权限实施例的流程图;
图6为图3所示的方法实施例中验证程序文件内容完整性实施例的流程图。
具体实施方式
以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以下例举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
如图1所示,表示了本发明提供的实现软件保护的系统实施例的结构,包括软件开发装置和软件使用装置,其中:
软件开发装置,用于将软件验证模块植入在开发的软件中,并将针对程序文件内容生成的数字签名写入开发完成的程序文件中;
软件使用装置,用于在用户启动软件运行时通过植入的软件验证模块进行软件使用合法性验证。
在图1所示的系统实施例中,软件开发装置包括软件文件处理模块和软件注册机模块,软件使用装置包括在启动软件安装时在软件文件中生成的软件注册模块,其中:
软件文件处理模块,用于将用于验证用户的软件使用权限以及软件中程序内容是否完整的软件验证模块植入在开发的软件中,并将针对程序文件内容通过加密算法生成的数字签名写入开发完成的程序文件中;
软件注册模块,用于将软件使用的用户信息和/或终端硬件信息提供给软件注册机模块;将软件注册机模块返回的软件注册信息写入使用软件的终端中;
软件注册机模块,用于根据软件注册模块提供的用户信息和/或终端硬件信息生成软件注册信息,并返回给软件注册机模块;
软件验证模块,用于对软件使用的合法性进行验证,包括根据软件注册信息验证用户的软件使用权限,以及根据针对程序文件内容通过加密算法生成的数字签名判断程序文件内容是否完整。
在图1所示的系统实施例中,
软件注册机模块生成并返回给软件注册模块的软件注册信息如图2所示,包括软件使用者信息、终端硬件信息、软件版本信息、软件模块标识以及软件使用的起始时间、结束时间中的一种或多种信息。
在图1所示的系统实施例中,
软件文件处理模块通过非对称加密算法对软件注册信息进行加密,针对程序文件内容通过不可逆的加密算法生成的数字签名写入开发完成的程序文件中,其中,非对称加密算法譬如为RSA算法、Elgamal算法、背包算法、Rabin算法、D-H算法以及ECC算法中的任意一种;不可逆的加密算法包括MD4、MD5加密算法中的任意一种;
软件验证模块用与软件文件处理模块使用的相同的非对称加密算法对软件注册信息进行解密,根据解密的软件注册信息验证用户的软件使用权限,包括判断使用软件的用户和/或终端是否合法;用与软件文件处理模块使用的相同的不可逆的加密算法生成数字签名,并根据生成的数字签名与程序文件中写入的数字签名是否一致判断程序文件内容是否完整;根据判断结果返回软件使用是否合法相应的信息。
本发明针对上述系统实施例,相应地还提供了实现软件保护的方法实施例,涉及软件开发装置和软件使用装置,其流程如图3所示,包括如下步骤:
110:软件开发装置将软件验证模块植入在开发的软件中,并将针对程序文件内容的数字签名写入程序文件中;
软件开发装置将将用来验证用户的软件使用权限是否符合要求以及软件中程序文件内容是否完整的软件验证模块植入在开发的软件中,并将针对程序文件内容通过加密算法生成的数字签名写入开发完成的程序文件中。
120:软件使用装置向软件开发装置提供软件使用信息;
软件使用装置提供的软件使用信息,包括软件使用者信息和/或终端(譬如计算机终端)硬件信息。
130:软件开发装置根据软件使用装置提供的软件使用信息生成软件注册信息,并返回给软件使用装置;
软件开发装置生成的软件注册信息,如图2所示,包括软件使用者信息、终端硬件信息、软件版本信息、软件模块标识以及软件使用的起始时间、结束时间中的一种或多种信息;通过非对称加密算法对软件注册信息进行加密后返回,其中非对称加密算法譬如为RSA算法、Elgamal算法、背包算法、Rabin算法、D-H算法以及ECC算法中的任意一种。
140:软件使用装置将软件开发装置返回的软注册信息写入使用软件的终端;在用户启动软件运行时进行软件使用合法性验证。
上述软件使用合法性验证,包括验证用户对软件的使用权限和验证软件运行的程序文件是否完整。
软件使用装置用与软件开发装置使用的相同的非对称加密算法对软件注册信息进行解密,根据解密的软件注册信息验证用户的软件使用权限,包括判断使用软件的用户和终端是否合法;用与软件开发装置使用的相同的不可逆的加密算法生成数字签名,并根据生成的数字签名与写入程序文件中的数字签名是否一致判断程序文件是否完整;根据判断结果返回软件使用是否合法相应的信息。
如图4所示,表示了图3所示的方法实施例中软件开发装置将数字签名写入程序文件处理实施例的流程,包括如下步骤:
1110:通过加密算法针对程序文件的内容生成数字签名;
软件开发装置通过不可逆的加密算法对程序文件内容生成数字签名,其中不可逆的加密算法譬如是MD4、MD5等加密算法中的任意一种。
1120:将数字签名写入程序文件。
软件开发装置将生成的数字签名写入开发完成的程序文件中,待软件使用装置进行程序内容完整性验证。
如图5所示,表示了图3所示的方法实施例中验证用户的软件使用权限实施例的流程,包括如下步骤:
1411:写入解密的软件注册信息;
先用与软件开发装置使用相同的非对称加密算法解密软件注册信息,然后将解密的软件注册信息写入所述使用软件的终端。
1412:判断该软件是否为试用版,是则执行下列步骤,否则执行步骤1416;
1413、1414:检查软件使用起始时间,判断该软件使用是否过期,是则执行步骤1417,否则执行下列步骤;
1415:返回使用合法信息,结束流程;
1416:检查终端硬件信息是否正确,是则执行步骤1415,否则执行步骤1417;
1417:返回使用不合法信息,结束流程。
如图6所示,表示了图3所示的方法实施例中验证程序文件内容完整性实施例的流程,包括如下步骤:
1421:通过加密算法针对程序文件的内容生成数字签名;
软件使用装置用与软件开发装置使用的相同的不可逆的加密算法生成数字签名。
1422:检查与写入程序文件的数字签名是否一致,是则执行步骤1423,否则执行步骤1424;
1423:返回数字签名验证成功信息,结束流程;
1424:返回数字签名验证失败信息。
本发明提供的软件保护的方法法由两部分组成,一部分是对用户使用权限管理部分,另一部分是软件防破解功能。通过这两方面的功能,可以为软件提供一种不需要任何额外的硬件或组件,保护用户的软件只能在指定的终端(譬如计算机、平板电脑以及手机终端等)上使用。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。