CN114357385A - 一种软件防护和授权方法、系统及装置 - Google Patents
一种软件防护和授权方法、系统及装置 Download PDFInfo
- Publication number
- CN114357385A CN114357385A CN202111603465.2A CN202111603465A CN114357385A CN 114357385 A CN114357385 A CN 114357385A CN 202111603465 A CN202111603465 A CN 202111603465A CN 114357385 A CN114357385 A CN 114357385A
- Authority
- CN
- China
- Prior art keywords
- client
- authorization
- signature data
- authorization request
- server
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本申请公开了一种软件防护和授权方法、系统及装置。该方法具体包括:客户端运行目标软件程序生成授权请求,并通过公钥将授权请求进行加密成密文,发送给服务端,授权请求中包括客户端授权信息以及程序版本号;服务端对密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;服务端通过私钥生成签名数据,并将签名数据与使用截止日期返回给客户端;客户端通过公钥验证签名数据的有效性。可以看出,本申请使用非对称加密在私钥没被暴露的情况下防止软件被非法篡改,即使软件被非法篡改,也不能正常使用。同时在加密和签名中附带有授权信息,也防止了软件的非授权使用。
Description
技术领域
本发明涉及信息安全领域,特别涉及一种软件防护和授权方法、系统及装置。
背景技术
密码学专指加密算法:将普通信息(明文)转换成难以理解的资料(密文)的过程;解密算法则是其相反的过程:由密文转换回明文;加解密包含了这两种算法,一般加密即同时指称加密与解密的技术。
公开密钥加密(也称为非对称加密):是密码学中的一种加密法,非对称密钥,是指一对加密密钥与解密密钥,某用户使用加密密钥加密后所获得的资料,只能用该用户的解密密钥才能够解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了其中一个密钥,并不会危害到另外一个。因此公开的密钥为公钥;不公开的密钥为私钥。
数字签名(又称公钥数字签名、电子签名):是一种类似写在纸上的签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。在网络上,我们可以使用“数字签名”来进行身份确认。数字签名是一个独一无二的数值,若公钥能通过验证,那我们就能确定对应的公钥的正确性,数字签名兼具这两种双重属性:"可确认性"及"不可否认性(不需要笔迹专家验证)"。
当前,软件防篡改主要采用以下方法:
1、校验和:作为软件防篡改技术的根本操作方法,主要的作用是检测五案件运行开始和结束后的文件是否出现差异和错误,从而推断该软件文件是否被篡改。此方法简单普遍不够隐藏,容易被发现并处理掉。
2、软件哨兵:主要功能是对软件代码进行升级加密,可以融入到软件的一种程序,单涵盖的防伪比较小。
3、密码技术:是在软件哨兵的基础上更加全面的加密功能,阻止篡改软件代码的效果更强。由于系统必须在运行程序之前解密代码,这会影响程序的执行效果。
发明内容
基于此,本申请实施例提供了一种软件防护和授权方法、系统及装置,可以使用非对称加密在私钥没被暴露的情况下防止软件被非法篡改,即使软件被非法篡改,也不能正常使用。
第一方面,提供了一种软件防护和授权方法,该方法包括:
客户端运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,发送给服务端,所述授权请求中包括客户端授权信息以及程序版本号;
所述服务端对所述密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;
所述服务端将所述客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将所述签名数据与所述使用截止日期返回给所述客户端;
所述客户端通过公钥验证所述签名数据的有效性。
可选地,所述方法还包括:
当客户端通过公钥验证签名数据的有效性失败时,则表示客户端被非法修改,可采用客户端自动更新功能来恢复客户端。
可选地,所述方法还包括:
当客户端通过公钥验证签名数据的有效性成功时,则客户端运行目标软件程序生成授权请求发送给服务端。
可选地,当客户端处于离线状态时,则将述签名数据与所述使用截止日期保存至本地。
第二方面,提供了一种软件防护和授权系统,该系统包括客户端与服务端:
所述客户端,用于运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,发送给服务端,所述授权请求中包括客户端授权信息以及程序版本号;
所述服务端,用于对所述密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;并将所述客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将所述签名数据与所述使用截止日期返回给所述客户端;
所述客户端,还用于通过公钥验证所述签名数据的有效性。
可选地,所述客户端还用于:
当客户端通过公钥验证签名数据的有效性失败时,则表示客户端被非法修改,可采用客户端自动更新功能来恢复客户端。
可选地,所述客户端还用于:
当客户端通过公钥验证签名数据的有效性成功时,则客户端运行目标软件程序生成授权请求发送给服务端。
第三方面,提供了一种软件防护和授权装置,用于客户端中,该装置包括:
运行模块,用于运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,发送给服务端,所述授权请求中包括客户端授权信息以及程序版本号;
获取模块,用于获取从服务端返回的签名数据与使用截止日期;
验证模块,用于通过公钥验证所述签名数据的有效性。
第四方面,提供了一种软件防护和授权装置,用于服务端中,所述装置包括:
获取模块,用于获取客户端通过运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,所述授权请求中包括客户端授权信息以及程序版本号;
解密模块,用于对所述密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;
返回模块,用于将所述客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将所述签名数据与所述使用截止日期返回给所述客户端。
本申请实施例提供的技术方案中,客户端运行目标软件程序生成授权请求,并通过公钥将授权请求进行加密成密文,发送给服务端,授权请求中包括客户端授权信息以及程序版本号;服务端对密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;服务端通过私钥生成签名数据,并将签名数据与使用截止日期返回给客户端;客户端通过公钥验证签名数据的有效性。
本申请实施例提供的技术方案带来的有益效果至少包括:
(1)保证软件的安全,不被篡改。
(2)即使软件被非法篡改的情况下,也不能被授权使用。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
图1为本申请实施例提供的一种软件防护和授权方法的步骤流程图;
图2为本申请实施例提供的一种软件防护和授权装置的框图;
图3为本申请实施例提供的另一种软件防护和授权装置的框图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
软件防护和授权,主要是通过技术手段防止软件被非法授权使用。一旦发现被篡改,则进行恢复或者禁止使用,事后靠日志分析来溯源和查缺补漏改进。没有任何企业敢保证自己的软件不会被攻破,关键是能提高攻击难度同时降低攻击造成的影响,并且这是一个持续向上的过程。本发明目的在于增加软件非法篡改的难度来降低非发授权使用造成的影响。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种软件防护和授权方法进行详细介绍。
请参考图1,其示出了本申请实施例提供的一种软件防护和授权方法的流程图,该方法可以包括以下步骤:
步骤101,客户端运行目标软件程序生成授权请求,并通过公钥将授权请求进行加密成密文,发送给服务端。
其中,授权请求中包括客户端授权信息以及程序版本号。
在本申请实施例中,服务端存储有软件包含的所有文件、文件hash值以及版本号,服务端保存有自己的私钥。客户端包含所有文件,程序版本号,以及服务端的公钥。
客户端启动时,会将本机的授权信息、程序版本号通过公钥加密成密文,发送给服务端。
步骤102,服务端对密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期。
步骤103,服务端将客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将签名数据与使用截止日期返回给客户端。
服务端解密后,将授权信息、程序版本号、客户端此版本的各文件hash值以及使用截止日期通过私钥生成签名数据并附带明文的使用截止日期发回给客户端。
步骤104,客户端通过公钥验证签名数据的有效性。
在本申请实施例中,客户端通过公钥,验证签名的有效性,如果验证失败,则表示客户端被非法修改,可采用客户端自动更新功能来恢复客户端。如果验证成功,则在程序中随机重复进行步骤101的操作
如果客户端采用离线模式,则可以将步骤102生成的签名数据和使用截止日期以文件的方式存储在本地。
本申请还提供的一种软件防护和授权系统,系统包括客户端与服务端:
客户端,用于运行目标软件程序生成授权请求,并通过公钥将授权请求进行加密成密文,发送给服务端,授权请求中包括客户端授权信息以及程序版本号;
服务端,用于对密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;并将客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将签名数据与使用截止日期返回给客户端;
客户端,还用于通过公钥验证签名数据的有效性。
还用于:当客户端通过公钥验证签名数据的有效性失败时,则表示客户端被非法修改,可采用客户端自动更新功能来恢复客户端。
当客户端通过公钥验证签名数据的有效性成功时,则客户端运行目标软件程序生成授权请求发送给服务端。
本申请实施例所提供的一种软件防护和授权系统用于实现上述软件防护和授权方法,关于软件防护和授权系统的具体限定可以参见上文中对于软件防护和授权方法的限定,在此不再赘述。
请参考图2,其示出了本申请实施例提供的一种软件防护和授权装置中客户端200的框图。如图2所示,该装置200可以包括:运行模块201、获取模块202、验证模块203。
运行模块201,用于运行目标软件程序生成授权请求,并通过公钥将授权请求进行加密成密文,发送给服务端,授权请求中包括客户端授权信息以及程序版本号;
获取模块202,用于获取从服务端返回的签名数据与使用截止日期;
验证模块203,用于通过公钥验证签名数据的有效性。
请参考图3,其示出了本申请实施例提供的一种软件防护和授权装置中服务端300的框图。如图3所示,该装置300可以包括:获取模块301、解密模块302、返回模块303。
获取模块301,用于获取客户端通过运行目标软件程序生成授权请求,并通过公钥将授权请求进行加密成密文,授权请求中包括客户端授权信息以及程序版本号;
解密模块302,用于对密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;
返回模块303,用于将客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将签名数据与使用截止日期返回给客户端。
基于密码学的软件防护和授权的装置使用非对称加密在私钥没被暴露的情况下防止软件被非法篡改,即使软件被非法篡改,也不能正常使用。同时在加密和签名中附带有授权信息,也防止了软件的非授权使用。
关于软件防护和授权装置中客户端与服务端用于实现上述软件防护和授权方法,具体限定可以参见上文中对于软件防护和授权方法的限定,在此不再赘述。上述软件防护和授权装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种软件防护和授权方法,其特征在于,所述方法包括:
客户端运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,发送给服务端,所述授权请求中包括客户端授权信息以及程序版本号;
所述服务端对所述密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;
所述服务端将所述客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将所述签名数据与所述使用截止日期返回给所述客户端;
所述客户端通过公钥验证所述签名数据的有效性。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当客户端通过公钥验证签名数据的有效性失败时,则表示客户端被非法修改,可采用客户端自动更新功能来恢复客户端。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当客户端通过公钥验证签名数据的有效性成功时,则客户端运行目标软件程序生成授权请求发送给服务端。
4.根据权利要求1所述的方法,其特征在于,当客户端处于离线状态时,则将述签名数据与所述使用截止日期保存至本地。
5.一种软件防护和授权系统,其特征在于,所述系统包括客户端与服务端:
所述客户端,用于运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,发送给服务端,所述授权请求中包括客户端授权信息以及程序版本号;
所述服务端,用于对所述密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;并将所述客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将所述签名数据与所述使用截止日期返回给所述客户端;
所述客户端,还用于通过公钥验证所述签名数据的有效性。
6.根据权利要求5所述的系统,其特征在于,所述客户端还用于:
当客户端通过公钥验证签名数据的有效性失败时,则表示客户端被非法修改,可采用客户端自动更新功能来恢复客户端。
7.根据权利要求5所述的系统,其特征在于,所述客户端还用于:
当客户端通过公钥验证签名数据的有效性成功时,则客户端运行目标软件程序生成授权请求发送给服务端。
8.一种软件防护和授权装置,其特征在于,用于客户端中,所述装置包括:
运行模块,用于运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,发送给服务端,所述授权请求中包括客户端授权信息以及程序版本号;
获取模块,用于获取从服务端返回的签名数据与使用截止日期;
验证模块,用于通过公钥验证所述签名数据的有效性。
9.一种软件防护和授权装置,其特征在于,用于服务端中,所述装置包括:
获取模块,用于获取客户端通过运行目标软件程序生成授权请求,并通过公钥将所述授权请求进行加密成密文,所述授权请求中包括客户端授权信息以及程序版本号;
解密模块,用于对所述密文进行解密,得到目标软件程序所对应的客户端授权信息、程序版本号、文件hash值以及使用截止日期;
返回模块,用于将所述客户端授权信息、程序版本号、文件hash值通过私钥生成签名数据,并将所述签名数据与所述使用截止日期返回给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111603465.2A CN114357385A (zh) | 2021-12-24 | 2021-12-24 | 一种软件防护和授权方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111603465.2A CN114357385A (zh) | 2021-12-24 | 2021-12-24 | 一种软件防护和授权方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114357385A true CN114357385A (zh) | 2022-04-15 |
Family
ID=81100717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111603465.2A Pending CN114357385A (zh) | 2021-12-24 | 2021-12-24 | 一种软件防护和授权方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114357385A (zh) |
-
2021
- 2021-12-24 CN CN202111603465.2A patent/CN114357385A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Schneier | Cryptographic design vulnerabilities | |
US6339828B1 (en) | System for supporting secured log-in of multiple users into a plurality of computers using combined presentation of memorized password and transportable passport record | |
EP2659373B1 (en) | System and method for secure software update | |
CN106612180B (zh) | 实现会话标识同步的方法及装置 | |
EP0881559B1 (en) | Computer system for protecting software and a method for protecting software | |
CN101145906B (zh) | 对单向网络中的接收终端进行合法性认证的方法及系统 | |
EP1374473B1 (en) | Method and apparatus for secure cryptographic key generation, certification and use | |
US8935528B2 (en) | Techniques for ensuring authentication and integrity of communications | |
US10797868B2 (en) | Shared secret establishment | |
Chong et al. | Secure audit logging with tamper-resistant hardware | |
US8631486B1 (en) | Adaptive identity classification | |
JP3580333B2 (ja) | 暗号認証機能の装備方法 | |
CN112685786A (zh) | 一种金融数据加密、解密方法、系统、设备及存储介质 | |
CN110837634B (zh) | 基于硬件加密机的电子签章方法 | |
JP3985461B2 (ja) | 認証方法、コンテンツ送信側機器、コンテンツ受信側機器、認証システム | |
CN112968774B (zh) | 一种组态存档加密及解密方法、装置存储介质及设备 | |
WO1998033296A1 (en) | Distribution system with authentication | |
JP2000330783A (ja) | ソフトウェア不正コピー防止システムおよびソフト不正コピー防止プログラムを記録した記録媒体 | |
CN110445774B (zh) | IoT设备的安全防护方法、装置及设备 | |
CN105873043B (zh) | 一种用于移动终端的网络私匙的生成及应用方法及其系统 | |
CN114357385A (zh) | 一种软件防护和授权方法、系统及装置 | |
KR100734600B1 (ko) | 변조방지 하드웨어에 기반한 자가 무결성 검증 기법을이용한 시스템 인증 및 보안성 강화 방법 | |
CN108985079B (zh) | 数据验证方法和验证系统 | |
Campbell | Supporting digital signatures in mobile environments | |
JP4604523B2 (ja) | データの移管方法およびデータの保管装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |