CN109309655B - 无状态通信安全签名方法、终端及服务器端 - Google Patents

无状态通信安全签名方法、终端及服务器端 Download PDF

Info

Publication number
CN109309655B
CN109309655B CN201710632933.6A CN201710632933A CN109309655B CN 109309655 B CN109309655 B CN 109309655B CN 201710632933 A CN201710632933 A CN 201710632933A CN 109309655 B CN109309655 B CN 109309655B
Authority
CN
China
Prior art keywords
terminal
server
character string
timestamp
database
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.)
Active
Application number
CN201710632933.6A
Other languages
English (en)
Other versions
CN109309655A (zh
Inventor
彭冠宇
兰海宇
宋起涛
李屹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Appotronics Corp Ltd
Original Assignee
Appotronics Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Appotronics Corp Ltd filed Critical Appotronics Corp Ltd
Priority to CN201710632933.6A priority Critical patent/CN109309655B/zh
Priority to PCT/CN2018/074757 priority patent/WO2019019593A1/zh
Publication of CN109309655A publication Critical patent/CN109309655A/zh
Application granted granted Critical
Publication of CN109309655B publication Critical patent/CN109309655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种无状态通信安全签名方法,该方法包括如下步骤:所述终端存储与所述服务器端统一的预定密钥;所述终端经过至少两次加密得到加密后的第一字符串;所述服务器端按所述终端的加密方式进行加密得到第二字符串;所述服务器端比较所述第一字符串和所述第二字符串是否相同,以判断所述终端的请求是否通过。本发明还提供一种终端及服务器端。与相关技术相比,本发明的无状态通信安全签名方法、终端及服务器端安全性高且可靠性好。

Description

无状态通信安全签名方法、终端及服务器端
技术领域
本发明属于通信技术领域,具体涉及一种无状态通信安全签名方法、终端及服务器端。
背景技术
随着互联网时代的盛行,通信设备越来越多的成为人们生活的一部分。同时,通信安全也是人们越来越关心的问题,该问题直接影响着人们对通信设备的使用。
相关技术中,普遍使用通信系统的前端(终端)与后端(服务器端)无状态通信机制克服通信安全问题。即相关技术中的前端与后端无状态通信机制中,所述前端在用户登录请求时,所述后端返回令牌token给所述前端保存,往后的请求带上令牌token在参数上,所述后端验证令牌token来确认用户状态。
然而,相关技术中的上述通信机制在接口安全, Ddoc攻击(或频繁请求等类似攻击)等一系列问题集合时,数据后台的安全性以及可能面临的竞争对手恶意攻击等情况下,无法保证终端认证。
因此,实有必要提供一种新的无状态通信安全签名方法以解决上述问题。
发明内容
针对以上现有技术的不足,本发明提出一种通信的安全性高且可靠性好的无状态通信安全签名方法、终端及服务器端。
本发明提供了一种无状态通信安全签名方法,该方法包括如下步骤:
终端存储与服务器端统一的预定密钥;
终端向服务器端发送通信请求:所述终端将所述预定密钥、当前时间戳和功能参数经过至少两次加密得到加密后的第一字符串,将所述第一字符串和所述当前时间戳装至数据包的头部中,并将所述数据包发送至所述服务器端实现通信请求;
所述终端接收所述服务器发出的通信请求所对应的数据。
优选的,在所述终端向服务器端发送通信请求步骤中,两次加密方式依次采用HmacShal加密算法和md5摘要加密算法。
优选的,所述第一字符串为32位序列。
本发明还提供一种无状态通信安全签名方法,该方法包括如下步骤:
服务器端定义与终端统一的预定密钥;
所述服务器端接收所述终端发出的通信请求的数据包,所述数据包包括所述终端经加密后得到的第一字符串,其中,所述第一字符串由所述终端的预定密钥、当前时间戳和功能参数经过至少两次加密得到;
服务器端生成第二字符串:所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串;
所述服务器端比较所述第一字符串和所述第二字符串是否相同,若不相同,则通信请求失败;若相同,则所述服务器端以所述终端的IP和所述第一字符串为关键字查找所述服务器端的数据库并判断所述第一字符串是否进行过请求,若是,则数据请求失败;若否,则进入下一步骤;
所述服务器端比较接收的所述数据包中的所述当前时间戳是否比所述服务器端的数据库中存储的所述终端的IP对应的时间戳更新,若否,则数据请求失败,且将所述服务器端的数据库中所述终端的IP对应的时间戳更新为所述数据包中的所述当前时间戳;若是,则进入下一步骤;
所述服务器端更新其数据库中存储的所述终端的IP对应的所述第一字符串和对应的时间戳为所述数据包中的所述第一字符串和所述当前时间戳,并将所述终端请求的数据发送给所述终端。
优选的,在所述服务器端接收所述终端发出的通信请求的数据包中,两次加密方式依次采用HmacShal加密算法和md5摘要加密算法。
优选的,所述第一字符串为32位序列。
优选的,在所述服务器端生成第二字符串的步骤中,所述当前时间戳从所述服务器端接收的所述数据包的头部中提取,所述功能参数从所述服务器端与所述终端建立通信的接口获得。
优选的,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串和时间戳以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,使得请求过的所述第一字符串无法重复请求,且要求所述时间戳比所述服务器端的数据库保存的所述当前时间戳大。
优选的,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串和时间戳以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,使得请求过的所述第一字符串无法重复请求,且要求所述时间戳比所述服务器端的数据库保存的所述当前时间戳大;当通过所述预定密钥签名验证正确,但所述服务器端的数据库保存的所述当前时间戳不比该次请求的所述时间戳小时,拦截该次请求,并修改所述服务器端的数据库中的所述当前时间戳并记录为本次请求的所述时间戳。
优选的,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,使得请求过的所述第一字符串无法重复请求。
优选的,还包括:
所述服务器端将其数据库更新:所述终端的时间戳为请求网络时间戳或请求服务器端的服务器集群的专用于获取系统时间的服务器所返回的返回时间戳,所述服务器端把所述终端请求过的所述第一字符串和所述时间戳以IP地址为单位保存或更新在所述服务器端的数据库,使得请求过的所述第一字符串无法重复请求,且要求所述时间戳比所述服务器端的数据库保存的所述当前时间戳大。
优选的,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串和时间戳以IP地址为单位保存或更新在所述服务器端的数据库,隔预设时间清理,每次比对所述IP地址所保存的所述第一字符串列表,若所述第一字符串列表中无相同的所述第一字符串,则通过请求。
本发明还提供一种终端,包括:处理器、收发机、存储器、用户接口及总线接口,其中:
所述处理器用于读取所述存储器中的程序,执行上述提供的无状态通信安全签名方法中的步骤。
本发明还提供一种服务器端,包括:处理器、收发机、存储器、用户接口及总线接口,其中:
所述处理器用于读取所述存储器中的程序,执行上述提供的无状态通信安全签名方法中的步骤。
本发明还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现上述提供的无状态通信安全签名方法中的步骤。
本发明还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现上述提供的无状态通信安全签名方法中的步骤。
与相关技术相比,本发明的无状态通信安全签名方法、终端及服务器端中,所述终端在请求前,将本次请求的数据包里的功能参数通过指定排序,再结合所述预定密钥和所述当前时间戳,依次采用Hmacsha1加密算法和md5摘要加密算法得到32位序列,并放在请求的数据包的头部里作为所述第一字符串;所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串,通过比较所述第一字符串和所述第二字符串实现所述终端请求的验证,相同则通过验证。上述方法在普通互联网应用的安全问题,特别是在各式智能设备厂商的应用系统的设备需要与互联网的所述服务器端进行无状态通信时,其安全性更好且可靠性强。
附图说明
下面结合附图详细说明本发明。通过结合以下附图所作的详细描述,本发明的上述或其他方面的内容将变得更清楚和更容易理解。附图中:
图1为本发明提供的无状态通信安全签名方法的流程框图;
图2为本发明提供的另一种无状态通信安全签名方法的实施例一的流程框图;
图3为本发明提供的另一种无状态通信安全签名方法的实施例二的部分步骤流程框图;
图4为本发明提供的另一种无状态通信安全签名方法的实施例三的部分步骤流程框图;
图5为本发明提供的另一种无状态通信安全签名方法的实施例四的部分步骤流程框图;
图6为本发明提供的另一种无状态通信安全签名方法的实施例五的部分步骤流程框图;
图7为本发明提供的另一种无状态通信安全签名方法的实施例六的部分步骤流程框图;
图8为本发明提供的终端的结构示意图;
图9为本发明提供的服务器端的结构示意图;
图10为图4对应的实施例三的时序图。
具体实施方式
下面结合附图详细说明本发明的具体实施方式。
在此记载的具体实施方式/实施例为本发明的特定的具体实施方式,用于说明本发明的构思,均是解释性和示例性的,不应解释为对本发明实施方式及本发明范围的限制。除在此记载的实施例外,本领域技术人员还能够基于本申请权利要求书和说明书所公开的内容采用显而易见的其它技术方案,这些技术方案包括采用对在此记载的实施例的做出任何显而易见的替换和修改的技术方案,都在本发明的保护范围之内。
请参图1,为本发明提供的无状态通信安全签名方法的流程框图。本发明提供的无状态通信安全签名方法,该方法包括如下步骤:
步骤S11、终端存储与服务器端统一的预定密钥secretKey,如appotronics-2017。
步骤S12、终端向服务器端发送通信请求:所述终端将所述预定密钥、当前时间戳和功能参数经过至少两次加密得到加密后的第一字符串sign,将所述第一字符串sign和所述当前时间戳装至数据包的头部header中,并将所述数据包发送至所述服务器端实现通信请求。
本步骤中,两次加密方式依次采用HmacShal加密算法和md5等摘要加密算法,当然,加密方式和次数并不限于此。更优的,所述第一字符串为32位序列。
步骤S13、所述终端接收所述服务器端发出的通信请求所对应的数据。
本发明还提供另一种无状态通信安全签名方法,以下以几种实施例进行说明:
实施例一
请参阅图2,为本发明提供的另一种无状态通信安全签名方法的实施例一的流程框图。本发明提供了另一种无状态通信安全签名方法,该方法包括如下步骤:
步骤S21、服务器端存储与终端统一的预定密钥secretKey,如appotronics-2017。
步骤S22、所述服务器端接收所述终端发出的通信请求的数据包,所述数据包包括所述终端经加密后得到的第一字符串sign,其中,所述第一字符串sign由所述终端的预定密钥secretKey、当前时间戳和功能参数经过至少两次加密得到。
本步骤中,两次加密方式依次采用HmacShal加密算法和md5等摘要加密算法,当然,加密方式和次数并不限于此。本实施方式中,具体的:
所述终端把请求的所述数据包的所述功能参数取出,用约定的排序方法排序,如SortMap排序,遍历生成字符串:keyName=keyValue&keyName=keyValue的样式。
例如,所述服务器端代码实现如下:
Map<String,String[]> reqMap = request.getParameterMap();
SortedMap<String,Object> sortMap = new TreeMap<String,Object>();
sortMap.putAll(reqMap);
StringBuffer stringBuffer = new StringBuffer();
for (Entry<String, String[]> entry : reqMap.entrySet()) {
stringBuffer.append(entry.getKey()).append("=")
.append(entry.getValue()).append("&");
};
继续用&拼接所述服务器端和所述终端统一的所述预定密钥和所述当前时间戳:keyName=keyValue&keyName=keyValue&secrectKey=
appotronics-2017&timeStamp=1490952002359,如果所述数据包为空时,则只有secrectKey=appotronics-2017&timeStamp=1490952002359;
采用HmacSha1加密算法加密以上字符串,得到第一次加密字符串,其中,所述secretKey为上述预定密钥secretKey:appotronics-2017;
再采用md5摘要算法将所述第一次加密字符串加密成32位序列,从而得到第一字符串sign。即所述第一字符串sign为32位序列。
例如,所述服务器端实现代码如下:
String signValidString = MD5.encode32(CommonCodecUtils.HmacSha1(
stringBuffer.toString(), secretKey).toString());
最后,在所述终端的请求的数据包的头部header加上:
Sign:上述生成的数据包的第一字符串;
timestamp:上述生成的所述当前时间戳。
步骤S23、所述服务器端生成第二字符串sign’:
所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串sign’。
本步骤中,所述当前时间戳从所述服务器端接收的所述数据包的头部中提取,所述功能参数从所述终端与所述服务器端建立通信的接口获得,所述预定密钥为已知。
步骤S24、所述服务器端比较所述第一字符串sign和所述第二字符串sign’是否相同:
若不相同,则数据请求失败;
若相同:则以所述终端的IP和所述第一字符串sign为关键字查找所述服务器端的数据库并判断所述第一字符串sign是否进行过请求,若是,则数据请求失败;若否,则进入步骤S25。
步骤S25、所述服务器端比较接收的所述数据包中的所述当前时间戳是否比所述服务器端的数据库中存储的所述终端的IP对应的时间戳更新:
若否,则数据请求失败,且将所述服务器端的数据库中所述终端的IP对应的时间戳更新为所述数据包中的所述当前时间戳;
若是,则进入步骤S26。
步骤S26、所述服务器端更新其数据库中存储的所述终端的IP对应的所述第一字符串sign和对应的时间戳为所述数据包中的所述第一字符串和所述当前时间戳,并将所述终端请求的数据发送给所述终端。
实施例二
请结合参阅图3,为本发明提供的另一种无状态通信安全签名方法实施例二的部分步骤流程框图。
本实施方式与实施例一基本相同,不同的是,在可以保证所述终端时间有效,且不会随意被变更的情况下,本实施方式中,所述无状态通信安全签名方法除了包括实施例一的步骤S21-S26以外,还包括:
步骤S27、所述服务器端把所述终端请求过的所述第一字符串和时间戳以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,每次比对时,使得请求过的所述第一字符串无法重复请求,且要求所述时间戳比所述服务器端的数据库保存的所述当前时间戳大,从而达到所述终端外部请求无法频繁重复请求。
实施例三
请结合参阅图4,为本发明提供的另一种无状态通信安全签名方法实施例三的部分步骤流程框图。
本实施方式与实施例一基本相同,不同的是,在终端时间有效,但系统时间可能偶尔被用户修改的情况下,本实施方式中,所述无状态通信安全签名方法除了包括实施例一的步骤S21-S26以外,还包括:
步骤S27、所述服务器端把所述终端请求过的所述第一字符串和时间戳以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,每次比对时,使得请求过的所述第一字符串无法重复请求,且要求所述时间戳比所述服务器端的数据库保存的所述当前时间戳大;当通过所述预定密钥签名验证正确,但所述服务器端的数据库保存的所述当前时间戳不比该次请求的所述时间戳小时,拦截该次请求,并修改所述服务器端的数据库中的所述当前时间戳并记录为本次请求的所述时间戳。从而达到所述终端的外部请求无法频繁重复请求。
请结合参阅图10,为图4对应的实施例三的时序图。其中,在该时序图中,APP示终端,Server示服务器端,DB示数据库。本发明的无状态通信安全签名方法的其它实施例也同样可用时序图表示,在此,以实施例三的时序图为例进行进一步说明,其它实施例的时序图均同理,具体如下:
所述终端获取本次通信请求的数据包,将所述数据包以约定方式排序,并以key=value的形式用&符号连接;
所述终端获取预定密钥secretKey和当前时间戳timestamp,继续以key=value的形式用&拼接形成字符串;
所述终端先用HmacShal把上述字符串以secretKey的值为预定密钥加密得到第一次加密字符串,再用32位md5摘要算法加密得到第一字符串sign;
所述终端把sign、timestamp加入到本次通讯请求的数据包的头部header;
所述终端将所述数据包发送至所述服务器端实现数据请求;
所述服务器端生成第二字符串sign’:所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串sign’,并将sign’与sign比较:
比较结果不同,则所述终端数据请求失败。所述服务器端返回json数据通知终端请求失败;
比较结果相同,则所述服务器端请求向所述数据库获取该终端的IP对应的数据记录sign和timestamp;
所述数据库将该请求的数据记录返回至所述服务器端;
所述服务器端判断所述数据库记录的sign是否进行过请求:即所述数据库存记录的sign是否与本次请求的sign不同,所述数据库存记录timestamp是否小于本次请求的timestamp:
不满足条件,则所述终端数据请求失败。所述服务器端向所述终端返回json数据通知所述终端请求失败;
或者,数据库存记录的sign是否与本次请求的sign不同,但本次请求的timestamp小于所述数据库存储的timestamp;
所述服务器端将所述数据库中的timestamp的值替换为本次请求的timestamp;并通知所述服务器端替换成功;
所述终端数据请求失败。所述服务器端返回json数据通知所述终端请求失败;
满足条件:所述服务器端将数据库中的timestamp和sign值替换为本次请求的timestamp和sign;所述数据库通知服务器端替换成功;
所述服务器端将所述终端请求的数据发送给所述终端。
实施例四
请结合参阅图5,为本发明提供的另一种无状态通信安全签名方法实施例四的部分步骤流程框图。
本实施方式与实施例一基本相同,不同的是,当终端时间不准确,且系统时间经常被修改的情况下,本实施方式中,所述无状态通信安全签名方法除了包括实施例一的步骤S21-S26以外,还包括:
步骤S27、所述服务器端把所述终端请求过的所述第一字符串以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,每次比对时,使得请求过的所述第一字符串无法重复请求,从而实现所述终端的外部请求无法频繁重复请求。
该实施方式的方案依然可以实现请求的一次性时效,但如果黑客或攻击者发现该拦截的处理方法,黑客或攻击者可以准备两套所述第一字符串sign,轮询的方式请求达到攻击,但依然无法改变本发明其他安全功能。
实施例五
请结合参阅图6,为本发明提供的另一种无状态通信安全签名方法实施例五的部分步骤流程框图。
本实施方式与实施例一基本相同,不同的是,无论所述终端时间准不准确,系统时间被不被改变的情况下,本实施方式中,所述无状态通信安全签名方法除了包括实施例一的步骤S21-S26以外,还包括:
步骤S27、所述终端的时间戳为请求网络时间戳或请求服务器端的服务器集群的专用于获取系统时间的服务器所返回的返回时间戳,所述服务器端把所述终端请求过的所述第一字符串和所述时间戳以IP地址为单位保存或更新在所述服务器端的数据库,每次比对时,使得请求过的所述第一字符串无法重复请求,且要求所述时间戳比所述服务器端的数据库保存的所述当前时间戳大,从而实现所述终端的外部请求无法频繁重复请求。
需要说明的是,本实施方式的方案也可以实现签名一次性时效,但移动应用讲求用户体验,而本方案需要牺牲响应速度。
实施例六
请结合参阅图7,为本发明提供的另一种无状态通信安全签名方法实施例六的部分步骤流程框图。
本实施方式与实施例一基本相同,不同的是,无论所述终端时间准不准确,系统时间被不被改变的情况下,本实施方式中,所述无状态通信安全签名方法除了包括实施例一的步骤S21-S26以外,还包括:
步骤S27、所述服务器端把所述终端请求过的所述第一字符串和时间戳以IP地址为单位保存或更新在所述服务器端的数据库,隔预设时间清理,每次比对所述IP地址所保存的所述第一字符串列表,若所述第一字符串列表中无相同的所述第一字符串,则通过请求,从而实现所述终端的外部请求无法频繁重复请求。
需要说明的是,本实施方式的方案也可以实现签名一次性时效,但移动应用讲求用户体验,而本方案需要牺牲响应速度。
即本发明的明无状态通信安全签名方法中,上述实施例五和实施例六相近,可以实现签名一次性时效,但都需要牺牲响应速度。
请结合参阅图8,为本发明提供的终端的结构示意图。本发明还提供一种终端80,包括处理器81、收发机82、存储器83、用户接口84及总线接口85,其中:
所述处理器81用于读取所述存储器83中的程序,执行上述无状态通信安全签名方法中的步骤,比如执行如图1的流程框图所示的步骤:
步骤S11、终端存储与服务器端统一的预定密钥secretKey,如appotronics-2017。
步骤S12、终端向服务器端发送通信请求:所述终端将所述预定密钥、当前时间戳和功能参数经过至少两次加密得到加密后的第一字符串sign,将所述第一字符串sign和所述当前时间戳装至数据包的头部header中,并将所述数据包发送至所述服务器端实现通信请求。
本步骤中,两次加密方式依次采用HmacShal加密算法和md5等摘要加密算法,当然,加密方式和次数并不限于此。更优的,所述第一字符串为32位序列。
步骤S13、所述终端接收所述服务器端发出的通信请求所对应的数据。
另外,本发明还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现本发明提供的上述无状态通信安全签名方法中的步骤,比如执行如图1的流程框图所示的步骤S11~S13。
请结合图9,为本发明提供的服务器端的结构示意图。本发明还提供了一种服务器端,包括:处理器91、收发机92、存储器93、用户接口94及总线接口95,其中:
所述处理器91用于读取所述存储器93中的程序,执行上述无状态通信安全签名方法中的步骤。比如执行如图2~7中任一实施方式的流程框图所示的步骤,比如执行图2所示的无状态通信安全签名方法的步骤:
步骤S21、服务器端存储与终端统一的预定密钥secretKey,如appotronics-2017。
步骤S22、所述服务器端接收所述终端发出的通信请求的数据包,所述数据包包括所述终端经加密后得到的第一字符串sign,其中,所述第一字符串sign由所述终端的预定密钥secretKey、当前时间戳和功能参数经过至少两次加密得到。
本步骤中,两次加密方式依次采用HmacShal加密算法和md5等摘要加密算法,当然,加密方式和次数并不限于此。本实施方式中,具体的:
所述终端把请求的所述数据包的所述功能参数取出,用约定的排序方法排序,如SortMap排序,遍历生成字符串:keyName=keyValue&keyName=keyValue的样式。
例如,所述服务器端代码实现如下:
Map<String,String[]> reqMap = request.getParameterMap();
SortedMap<String,Object> sortMap = new TreeMap<String,Object>();
sortMap.putAll(reqMap);
StringBuffer stringBuffer = new StringBuffer();
for (Entry<String, String[]> entry : reqMap.entrySet()) {
stringBuffer.append(entry.getKey()).append("=")
.append(entry.getValue()).append("&");
};
继续用&拼接所述服务器端和所述终端统一的所述预定密钥和所述当前时间戳:keyName=keyValue&keyName=keyValue&secrectKey=
appotronics-2017&timeStamp=1490952002359,如果所述数据包为空时,则只有secrectKey=appotronics-2017&timeStamp=1490952002359;
采用HmacSha1加密算法加密以上字符串,得到第一次加密字符串,其中,所述secretKey为上述预定密钥secretKey:appotronics-2017;
再采用md5摘要算法将所述第一次加密字符串加密成32位序列,从而得到第一字符串sign。即所述第一字符串sign为32位序列。
例如,所述服务器端实现代码如下:
String signValidString = MD5.encode32(CommonCodecUtils.HmacSha1(
stringBuffer.toString(), secretKey).toString());
最后,在所述终端的请求的数据包的头部header加上:
Sign:上述生成的数据包;
timestamp:上述生成的所述当前时间戳。
步骤S23、所述服务器端生成第二字符串sign’:
所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串sign’。
本步骤中,所述当前时间戳从所述服务器端接收的所述数据包的头部中提取,所述功能参数从所述终端与所述服务器端建立通信的接口获得,所述预定密钥为已知。
步骤S24、所述服务器端比较所述第一字符串sign和所述第二字符串sign’是否相同:
若不相同,则数据请求失败;
若相同:则以所述终端的IP和所述第一字符串sign为关键字查找所述服务器端的数据库并判断所述第一字符串sign是否进行过请求,若是,则数据请求失败;若否,则进入步骤S25。
步骤S25、所述服务器端比较接收的所述数据包中的所述当前时间戳是否比所述服务器端的数据库中存储的所述终端的IP对应的时间戳更新:
若否,则数据请求失败,且将所述服务器端的数据库中所述终端的IP对应的时间戳更新为所述数据包中的所述当前时间戳;
若是,则进入步骤S26。
步骤S26、所述服务器端更新其数据库中存储的所述终端的IP对应的所述第一字符串sign和对应的时间戳为所述数据包中的所述第一字符串和所述当前时间戳,并将所述终端请求的数据发送给所述终端。
另外,本发明还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现本发明提供的上述无状态通信安全签名方法中的步骤,比如执行如图2~7的流程框图所示的步骤,如图2中的步骤S21~S26,在此不再赘述。
需要说明的是,在图8和图9中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器81/91代表的一个或多个处理器、存储器83/93及总线接口85/95代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口85/95提供接口。收发机82/92可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的用户设备,用户接口84/94还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器81/91负责管理总线架构和通常的处理,存储器83/93可以存储处理器81/91在执行操作时所使用的数据。
在本申请所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:U 盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,以上参照附图所描述的各个实施例仅用以说明本发明而非限制本发明的范围,本领域的普通技术人员应当理解,在不脱离本发明的精神和范围的前提下对本发明进行的修改或者等同替换,均应涵盖在本发明的范围之内。此外,除上下文另有所指外,以单数形式出现的词包括复数形式,反之亦然。另外,除非特别说明,那么任何实施例的全部或一部分可结合任何其它实施例的全部或一部分来使用。
与相关技术相比,本发明的无状态通信安全签名方法中,所述终端在请求前,将本次请求的数据包里的功能参数通过指定排序,再结合所述预定密钥和所述当前时间戳,依次采用Hmacsha1加密算法和md5摘要加密算法得到32位序列,放在请求的数据包的头部里作为所述第一字符串;所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串,通过比较所述第一字符串和所述第二字符串实现所述终端请求的验证,相同则通过验证。上述方法在普通互联网应用的安全问题,特别是在各式智能设备厂商的应用系统的设备需要与互联网的所述服务器端进行无状态通信时,其安全性更好且可靠性强。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (16)

1.一种无状态通信安全签名方法,其特征在于,该方法包括如下步骤:
终端存储与服务器端统一的预定密钥;
终端向服务器端发送通信请求:所述终端将所述预定密钥、当前时间戳和功能参数经过至少两次加密得到加密后的第一字符串,将所述第一字符串和所述当前时间戳装至数据包的头部中,并将所述数据包发送至所述服务器端实现通信请求;
所述终端接收所述服务器端发出的通信请求所对应的数据,其中,该数据为所述服务器经过如下步骤产生:
所述服务器端生成第二字符串:所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串;
所述服务器端比较所述第一字符串和所述第二字符串是否相同,若不相同,则通信请求失败;若相同,则所述服务器端以所述终端的IP和所述第一字符串为关键字查找所述服务器端的数据库并判断所述第一字符串是否进行过请求,若是,则数据请求失败;若否,则进入下一步骤;
所述服务器端比较接收的所述数据包中的所述当前时间戳是否比所述服务器端的数据库中存储的所述终端的IP对应的时间戳更新,若否,则数据请求失败,且将所述服务器端的数据库中所述终端的IP对应的时间戳更新为所述数据包中的所述当前时间戳;若是,则进入下一步骤;
所述服务器端更新其数据库中存储的所述终端的IP对应的所述第一字符串和对应的时间戳为所述数据包中的所述第一字符串和所述当前时间戳,并将所述终端请求的数据发送给所述终端。
2.根据权利要求1所述的无状态通信安全签名方法,其特征在于,在所述终端向服务器端发送通信请求步骤中,两次加密方式依次采用HmacShal加密算法和md5摘要加密算法。
3.根据权利要求2所述的无状态通信安全签名方法,其特征在于,所述第一字符串为32位序列。
4.一种无状态通信安全签名方法,其特征在于,该方法包括如下步骤:
服务器端定义与终端统一的预定密钥;
所述服务器端接收所述终端发出的通信请求的数据包,所述数据包包括所述终端经加密后得到的第一字符串,其中,所述第一字符串由所述终端的预定密钥、当前时间戳和功能参数经过至少两次加密得到;
服务器端生成第二字符串:所述服务器端将所述预定密钥、所述当前时间戳和所述功能参数按所述终端的加密方式进行加密得到第二字符串;
所述服务器端比较所述第一字符串和所述第二字符串是否相同,若不相同,则通信请求失败;若相同,则所述服务器端以所述终端的IP和所述第一字符串为关键字查找所述服务器端的数据库并判断所述第一字符串是否进行过请求,若是,则数据请求失败;若否,则进入下一步骤;
所述服务器端比较接收的所述数据包中的所述当前时间戳是否比所述服务器端的数据库中存储的所述终端的IP对应的时间戳更新,若否,则数据请求失败,且将所述服务器端的数据库中所述终端的IP对应的时间戳更新为所述数据包中的所述当前时间戳;若是,则进入下一步骤;
所述服务器端更新其数据库中存储的所述终端的IP对应的所述第一字符串和对应的时间戳为所述数据包中的所述第一字符串和所述当前时间戳,并将所述终端请求的数据发送给所述终端。
5.根据权利要求4所述的无状态通信安全签名方法,其特征在于,在所述服务器端接收所述终端发出的通信请求的数据包中,两次加密方式依次采用HmacShal加密算法和md5摘要加密算法。
6.根据权利要求5所述的无状态通信安全签名方法,其特征在于,所述第一字符串为32位序列。
7.根据权利要求6所述的无状态通信安全签名方法,其特征在于,在所述服务器端生成第二字符串的步骤中,所述当前时间戳从所述服务器端接收的所述数据包的头部中提取,所述功能参数从所述服务器端与所述终端建立通信的接口获得。
8.根据权利要求4所述的无状态通信安全签名方法,其特征在于,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串和时间戳以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,每次对比时,使得请求过的所述第一字符串无法重复请求,且要求所述当前时间戳比所述服务器端的数据库保存的时间戳大。
9.根据权利要求4所述的无状态通信安全签名方法,其特征在于,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串和时间戳以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,每次对比时,使得请求过的所述第一字符串无法重复请求,且要求所述当前时间戳比所述服务器端的数据库保存的时间戳大;当通过所述预定密钥签名验证正确,但所述服务器端的数据库保存的时间戳不比该次请求的时间戳小时,拦截该次请求,并修改所述服务器端的数据库中的所述当前时间戳并记录为本次请求的时间戳。
10.根据权利要求4所述的无状态通信安全签名方法,其特征在于,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串以所述终端的IP地址为单位保存或更新在所述服务器端的数据库,使得请求过的所述第一字符串无法重复请求。
11.根据权利要求4所述的无状态通信安全签名方法,其特征在于,还包括:
所述服务器端将其数据库更新:所述终端的时间戳为请求网络时间戳或请求服务器端的服务器集群的专用于获取系统时间的服务器所返回的返回时间戳,所述服务器端把所述终端请求过的所述第一字符串和所述时间戳以IP地址为单位保存或更新在所述服务器端的数据库,每次对比时,使得请求过的所述第一字符串无法重复请求,且要求所述当前时间戳比所述服务器端的数据库保存的所述时间戳大。
12.根据权利要求4所述的无状态通信安全签名方法,其特征在于,还包括:
所述服务器端将其数据库更新:所述服务器端把所述终端请求过的所述第一字符串和时间戳以IP地址为单位保存或更新在所述服务器端的数据库,隔预设时间清理,每次比对所述IP地址所保存的所述第一字符串列表,若所述第一字符串列表中无相同的所述第一字符串,则通过请求。
13.一种终端,其特征在于,包括:处理器、收发机、存储器、用户接口及总线接口,其中:
所述处理器用于读取所述存储器中的程序,执行如权利要求1至3中任一项所述的无状态通信安全签名方法中的步骤。
14.一种服务器端,其特征在于,包括:处理器、收发机、存储器、用户接口及总线接口,其中:
所述处理器用于读取所述存储器中的程序,执行如权利要求4至12中任一项所述的无状态通信安全签名方法中的步骤。
15.一种计算机可读存储介质,其存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的无状态通信安全签名方法中的步骤。
16.一种计算机可读存储介质,其存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求4至12中任一项所述的无状态通信安全签名方法中的步骤。
CN201710632933.6A 2017-07-28 2017-07-28 无状态通信安全签名方法、终端及服务器端 Active CN109309655B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710632933.6A CN109309655B (zh) 2017-07-28 2017-07-28 无状态通信安全签名方法、终端及服务器端
PCT/CN2018/074757 WO2019019593A1 (zh) 2017-07-28 2018-01-31 无状态通信安全签名方法、终端及服务器端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710632933.6A CN109309655B (zh) 2017-07-28 2017-07-28 无状态通信安全签名方法、终端及服务器端

Publications (2)

Publication Number Publication Date
CN109309655A CN109309655A (zh) 2019-02-05
CN109309655B true CN109309655B (zh) 2020-12-04

Family

ID=65039364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710632933.6A Active CN109309655B (zh) 2017-07-28 2017-07-28 无状态通信安全签名方法、终端及服务器端

Country Status (2)

Country Link
CN (1) CN109309655B (zh)
WO (1) WO2019019593A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020070170A (ja) 2018-11-01 2020-05-07 富士ゼロックス株式会社 画像形成装置
CN109413105A (zh) * 2018-12-12 2019-03-01 深圳市丰巢科技有限公司 一种网络请求处理方法、装置、计算机设备及存储介质
CN113541953A (zh) * 2020-04-21 2021-10-22 上海大众祥云运输管理有限公司 一种用于交通客运信息管理系统的鉴权方法
CN112804222B (zh) * 2020-12-31 2022-11-15 中国平安人寿保险股份有限公司 基于云部署的数据传输方法、装置、设备及存储介质
CN112948896A (zh) * 2021-01-28 2021-06-11 深圳市迅雷网文化有限公司 签名信息的验证方法以及信息签名方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647746A (zh) * 2013-11-01 2014-03-19 北京奇虎科技有限公司 用户登录的方法、设备及系统
CN103973695A (zh) * 2014-05-16 2014-08-06 浪潮电子信息产业股份有限公司 一种与服务器验证的签名算法
CN105681470A (zh) * 2012-03-29 2016-06-15 北京奇虎科技有限公司 基于超文本传输协议的通信方法、服务器、终端
CN106341429A (zh) * 2016-11-28 2017-01-18 浙江工业大学 一种保护服务器数据安全的认证方法
KR101714742B1 (ko) * 2015-10-22 2017-03-10 고려대학교 산학협력단 원격제어를 위한 인증 방법 및 서버

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100373853C (zh) * 2005-10-10 2008-03-05 中兴通讯股份有限公司 一种流媒体服务请求认证方法和系统
US20120117385A1 (en) * 2010-11-09 2012-05-10 International Business Machines Corporation Method and apparatus for data encryption
CN103475664B (zh) * 2013-09-18 2017-02-15 北京工业大学 面向Android的数字证据的可信提取方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105681470A (zh) * 2012-03-29 2016-06-15 北京奇虎科技有限公司 基于超文本传输协议的通信方法、服务器、终端
CN103647746A (zh) * 2013-11-01 2014-03-19 北京奇虎科技有限公司 用户登录的方法、设备及系统
CN103973695A (zh) * 2014-05-16 2014-08-06 浪潮电子信息产业股份有限公司 一种与服务器验证的签名算法
KR101714742B1 (ko) * 2015-10-22 2017-03-10 고려대학교 산학협력단 원격제어를 위한 인증 방법 및 서버
CN106341429A (zh) * 2016-11-28 2017-01-18 浙江工业大学 一种保护服务器数据安全的认证方法

Also Published As

Publication number Publication date
CN109309655A (zh) 2019-02-05
WO2019019593A1 (zh) 2019-01-31

Similar Documents

Publication Publication Date Title
CN109309655B (zh) 无状态通信安全签名方法、终端及服务器端
US9781109B2 (en) Method, terminal device, and network device for improving information security
US9705678B1 (en) Fast CAN message authentication for vehicular systems
CN107491519B (zh) 区块链账本的查询方法及装置
CN106790156B (zh) 一种智能设备绑定方法及装置
US20160036796A1 (en) Method and system for facilitating terminal identifiers
KR20150045790A (ko) 신뢰 보안 플랫폼 모듈을 이용한 보안 애플리케이션 인증 및 관리 방법 및 장치
CN110958239B (zh) 访问请求的校验方法和装置、存储介质及电子装置
CN112838951B (zh) 一种终端设备的运维方法、装置、系统及存储介质
CN104935435A (zh) 登录方法、终端及应用服务器
CN113746638A (zh) Nft存储方法、nft还原方法、计算机设备和存储介质
CN110619022B (zh) 基于区块链网络的节点检测方法、装置、设备及存储介质
CN103971059A (zh) 一种Cookie本地存储与使用方法
CN111753312B (zh) 数据处理方法、装置、设备和系统
CN109391473A (zh) 一种电子签章的方法、装置及存储介质
CN102769629A (zh) 客户端密码存储方法及服务系统
CN109842554B (zh) 设备服务的路由方法、装置、设备及存储介质
JP4453656B2 (ja) 端末認証装置および方法
CN115499487B (zh) 一种服务器配置文件的更新方法、装置、存储介质及设备
CN110177096A (zh) 客户端认证方法、装置、介质和计算设备
CN114448722A (zh) 跨浏览器登录方法、装置、计算机设备和存储介质
CN110995738B (zh) 暴力破解行为识别方法、装置、电子设备及可读存储介质
CN108769037B (zh) 一种数据处理的方法、装置、计算机存储介质及终端
KR100739741B1 (ko) 인증정보의 제공에 의한 화상형성 시스템 및 방법과화상형성장치
KR20140043628A (ko) 보안 로그인 처리 방법

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
GR01 Patent grant
GR01 Patent grant