首页 / 专利库 / 软件 / 软件 / 软件版权保护方法及其系统

软件版权保护方法及其系统

阅读:409发布:2021-06-06

专利汇可以提供软件版权保护方法及其系统专利检索,专利查询,专利分析的服务。并且本 发明 提供一种 软件 版权 保护方法及其系统,方法包括:当被保护软件于一终端设备上打开时,检测终端设备是否通过 硬件 接口 连接一密码设备,密码设备储存有密钥对及数字证书,数字证书至少包括与密钥对的第一公钥相同的第二公钥及CA的签名;若是,则被保护软件读取数字证书;被保护软件内置的根证书验证数字证书的签名是否有效,根证书内嵌在被保护软件的代码中;若是,则被保护软件生成一随机数,并发送给密码设备;密码设备通过储存的私钥对随机数进行签名,并将签名结果返回至被保护软件;被保护软件通过所读取的数字证书中的第二公钥对签名结果进行验证。本发明提供的软件 版权保护 方法及其系统提高软件保护的可靠性。,下面是软件版权保护方法及其系统专利的具体信息内容。

1.一种软件版权保护方法,其特征在于,包括:
当被保护软件于一终端设备上打开时,检测所述终端设备是否通过硬件接口连接一密码设备,所述密码设备储存有密钥对及数字证书,所述密钥对包括一私钥及一第一公钥,所述数字证书至少包括一第二公钥及所述被保护软件关联的CA认证中心服务器对所述数字证书的签名,第一公钥与第二公钥相同;
若是,则所述被保护软件读取所述密码设备中储存的数字证书;
所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名是否有效,其中,所述根证书内嵌在所述被保护软件的代码中,并且所述根证书与所述被保护软件的代码一起经编译以生成所述被保护软件;
若是,则所述被保护软件生成一随机数,并发送给所述密码设备;
所述密码设备通过储存的私钥对所述随机数进行签名,并将签名结果返回至被保护软件;
所述被保护软件通过所读取的数字证书中的第二公钥对所述签名结果进行验证。
2.如权利要求1所述的软件版权保护方法,其特征在于,所述数字证书还包括:密码设备的序列号、证书有效期限,
所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名有效之后,所述被保护软件生成一随机数之前还包括:
所述被保护软件检查所述密码设备的序列号;
所述被保护软件确认当前时间在所述密码设备证书的有效期限内。
3.如权利要求1所述的软件版权保护方法,其特征在于,所述数字证书包括Common Name字段,所述Common Name用于写入一许可证文件的散列值。
4.如权利要求3所述的软件版权保护方法,其特征在于,所述许可证文件的SHA-256值作为所述许可证文件的散列值。
5.如权利要求1至4任一项所述的软件版权保护方法,其特征在于,所述数字证书为X.509标准证书。
6.如权利要求1至4任一项所述的软件版权保护方法,其特征在于,所述密码设备支持CryptoAPI标准或PKCS#11标准。
7.一种软件版权保护系统,其特征在于,包括:
终端设备,储存有被保护软件;
密码设备,所述密码设备储存有密钥对及数字证书,所述密钥对包括一私钥钥及一第一公钥,所述数字证书至少包括一第二公钥及所述被保护软件关联的CA认证中心服务器对所述数字证书的签名,第一公钥与第二公钥相同,
其中,所述终端设备和所述密码设备执行如下步骤:
当被保护软件于所述终端设备上打开时,检测所述终端设备是否通过硬件接口连接所述密码设备;
若是,则所述被保护软件读取所述密码设备中储存的数字证书;
所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名是否有效,其中,所述根证书内嵌在所述被保护软件的代码中,并且所述根证书与所述被保护软件的代码一起经编译以生成所述被保护软件;
若是,则所述被保护软件生成一随机数,并发送给所述密码设备;
所述密码设备通过储存的私钥对所述随机数进行签名,并将签名结果返回至被保护软件;
所述被保护软件通过所读取的数字证书中的第二公钥对所述签名结果进行验证。
8.如权利要求7所述的软件版权保护系统,其特征在于,所述密码设备包括:
储存区,用于储存所述密钥对及所述数字证书,所述私钥存入所述存储区后,为不可读状态。
加密区,用于通过储存的私钥对所述被保护软件发送的所述随机数进行签名。
9.如权利要求7所述的软件版权保护系统,其特征在于,所述密码设备为USBkey、SDkey、PCI-E密码卡、智能卡中的一种或多种。
10.如权利要求7所述的软件版权保护系统,其特征在于,还包括:所述CA认证中心服务器,用于管理所述数字证书。

说明书全文

软件版权保护方法及其系统

技术领域

[0001] 本发明涉及计算机软件保护领域,尤其涉及一种软件版权保护方法及其系统。

背景技术

[0002] 计算机软件由于很容易被复制,软件盗版屡禁不绝,因此软件版权保护是很多软件厂商非常关注的问题。目前使用的软件版权保护一般有以下几种方法:
[0003] (1)使用软件序列号或注册码:就是在软件安装或运行的过程中必须要输入由字母、数字或其它字符所组成的序列,软件通过判断该序列是否合法来决定是否继续安装或运行。这是一种最原始的软件版权保护方式,实现简单,但只要知道序列号或注册码,就很容易被拷贝并安装到其他的计算机上进行安装和运行。
[0004] (2)绑定硬件信息的注册码或许可证:软件在安装之前会搜集计算机的硬件信息,比如CPU ID(中央处理器的身份标识号)、网卡MAC地址(即媒体访问控制,或称为物理地址,用来定义网络设备的位置。MAC地址是网卡决定的,是固定的)、硬盘ID,等等,然后根据这些硬件信息产生软件注册码或许可证,安装或运行时必须导入该注册码或许可证软件才能正常运行。这是目前一种比较流行的方式,但实际使用过程中存在以下问题:
[0005] a)用户有时可能要把软件安装到另外一台计算机上使用(比如计算机报废更新);
[0006] b)计算机里面的部件有可能因为损坏需要更换(比如更换CPU、网卡、硬盘等);
[0007] c)网卡MAC地址很容易被修改或采用MAC欺骗软件可以模拟任意的MAC地址;
[0008] d)通过修改操作系统内核、更改驱动或动态链接库等手段,可以模拟伪造CPU ID等硬件信息。
[0009] (3)采用软件加密狗等硬件设备:软件通过在运行过程中读取加密狗中的数据来判断软件是否合法,或者干脆将部分关键代码保存到加密狗中。加密狗可以在不同的计算机上使用,极大地方便了软件的使用。但采用加密狗方式也存在以下问题:
[0010] a)目前软件加密狗没有统一的标准,加密狗中采用何种保密机制对于软件开发者来说是一个黑盒,从而对加密狗的安全性存在疑虑。有些加密狗很容易被复制,有些加密狗可以通过SoftICE等Debug工具调试跟踪解密,有些加密狗可以通过编写拦截程序修改软件和加密狗之间的通讯来破解。另外,软件会不会很容易被加密狗厂家自己破解也是一个疑问。
[0011] b)很多软件加密狗提供动态链接库形式的API,而API文档是开放的,破解者很容易伪造一个接口一样的API替换厂家的动态链接库,跳过加密狗校验机制,从而使软件不需要加密狗就能正常运行。
[0012] c)有些加密狗厂家提供外壳加密方法,也就是开发者不需要修改软件,只要用加密狗厂家的加壳程序对原有程序进行加壳保护就可以达到版权保护的目的。但外壳加密的方法因为保护方法固定,加密的外壳与应用代码结合比较松散,所以也比较容易被分离外壳从而被破解。
[0013] d)因为软件加密狗没有统一的标准,软件厂商只能绑定某一家软件加密狗,否则更换加密狗厂家就要重新修改软件,这个也不是软件厂商愿意的事情。

发明内容

[0014] 本发明为了克服上述现有技术存在的缺陷,提供一种软件版权保护方法及其系统,以提高软件保护的可靠性。
[0015] 根据本发明的一个方面,提供一种软件版权保护方法,包括:
[0016] 当被保护软件于一终端设备上打开时,检测所述终端设备是否通过硬件接口连接一密码设备,所述密码设备储存有密钥对及数字证书,所述密钥对包括一私钥及一第一公钥,所述数字证书至少包括一第二公钥及所述被保护软件关联的CA认证中心服务器对所述数字证书的签名,第一公钥与第二公钥相同;
[0017] 若是,则所述被保护软件读取所述密码设备中储存的数字证书;
[0018] 所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名是否有效,其中,所述根证书内嵌在所述被保护软件的代码中,并且所述根证书与所述被保护软件的代码一起经编译以生成所述被保护软件;
[0019] 若是,则所述被保护软件生成一随机数,并发送给所述密码设备;
[0020] 所述密码设备通过储存的私钥对所述随机数进行签名,并将签名结果返回至被保护软件;
[0021] 所述被保护软件通过所读取的数字证书中的第二公钥对所述签名结果进行验证。
[0022] 可选地,所述数字证书还包括:密码设备的序列号、证书有效期限,[0023] 所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名有效之后,所述被保护软件生成一随机数之前还包括:
[0024] 所述被保护软件检查所述密码设备的序列号;
[0025] 所述被保护软件确认当前时间在所述密码设备证书的有效期限内。
[0026] 可选地,所述数字证书包括Common Name字段,所述Common Name用于写入一许可证文件的散列值。
[0027] 可选地,所述许可证文件的SHA-256值作为所述许可证文件的散列值。
[0028] 可选地,所述数字证书为X.509标准证书。
[0029] 可选地,所述密码设备支持CryptoAPI标准或PKCS#11标准。
[0030] 根据本发明的又一方面,还提供一种软件版权保护系统,包括:
[0031] 终端设备,储存有被保护软件;
[0032] 密码设备,所述密码设备储存有密钥对及数字证书,所述密钥对包括一私钥及一第一公钥,所述数字证书至少包括一第二公钥及所述被保护软件关联的CA认证中心服务器对所述数字证书的签名,第一公钥与第二公钥相同,
[0033] 其中,所述终端设备和所述密码设备执行如下步骤:
[0034] 当被保护软件于所述终端设备上打开时,检测所述终端设备是否通过硬件接口连接所述密码设备;
[0035] 若是,则所述被保护软件读取所述密码设备中储存的数字证书;
[0036] 所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名是否有效,其中,所述根证书内嵌在所述被保护软件的代码中,并且所述根证书与所述被保护软件的代码一起经编译以生成所述被保护软件;
[0037] 若是,则所述被保护软件生成一随机数,并发送给所述密码设备;
[0038] 所述密码设备通过储存的私钥对所述随机数进行签名,并将签名结果返回至被保护软件;
[0039] 所述被保护软件通过所读取的数字证书中的第二公钥对所述签名结果进行验证。
[0040] 可选地,所述密码设备包括:
[0041] 储存区,用于储存所述密钥对及所述数字证书,所述私钥存入所述存储区后,为不可读状态。
[0042] 加密区,用于通过储存的私钥对所述被保护软件发送的所述随机数进行签名。
[0043] 可选地,所述密码设备为USBkey、SDkey、PCI-E密码卡、智能卡中的一种或多种。
[0044] 可选地,还包括:所述CA认证中心服务器,用于管理所述数字证书。
[0045] 与现有技术相比,本发明的优点在于:
[0046] 1)由于验证过程是被保护软件和密码设备内部的签名密钥对直接操作的,因此即使中间所有的通信数据被截获,或者动态链接库被修改,也无法破解整个验证的过程。
[0047] 2)密码设备内部的签名密钥对是无法读出的,即使密码设备的生产厂家也无法读出,这个是由密码设备认证标准决定的,因此安全性可以得到有效保证。
[0048] 3)在CA签发数字证书的时候,如果软件开发者想要记录更多的信息也可以用一个独立的自定义的许可证文件,然后将该文件内容的散列值(转换成字符串)作为证书Common Name字段的内容,从而可以记录更多的受保护信息。附图说明
[0049] 通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
[0050] 图1示出了根据本发明实施例的软件版权保护系统的示意图。
[0051] 图2示出了根据本发明实施例的密码设备初始化的时序图。
[0052] 图3示出了根据本发明实施例的被保护软件编译的时序图。
[0053] 图4示出了根据本发明实施例的软件版权保护系统执行软件版权保护时的时序图。
[0054] 图5示出了根据本发明实施例的软件版权保护方法的流程图

具体实施方式

