著录项信息
专利名称 | 一种软件版权保护的方法 |
申请号 | CN200410081535.2 | 申请日期 | 2004-12-20 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2005-06-01 | 公开/公告号 | CN1621992 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F1/00 | IPC分类号 | G06F1/00查看分类表>
|
申请人 | 四川大学 | 申请人地址 |
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 成都世纪顶点科技有限公司 | 当前权利人 | 成都世纪顶点科技有限公司 |
发明人 | 李涛 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种软件版权保护的方法,其特征在于通过数字签名技术,对购买软件的用户进行身份认证,保证了软件发行过程的安全性、权威性和不可抵赖性,并且在软件使用过程中,通过验证安装软件的计算机指纹信息、软件许可证有效时间、用户信息等,保证一套软件只能由指定用户在规定时间内在特定的计算机上运行。本发明成本低、无需任何额外硬件,软件版权保护效果好,具有广阔的应用前景。
1.一种软件版权保护的方法,其特征在于定义一种颁发给软件使用者的软件许可证的结构, 包括用户信息、软件开发商名称、软件许可证颁发时间、软件许可证失效时间及软件许可 证签名数据五个部分,其中用户信息部分存放软件使用者名称、软件版本号、软件名称、 安装软件的计算机指纹信息及用户信息签名数据五个子项;其软件版权保护方法包括以下 步骤:
(1)软件许可证生成的步骤,包括以下步骤:
用户生成软件许可证的用户信息部分的步骤,包括以下步骤:
生成用户信息L的步骤,L包括用户名称、购买的软件名称、软件版本号和安 装软件的计算机指纹信息;
使用摘要算法,对L进行散列运算,得到一散列值D的步骤;
使用用户的私钥证书对该散列值D进行数字签名运算,得到签名数据E的步骤;
将签名数据E加到L的尾部的步骤;
用户将生成的用户信息传递给软件开发商的步骤;
软件开发商验证用户信息的步骤,包括以下步骤:
使用摘要算法,对用户信息中的用户名称、购买的软件名称、软件版本号和安 装软件的计算机指纹信息进行散列运算,得到一散列值D的步骤;
使用用户的公钥证书对用户信息中的签名数据子项进行验证签名运算,得到一 散列值D′的步骤;
验证D和D′是否一致的步骤;
软件开发商填写软件许可证的软件开发商名称、软件许可证颁发时间和软件许可证 失效时间部分的步骤;
软件开发商对软件许可证进行数字签名的步骤,包括以下步骤:
使用摘要算法,对软件许可证的用户信息部分、软件开发商名称、软件许可证 颁发时间和软件许可证失效时间进行散列运算,得到一散列值D的步骤;
使用软件开发商的私钥证书对该散列值D进行数字签名运算得到签名数据E 的步骤;
将签名数据E加到软件许可证的尾部的步骤;
软件开发商将该软件许可证传递给用户使用的步骤;
(2)验证软件许可证合法性的步骤,包括以下步骤:
使用摘要算法,对软件许可证中的部分信息,包括软件使用者名称、软件版本号、 软件名称、安装软件的计算机指纹信息、软件开发商名称、软件许可证颁发时间和 软件许可证失效时间,进行散列运算,得到一散列值D的步骤;
用软件开发商的公钥证书对软件许可证的签名数据部分进行验证签名运算,得到一 散列值D′的步骤;
验证D和D′是否一致的步骤;
验证软件开发商名称、软件使用者名称、软件版本号、软件名称、软件许可证是否 在授权使用时间内的步骤;
从正在使用的计算机中提取相应的指纹信息S的步骤;
验证提取到的指纹信息S与许可证中的“安装软件的计算机指纹信息”S′的一致性 的步骤。
技术领域
本发明涉及一种软件版权保护的方法。具体涉及一种基于数字签名以及计算机指纹信息 的软件版权保护方法。
背景技术
目前软件开发商一般通过软件序列号、硬件加密(如加密狗)等方法来保护软件版权。 通过软件序列号的方法无法控制软件不被反复的安装,并且也容易被破解,而硬件加密的成 本又比较高。因此,软件的版权保护一直是软件开发商面临的一个严峻的问题。
中国专利公开号为CN 1448842A的申请案,是利用网络数据库记录一套软件的使用时 间,如果同一软件编号SN有一套以上软件同时运行,说明此软件编号的软件有盗版,则将 此编号置为非法,此后该套软件将无法使用。该方法能防止软件被非法拷贝使用,但该方法 需要软件开发商购置数据库来存放和维护软件编号SN,并且在网络不通的时候,软件将不 能使用。因此该方法成本高,使用不方便,应用范围有很大的局限性。
中国专利公开号为CN 1514375A的申请案,是利用机器的特征码信息以及相应的加密算 法,生成被保护软件的使用证书。在一定程度上,该方法能够解决软件版权的保护问题,但 该方法缺乏严格的身份认证,缺乏权威性以及不可抵赖性,并且一旦被人盗版后也不能作为 法庭上的证据,因此应用范围具有一定的局限性。
发明内容
本发明提出了一种基于数字签名以及计算机指纹信息的软件版权保护方法。本发明的目 的是为了提供一种成本低、无需任何额外硬件、保证一套软件只能由指定用户在规定的时间 内在特定的计算机上使用的软件版权保护方法。
计算机的硬件都存在一些特定信息,并且这些特定信息是唯一的,如CPU序列号,网卡 MAC地址等,因此这些特定信息可做为计算机指纹信息来唯一地表示一台计算机。用户在 购买软件时,先用自己的私钥证书对用户名称、要购买的软件名称、软件版本号以及安装该 软件的计算机指纹信息进行数字签名后生成用户信息发送给软件开发商。软件开发商收到用 户发过来的用户信息后,首先使用用户的公钥证书验证用户信息,然后使用软件开发商自己 的私钥证书将该用户信息、软件开发商名称、软件许可证颁发时间和软件许可证失效时间进 行数字签名生成软件许可证,最后将该软件许可证和相应的软件一起交给用户使用。
在用户使用软件时,系统首先验证软件许可证,如果软件许可证合法,用户将能继续使 用该软件,否则将不能使用该软件。在验证软件许可证合法性时,首先根据软件开发商的公 钥证书判断软件许可证是否被篡改,如果被篡改,则该软件许可证非法。接着验证软件许可 证的其他信息(包括软件开发商名称、软件使用者名称、软件版本号、软件名称、软件许可 证颁发时间、软件许可证失效时间以及安装软件的计算机指纹信息)是否合法,如果合法, 则软件许可证合法,否则该软件许可证非法,拒绝软件的使用。
本发明基于公钥密钥理论的安全性,从以下几个方面确保软件发行过程中的安全性,权 威性和不可抵赖性:
1)通过用户以及软件开发商的数字证书和数字签名,提供软件购买的权威凭证。
2)在使用时,通过进一步验证用户信息,可进一步保证只有真正的购买者才能使用所 购软件。
3)通过对软件所安装的硬件指纹信息,确保软件只能在用户以及软件开法商共同指定 的机器上运行。
附图说明
图1为颁发给软件使用者的软件许可证的结构图。
图2为软件许可证生成的过程。
图3为用户生成软件许可证的用户信息部分的步骤。
图4为软件开发商验证用户信息部分的步骤。
图5为软件开发商对软件许可证进行数字签名的步骤。
图6验证软件使用者的软件许可证合法性的步骤。
注意:所有附图中,有阴影的框图表明框图内的数据是密文。
具体实施方式
图1为颁发给软件使用者的软件许可证的结构图。
颁发给软件使用者的软件许可证包括以下几部分:
1)用户信息部分:
a)软件使用者名称
b)购买的软件名称以及软件版本号
c)安装软件的计算机指纹信息
d)用户信息签名数据
2)软件开发商名称
3)软件许可证颁发时间
4)软件许可证失效时间
5)软件许可证签名数据
图2为软件许可证生成的过程。
软件许可证生成的过程如下:
1)用户生成软件许可证的用户信息部分。
2)用户将生成的用户信息部分传递给软件开发商。
3)软件开发商验证用户信息部分。
4)如果用户信息部分验证通过,软件开发商填写软件许可证的软件开发商名称、软件 许可证颁发时间和软件许可证失效时间部分,否则返回1),用户重新填写。
5)软件开发商对软件许可证进行数字签名。
6)软件开发商将该软件许可证传递给用户使用。
图3为用户生成软件许可证的用户信息部分的步骤。
用户生成软件许可证的用户信息部分的步骤如下:
1)生成用户信息的部分L,包括用户名称、购买的软件名称、软件版本号和安装该软件 的计算机指纹信息。
2)使用摘要算法(如MD2、MD5、SHA-1等),对L进行散列运算,得到一散列值D。
3)使用用户的私钥证书对该散列值D进行数字签名(签名算法可以为RSA、DSA、 ECC、DH等),得到签名数据E。
4)将签名数据E加到L的尾部。
图4为软件开发商验证用户信息部分的步骤。
软件开发商验证用户信息部分的步骤如下:
1)使用相应的摘要算法,对用户信息部分的用户名称、购买的软件名称、软件版本号 和安装该软件的计算机指纹信息进行相应的散列运算,得到一散列值D。
2)使用用户的公钥证书对用户信息部分的签名数据部分进行相应的验证签名运算,得 到一散列值D′。
3)如果D和D′相同,则验证通过,否则不通过。
图5为软件开发商对软件许可证进行数字签名的步骤。
软件开发商对软件许可证进行数字签名的步骤如下:
1)使用摘要算法,对软件许可证中的用户信息部分、软件开发商名称、软件许可证颁 发时间和软件许可证失效时间进行散列运算,得到一散列值D。
2)使用软件开发商的私钥证书对该散列值D进行数字签名,得到签名数据E。
3)将签名数据E加到软件许可证的尾部。
图6验证软件使用者的软件许可证合法性的步骤。
验证软件许可证合法性的步骤如下:
1)使用相应的摘要算法,对软件许可证的用户信息部分、软件开发商名称、软件许可 证颁发时间和软件许可证失效时间进行散列运算,得到一散列值D。
2)使用软件开发商的公钥证书对软件许可证的签名数据部分进行相应的验证签名运 算,得到一散列值D′。
3)比较D和D′是否相同。如果不相同,则可判断该软件许可证不合法(已被篡改), 验证失败。如果相同,则继续下面的判断。
4)验证软件开发商名称、软件使用者名称、软件版本号、软件名称、软件许可证是否 在授权使用时间内。
5)如果4)的验证不通过,则软件许可证非法,否则继续下面的判断。
6)从正在使用的计算机中提取相应的指纹信息S。
7)如果指纹信息S与许可证中的“安装软件的计算机指纹信息”S′相同,则软件许可 证合法,否则软件许可证非法。
法律信息
- 2017-02-08
未缴年费专利权终止
IPC(主分类): G06F 1/00
专利号: ZL 200410081535.2
申请日: 2004.12.20
授权公告日: 2007.05.09
- 2013-05-08
文件的公告送达
文件的公告送达失败
收件人: 王正涛
文件名称: 手续合格通知书
- 2013-04-24
专利权的转移
登记生效日: 2013.04.02
专利权人由四川格瑞特科技有限公司变更为成都世纪顶点科技有限公司
地址由610041 成都市武侯区长寿路2号成都市科华中路小学临街综合大楼二楼变更为610000 四川省成都市科华北路亚太广场C-411
- 2010-06-23
专利权的转移
登记生效日: 2010.05.13
专利权人由四川大学变更为四川格瑞特科技有限公司
地址由610065 四川省成都市一环路南一段24号变更为610041 成都市武侯区长寿路2号成都市科华中路小学临街综合大楼二楼
- 2007-05-09
- 2005-08-03
- 2005-06-01
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2004-08-18
|
2003-01-28
| | |
2
| |
2004-07-21
|
2003-07-21
| | |
3
| |
2003-11-26
|
2003-05-26
| | |
4
| |
2003-10-15
|
2002-03-31
| | |
5
| |
2002-03-06
|
1999-12-15
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |