一种基于国密算法保护计算机软件的方法和系统与流程

文档序号:17741518发布日期:2019-05-24 20:10阅读:405来源:国知局
一种基于国密算法保护计算机软件的方法和系统与流程

本发明涉及计算机软件保护领域,并且更具体地,涉及一种基于国密算法的计算机软件保护的方法和系统。



背景技术:

随着国家对知识产权保护越来越重视,现在的影视、音乐等文化娱乐领域版权已经实现了正版化,但是在计算机软件领域,盗版软件还是大行其道,屡禁不止,造成这种现象的原因既有技术原因也有社会现状原因。作为软件的发行方,出于商业利益方面的考虑,一定会采用更先进的技术加大版权保护的力度,防止未经授权的非法复制、传播、运行等。

目前实现软件版权保护的方式有很多种,其中采用注册码的方式最为常见,但是考虑到用户使用体验,注册码一般不会太长,这就导致保护强度不够,降低了被破解的难度;通过网络在线连接验证服务器进行验证也是目前常见的一种保护手段,但是对需要采取离线部署的软件就不适用了;也有部分软件采用许可证授权文件的方式来保护自身,授权文件可以包含更多有效信息,增加验证复杂度,然而由于使用了老旧的国际算法,随着最近几年攻击技术的进步,其安全性已经不能满足要求。



技术实现要素:

为了解决背景技术存在的对计算机软件版权保护的强度、安全性以及离线保护无法较好兼顾的技术问题,本发明提供一种基于国密算法保护计算机软件的方法和系统。所述基于国密算法保护计算机软件的方法包括:

步骤1、在软件的主程序入口自动执行查询许可证文件的指令,当回复无许可证文件时,转步骤2,当回复有许可证文件时,转步骤4;

步骤2、将计算机硬件信息和软件版本号拼接在一起作为原文,使用预置的sm2证书对该原文制作pkcs#7格式的数字信封,将该数字信封保存成文件生成许可证请求,并结束软件主程序,将所述许可证请求文件发送给软件发行方;

步骤3、软件发行方使用其sm2私钥解密pkcs#7格式许可证请求文件并记录其中的信息,对计算机硬件信息和许可证有效期做sm3摘要后用sm2私钥签名,形成许可证文件;

步骤4、读取许可证文件,使用主程序中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出。

进一步地,在软件的主程序入口自动执行查询许可证文件的指令之前将软件发行方的sm2证书预置在需要保护的软件的主程序代码中。

进一步地,所述方法中的计算机硬件信息包括cpu号、硬盘号和主板号。

进一步地,用户把许可证请求文件发送给软件发行方包括拷贝和在线网络传输。

进一步地,读取许可证文件,使用主程序中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出包括:

读取许可证文件,取得许可证有效期、sm3摘要和签名值;

实时动态的采集计算机硬件信息,对计算机硬件信息和许可证有效期做sm3摘要,并与许可证文件中的sm3摘要比对;

当比对结果一致时,使用主程序预置的sm2证书验证许可证文件中的签名值,验证成功则获取本机当前时间,当前时间在许可证的有效期之内,则继续执行软件主程序流程,否则验证许可证文件失败,退出软件主程序。通过此比对,较好地保证了软件只能在规定的时间内在特定的计算机上运行。

根据本发明的另一方面,本发明提供一种基于国密算法保护计算机软件的系统,所述系统包括:

许可证查询单元,其用于在软件的主程序入口查询软件是否具有许可证文件;

许可证请求单元,其用于将软件用户的计算机硬件信息和软件版本号拼接在一起作为原文,使用预置的sm2证书对该原文制作pkcs#7格式的数字信封,将该数字信封保存成文件生成许可证请求,并结束软件主程序,将许可证请求文件发送给软件发行方;

许可证形成单元,其用于使用软件发行方的sm2私钥解密许可证请求单元生成的pkcs#7格式许可证请求文件并记录其中的信息,对计算机硬件信息和许可证有效期做sm3摘要后用sm2私钥签名,形成许可证文件;

许可证验证单元,其用于读取许可证形成单元发送的许可证文件,使用sm2证书预置单元中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出。

进一步地,所述系统还包括sm2证书预置单元,其用于将软件发行方的sm2证书预置在需要保护的软件的主程序代码中。

进一步地,所述许可证请求单元中的计算机硬件信息包括cpu号、硬盘号和主板号。

进一步地,许可证请求单元中的用户把许可证请求文件发送给软件发行方包括拷贝和在线网络传输。

进一步地,许可证验证单元读取许可证文件,使用主程序中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出包括:

读取许可证文件,取得许可证有效期、sm3摘要和签名值;

实时动态的采集计算机硬件信息,对计算机硬件信息和许可证有效期做sm3摘要,并与许可证文件中的sm3摘要比对;

当比对结果一致时,使用主程序预置的sm2证书验证许可证文件中的签名值,验证成功则获取本机当前时间,当前时间在许可证的有效期之内,则继续执行软件主程序流程,否则验证许可证文件失败,退出软件主程序。

本发明所提供的技术方案通过把软件发行方的sm2证书预置在需要版权保护的软件主程序代码中,并采用国家密码局发布的国密算法,以许可证授权文件的方式对软件进行版权保护,不需要额外的硬件支持,无需用户具备专门的相关知识,也不需要实时在线的网络环境支持,技术成本低,提高了保护强度,具有广阔的应用前景。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1是本发明具体实施方式的基于国密算法保护计算机软件的方法的流程图;

图2是本发明具体实施方式的保护基于国密算法保护计算机软件的系统的结构图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1是本发明具体实施方式的基于国密算法保护计算机软件的方法的流程图。如图1所示,所述基于国密算法保护计算机软件的方法100从步骤101开始。

在步骤101,将软件发行方的sm2证书预置在需要保护的软件的主程序代码中;

在步骤102,在软件的主程序入口自动执行查询许可证文件的指令,当回复无许可证文件时,转步骤103,当回复有许可证文件时,转步骤105;

在步骤103,将计算机硬件信息和软件版本号拼接在一起作为原文,使用软件主程序中预置的sm2证书对该原文制作pkcs#7格式的数字信封,将该数字信封保存成文件生成许可证请求,并结束软件主程序,将所述许可证请求文件发送给软件发行方;

在步骤104,软件发行方使用其sm2私钥解密pkcs#7格式许可证请求文件并记录其中的信息,对计算机硬件信息和许可证有效期做sm3摘要后用sm2私钥签名,形成许可证文件;

在步骤105,读取许可证文件,使用主程序中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出。

优选地,所述方法中的计算机硬件信息包括cpu号、硬盘号和主板号。

优选地,用户把许可证请求文件发送给软件发行方包括拷贝和在线网络传输。

优选地,读取许可证文件,使用主程序中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出包括:

读取许可证文件,取得许可证有效期、sm3摘要和签名值;

实时动态的采集计算机硬件信息,对计算机硬件信息和许可证有效期做sm3摘要,并与许可证文件中的sm3摘要比对;

当比对结果一致时,使用主程序预置的sm2证书验证许可证文件中的签名值,验证成功则获取本机当前时间,当前时间在许可证的有效期之内,则继续执行软件主程序流程,否则验证许可证文件失败,退出软件主程序。

图2是本发明具体实施方式的保护基于国密算法保护计算机软件的系统的结构图。如图2所示,基于国密算法保护计算机软件的系统200包括:

sm2证书预置单元201,其用于将软件发行方的sm2证书预置在需要保护的软件的主程序代码中;

许可证查询单元202,其用于在软件的主程序入口查询软件是否具有许可证文件;

许可证请求单元203,其用于将软件用户的计算机硬件信息和软件版本号拼接在一起作为原文,使用预置的sm2证书对该原文制作pkcs#7格式的数字信封,将该数字信封保存成文件生成许可证请求,并结束软件主程序,将许可证请求文件发送给软件发行方;

许可证形成单元204,其用于使用软件发行方的sm2私钥解密许可证请求单元生成的pkcs#7格式许可证请求文件并记录其中的信息,对计算机硬件信息和许可证有效期做sm3摘要后用sm2私钥签名,形成许可证文件;

许可证验证单元205,其用于读取许可证形成单元发送的许可证文件,使用sm2证书预置单元中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出。

优选地,所述许可证请求单元中的计算机硬件信息包括cpu号、硬盘号和主板号。

优选地,许可证请求单元中的用户把许可证请求文件发送给软件发行方包括拷贝和在线网络传输。

优选地,许可证验证单元读取许可证文件,使用主程序中预置的sm2证书验证许可证文件,当验证通过,则继续软件主程序,当验证未通过时,软件主程序退出包括:

读取许可证文件,取得许可证有效期、sm3摘要和签名值;

实时动态的采集计算机硬件信息,对计算机硬件信息和许可证有效期做sm3摘要,并与许可证文件中的sm3摘要比对;

当比对结果一致时,使用主程序预置的sm2证书验证许可证文件中的签名值,验证成功则获取本机当前时间,当前时间在许可证的有效期之内,则继续执行软件主程序流程,否则验证许可证文件失败,退出软件主程序。

通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该【装置、组件等】”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1