[0055] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
[0056] 为了克服上述现有技术存在的缺陷,本发明提供一种软件版权保护方法及其系统。首先参见图1,图1示出了根据本发明实施例的软件版权保护系统的示意图。
[0057] 软件版权保护系统包括终端设备110和密码设备120。可选地,软件版权保护系统还包括CA认证中心服务器130。
[0058] 终端设备110储存有被保护软件111。该被保护软件111安装在终端设备110上。该被保护软件111在开发编译时,内嵌有CA认证中心服务器130的根证书。
[0059] 密码设备可以为USBkey、SDkey、PCI-E密码卡、智能卡中的一种或多种。USBkey是一种USB接口的硬件设备。它内置单片机或智能卡芯片,有一定的存储空间,可在本发明中存储用户的私钥以及数字证书,利用USBkey内置的公钥算法实现对用户身份的认证。由于用户私钥保存在密码中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性。SDkey是一种SD接口的硬件设备,其类似于USBkey,具有存储用户的私钥以及数字证书的存储空间,以实现用户身份的认证。PCI-E密码卡是一种PCI-E接口的硬件设备,其采用PCI-E总线。智能卡为内嵌有微芯片的卡的通称。一些智能卡可以包含一个微电子芯片,智能卡需要通过读写器进行数据交互。智能卡可以配备有CPU、RAM和I/O,以自行处理数量较多的数据而不会干扰到主机CPU的工作。智能卡还可过滤错误的数据,以减轻主机CPU的负担。适应于端口数目较多且通信速度需求较快的场合。卡内的集成电路包括中央处理器CPU、可编程只读存储器EEPROM、随机存储器RAM和固化只读存储器ROM中的卡内操作系统COS(Chip Operating System)。卡中数据分为外部读取和内部处理部分。
[0060] 密码设备120可包括储存区121和加密区122。储存区121储存有密钥对142及数字证书141。密钥对142包括一私钥及一第一公钥。私钥存入存储区121后,为不可读状态,不能被任何人读出。数字证书是一个经证书授权中心数字签名的包含公钥拥有者信息以及公钥的文件。所述数字证书141经由所述被保护软件111关联的CA认证中心服务器130签发,其至少包括与所述密钥对142的第一公钥相同的第二公钥及所述被保护软件111关联的CA认证中心服务器130对所述数字证书141的签名。加密区122用于执行加密的功能。
[0061] 下面参见图2,图2示出了根据本发明实施例的密码设备初始化的时序图。
[0062] 在一个优选地实施例中,可采用采用支持RSA PKCS#11或微软CryptoAPI标准的USBkey/SDkey/PCI-E密码卡/智能卡等作为密码设备120来保护软件版权。The Public-Key Cryptography Standards(PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。PKCS#11也称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备。CryptoAPI作为Microsoft Windows的一部分提供的应用程序编程接口(API)。CryptoAPI提供了一组函数,这些函数允许应用程序在对用户的敏感私钥数据提供保护时以灵活的方式对数据进行加密或数字签名。实际的加密操作是由称为加密服务提供程序(CSP)的独立模执行。
[0063] 支持这些标准的密码设备其安全性可以通过认证,而且有众多的供应商,接口都一致,相互替换采购非常容易。同时,可采用标准的RSA密码算法、标准的X.509数字证书(X.509是由国际电信联盟(ITU-T)制定的数字证书标准)以及挑战-响应认证机制来认证密码设备120的合法性,算法安全性得以保障,并且很容易实现。
[0064] 首先,被保护软件的软件厂商可以采用ejbca、dogtag或openssl等开源软件建立一个CA认证中心服务器130,其作为软件许可证签发管理的CA(Certificate Authority,证书签发机构)中心(暂且叫License CA)。在发放软件许可的密码设备120时执行如下操作:
[0065] 步骤S311:在密码设备120内部产生一对RSA签名密钥对,并保存在密码设备120中。
[0066] 步骤S312:通过CA认证中心服务器130签发一张标准的X.509数字证书,该证书中包含与上述密钥对中的第一公钥相同的第二公钥、用户名称(可放在数字证书的Common Name字段)、USBkey序列号(可放在数字证书的Serial Number字段)、有效期限以及CA认证中心服务器130对该证书的签名。
[0067] 步骤S313:将生成的数字证书写入密码设备120内签名密钥对所在的储存区内。
[0068] 在上述过程中的一个变化例中,在CA签发数字证书的时候,如果软件开发者想要记录更多的信息而X.509标准不支持,则也可以用一个独立的自定义的许可证文件,然后将该文件内容的散列值(转换成字符串)作为证书Common Name字段的内容,从而可以记录更多的受保护信息。许可证文件的散列值例如可以是许可证文件的SHA-256值。进一步地,在本发明中还可以将更多的信息记录在许可证文件中。例如,若绑定被保护软件只能在某一台设备上运行,那么也可以在许可证文件中绑定机器的硬件信息。在这样的实施例中,由于许可证文件的散列值被记录在数字证书中,因此,其无法被篡改,安全性得到保证。
[0069] 下面参见图3,图3示出了根据本发明实施例的被保护软件编译的时序图。
[0070] 为了将CA认证中心服务器130的根证书内嵌在被保护软件中,且其位置不容易被发现,CA认证中心服务器130和被保护软件开发设备140之间按图3的时序图进行操作:
[0071] 步骤S321:CA认证中心服务器130将根证书发送给被保护软件开发设备140。
[0072] 步骤S322:被保护软件开发设备140将根证书写入被保护软件的代码中。
[0073] 步骤S323:对写入根证书的被保护软件的代码进行编译生成被保护软件。
[0074] 由此,通过上述步骤将根证书内嵌到被保护软件中,且根证书和被保护软件的代码一同被编译,其位置不容易被预测和破解。
[0075] 下面参见图4,图4示出了根据本发明实施例的软件版权保护系统执行软件版权保护时的时序图。
[0076] 当被保护软件于所述终端设备上打开时,被保护软件111在步骤S301检测所述终端设备通过硬件接口连接所述密码设备120。
[0077] 被保护软件111在步骤S302读取所述密码设备120中储存的数字证书。
[0078] 被保护软件111在步骤S303中通过其内置的所述CA认证中心服务器的根证书验证密码设备120的所述数字证书的签名有效。
[0079] 被保护软件111在步骤S304生成一随机数。
[0080] 被保护软件111在步骤S305中将生成的随机数发送给所述密码设备120。
[0081] 密码设备120在步骤S306通过储存的私钥对所述随机数进行签名。
[0082] 密码设备120在步骤S307将签名结果返回至被保护软件。
[0083] 被保护软件111在步骤S308通过所读取的数字证书中的第二公钥对所述签名结果进行验证。若验证成功,则完成版权验证。
[0084] 下面参见图5,图5示出了根据本发明实施例的软件版权保护方法的流程图。图5共示出了6个步骤:
[0085] 当被保护软件于一终端设备上打开时执行步骤S210:检测所述终端设备是否通过硬件接口连接一密码设备。若是,则执行步骤S220;若否则继续执行步骤S210。
[0086] 步骤S220:所述被保护软件读取所述密码设备中储存的数字证书。
[0087] 步骤S230:所述被保护软件内置的所述CA认证中心服务器的根证书验证所述数字证书的签名是否有效。若是,则执行步骤S240;若否则跳回执行步骤S210。
[0088] 在一些实施例中,所述数字证书还包括:密码设备的序列号、证书有效期限,则步骤S230验证所述数字证书的签名有效之后,步骤S240之前还包括所述被保护软件检查所述密码设备的序列号,并且所述被保护软件确认当前时间在所述密码设备证书的有效期限内。
[0089] 步骤S240:所述被保护软件生成一随机数,并发送给所述密码设备。
[0090] 步骤S250:所述密码设备通过储存的私钥对所述随机数进行签名,并将签名结果返回至被保护软件。
[0091] 步骤S260:所述被保护软件通过所读取的数字证书中的第二公钥对所述签名结果进行验证。验证通过即可在终端设备上安装被保护软件。
[0092] 具体而言,在本发明的一些实施例中,由于采用标准的密码算法和数字证书,因此上述步骤很容易用openssl开源软件库和RSA PKCS#11或微软CryptoAPI标准的API库来开发实现。
[0093] 与现有技术相比,本发明的优点在于:
[0094] 1)由于验证过程是被保护软件和密码设备内部的签名密钥对直接操作的,因此即使中间所有的通信数据被截获,或者动态链接库被修改,也无法破解整个验证的过程。
[0095] 2)密码设备内部的签名密钥对是无法读出的,即使密码设备的生产厂家也无法读出,这个是由密码设备认证标准决定的,因此安全性可以得到有效保证。
[0096] 3)在CA签发数字证书的时候,如果软件开发者想要记录更多的信息也可以用一个独立的自定义的许可证文件,然后将该文件内容的散列值(转换成字符串)作为证书Common Name字段的内容,从而可以记录更多的受保护信息。
[0097] 以上具体地示出和描述了本发明的示例性实施方式。应该理解,本发明不限于所公开的实施方式,相反,本发明意图涵盖包含在所附权利要求范围内的各种修改和等效置换。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