CN111835514A - 一种前后端分离数据安全交互的实现方法及系统 - Google Patents
一种前后端分离数据安全交互的实现方法及系统 Download PDFInfo
- Publication number
- CN111835514A CN111835514A CN202010718573.3A CN202010718573A CN111835514A CN 111835514 A CN111835514 A CN 111835514A CN 202010718573 A CN202010718573 A CN 202010718573A CN 111835514 A CN111835514 A CN 111835514A
- Authority
- CN
- China
- Prior art keywords
- key
- request
- data
- public
- unique identification
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
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)
- Storage Device Security (AREA)
Abstract
本发明公开了一种前后端分离数据安全交互的实现方法及系统,所述方法包括如下步骤:步骤S1,后端根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH算法与前端交换密钥;步骤S2,前端进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端;步骤S3,后端于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
Description
技术领域
本发明涉及Web应用技术领域,特别是涉及一种前后端分离数据安全交互的实现方法及系统。
背景技术
目前,随着Web应用技术的发展,传统互联网前后端耦合式的应用逐渐被前后端分离的Web应用系统取代。传统Web应用中,多采用session机制来维持会话以进行客户端和服务端的数据交互过程中的认证;而在前后端分离的架构下,前后端职责分离:前端处理页面逻辑,后端负责数据处理,前后端独立开发,不相互依赖,可同时进行开发,并且后端可以跨终端(平台)提供服务。在前后端分离的架构下,一般都是后端提供一系列的数据接口供多种前端调用,而这些接口通常是无状态的,暴露在复杂的互联网环境中,前后端数据的交互存在着被篡改和重放等重大安全问题。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种前后端分离数据安全交互的实现方法及系统,以解决现有Web应用中前后端分离数据交互过程中安全性不足的问题。
为达上述目的,本发明提供一种前后端分离数据安全交互的实现方法,包括如下步骤:
步骤S1,后端根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH算法与前端交换密钥;
步骤S2,前端进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端;
步骤S3,后端于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
优选地,步骤S1进一步包括:
步骤S100,后端于接收到前端传递的有效用户账号信息时,根据该有效用户账号信息生成全局唯一标识凭证;
步骤S101,后端生成DH算法所需的私钥dh_private_key以及两个很大的质数p、g,使用DH算法计算后端公钥dh_public_key,并将生成的全局唯一标识凭证、质数p和g以及后端公钥dh_public_key返回给前端,同时后端将相关数据记录入库;
步骤S102,前端将返回的所述全局唯一标识凭证、质数p和g以及后端公钥dh_public_key存入客户端,并将前端私钥private_key存入客户端,基于所述前端私钥private_key以及后端返回的质数p、g计算前端公钥public_key;
步骤S103,前端利用所述全局唯一标识凭证,将前端公钥public_key发送至后端;
步骤S104,后端验证所述全局唯一标识凭证有效性,将所述全局唯一标识凭证与所述前端公钥public_key进行绑定入库,完成密钥交换。
优选地,所述后端公钥dh_public_key计算如下:
dh_public_key=(g^dh_private_key)%p。
优选地,所述前端公钥public_key计算如下:
public_key=(g^private_key)%p。
优选地,步骤S2进一步包括:
步骤S200,请求数据准备,在请求原始数据中增加一个随机字符串,通过参数'_'传递,并生成随机RequestId,获取当前Unix时间戳,以及提取将要发生的HTTP请求中部分消息;
步骤S201,对请求数据进行摘要,生成请求摘要,得到签名Signature;
步骤S202,调用统一数据请求方法将所述全局唯一标识凭证、签名Signature、Unix时间戳、RequestId放入HTTP请求的自定义的HTTP头文件中,再将完整请求发送给后端。
优选地,于步骤S201中,将要参与计算摘要的元素用换行符拼接成签名原文,使用DH算法交换的共享密钥shared_key作为签名密钥,对所述签名原文进行Hmac-SHA256摘要,得到签名Signature。
优选地,于步骤S201中,所述参与计算摘要的元素包括但不限于:
HTTP动词;
HTTP头Content-Type的值;
将要请求接口的URI;
前端接口数据产生的随机字符串;
当前的Unix时间戳timestamp;
用于标记RequestId产生的nonce。
优选地,所述共享密钥计算如下:
shared_key=(dh_public_key^private_key)%p。
优选地,步骤S3进一步包括:
步骤S300,校验所述全局唯一标识凭证的有效性;
步骤S301,验证RequestId是否已经存在;
步骤S302,校验传递Unix时间戳与服务器时间差;
步骤S303,计算出所述全局唯一标识凭证绑定的共享密钥,并按照步骤S201同样规则进行摘要签名计算,并将其与前端请求的签名比对;
步骤S304,上述处理过程任何一项校验不符合直接返回错误,全部校验通过视为合法请求,继续后续的业务数据处理。
为达到上述目的,本发明还提供一种前后端分离数据安全交互的实现系统,包括:
前端,通过调用登录接口,传递有效用户账号信息至后端,在获得后端生成的全局唯一标识凭证的基础上,采用DH算法与后端交换密钥,进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端;
后端,根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH算法与前端交换密钥,于接收到前端的数据请求时,于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
与现有技术相比,本发明一种前后端分离数据安全交互的实现方法及系统通过前端调用登录接口,传递有效用户账号信息至后端,在获得后端生成的全局唯一标识凭证的基础上,采用DH算法与后端交换密钥,并在进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端,后端于接收到前端的数据请求时,于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息,本发明使前后端分离数据交互的安全得以保证,无论是使用网络嗅探或安全测试工具进行拦截修改请求或请求重放,都不能通过后端校验,在几乎不影响系统数据传输效率的情况下,保证了应用数据传输的可靠性,极大提高了应用系统的安全性。
附图说明
图1为本发明一种前后端分离数据安全交互的实现方法的步骤流程图;
图2为本发明一种前后端分离数据安全交互的实现系统的系统架构图;
图3为本发明实施例中前后端分离数据安全交互的实现流程图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种前后端分离数据安全交互的实现方法的步骤流程图。如图1所示,本发明一种前后端分离数据安全交互的实现方法,包括如下步骤:
步骤S1,后端根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH(Diffie-Hellman)算法与前端交换密钥。
具体地,步骤S1进一步包括:
步骤S100,后端于接收到前端传递的有效用户账号信息时,根据该有效用户账号信息生成全局唯一标识凭证。在本发明具体实施例中,所述用户账号信息包括但不限制于用户名及其唯一的随机串UUID、密码、当前unix时间戳等,具体地,所述全局唯一标识凭证采用Hmac-SHA256签名生成,其中参与签名的项包括:用户名、唯一的随机串UUID、当前unix时间戳t,较佳地,尽管产生重复UUID并造成凭证错误的几率极低,于步骤S100中,还将生成的全局唯一标识凭证和其他已有的全局唯一标识凭证比对,若已经存在,则按相同算法重新生成。也就是说,当前端调用登录接口,输入用户名和密码等用户账号信息传送至后端,后端会对接收的用户名和密码后进行验证,当验证为有效用户账号信息时,生成全局唯一标识凭证。
步骤S101,后端生成DH算法所需的私钥dh_private_key以及两个很大的质数p、g,使用所述DH算法计算后端公钥dh_public_key,并将生成的全局唯一标识凭证、质数p和g以及后端公钥dh_public_key返回给前端,同时后端将相关数据记录入库。在本发明具体实施例中,私钥dh_private_key采用随机生成的秘密自然数,质数p和g可通过欧拉筛法(线性筛)质数发生器来生成,为提升运行效率,可将原根‘g’设为2或5等较小的质数,后端公钥dh_public_key计算如下:
dh_public_key=(g^dh_private_key)%p
一般地,根据著名的离散对数问题,建议dh_private_key至少100位长,质数p则至少300位。
步骤S102,前端将返回的所述全局唯一标识凭证、质数p和g以及后端DH密钥(即后端公钥dh_public_key)存入客户端sessionStorage(sessionStorage内容仅浏览器当前窗口有效),并生成本地DH密钥(随机生成的秘密自然数),即前端私钥private_key,存入客户端sessionStorage,基于前端私钥private_key以及后端返回的质数p、g计算前端公钥public_key。在本发明具体实施例中,前端公钥public_key计算如下:
public_key=(g^private_key)%p
步骤S103,前端利用所述全局唯一标识凭证,将前端公钥public_key发送至后端。
步骤S104,后端接收到所述全局唯一标识凭证后验证所述全局唯一标识凭证有效性,将所述全局唯一标识凭证与前端公钥public_key进行绑定入库,完成密钥交换。
至此,以上步骤成功则完成了登录步骤,前端跳转到业务页面,可以进行后续数据API的请求
步骤S2,前端进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将数据请求发送给后端。
具体地,步骤S2进一步包括:
步骤S200,请求数据准备。对请求数据准备如下:
1、规定所有请求数据都额外增加一个随机字符串,通过key为'_'的参数传递,传递形式和一般参数一样:key=value。具体地,在请求原始数据中增加参数:key为'_',value为随机生成的字符串,即额外多传递一个参数,这个参数的名字是’_’,其值为随机的字符串,例如,GET请求,直接附加到HTTP query中,如果是POST、PUT等其他请求,则放到HTTP entity-body中,形如:_=xxxxxxxxxxx,而随机数的生成可例如:Math.random().toString(16).substr(2)
2、生成随机RequestId,用nonce标识;
3、获取当前Unix时间戳,用timestamp标识;
4、提取将要发生的HTTP请求中部分消息:HTTP动词、HTTP头Content-Type、请求的URI。
步骤S201,对请求数据进行摘要,生成请求摘要:将要参与计算摘要的元素用换行符拼接成签名原文,使用DH算法交换的共享密钥shared_key作为签名密钥(secretKey),对签名原文进行Hmac-SHA256摘要,得到签名。在本发明具体实施例中,摘要计算元素包括如下:
1、HTTP动词
2、HTTP头Content-Type的值
3、将要请求接口的URI
4、前端接口数据产生的随机字符串
5、当前的Unix时间戳timestamp
6、用于标记RequestId的产生的nonce
在本发明具体实施例中,拼接签名原文如下:
StringTOSign=HTTP-Verb+"\n"+
Content-Type+"\n"+
REQUEST_URI+"\n"+
Random-String+"\n"+
Unix-timestamp+"\n"+
Nonce
共享密钥如下:
shared_key=(dh_public_key^private_key)%p
计算签名如下:
Signature=Hmac-SHA256(UTF-8-Encoding-Of(StringToSign),
shared_key));
步骤S202,在业务数据交互时,前端调用统一数据请求方法将所述全局唯一标识凭证、签名Signature、Unix时间戳(Unix-timestamp)、RequestId nonce放入HTTP请求的自定义的HTTP header中,再将完整请求发送给后端。
步骤S3,后端于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
具体地,步骤S3进一步包括:
步骤S300,校验所述全局唯一标识凭证的有效性;
步骤S301,验证RequestId nonce的值,如果已经存在,则为重放请求,校验不通过;
步骤S302,校验传递Unix时间戳与服务器时间差,相差较大视为无效请求,校验不符合;
步骤S303,计算出所述全局唯一标识凭证绑定的共享密钥,并按照步骤S201同样规则进行摘要签名计算(与S201不同之处在于shared_key的计算方式为:shared_key=(public_key^dh_private_key)%p),并将其与前端Signature比对,如果不一致则为篡改;
步骤S304,上述处理过程任何一项校验不符合直接返回错误,全部校验通过视为合法请求,继续后续的业务数据处理。
图2为本发明一种前后端分离数据安全交互的实现系统的系统架构图。如图2所示,本发明一种前后端分离数据安全交互的实现系统,包括:
前端20,通过调用登录接口,传递有效用户账号信息至后端21,在获得后端21生成的全局唯一标识凭证的基础上,采用DH(Diffie-Hellman)算法与后端交换密钥,进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将数据请求发送给后端。
后端21,根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH(Diffie-Hellman)算法与前端交换密钥,于接收到前端20的数据请求时,于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
具体地,前端20进一步包括:
登录模块201,用于调用登录接口,获取用户输入的用户名和密码发送至后端21。
前端密钥交换处理模块202,用于获取后端返回的全局唯一标识凭证、质数p和g以及后端DH密钥(即后端公钥dh_public_key),并存入客户端sessionStorage(sessionStorage内容仅浏览器当前窗口有效),并生成本地DH密钥,即前端私钥private_key存入客户端sessionStorage,基于前端私钥private_key以及后端返回的质数p、g计算前端公钥public_key,并利用所述全局唯一标识凭证,将前端公钥public_key发送至后端。在本发明具体实施例中,前端公钥public_key计算如下:
public_key=(g^private_key)%p
数据请求模块203,用于在进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将数据请求发送给后端。
具体地,数据请求模块203进一步包括:
请求数据准备单元2031,用于请求数据准备。请求数据准备单元2031对请求数据准备如下:
1、规定所有请求数据都额外增加一个随机字符串,通过参数'_'传递。具体地,在请求原始数据中额外多传递一个参数,这个参数的名字是’_’,其值为随机的字符串
2、生成随机RequestId,用nonce标识;
3、获取当前Unix时间戳,用timestamp标识;
4、提取将要发生的HTTP请求中部分消息:HTTP动词、HTTP头Content-Type、请求的URI。
请求摘要生成单元2032,用于对请求数据进行摘要,生成请求摘要:将要参与计算摘要的元素用换行符拼接成签名原文,使用DH算法交换的共享密钥shared_key作为签名密钥(secretKey),对签名原文进行Hmac-SHA256摘要,得到签名。在本发明具体实施例中,摘要计算元素包括如下:
1、HTTP动词
2、HTTP头Content-Type的值
3、将要请求接口的URI
4、前端接口数据产生的随机字符串
5、当前的Unix时间戳timestamp
6、用于标记RequestId的产生的nonce
在本发明具体实施例中,拼接签名原文如下:
StringTOSign=HTTP-Verb+"\n"+
Content-Type+"\n"+
REQUEST_URI+"\n"+
Random-String+"\n"+
Unix-timestamp+"\n"+
Nonce
共享密钥如下:
shared_key=(dh_public_key^private_key)%p
计算签名如下:
Signature=Hmac-SHA256(UTF-8-Encoding-Of(StringToSign),
shared_key));
请求发送单元2033,用于在业务数据交互时,调用统一数据请求方法将所述全局唯一标识凭证、签名Signature、Unix时间戳(Unix-timestamp)、RequestIdnonce放入HTTP请求的自定义的HTTP header中,再将完整请求发送给后端21后端21进一步包括:
凭证生成模块210,用于在接收到前端传递的有效用户账号信息时,根据该有效用户账号信息生成全局唯一标识凭证。在本发明具体实施例中,所述用户账号信息包括但不限制于用户名及其唯一的随机串UUID、密码、当前unix时间戳等,具体地,所述全局唯一标识凭证采用Hmac-SHA256签名生成,其中参与签名的项包括:用户名、唯一的随机串UUID、当前unix时间戳t,较佳地,尽管产生重复UUID并造成凭证错误的几率极低,凭证生成模块210还将生成的全局唯一标识凭证和其他已有的全局唯一标识凭证比对,若已经存在,则按相同算法重新生成。也就是说,当前端调用登录接口,输入用户名和密码等用户账号信息传送至后端,后端会对接收的用户名和密码后进行验证,当验证为有效用户账号信息时,凭证生成模块210生成全局唯一标识凭证。
后端密钥交换处理模块211,用于生成DH算法所需的私钥dh_private_key以及两个很大的质数p、g,使用DH算法计算后端公钥dh_public_key,并将生成的全局唯一标识凭证、质数p和g以及后端公钥dh_public_key返回给前端,同时后端将相关数据记录入库,于接收到前端利用所述全局唯一标识凭证发送的前端公钥public_key时,验证所述全局唯一标识凭证有效性,将所述全局唯一标识凭证与前端公钥public_key进行绑定入库,完成密钥交换。在本发明具体实施例中,私钥dh_private_key采用随机生成的秘密自然数,质数p和g可通过欧拉筛法(线性筛)质数发生器来生成,为提升运行效率,可将原根‘g’设为2或5等较小的质数,后端公钥dh_public_key计算如下:
dh_public_key=(g^dh_private_key)%p
一般根据著名的离散对数问题,建议dh_private_key至少100位长,质数p至少300位。
请求处理模块212,用于在后端统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
具体地,请求处理模块212进一步包括:
凭证校验单元2120,用于校验所述全局唯一标识凭证的有效性;
RequestId nonce值验证单元2121,用于验证RequestId nonce的值,如果已经存在,则为重放请求,校验不通过;
Unix时间戳校验单元2122,用于校验传递Unix时间戳与服务器时间差,相差较大视为无效请求,校验不符合;
签名校验单元2123,用于计算出所述全局唯一标识凭证绑定的共享密钥,并按照请求摘要生成单元2032同样规则进行摘要签名计算(不同之处在于shared_key的计算方式为:shared_key=(public_key^dh_private_key)%p)),并将其与前端签名比对,如果不一致则为篡改;
结果处理单元2124,当凭证校验单元2120、RequestId nonce值验证单元2121、Unix时间戳校验单元2122以及签名校验单元2123中任何一项校验不符合直接返回错误,全部校验通过视为合法请求,继续后续的业务数据处理。
实施例
图3为本发明实施例中前后端分离数据安全交互的实现流程图。如图3所示,本发明前后端分离数据安全交互的实现过程如下:
步骤1:前端登录,输入用户名和密码发送至后端。
步骤2:后端接收用户名和密码后进行验证,通过验证后,生成全局唯一标识凭证。
步骤3:后端生成DH算法所需的私钥dh_private_key以及两个很大的质数p、g,并使用DH算法计算公钥:dh_public_key=(g^dh_private_key)%p。
步骤4:后端将生成的凭证、质数p和g、公钥dh_public_key返回给前端,后端相关数据记录入库。
步骤5:前端将返回的凭证、公开大数p和g、后端DH密钥(公钥dh_public_key)存入客户端的sessionStorage,(sessionStorage内容仅浏览器当前窗口有效)。
步骤6:前端生成本地DH密钥(私钥private_key),存入本地sessionStorage;并基于后端返回的质数p、g计算前端公钥:public_key=(g^private_key)%p
步骤7:前端利用凭证,将前端公钥发送至后端。
步骤8:后端接收到凭证后验证凭证有效性,将凭证与前端公钥做绑定入库,完成密钥交换。
步骤9:前面步骤成功完成即完成了登录,前端跳转到业务页面,可以进行后续数据API的请求。
步骤10:前端进行数据请求时,调用统一的数据请求方法以保证安全交互。统一数据请求方法主要完成请求数据的准备以及签名的计算:
1)在请求原始数据中增加参数'_',内容为随机生成的字符串。
2)生成随机RequestId,用nonce标识。
3)获取当前Unix时间戳,用timestamp标识。
4)提取将要发生的HTTP请求中部分消息:HTTP动词、HTTP头Content-Type、请求的URI
步骤11:前端生成请求摘要,将摘要元素的值拼接成摘要签名原文,使用DH算法交换的共享密钥作为签名secretKey,对签名原文进行Hmac-SHA256摘要,得到Signature。
在本实施例中,签名原文拼接示意如下:
StringTOSign=HTTP-Verb+"\n"+
Content-Type+"\n"+
REQUEST_URI+"\n"+
Random-String+"\n"+
Unix-timestamp+"\n"+
Nonce
共享密钥计算如下:
shared_key=(dh_public_key^private_key)%p
计算签名如下:
Signature=Hmac-SHA256(UTF-8-Encoding-Of(StringToSign),
shared_key));
步骤11:前端统一数据请求方法将上述生成的内容放入HTTP请求的自定义Header中,分别为:Authorization(凭证)、Signature(签名)、timestamp(Unix时间戳)、nonce;再将请求发送给后端。
步骤12:后端于统一入口处拦截并校验请求:
1)校验凭证的有效性;
2)验证RequestId是否重放请求;
3)检验传递过来的时间戳timestamp与服务器时间差;
4)计算出与凭证对应的共享密钥,作为签名secretKey,用同样规则对请求做签名摘要,比对前后端签名是否一致。
步骤13:任何一项校验不符合直接返回错误,全部校验通过视为合法请求,拦截请求通过,处理业务逻辑数据,并返回结果。
步骤14:前端根据返回做出对应处理和响应。
上述步骤1~9为安全交互的准备阶段,准备阶段工作充分的基础上,所有前后端的数据交互执行步骤10~14即可完成数据安全交互。
综上所述,本发明一种前后端分离数据安全交互的实现方法及系统通过前端调用登录接口,传递有效用户账号信息至后端,在获得后端生成的全局唯一标识凭证的基础上,采用DH算法与后端交换密钥,并在进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端,后端于接收到前端的数据请求时,于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息,本发明使前后端分离数据交互的安全得以保证,无论是使用网络嗅探或安全测试工具进行拦截修改请求或请求重放,都不能通过后端校验,在几乎不影响系统数据传输效率的情况下,保证了应用数据传输的可靠性,极大提高了应用系统的安全性。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (10)
1.一种前后端分离数据安全交互的实现方法,包括如下步骤:
步骤S1,后端根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH算法与前端交换密钥;
步骤S2,前端进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端;
步骤S3,后端于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
2.如权利要求1所述的一种前后端分离数据安全交互的实现方法,其特征在于,步骤S1进一步包括:
步骤S100,后端于接收到前端传递的有效用户账号信息时,根据该有效用户账号信息生成全局唯一标识凭证;
步骤S101,后端生成DH算法所需的私钥dh_private_key以及两个质数p、g,使用DH算法计算后端公钥dh_public_key,并将生成的全局唯一标识凭证、质数p和g以及后端公钥dh_public_key返回给前端,同时后端将相关数据记录入库;
步骤S102,前端将返回的所述全局唯一标识凭证、质数p和g以及后端公钥dh_public_key存入客户端,并前端私钥private_key存入客户端,基于所述前端私钥private_key以及后端返回的质数p、g计算前端公钥public_key;
步骤S103,前端利用所述全局唯一标识凭证,将前端公钥public_key发送至后端;
步骤S104,后端验证所述全局唯一标识凭证有效性,将所述全局唯一标识凭证与所述前端公钥public_key进行绑定入库,完成密钥交换。
3.如权利要求2所述的一种前后端分离数据安全交互的实现方法,其特征在于,所述后端公钥dh_public_key计算如下:
dh_public_key=(g^dh_private_key)%p。
4.如权利要求2所述的一种前后端分离数据安全交互的实现方法,其特征在于,所述前端公钥public_key计算如下:
public_key=(g^private_key)%p。
5.如权利要求2所述的一种前后端分离数据安全交互的实现方法,其特征在于,步骤S2进一步包括:
步骤S200,请求数据准备,在请求原始数据中额外增加一个随机字符串,通过参数'_'传递,并生成随机RequestId,获取当前Unix时间戳,以及提取将要发生的HTTP请求中部分消息;
步骤S201,对请求数据进行摘要,生成请求摘要,得到签名Signature;
步骤S202,调用统一数据请求方法将所述全局唯一标识凭证、签名Signature、Unix时间戳、RequestId放入HTTP请求的自定义的HTTP头文件中,再将完整请求发送给后端。
6.如权利要求5所述的一种前后端分离数据安全交互的实现方法,其特征在于:于步骤S201中,将要参与计算摘要的元素用换行符拼接成签名原文,使用DH算法交换的共享密钥shared_key作为签名密钥,对所述签名原文进行Hmac-SHA256摘要,得到签名Signature。
7.如权利要求6所述的一种前后端分离数据安全交互的实现方法,其特征在于:于步骤S201中,所述参与计算摘要的元素包括但不限于:
HTTP动词;
HTTP头Content-Type的值;
将要请求接口的URI;
前端接口数据产生的随机字符串;
当前的Unix时间戳timestamp;
用于标记RequestId产生的nonce。
8.如权利要求7所述的一种前后端分离数据安全交互的实现方法,其特征在于,所述共享密钥计算如下:
shared_key=(dh_public_key^private_key)%p。
9.如权利要求5所述的一种前后端分离数据安全交互的实现方法,其特征在于,步骤S3进一步包括:
步骤S300,校验所述全局唯一标识凭证的有效性;
步骤S301,验证RequestId是否已经存在;
步骤S302,校验传递Unix时间戳与服务器时间差;
步骤S303,计算出所述全局唯一标识凭证绑定的共享密钥,并按照步骤S201同样规则进行摘要签名计算,并将其与前端请求的签名比对;
步骤S304,上述处理过程任何一项校验不符合直接返回错误,全部校验通过视为合法请求,继续后续的业务数据处理。
10.一种前后端分离数据安全交互的实现系统,包括:
前端,通过调用登录接口,传递有效用户账号信息至后端,在获得后端生成的全局唯一标识凭证的基础上,采用DH算法与后端交换密钥,进行数据请求时,调用统一数据请求方法完成请求数据的准备以及签名的计算,并将生成的所述全局唯一标识凭证、签名、Unix时间戳以及随机RequestId加入请求中发送至后端;
后端,根据前端的有效用户账号信息生成全局唯一标识凭证,并在该全局唯一标识凭证基础上,基于DH算法与前端交换密钥,于接收到前端的数据请求时,于统一入口处拦截并校验请求,若拦截校验通过,则处理业务逻辑数据,并返回结果,若拦截校验未通过,则返回错误信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010718573.3A CN111835514A (zh) | 2020-07-23 | 2020-07-23 | 一种前后端分离数据安全交互的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010718573.3A CN111835514A (zh) | 2020-07-23 | 2020-07-23 | 一种前后端分离数据安全交互的实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111835514A true CN111835514A (zh) | 2020-10-27 |
Family
ID=72926169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010718573.3A Pending CN111835514A (zh) | 2020-07-23 | 2020-07-23 | 一种前后端分离数据安全交互的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111835514A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113179277A (zh) * | 2021-05-07 | 2021-07-27 | 济南云拓互动传媒有限公司 | 一种隐藏于标准http明文消息头的校验方法 |
CN113890730A (zh) * | 2021-09-23 | 2022-01-04 | 上海华兴数字科技有限公司 | 数据传输方法及系统 |
CN114546872A (zh) * | 2022-02-23 | 2022-05-27 | 吉林银行股份有限公司 | 一种凭证管理测试方法、装置、计算机设备及存储介质 |
CN114785585A (zh) * | 2022-04-18 | 2022-07-22 | 高途教育科技集团有限公司 | 一种信息验证校验方法、装置、设备以及存储介质 |
CN115665257A (zh) * | 2022-12-27 | 2023-01-31 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935568A (zh) * | 2015-04-20 | 2015-09-23 | 成都康赛信息技术有限公司 | 一种面向云平台接口鉴权签名方法 |
US20160373418A1 (en) * | 2015-06-17 | 2016-12-22 | Telefonaktiebolaget L M Ericsson (Publ) | Method for Enabling a Secure Provisioning of a Credential, and Related Wireless Devices and Servers |
CN107231237A (zh) * | 2017-06-02 | 2017-10-03 | 上海斐讯数据通信技术有限公司 | 一种安全授信方法及系统 |
CN108600203A (zh) * | 2018-04-11 | 2018-09-28 | 四川长虹电器股份有限公司 | 基于Cookie的安全单点登录方法及其统一认证服务系统 |
CN108965230A (zh) * | 2018-05-09 | 2018-12-07 | 深圳市中信网安认证有限公司 | 一种安全通信方法、系统及终端设备 |
CN111163470A (zh) * | 2019-12-31 | 2020-05-15 | 联想(北京)有限公司 | 核心网网元通信方法、装置、计算机存储介质和电子设备 |
-
2020
- 2020-07-23 CN CN202010718573.3A patent/CN111835514A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935568A (zh) * | 2015-04-20 | 2015-09-23 | 成都康赛信息技术有限公司 | 一种面向云平台接口鉴权签名方法 |
US20160373418A1 (en) * | 2015-06-17 | 2016-12-22 | Telefonaktiebolaget L M Ericsson (Publ) | Method for Enabling a Secure Provisioning of a Credential, and Related Wireless Devices and Servers |
CN107231237A (zh) * | 2017-06-02 | 2017-10-03 | 上海斐讯数据通信技术有限公司 | 一种安全授信方法及系统 |
CN108600203A (zh) * | 2018-04-11 | 2018-09-28 | 四川长虹电器股份有限公司 | 基于Cookie的安全单点登录方法及其统一认证服务系统 |
CN108965230A (zh) * | 2018-05-09 | 2018-12-07 | 深圳市中信网安认证有限公司 | 一种安全通信方法、系统及终端设备 |
CN111163470A (zh) * | 2019-12-31 | 2020-05-15 | 联想(北京)有限公司 | 核心网网元通信方法、装置、计算机存储介质和电子设备 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113179277A (zh) * | 2021-05-07 | 2021-07-27 | 济南云拓互动传媒有限公司 | 一种隐藏于标准http明文消息头的校验方法 |
CN113179277B (zh) * | 2021-05-07 | 2022-08-02 | 济南云拓互动传媒有限公司 | 一种隐藏于标准http明文消息头的校验方法 |
CN113890730A (zh) * | 2021-09-23 | 2022-01-04 | 上海华兴数字科技有限公司 | 数据传输方法及系统 |
CN114546872A (zh) * | 2022-02-23 | 2022-05-27 | 吉林银行股份有限公司 | 一种凭证管理测试方法、装置、计算机设备及存储介质 |
CN114546872B (zh) * | 2022-02-23 | 2023-02-17 | 吉林银行股份有限公司 | 一种凭证管理测试方法、装置、计算机设备及存储介质 |
CN114785585A (zh) * | 2022-04-18 | 2022-07-22 | 高途教育科技集团有限公司 | 一种信息验证校验方法、装置、设备以及存储介质 |
CN114785585B (zh) * | 2022-04-18 | 2023-12-08 | 高途教育科技集团有限公司 | 一种信息验证校验方法、装置、设备以及存储介质 |
CN115665257A (zh) * | 2022-12-27 | 2023-01-31 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
CN115665257B (zh) * | 2022-12-27 | 2023-04-28 | 成都同步新创科技股份有限公司 | 基于反向代理和动态脚本的请求处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111835514A (zh) | 一种前后端分离数据安全交互的实现方法及系统 | |
CN110177124B (zh) | 基于区块链的身份认证方法及相关设备 | |
CN112671720B (zh) | 一种云平台资源访问控制的令牌构造方法、装置及设备 | |
US20140006781A1 (en) | Encapsulating the complexity of cryptographic authentication in black-boxes | |
CN111753014B (zh) | 基于区块链的身份认证方法及装置 | |
CN110535648A (zh) | 电子凭证生成及验证和密钥控制方法、装置、系统和介质 | |
CN111159000B (zh) | 一种服务器性能测试方法、装置、设备以及存储介质 | |
CN106331042B (zh) | 一种异构用户系统的单点登录方法及其装置 | |
CN111800378A (zh) | 一种登录认证方法、装置、系统和存储介质 | |
CN111339551B (zh) | 数据的验证方法及相关装置、设备 | |
CN110414983A (zh) | 基于区块链的征信信息处理方法、装置、设备及存储介质 | |
CN113761509B (zh) | iframe验证登录方法及装置 | |
CN112311779A (zh) | 应用于区块链系统的数据访问控制方法及装置 | |
CN103559430B (zh) | 基于安卓系统的应用账号管理方法和装置 | |
GB2567715A (en) | Authentication system, method and program | |
CN111353780A (zh) | 授权验证方法、装置及存储介质 | |
CN115378605A (zh) | 基于区块链的数据处理方法及装置 | |
Grünbauer et al. | Modelling and verification of layered security protocols: A bank application | |
JP2004070814A (ja) | サーバセキュリティ管理方法及び装置並びにプログラム | |
CN113852628A (zh) | 一种去中心化的单点登录方法、装置及存储介质 | |
CN109981666A (zh) | 一种接入方法、接入系统和接入服务器 | |
CN115412253B (zh) | 基于区块链技术的数字证书制备方法 | |
Babenko et al. | Modeling replay and integrity violations attacks for cryptographic protocols source codes verification of e-voting system based on blind intermediaries | |
CN117034232A (zh) | 一种基于零知识证明的用户身份安全检验方法及装置 | |
CN117768104A (zh) | 一种安全交易传输方法、装置、设备及存储介质 |
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 |