CN116150780A - 动态生成令牌方法和装置、电子设备及存储介质 - Google Patents

动态生成令牌方法和装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116150780A
CN116150780A CN202211514569.0A CN202211514569A CN116150780A CN 116150780 A CN116150780 A CN 116150780A CN 202211514569 A CN202211514569 A CN 202211514569A CN 116150780 A CN116150780 A CN 116150780A
Authority
CN
China
Prior art keywords
scheme
sub
token
schemes
session key
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
Application number
CN202211514569.0A
Other languages
English (en)
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.)
River Security Inc
Original Assignee
River Security Inc
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 River Security Inc filed Critical River Security Inc
Priority to CN202211514569.0A priority Critical patent/CN116150780A/zh
Publication of CN116150780A publication Critical patent/CN116150780A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Virology (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供一种动态生成令牌的方法和装置、电子设备及存储介质。本申请通过响应于达到预设触发条件,按照预设方式确定每次用于生成令牌的总代码的第一目标方案,基于令牌版本号和第一目标方案中多个目标子方案的子方案标识生成第一会话密钥,为第一会话密钥分配第一会话密钥标识,并存储第一会话密钥与第一会话密钥标识之间的对应关系,分别获取包括多部分子方案对应的多个目标子方案中各目标子方案对应的子代码,由此获取本次用于生成令牌的总代码,将该总代码与第一会话密钥标识发送给客户端,这样,通过海量的令牌生成方案和动态调整令牌生成方案策略,大大增加了生成令牌的代码被攻击者逆向分析的难度,从而提高了令牌的安全性。

Description

动态生成令牌方法和装置、电子设备及存储介质
【技术领域】
本申请涉及网络安全技术,尤其涉及一种动态生成令牌的方法和装置、电子设备及存储介质。
【背景技术】
随着互联网技术的发展,通过网络存储和提供的数据和资源越来越多,同时,由此引起的网络安全问题也日益严重。目前,网络安全威胁越来越大,各种应用都迫切需要更好的技术来确保安全。如何保护网络上存储数据和资源的安全性,显得越来越重要。
目前常见的方法,是有客户端(client端)生成令牌(token)作为临时密钥并发送给服务端(server端),其中,令牌相当于账户名和密码,用来决定是否允许本次请求和判断本次请求属于哪一个用户,它允许客户端在不提供密码或其他凭证的前提下访问网络数据和系统资源。服务端通过校验令牌是否正确,确定是否客户端访问网络数据和系统资源。
在实现本申请的过程中,本发明人通过研究发现,客户端生成令牌的代码很容易被攻击者逆向分析透彻,之后,攻击者就可以使使用自动化工具采用这些代码自动生成令牌发送给服务端,而服务端难以区分接收到的令牌是具有访问权限的用户通过客户端发送还是攻击者发送,由此导致攻击者通过该令牌访问网络数据和系统资源,或者进一步对网络数据和系统资源进行篡改或者植入病毒,可能给用户带来极大损失。
【发明内容】
本申请的多个方面提供一种动态生成令牌的方法和装置、电子设备及存储介质,用以提高生成令牌的代码被攻击者逆向分析的难度,从而提高令牌的安全性。
本申请的一方面,提供一种动态生成令牌的方法,应用于服务端,包括:
响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,所述第一目标方案包括多部分子方案对应的多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;
基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥;
为所述第一会话密钥分配第一会话密钥标识,并将所述第一会话密钥与所述第一会话密钥标识之间的对应关系存储在对应关系表中;其中,所述第一会话密钥标识用于唯一标识所述第一会话密钥;所述子方案标识用于唯一标识一个子方案;
分别获取所述多个目标子方案中各目标子方案对应的子代码;
基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码;
将所述总代码与所述第一会话密钥标识发送给客户端,以便所述客户端基于所述总代码生成令牌。
本申请的另一方面,提供另一种动态生成令牌的方法,应用于客户端,所述方法包括:
响应于接收到服务端发送的总代码与第二会话密钥标识;其中,所述第二会话密钥标识用于唯一标识第二会话密钥;所述第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,所述第二会话密钥中包括所述多个子方案标识;所述第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到;
基于所述总代码生成令牌;
将请求内容、所述令牌、以及所述第二会话密钥标识发送给所述服务端。
本申请的又一方面,提供一种动态生成令牌的装置,应用于服务端,包括:
确定模块,用于响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,所述第一目标方案包括多部分子方案对应的多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;
第一生成模块,用于基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥;
分配模块,用于为所述第一会话密钥分配第一会话密钥标识,并将所述第一会话密钥与所述第一会话密钥标识之间的对应关系存储在对应关系表中;其中,所述第一会话密钥标识用于唯一标识所述第一会话密钥;所述子方案标识用于唯一标识一个子方案;
第一获取模块,用于分别获取所述多个目标子方案中各目标子方案对应的子代码;
第二获取模块,用于基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码;
第一发送模块,用于将所述总代码与所述第一会话密钥标识发送给客户端,以便所述客户端基于所述总代码生成令牌。
本申请的又一方面,提供另一种动态生成令牌的装置,应用于客户端,包括:
接收模块,用于响应于接收到服务端发送的总代码与第二会话密钥标识;其中,所述第二会话密钥标识用于唯一标识第二会话密钥;所述第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,所述第二会话密钥中包括所述多个子方案标识;所述第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到;
第二生成模块,用于基于所述总代码生成令牌;
第二发送模块,用于将请求内容、所述令牌、以及所述第二会话密钥标识发送给所述服务端。
本申请的再一方面,提供一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述一方面所提供的动态生成令牌的方法。
本申请的再一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一方面所提供的动态生成令牌的方法。
由上述技术方案可知,服务端可以动态调整每次用于生成令牌的总代码的第一目标方案,确保每次下发给客户端、用于生成令牌的总代码不同,这样客户端每次生成的令牌也不同,由于第一目标方案包括多部分子方案对应的多个目标子方案,由于多部分子方案包括算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案,各部分子方案分别存在多个候选方案,则可以组合出的、用于生成令牌的代码的方案可以达到上百种甚至上千万种,通过海量的令牌生成方案和动态调整令牌生成方案策略,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,由于动态调整令牌生成方案策略,这部分代码已经失效,从而使攻击者逆向分析出某次用于生成令牌的代码的行为毫无任何意义。
另外,基于本申请提供的技术方案,服务端可以将生成令牌的总代码与第一会话密钥标识一起发送给客户端,客户端基于总代码生成令牌后,可以将请求内容、生成的令牌以及接收到的第二会话密钥标识一起返回服务端,这样,服务端可以基于第二会话密钥标识获取相应的第二会话密钥,并根据第二会话密钥中多个子方案标识所标识的子方案对令牌进行有效数据提取,从而提高令牌的安全性和可识别性。
另外,基于本申请提供的技术方案,服务端生成的第一会话密钥中还包括第一目标方案的过期时间信息,这样,接收到客户端返回的第二会话密钥标识并获取相应的第二会话密钥后,可以基于第二会话密钥中第二目标方案的过期时间信息确认该第二会话密钥是否过期,只有在第二会话密钥未过期时,才基于第二会话密钥中多个子方案标识所标识的子方案,来对令牌进行有效数据提取,可以设置较短的过期时间来阻挡攻击者的逆向分析用于生成令牌的总代码,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,但是这部分代码已经过期,没办法将其整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。
另外,基于本申请提供的技术方案,可以避免攻击者使用自动化工具采用逆向分析出的代码自动生成令牌访问网络数据和系统资源、或者进一步对网络数据和系统资源进行篡改或者植入病毒,有效保障网络数据和系统资源的安全性。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请一实施例提供的动态生成令牌的方法的流程示意图;
图2为本申请另一实施例提供的动态生成令牌的方法的流程示意图;
图3为本申请又一实施例提供的动态生成令牌的方法的流程示意图;
图4为本申请再一实施例提供的动态生成令牌的方法的流程示意图。
图5为本申请一实施例提供的动态生成令牌的装置的结构示意图;
图6为本申请另一实施例提供的动态生成令牌的装置的结构示意图;
图7为本申请一实施例提供的动态生成令牌的系统的结构示意图;
图8为可以用来实施本申请的实施例的示例电子设备的示意性框图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其它实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中所涉及的终端可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)、个人电脑(Personal Computer,PC)、MP3播放器、MP4播放器、可穿戴设备(例如,智能眼镜、智能手表、智能手环等)等。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备、模块、对象、信息等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序,也不表示第一对象和第二对象是否必然相同或不同。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在相关技术中,客户端基于固定的代码生成令牌。例如,在一种相关技术中,客户端采用如下方式的对应代码生成令牌:采用固定的函数接口和固定的数据格式传入用于生成令牌的数据,依次采用固定的校验算法数据进行校验、采用加密算法进行加密、采用固定的编码算法进行编码,上述生成令牌的顺序也固定不变。
如下所示,为相关技术中客户端基于javascript代码生成令牌的一个示例(javascript代码):
function build_token(){
var data=[];
data[0]=令牌版本号
//按照一定规则生成令牌ID
data[1]=令牌ID
data[2]=令牌类型
data[3]=令牌来源
data[4]=令牌属性
//获取client当前时间
data[5]=client当前时间
data[6]=可选数据1
data[7]=可选数据2
data[5+n]=可选数据……N
//计算上述数据的效验值
data[6+n]=CRC16效验值
//加密数据
var encrypted_data=encrypt_by_aes256(data)
var cipher=[]
cipher.push(server端生成的Session Key)
cipher.push(encrypted_data)
//编码数据
var token=base64_encode(cipher)
return token;
}
其中,function build_token()为令牌生成函数,客户端通过执行该functionbuild_token()中的代码来生成令牌。data[]表示各字段在令牌的数据结构中的第几个位置,例如data[0]=令牌版本号,表示字段“令牌版本号”在令牌的数据结构中的第0个位置,data[1]=令牌ID表示字段“令牌ID”在令牌的数据结构中的第1个位置,…,以此类推。根据应用的业务,可选数据可以包括用户的输入数据、鼠标移动数据、键盘输入的统计数据、环境相关数据(例如窗口大小、当前操作系统、CPU型号等)。客户端采用固定的函数functionbuild_token()接口、固定的CRC16校验算法、aes256加密算法和base64编码算法,顺序生成令牌。
由于在相关技术中,客户端基于固定的代码生成令牌,客户端生成令牌的代码很容易被攻击者逆向分析透彻,之后,攻击者就可以使用自动化工具采用这些代码自动生成令牌发送给服务端,而服务端难以区分接收到的令牌是具有访问权限的用户通过客户端发送还是攻击者发送,由此导致攻击者通过该令牌访问网络数据和系统资源,或者进一步对网络数据和系统资源进行篡改或者植入病毒,可能给用户带来极大损失。
因此,亟需提供一种动态生成令牌的方法和装置、电子设备及计算机可读存储介质,用以提高生成令牌的代码被攻击者逆向分析的难度,从而提高令牌的安全性。
本申请的设计思想在于,服务端动态调整每次用于生成令牌的总代码的方案,确保每次下发给客户端、用于生成令牌的总代码不同,这样客户端每次生成的令牌也不同,通过海量的令牌生成方案和动态调整令牌生成方案策略,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,由于动态调整令牌生成方案策略,这部分代码已经失效,从而使攻击者逆向分析出某次用于生成令牌的代码的行为毫无任何意义。
本申请实施例可应用于客户端-服务端(C/S)架构的各种电子设备。
图1为本申请一实施例提供的动态生成令牌的方法的流程示意图。该实施例应用于服务端,如图1所示。
101,响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案。
其中,第一目标方案包括多部分子方案对应的多个目标子方案。
其中,所述多部分子方案可以包括但不限于:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案。所述多部分子方案中的各部分子方案分别存在多个候选方案。每个候选方案分别具有相应的子方案标识(ID),其中,每个子方案标识用于唯一标识一个子方案,可以由服务端预先分配,该子方案标识例如可以是子方案名称、服务端全局唯一的子方案编号、或者同时包括子方案名称和服务端全局唯一的子方案编号等等,本申请实施对子方案标识的具体构成不做限制。
其中,算法相关方案,为生成令牌时对数据进行处理(例如校验、加密、编码等)所采用的相应算法方案。数据结构方案,用于确定令牌的数据结构,为参与生成令牌的各部分数据(即字段)在令牌中的数据结构(例如位置、隐藏方式等)的方案。数据接口方案为生成令牌时所采用的接口形式的方案。代码执行流程方案为生成令牌的流程方案。代码混淆方案为对用于生成令牌的代码的混淆方案。
本申请实施例中,预设触发条件为服务端预先设定的用于触发生成用于生成令牌的总代码的条件,以用于客户端基于该总代码生成令牌,该预设触发条件可以根据实际需求设定。例如,在一种具体实现中,服务端可以实时、随机或者服务端闲赋时作为预设触发条件,触发生成用于生成令牌的代码,执行本实施例的操作101-105,在后续客户端需要时执行操作106。又如,在另一种具体实现中,可以以一些预设用户事件作为预设触发条件,服务端可以通过客户端监听预设用户事件,例如是不是有用户操作产生的鼠标输入信号或者键盘输入信号,在客户端监听到这些用户事件时,便会触发服务端生成用于生成令牌的总代码,执行本实施例的操作101-106。再如,在又一种具体实现中,服务端可以预设周期作为预设触发条件,通过定时器周期性的触发生成用于生成令牌的总代码,执行本实施例的操作101-105,在后续客户端需要时执行操作106。
之后,可分别执行操作102-103和104-105。
102,基于令牌版本号和多个目标子方案的子方案标识生成第一会话密钥(Session Key)。
其中,令牌版本号为服务端按照预设分配方式(例如随机分配、顺序分配)为本次用于生成的令牌分配的版本号,令牌版本号可以为整数、小数、浮点数,也可以为数字、字母、或者数字与字母组合成的字符串等等,本申请实施例对令牌版本号的分配方式和组成不做限制。
由此,服务端可以通过第一会话密钥记录本次用于生成令牌的总代码采用何种方式生成令牌。
103,为第一会话密钥分配第一会话密钥标识(ID),并将第一会话密钥与第一会话密钥标识之间的对应关系存储在对应关系表中。
其中,每个会话密钥ID用于唯一标识一个会话密钥,第一会话密钥标识用于唯一标识第一会话密钥。对应关系表中包括服务端生成的各第一会话密钥及对应的会话密钥ID之间的对应关系。
之后,执行操作106。
104,分别获取所述多个目标子方案中各目标子方案对应的子代码。
105,基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码。
该总代码与第一会话密钥具有一一对应关系。
操作102-103和104-105可以同时执行,也可以以任意先后顺序执行,本申请实施例对此不做限制。
106,将总代码与第一会话密钥标识发送给客户端,以便客户端基于该总代码生成令牌。
在实际应用中,服务端可以在客户端需要向服务端发送业务请求的请求内容时将总代码与第一会话密钥标识发送给客户端,也可以预先将总代码与第一会话密钥标识发送给客户端,以便客户端在向服务端发送业务请求的请求内容之前,便可以基于该总代码生成令牌。
这样,服务端可以动态调整每次用于生成令牌的总代码的第一目标方案,确保每次下发给客户端、用于生成令牌的总代码不同,这样客户端每次生成的令牌也不同,通过海量的令牌生成方案和动态调整令牌生成方案策略,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,由于动态调整令牌生成方案策略,这部分代码已经失效,从而使攻击者逆向分析出某次用于生成令牌的代码的行为毫无任何意义。另外,可以避免攻击者使用自动化工具采用逆向分析出的代码自动生成令牌访问网络数据和系统资源、或者进一步对网络数据和系统资源进行篡改或者植入病毒,有效保障网络数据和系统资源的安全性。
可选地,在其中一些实现方式中,所述算法相关方案可以包括:编码算法方案、加密算法方案和效验算法方案。
在算法相关方案中,针对令牌生成过程中的校验环节、加密环节、编码环节分别提供了多种对应的候选方案,以供每次选取使用。
例如,在校验环节使用的效验算法方案,例如可以包括MD5、SHA-1、SHA-2、CRC32、CRC16、CRC8、LRC、SM3或其他校验算法等多种候选方案,并可以为各候选方案分配对应的校验算法方案标识(ID)作为子方案标识。在加密环节使用的加密算法方案,例如可以包括AES128、AES256、3DES、SM4、RC5、RC6或加密算法等多种候选方案,并可以为各候选方案分配对应的加密算法方案标识作为子方案标识。在编码环节使用的编码算法方案,例如可以包括但不限于Base81、Base56、Base64或其他编码方案等多种候选方案,并可以为各候选方案分配对应的编码算法方案标识作为子方案标识。
可选地,在其中一些实现方式中,所述数据结构方案可以包括:数据存储位置方案、插入冗余数据方案和数据隐藏方案。
参与生成令牌的各字段在令牌中可以采用不同的数据结构,从而使得生成的令牌可以具有不同的数据结构。
本申请实施例中,数据存储位置方案,用于确定参与生成令牌的各字段在令牌的数据结构中的位置。在不同数据存储位置方案中,参与生成令牌的各字段在令牌的数据结构中的位置不同或不完全相同,甚至同一个字段在令牌的数据结构中的位置都不同。基于第一会话密钥中的目标数据存储位置方案,服务端可以确定各字段在令牌的数据结构中的位置,从而从相应的位置提取各字段的具体信息。
例如,在一个具体示例中,以参与生成令牌的字段包括令牌版本号、令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、…为例,在如下不同数据存储位置方案中,各字段在令牌的数据结构中的位置如下:
数据存储位置方案1:data[0]=令牌版本号,data[1]=令牌ID,data[2]=令牌类型,data[3]=令牌来源,data[4]=令牌属性,data[5]=client当前时间,…;
数据存储位置方案2:data[0]=令牌ID,data[1]=令牌版本号,data[2]=令牌类型,data[3]=client当前时间,data[4]=令牌属性,data[5]=令牌来源,…;
数据存储位置方案3:data[0]=client当前时间,data[1]=令牌来源,data[2]=令牌ID,data[3]=令牌类型,data[4]=令牌属性,data[5]=令牌版本号,…;
数据存储位置方案N:…
其中,data[]表示各字段在令牌的数据结构中的第几个位置,例如data[1]=令牌ID表示字段“令牌ID”在令牌的数据结构中的第1个位置。
本申请实施例中,插入冗余数据方案,用于表示向参与生成令牌的字段中插入冗余数据的方案。根据插入冗余数据方案,可以向不同位置插入不同数量的冗余数据。其中,每个插入冗余数据方案可以包括:插入无效字段的数量、各无效字段在令牌的数据结构中的位置、以及赋值给各无效字段的冗余数据。根据插入冗余数据方案,可以向参与生成令牌的字段中的不同位置(例如向令牌的数据结构中的第几个位置之前或之后)插入不同数量的无效字段的冗余数据。
为便于区分,本申请实施例中,可以将参与生成令牌的字段可以分为有效字段和无效字段,其中的有效字段为预设规则中令牌需要包括的字段,例如令牌版本号、令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、以及一些可选数据,这些有效字段的具体信息(即赋值)可以称为有效数据;无效字段为除了基于上述预设规则规定的有效字段外,基于本申请实施中插入的、用于增加生成令牌的代码被攻击者逆向分析的难度、提高令牌的安全性的字段,这些无效字段的具体信息(即赋值)可以称为冗余数据(即无效数据)。基于第一会话密钥中的目标数据存储位置方案和目标插入冗余数据方案,服务端可以确定各有效字段在令牌的数据结构中的具体位置,从而从相应的位置提取各有效字段的具体信息;并可以通过比较该目标插入冗余数据方案中各位置的冗余数据与客户端返回的令牌中对应位置的冗余数据是否一致,来检测服务端发送给客户端的总代码是否被逆向、篡改。
例如,在一个具体示例中,可以提供如下插入冗余数据方案作为候选方案:
插入冗余数据方案1:data[0]=随机数,data[1]=随机数,data[2]=随机数,data[3]=随机数,data[4]=令牌版本号,data[5]=令牌ID,data[6]=令牌类型,data[7]=令牌来源,data[8]=令牌属性,data[9]=client当前时间,…;
插入冗余数据方案2:data[0]=令牌ID,data[1]=令牌版本号,data[2]=令牌类型,data[3]=client当前时间,data[4]=令牌属性,data[5]=令牌来源,data[6]=随机数,data[7]=随机数,data[8]=随机数,…;
插入冗余数据方案3:data[0]=client当前时间,data[1]=随机数,data[2]=令牌来源,data[3]=随机数,data[4]=令牌ID,data[5]=令牌类型,data[6]=随机数,data[7]=令牌属性,data[8]=令牌版本号,…;
插入冗余数据方案N:…
其中的随机数可以由服务端根据预设规则设置,例如可以设置为大于0且小于255的一个整数。
基于第一会话密钥中的目标插入冗余数据方案,服务器接收到客户端返回的令牌和第二会话密钥后,可以根据目标数据存储位置方案和目标插入冗余数据方案,仅从令牌中的相应位置提取有效数据(即除冗余数据外其他各字段的具体信息或赋值);另外,还可以通过检测令牌中插入随机数的位置处的数值,与目标插入冗余数据方案中相应位置的随机数的取值是否一致,来检测发送给客户端的总代码是否被篡改,或者,基于上述预设规则设置,若在令牌中插入随机数的位置处的数值为0或255时,可以直接确定发送给客户端的总代码被篡改。
本申请实施例中,数据隐藏方案,为对参与生成令牌的全部字段或预设某些字段进行隐藏的方案。每个数据隐藏方案包括:隐藏字段和隐藏字段对应的隐藏方式,其中的隐藏字段为需要隐藏的字段,可以针对全部字段,也可以针对其中的某个或某几个字段,可以根据具体需求确定。每个数据隐藏方案针对的隐藏字段的数量可以与有效字段和无效字段的总数量一致或不一致,本申请实施例对此不做限制。例如,在具体实现中,在数据隐藏方案针对参与生成令牌的预设某些字段时,若隐藏字段的数量大于有效字段和无效字段的总数量,可以仅针对隐藏字段涉及的有效字段和无效字段进行隐藏处理;若隐藏字段的数量小于有效字段和无效字段的总数量时,可以仅针对有效字段和无效字段中对应的隐藏字段进行隐藏处理。通过数据隐藏方案,可以对参与生成令牌的各隐藏字段,基于各隐藏字段对应的数据隐藏方式进行隐藏操作(例如加解密、编解码、取反、异或、移位等)处理以隐藏各隐藏字段的具体信息(即赋值)的方案。服务端收到客户端发送的令牌后,基于第一会话密钥中的目标数据隐藏方案,可以采用相应的还原操作对隐藏字段进行还原,从而得到各隐藏字段的具体信息。
如下表1所示,为本申请实施例中几个数据隐藏方案可选的数据隐藏方式、以及各数据隐藏方式对应的隐藏操作、还原操作和适用于作为隐藏字段的适用范围(即可作为隐藏字段的数据形式)。
表1
Figure BDA0003970247380000151
例如,在一个具体示例中,以上述插入冗余数据方案1为例,对应的数据隐藏方案的几个候选方案可以是:
数据隐藏方案1:data[0]=随机数^0x11,data[1]=随机数^0x22,data[2]=随机数^0x33,data[3]=随机数^0x44,data[4]=令牌版本号^0x55,data[5]=令牌ID^0x66,data[6]=令牌类型^0x77,data[7]=令牌来源^0x88,data[8]=令牌属性^0x99,data[9]=client当前时间^0xAA,…
还原操作:令牌版本号=data[4]^0x55,令牌ID=data[5]^0x66,令牌类型=data[6]^0x77,令牌来源=data[7]^0x88,令牌属性=data[8]^0x99,client当前时间=data[9]^0xAA,…
数据隐藏方案2:data[0]=随机数+0x11,data[1]=随机数+0x22,data[2]=随机数+0x33,data[3]=随机数+0x44,data[4]=令牌版本号+0x55,data[5]=令牌ID+0x66,data[6]=令牌类型+0x77,data[7]=令牌来源+0x88,data[8]=令牌属性+0x99,data[9]=client当前时间+0xAA,…
还原操作:令牌版本号=data[4]-0x55,令牌ID=data[5]-0x66,令牌类型=data[6]-0x77,令牌来源=data[7]-0x88,令牌属性=data[8]-0x99,client当前时间=data[9]-0xAA,…
数据隐藏方案3:data[0]=随机数^0x11,data[1]=随机数+0x22,data[2]=随机数<<1,data[3]=随机数^0xFF,data[4]=~令牌版本号,data[5]=令牌ID^0x66,data[6]=令牌类型+0x77,data[7]=令牌来源<<2,data[8]=令牌属性^0x99,data[9]=~client当前时间,…
还原操作:令牌版本号=~data[4],令牌ID=data[5]^0x66,令牌类型=data[6]-0x77,令牌来源=data[7]>>2,令牌属性=data[8]^0x99,client当前时间=~data[9],…
数据隐藏方案N:…
其中,数据隐藏方案1中,数据隐藏方式为异或(异或运算符^)。数据隐藏方案2中,数据隐藏方式为加法(加上运算符+、减去运算符-)。数据隐藏方案3中,数据隐藏方式同时包括了异或(异或运算符^)、加法(加上运算符+、减去运算符-)、移位(左移运算符<<、右移运算符>>)、取反(取反运算符~)。在实际应用中,数据隐藏方案可以单独或组合使用上述各种数据隐藏方式。
本申请实施例中,数据接口方案为生成令牌时所采用的接口形式的方案。其中的接口是指客户端生成令牌时各执行单元之间相互引用的接口。数据接口方案可以包括以下任意一种或多种方案:增加无效参数方案、数据传输方案、数据返回方案等。
其中,增加无效参数方案是指在生成令牌时,用于上传各字段的参数(即具体信息)的接口函数中,在预设一个或多个位置增加无效参数,从而使用于生成令牌的字段中包括一个或多个无效参数,相对于相关技术中直接传入有效参数的方式,能够提高攻击者逆向分析用于生成令牌的代码的难度。
例如,在一个具体示例中,以server端生成的Session Key为生成令牌时需要传入的参数为例,增加无效参数方案的几个候选方案可以是:
无效参数方案1:function build_token(随机数组1,随机数组2,server端生成的Session Key)
无效参数方案2:function build_token(随机数,server端生成的Session Key)
无效参数方案3:function build_token(随机数组1,server端生成的SessionKey,随机数,随机数)
无效参数方案N:…
其中,function build_token()为一个接口函数,无效参数方案1表示在传入有效参数的位置前,增加了两个无效参数分别用于传入对生成令牌无效的随机数组1、随机数组2,第三个位置才用于传入server端生成的Session Key。无效参数方案2表示在传入有效参数的位置前,增加了一个无效参数用于传入对生成令牌无效的随机数,第二个位置才用于传入server端生成的Session Key。无效参数方案3表示在传入有效参数的位置前增加了一个无效参数用于传入对生成令牌无效的随机数组1,在传入有效参数的位置后增加了两个无效参数分别用于传入对生成令牌无效的随机数,第二个位置才用于传入server端生成的Session Key。
其中,数据传输方案是指向用于生成令牌的令牌生成函数上传各字段的参数的方式,例如可以包括但不限于:变量传递方式、数组传递方式、对象方法传递方式、闭包变量传递方式、全局变量传递方式、对象属性传递方式等。
其中,数据返回方案是指用于生成令牌的令牌生成函数返回令牌的方式,例如可以包括但不限于:直接返回变量方式、数组返回方式、对象方法返回方式、闭包变量返回方式、全局变量返回方式等。
在实际应用中,可以单独或组合使用增加无效参数方案、数据传输方案、数据返回方案,从而有效提高攻击者逆向分析用于生成令牌的代码的难度。
本申请实施例中,代码执行流程方案为生成令牌的流程方案。代码执行流程方案可以包括以下任意一种或多种方案:传统的顺序执行流程方案、使用设置时间间隔较短的定时器方案、将方案代码作为参数传入的回调函数(callback)方案、使用闭包调用的方案、使用对象封装生成令牌中的某个流程的方案等。
其中,传统的顺序执行流程方案,即依次传入用于生成令牌的数据,采用校验算法数据进行校验、采用加密算法进行加密、采用固定的编码算法进行编码,顺序执行生成令牌。
其中,使用设置时间间隔较短的定时器方案,即通过定时器设置一个较短的时间间隔,系统在到达相应的时间时去调用令牌生成函数执行生成令牌的流程。其中较短的时间间隔,可以每次根据实际需求设置,例如0、几毫秒、几秒、几分钟等,定时器可以根据设置的时间间隔,在到达相应的时间时去调用令牌生成函数执行生成令牌的流程。
例如,使用设置时间间隔较短的定时器方案的一个示例为:setTimeout(build_toke,0);
其中,0为时间间隔,0表示较高的优先级,系统在完成当前任务后即刻调用令牌生成函数执行生成令牌的流程。
通过使用设置时间间隔较短的定时器方案,可以将生成令牌的流程由传统的同步执行过程变成异步执行过程,可以有效防止攻击者跟踪生成令牌的流程,提高攻击者逆向分析代码的难度。
其中,将方案代码作为参数传入的回调函数方案,即,在生成令牌的过程中,将用于生成令牌的某个或某几个目标子方案的子代码作为参数传入令牌生成函数的方案,以混淆令牌生成过程,提高攻击者逆向分析代码的难度。
在具体应用中,可以将用于生成令牌的某个或某几个目标子方案的子代码层层嵌套,即,将一个目标子方案的子代码作为参数传入令牌生成函数,在该目标子方案的子代码中再将另一个目标子方案的子代码作为参数传入,依次类推,层层嵌套的传入不同目标子方案的子代码。
例如,在一个生成令牌的实现示例中,可以先传入各字段的具体信息,在对各字段进行加密时,将目标加密算法方案的子代码作为参数传入执行,在加密完成之后,将目标校验算法方案的子代码作为目标加密算法方案的子代码的参数传入执行,校验完成之后,将目标编码算法方案的子代码作为目标校验算法方案的子代码的参数传入执行,即目标加密算法方案的子代码、目标校验算法方案的子代码、目标编码算法方案的子代码层层嵌套、依次作为参数传入。
如下所示,为将方案代码作为参数传入的回调函数方案的一个代码实现示例:
Figure BDA0003970247380000191
/>
Figure BDA0003970247380000201
var token=build_token(prepare_data,encrypt_aes256,base64_encode);
在上述代码实现示例中,callback1表示传入各字段的具体信息,即对各字段赋值,例如将令牌属性的具体信息赋值给data[0],将令牌ID的具体信息赋值给data[1],将令牌来源的具体信息赋值给data[3],等。callback2将目标加密算法方案的子代码作为参数传入以进行加密;callback3表示在加密完成之后,将加密结果与Session Key组装到一起,将目标编码算法方案的子代码作为目标加密算法方案的子代码的参数传入执行编码。
其中,使用闭包调用的方案,即,通过调用一个用于实现某功能的函数里面声明的另一个函数,来实现相应的功能。闭包是指,若A函数中声明了B函数并返回、能够引用非全局变量的变量,则A函数为闭包。其中作为闭包的函数即各目标子方案对应的子代码。对不同目标子方案对应的子代码使用闭包调用的方案,可以使子代码的格式相对于原子代码发生变化,从而实现代码混淆的作用,提高攻击者逆向分析代码的难度。
如下所示,为使用闭包调用的方案传入各字段的具体信息的一个代码实现示例:
Figure BDA0003970247380000211
在上述代码实现示例中,function build_token为令牌生成函数,functionprepare_data()为用于传入各字段的具体信息对各字段进行赋值的函数,在令牌生成函数function build_token中,未直接对各字段进行赋值,而是通过在令牌生成函数function build_token中声明函数function prepare_data(),通过调用functionprepare_data()的方式对各字段进行赋值。
其中,使用对象封装生成令牌中的某个流程的方案,即,可以使用对象来封装生成令牌中的某个流程(例如对各字段进行赋值、校验流程、加密流程、编码流程等)的子代码。可以使相应环节的子代码的格式相对于原子代码发生变化,从而实现代码混淆的作用,提高攻击者逆向分析代码的难度。
如下所示,为使用闭包调用的方案传入各字段的具体信息的一个代码实现示例:
Figure BDA0003970247380000221
Figure BDA0003970247380000231
在上述代码实现示例中,obj.prepare_data=function(data)表示使用对象来封装对各字段进行赋值的流程的子代码,obj.encrypt=encrypt_aes256表示使用对象来封装加密流程中目标加密算法方案的子代码,obj.encode=base64_encode表示使用对象来封装编码流程中目标编码方案的子代码,obj.build_token=function()表示使用对象来封装生成令牌的总代码。
在实际应用中,可以单独或组合使用代码执行流程方案中的各方案,从而有效提高攻击者逆向分析用于生成令牌的代码的难度。
本申请实施例中,代码混淆方案为对用于生成令牌的代码进行混淆的方案。代码混淆方案可以包括以下任意一种或多种方案:控制流平坦化混淆(control FlowFlattening,CFF)方案、随机增加无效代码方案、关键字提取与隐藏方案、使用不同风格对变量重命名方案、代码内容自校验方案等。
其中,CFF方案的基本思想,主要是通过一个主分发器来控制程序(总代码或子代码)中基本块的执行流程,可以模糊基本块之间的前后关系,增加程序分析的难度。例如,在其中一个具体示例中,可以通过将if-else语句替换成do-while语句,然后通过switch语句来对流程控制,这样就能模糊基本块之间的前后关系。
其中,随机增加无效代码方案,即在总代码或子代码中随机增加一些无效代码,以提高总代码被逆向的难度。
如下所示,为随机增加无效代码方案的一个代码实现示例:
build_token=function(){
this.prepare_data();
var encrypted_data=this.encrypt(data)
function1(data)//无效函数调用
var a=data[0]//无效代码
var cipher=[]
a+=1//无效代码
cipher.push(server端生成的Session Key)
if(a){//无效判断代码:因为已经执行了a+=1,所以此处一定为true
cipher.push(encrypted_data)
function2(cipher)//无效函数调用
}
var token=this.base64(cipher)
return token;
}
在上述代码实现示例中,在生成令牌的代码中增加了无效函数调用function1(data)、无效代码var a=data[0]、无效代码a+=1、无效判断代码if(a)、以及无效函数调用function2(cipher)。
其中,关键字提取与隐藏方案,是将总代码或子代码中预设的常用关键字(例如常量、常量字符串、常量常数等)提取出来并采用预设方式加密,在使用的时候解密还原,避免代码中出现常用关键字的明文。例如:为了判断代码是否被格式化,可以使用函数function.toString()将代码转化为文本,将toString提取隐藏后使用方式变为function[getProperty(11)](),getProperty(11)将返回字符串toString,其中11是字符串toString的索引号。
其中,使用不同风格对变量重命名方案,即使用不同的风格对预设变量进行重命名,例如,可以将token重命名为$$1或者_0x90a0f0,对于var token=encrypt(data),可以相应表示为:var$$1=encrypt(data),或者var_0x90a0f0=encrypt(data)。
其中,代码内容自校验方案,即将总代码或某个目标子方案对应的子代码转化为文本,例如使用函数function.toString()将某个目标子方案对应的子代码转化为文本,采用预设校验算法计算文本的校验值并存储在服务端,服务端接收到客户端返回的第二会话密钥标识后,可以根据第二会话密钥中多个子方案标识所标识的子方案,采用同样的方式计算由该多个子方案标识对应的子代码生成的总代码或或其中某个子方案标识对应的子代码的校验值,然后比较与存储的对应校验值是否一致,来判断该总代码或子代码是否被格式化或篡改。如果基于第二会话密钥中的多个子方案标识计算得到的校验值与服务端存储的对应校验值不一致,说明该总代码或子代码被格式化或篡改。
在实际应用中,可以单独或组合使用CFF方案、随机增加无效代码方案、关键字提取与隐藏方案、使用不同风格对变量重命名方案、代码内容自校验方案,从而有效提高攻击者逆向分析用于生成令牌的代码的难度。
在上述实施例中,CFF方案、随机增加无效代码方案、关键字提取与隐藏方案、使用不同风格对变量重命名方案,实现了代码混淆的作用,使代码不容易被人为识别、逆向分析,并不影响客户端对代码的执行,客户端依然可以识别并执行混淆后的代码。
在上述实施例的算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案中,算法相关方案(包括编码算法方案、加密算法方案和效验算法方案)、数据结构方案(包括数据存储位置方案、插入冗余数据方案和数据隐藏方案),会影响生成的令牌的具体内容,即,采用不同的编码算法方案、加密算法方案、效验算法方案、数据存储位置方案、插入冗余数据方案、数据隐藏方案,会导致生成的令牌的具体内容不同;而数据接口方案、代码执行流程方案和代码混淆方案,仅仅影响用于生成令牌的总代码本身,不同的数据接口方案、代码执行流程方案和代码混淆方案随机组合后会大大提高攻击者逆向总代码的难度,但是并不影响生成的令牌的具体内容。
可选地,在其中一些实现方式中,在操作101中,响应于达到预设触发条件,可以分别针对各部分子方案,从各部分子方案对应的候选方案中依序选取一个候选方案作为各部分子方案对应的目标子方案;或者,也可以分别针对各部分子方案,从各部分子方案对应的候选方案中随机选取一个候选方案作为所述各部分子方案对应的目标子方案。
基于本实施例,可以动态确定各部分子方案对应的目标子方案,从而使得每次用于生成令牌的代码的目标方案动态变化,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌。
可选地,在其中一些实现方式中,可以预先设置各部分子方案对应的候选方案、以及候选方案对应的子代码;或者,还可以进一步对各部分子方案对应的候选方案、以及候选方案对应的子代码进行更新。
基于本实施例,可以动态更新用于生成令牌的代码的目标方案中各部分子方案,从而进一步增加生成令牌的方案或代码被攻击者逆向分析的难度。
可选地,在其中一些实现方式中,在操作104中,可以分别从预先设置的各部分子方案对应的候选方案以及各候选方案对应的子代码中,获取各目标子方案对应的子代码。
图2为本申请另一实施例提供的动态生成令牌的方法的流程示意图,如图2所示,在图1所示实施例的基础上,还可以包括:
201,响应于接收到客户端发送的请求内容、令牌、以及第二会话密钥标识。
其中,第二会话密钥标识用于唯一标识第二会话密钥。
其中的请求内容为客户端请求服务端处理的内容,例如,请求内容可以是网络数据访问请求、系统资源访问请求、用户个人信息的更新请求等等,本申请实施对请求内容对应的具体业务类型和具体内容不做限制。
202,从对应关系表中获取第二会话密钥标识对应的第二会话密钥。
203,响应于从对应关系表中获取到第二会话密钥标识对应的第二会话密钥,获取该第二会话密钥中包括的多个子方案标识。
若从对应关系表中获取到第二会话密钥标识对应的第二会话密钥,则说明第二会话密钥标识存在,为未被篡改的会话密钥标识。否则,若从对应关系表中未获取到第二会话密钥标识对应的第二会话密钥,则说明第二会话密钥标识为被篡改后的会话密钥标识,不执行本实施例的后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。
本申请实施例中,“第一”、“第二”仅用于区别不同或可能不同的指代对象。第二会话密钥标识表示客户端接收到的会话密钥标识,可能是服务端下发给该客户端的、未被篡改的会话密钥标识,此时第二会话密钥标识即为第一会话密钥标识,第二会话密钥标识所标识的第二会话密钥中的多个子方案标识即为第一目标方案中多个目标子方案的子方案标识;另外,第二会话密钥标识也可能是服务端下发后被篡改的会话密钥标识,此时第二会话密钥标识已与第一会话密钥标识不同。
204,基于该多个子方案标识所标识的子方案从令牌获取有效数据。
其中的有效数据,为各有效字段(即预设规则中令牌需要包括的字段,例如令牌版本号、令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、可选数据等)的赋值,其中,令牌版本号(具体赋值)由服务端按照预设分配方式(例如随机分配、顺序分配)为本次用于生成的令牌分配,令牌ID、令牌类型、令牌来源、令牌属性、client当前时间、可选数据等有效字段的赋值由客户端获取并上传,根据应用的业务,可选数据可以包括用户的输入数据、鼠标移动数据、键盘输入的统计数据、环境相关数据(例如窗口大小、当前操作系统、CPU型号等),本申请实施例对此不做限制。
例如,在一个实现方式中,基于第二会话密钥中包括的多个子方案标识所标识的子方案,可以知道本次生成令牌所采用的目标编码算法方案、目标加密算法方案、目标效验算法方案、目标数据存储位置方案、目标插入冗余数据方案、目标数据隐藏方案、目标数据接口方案、目标代码执行流程方案和目标代码混淆方案,可以采用相应的方案从令牌中提取有效数据,例如,根据目标编码算法方案采用对应的解码算法来解码数据,根据目标加密算法方案采用对应的解密算法来解密数据,根据目标效验算法方案采用对应的效验算法来效验数据,在校验通过后,根据目标插入冗余数据方案删除冗余数据,根据目标数据存储位置方案找到有效数据的存储位置提取有效数据。
205,响应于从令牌获取到有效数据,对请求内容进行处理。
基于本实施例,客户端基于总代码生成令牌后,可以将接收到的第二会话密钥标识和生成的令牌、连同请求内容一起返回服务端,这样,服务端可以基于第二会话密钥标识获取相应的第二会话密钥,并根据第二会话密钥中多个子方案标识所标识的子方案对令牌进行有效数据提取,从而提高令牌的安全性和可识别性。
可选地,在其中一些实现方式中,在操作102中,具体可以基于令牌版本号、第一目标方案中多个目标子方案的子方案标识、以及第一目标方案的过期时间信息生成第一会话密钥。此时,第一会话密钥中还包括第一目标方案的过期时间信息。
其中的过期时间信息可以包括起始时刻和有效时长,具体实现中,可以以服务端生成第一目标方案或总代码的时间作为起始时刻;有效时长可以根据实际需求设置,也可以随机选取一个不大于预设时长的时长作为有效时长,并可以根据需要更新,例如可以为30秒、2分、1小时等。
如下表2所示,为本申请实施例中服务端生成的会话密钥(即第一会话密钥)的数据格式的一个具体示例,本领域技术人员知悉,本申请实施例中的会话密钥(Session Key)可以采用其他任意格式,也可以包括除表2中所示内容之外的其他内容。
表2
Figure BDA0003970247380000281
Figure BDA0003970247380000291
表2中,Session Key的大小为16字节(byte),Session Key中各部分内容占用的大小如表1所示。根据上述数据结构,从Session Key中的相应位置可以对应读取Session Key中的各部分内容。其中,各目标子方案标识为用于唯一标识各目标子方案,可以是各目标子方案的名称或者各目标子方案在其所属部分子方案的多个候选方案中的编号。例如,加密算法方案这一部分子方案的多个候选方案包括AES128、AES256、3DES、…,可以预先设置对应的加密算法方案标识依次为1、2、3、…;编码算法方案这一部分子方案的多个候选方案包括Base81、Base56、Base64、…,可以预先设置对应的编码算法方案标识依次为1、2、3、…;效验算法方案这一部分子方案的多个候选方案包括MD5、hash1、hash256、CRC32、CRC16、CRC8、LRC、…,可以预先设置对应的校验算法方案标识依次为1、2、3、4、5、6、7、…。从Session Key中的相应位置读取各目标子方案标识后,基于各目标子方案标识可以确定本次SessionKey中采用的目标子方案,例如,从Session Key中第2个字节读取的信息为1时,表示效验算法方案标识为1,此时,可以确定本次用于生成令牌的效验算法方案为MD5;从Session Key中第3个字节读取的信息为2时,表示加密算法方案标识为2,此时,可以确定本次用于生成令牌的加密算法方案为AES256;…,以此类推,可以确定本次用于生成令牌的各目标子方案。
图3为本申请又一实施例提供的动态生成令牌的方法的流程示意图,如图3所示,在图2所示实施例的基础上,操作203可以包括:
2031,获取第二会话密钥中的过期时间信息。
2032,基于第二会话密钥中的过期时间信息确认第二会话密钥是否过期。
例如,可以根据第二会话密钥中的过期时间信息中的起始时刻和有效时长,以服务端接收到令牌的时刻作为当前时刻,判断令牌是否在有效时长范围内,若令牌在有效时长范围内,确认第二会话密钥未过期;否则,若令牌不在有效时长范围内,确认第二会话密钥已过期。
2033,响应于第二会话密钥未过期,获取第二会话密钥中包括的多个子方案标识。
否则,若第二会话密钥未过期,不执行操作2033及其后续流程,或者进一步向客户端反馈需要进行身份认证的响应消息。
基于本申请提供的技术方案,服务端生成的第一会话密钥中还包括第一目标方案的过期时间信息,这样,接收到客户端返回的第二会话密钥标识并获取相应的第二会话密钥后,可以基于第二会话密钥中的过期时间信息确认该第二会话密钥是否过期,只有在第二会话密钥未过期时,才获取第二会话密钥中多个子方案标识所标识的子方案,来对令牌进行有效数据提取,可以设置较短的过期时间来阻挡攻击者的逆向分析用于生成令牌的总代码,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,但是这部分代码已经过期,没办法将其整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。
基于本实施例,可以设置较短的有效时长来阻挡攻击者的逆向分析用于生成令牌的总代码,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,但是这部分代码已经过期,没办法将其整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。
可选地,在其中一些实现方式中,通过操作102生成第一会话密钥后,可以利用预设加密算法和保密的服务端密钥(server key)对第一会话密钥进行加密,得到加密的第一会话密钥,操作103中,具体将加密的第一会话密钥与第一会话密钥标识之间的对应关系存储在对应关系表中。
其中的服务端密钥可以由服务端按照预设方式生成,例如随机生成或者采用预设算法生成,本申请实施例对此不做限制。其中的预设加密算法可以为加密强度较高的加密算法,例如AES256或加密强度不低于AES256的其他加密算法。该预设加密算法和保密的服务端密钥仅保存在服务端,不会扩散,以提高第一会话密钥的保密性和安全性。
相应地,在操作202中,从对应关系表中获取第二会话密钥标识对应的加密的第二会话密钥,并利用预设加密算法和服务端密钥,对加密的第二会话密钥进行解密,得到第二会话密钥。
基于本实施例,服务端可以将第一会话密钥进行加密后存储,能够提高第一会话密钥的保密性和安全性。
可选地,在其中一些实现方式中,在操作106中,具体可以将总代码、第一会话密钥标识、以及预先获取的客户端密钥发送给客户端;其中,客户端密钥用于客户端加密令牌。
其中的客户端密钥可以由服务端按照预设方式生成,例如随机生成或者采用预设算法生成,本申请实施例对此不做限制。
服务端将总代码、第一会话密钥标识、以及预先获取的客户端密钥发送给客户端时,可以记录第一会话密钥标识与客户端密钥之间的对应关系,从而基于该对应关系可以确定第一会话密钥标识对应的客户端密钥,以用于解密客户端发送的加密的令牌。其中的客户端ID用于唯一标识一个客户端。
或者,服务端将总代码、第一会话密钥标识、以及预先获取的客户端密钥发送给客户端时,也可以记录第一会话密钥标识、以及客户端密钥与该客户端标识(ID)之间的对应关系,从而基于该对应关系可以确定发送给该客户端的第一会话密钥标识和客户端密钥,以便利用该客户端密钥解密客户端发送的加密的令牌。
相应地,在操作201中,具体为接收到所述客户端发送的请求内容、加密的令牌、以及第二会话密钥标识。相应地,在操作204中,利用客户端密钥对加密的令牌进行解密,得到令牌,然后,基于第二会话密钥中多个子方案标识所标识的子方案,从令牌获取有效数据。
基于本实施例,服务端向客户端发送总代码、第一会话密钥密钥时同时发送客户端密钥,这样,客户端生成令牌后,可以直接利用该客户端密钥对令牌进行加密,有助于提高令牌的保密性和安全性。
可选地,在其中一些实现方式中,在执行本申请实施例之前,服务端与客户端之间可以采用预设方式,例如,传输层安全(Transport Layer Security,TLS)或类似方式,进行双向认证,以确保用于生成令牌的总代码与第一会话密钥可以发送给合法的客户端,从而提高数据的安全性。
图4为本申请再一实施例提供的动态生成令牌的方法的流程示意图。该实施例应用于客户端,如图4所示。
301,响应于接收到服务端发送的总代码与第二会话密钥标识。
其中,第二会话密钥标识用于唯一标识第二会话密钥,第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,第二会话密钥中包括多个子方案标识。第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案。所述多部分子方案可以包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案。所述多部分子方案中各部分子方案分别存在多个候选方案。所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到。
302,基于总代码生成令牌。
303,将请求内容、令牌、以及第二会话密钥标识发送给服务端。
其中的请求内容为客户端请求服务端处理的内容,例如,请求内容可以是网络数据访问请求、系统资源访问请求、用户个人信息的更新请求等等,本公开实施对请求内容对应的具体业务类型和具体内容不做限制。
客户端接收到服务端发送的总代码与第二会话密钥标识,每次向服务端发送请求内容前都基于总代码生成令牌,然后将请求内容、令牌、以及第二会话密钥标识一起发送给服务端。
这样,由于服务端每次下发给客户端、用于生成令牌的总代码不同,客户端每次生成的令牌也不同,通过海量的令牌生成方案和动态调整令牌生成方案策略,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,由于动态调整令牌生成方案策略,这部分代码已经失效,从而使攻击者逆向分析出某次用于生成令牌的代码的行为毫无任何意义。另外,可以避免攻击者使用自动化工具采用逆向分析出的代码自动生成令牌访问网络数据和系统资源、或者进一步对网络数据和系统资源进行篡改或者植入病毒,有效保障网络数据和系统资源的安全性。
可选地,在其中一些实现方式中,所述算法相关方案可以包括:编码算法方案、加密算法方案和效验算法方案;和/或,所述数据结构方案可以包括:数据存储位置方案、插入冗余数据方案和数据隐藏方案。
基于本实施例,由于第二目标方案包括多部分子方案对应的多个目标子方案,由于多部分子方案包括:编码算法方案、加密算法方案、效验算法方案、数据存储位置方案、插入冗余数据方案、数据隐藏方案、数据接口方案、代码执行流程方案和代码混淆方案,各部分子方案分别存在多个候选方案,则可以组合出的、用于生成令牌的代码的方案可以达到上百种甚至上千万种,通过海量的令牌生成方案和动态调整令牌生成方案策略,大大增加了生成令牌的代码被攻击者逆向分析的难度,有效防止生成令牌的代码被攻击者逆向分析,从而使得攻击者无法将生成令牌的代码整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。
可选地,在其中一些实现方式中,第二会话密钥具体基于令牌版本号、第二目标方案对应的多个子方案标识、以及第二目标方案的过期时间信息生成。相应地,第二会话密钥还包括第二目标方案的过期时间信息,以便服务端基于第二会话密钥中的过期时间信息确认第二会话密钥是否过期。
其中的过期时间信息可以包括起始时刻和有效时长,具体实现中,可以以服务端生成第二目标方案或总代码的时间作为起始时刻;有效时长可以根据实际需求设置,也可以随机选取一个不大于预设时长的时长作为有效时长,并可以根据需要更新,例如可以为30秒、2分、1小时等。
基于本实施例,可以设置较短的有效时长来阻挡攻击者的逆向分析用于生成令牌的总代码,即使攻击者花费大量的时间逆向分析出某次用于生成令牌的代码中的部分代码,但是这部分代码已经过期,没办法将其整合到自动化工具中自动生成令牌,从而提高了令牌的安全性。
可选地,在其中一些实现方式中,在操作301中,具体可以为接收到服务端发送的所述总代码、第二会话密钥标识、以及客户端密钥。相应地,该实施例中,在操作302之后,还可以利用客户端密钥对令牌进行加密,得到加密的令牌;在操作303中,具体将请求内容、加密的令牌、以及第二会话密钥标识发送给服务端。
基于本实施例,客户端生成令牌后,可以直接利用该客户端密钥对该令牌进行加密,有助于提高令牌的保密性和安全性。
以下以一个具体应用为例,对本申请实施例动态生成令牌的方法的过程进行进一步说明:
S1,响应于达到预设触发条件,服务端按照预设方式,确定本次用于生成令牌的总代码的第一目标方案。其中,第一目标方案包括多部分子方案对应的多个目标子方案。其中,所述多部分子方案可以包括但不限于:编码算法方案、加密算法方案、效验算法方案、数据存储位置方案、插入冗余数据方案、数据隐藏方案、数据接口方案、代码执行流程方案和代码混淆方案。所述多部分子方案中的各部分子方案分别存在多个候选方案。
S2,服务端基于令牌版本号、第一目标方案中多个目标子方案的子方案标识、以及第一目标方案的过期时间信息生成第一会话密钥。
S3,服务端利用预设加密算法和保密的服务端密钥对第一会话密钥进行加密,得到加密的第一会话密钥。
S4,服务端为第一会话密钥分配第一会话密钥ID,并将加密的第一会话密钥与第一会话密钥ID之间的对应关系存储在对应关系表中。
S5,服务端分别获取所述多个目标子方案中各目标子方案对应的子代码。
S6,服务端基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码。
S7,服务端将总代码、第一会话密钥标识与客户端密钥发送给客户端。
S8,响应于接收到服务端发送的总代码、第二会话密钥标识与客户端密钥,客户端基于总代码生成令牌。
此时,根据服务端发送的加密的第一会话密钥标识是否被篡改,客户端接收到的第二会话密钥标识即为与服务端发送的第一会话密钥标识对应不同或相同。若服务端发送的第一会话密钥标识未被篡改,客户端接收到的第二会话密钥标识即为服务端发送的第一会话密钥标识;否则,若服务端发送的第一会话密钥标识被篡改,客户端接收到的第二会话密钥标识便不再是服务端发送的第一会话密钥标识。
例如,在一个实现方式中,客户端通过执行总代码中的目标代码执行流程方案对应的子代码,按照相应的目标代码执行流程方案,通过执行总代码中目标数据接口方案和目标数据结构方案对应的子代码,向相应位置传入有效数据,其中可能执行目标数据隐藏方案对应的子代码对有效数据和总代码中的无效数据进行一些相应的数据隐藏操作;然后,按照总代码中目标效验算法方案、目标加密算法方案、目标执行编码算法方案的子代码顺序,通过执行目标效验算法方案、目标加密算法方案、目标执行编码算法方案的子代码进行相应的校验、加密、编码。其中的总代码为基于代码混淆方案混淆后的代码。
S9,客户端利用客户端密钥对令牌进行加密,得到加密的令牌。
S10,客户端将请求内容、加密的令牌、第二会话密钥标识发送给服务端。
S11,响应于接收到客户端发送的请求内容、加密的令牌、第二会话密钥标识,服务端从对应关系表中获取第二会话密钥标识对应的第二会话密钥。
S12,响应于从对应关系表中获取到第二会话密钥标识对应的第二会话密钥,服务端获取第二会话密钥中的过期时间信息。
否则,若未获取到第二会话密钥,不再进行本操作及后续流程。
S13,服务端基于第二会话密钥中的过期时间信息确认第二会话密钥是否过期。
S14,响应于第二会话密钥未过期,响应于第二会话密钥未过期,服务端获取第二会话密钥中包括的多个子方案标识。
否则,若第二会话密钥已过期,不再进行本操作及后续流程。
S15,服务端利用客户端密钥对加密的令牌进行解密,得到令牌。
S16,服务端基于第二会话密钥中包括的多个子方案标识所标识的子方案,从令牌获取有效数据。
例如,在一个实现方式中,服务端基于第二会话密钥中包括的多个子方案标识所标识的子方案,可以知道本次生成令牌所采用的目标编码算法方案、目标加密算法方案、目标效验算法方案、目标数据存储位置方案、目标插入冗余数据方案、目标数据隐藏方案、目标数据接口方案、目标代码执行流程方案和目标代码混淆方案,可以采用相应的方案从令牌中提取有效数据,例如,根据目标编码算法方案采用对应的解码算法来解码数据,根据目标加密算法方案采用对应的解密算法来解密数据,根据目标效验算法方案采用对应的效验算法来效验数据,根据目标插入冗余数据方案删除冗余数据,根据目标数据存储位置方案找到有效数据的存储位置提取有效数据。
S17,响应于从令牌获取到有效数据,服务端对客户端发送的请求内容进行处理。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
图5为本申请一实施例提供的动态生成令牌的装置的结构示意图。该实施例的动态生成令牌的装置应用于服务端,可用于实现本申请上述服务端实现的各动态生成令牌的方法实施例。如图5所示,该实施例的动态生成令牌的装置包括:确定模块401、第一生成模块402、分配模块403、第一获取模块404、第二获取模块405和第一发送模块406。其中:
确定模块401,用于响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,所述第一目标方案包括多部分子方案对应的多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;
第一生成模块402,用于基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥;
分配模块403,用于为所述第一会话密钥分配第一会话密钥标识,并将所述第一会话密钥与所述第一会话密钥标识之间的对应关系存储在对应关系表中;其中,所述第一会话密钥标识用于唯一标识所述第一会话密钥;所述子方案标识用于唯一标识一个子方案;
第一获取模块404,用于分别获取所述多个目标子方案中各目标子方案对应的子代码;
第二获取模块405,用于基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码;
第一发送模块406,用于将所述总代码与所述第一会话密钥标识发送给客户端,以便所述客户端基于所述总代码生成第一令牌。
本实施例动态生成令牌的装置中各模块的详细实现和具体实行的操作,可以参见本申请上述服务端实现的各动态生成令牌的方法实施例,不再赘述。
图6为本申请另一实施例提供的动态生成令牌的装置的结构示意图。该实施例的动态生成令牌的装置应用于客户端,可用于实现本申请上述客户端实现的各动态生成令牌的方法实施例。如图6所示,该实施例的动态生成令牌的装置包括:接收模块501、第二生成模块502和第二发送模块503。其中:
接收模块501,用于接收服务端发送的总代码与第二会话密钥标识;其中,所述第二会话密钥标识用于唯一标识第二会话密钥;所述第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,所述第二会话密钥中包括所述多个子方案标识;所述第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到;
第二生成模块502,用于基于所述总代码生成令牌;
第二发送模块503,用于将请求内容、所述令牌、以及所述第二会话密钥标识发送给所述服务端。
本实施例动态生成令牌的装置中各模块的详细实现和具体实行的操作,可以参见本申请上述客户端端实现的各动态生成令牌的方法实施例,不再赘述。
图7为本申请一实施例提供的动态生成令牌的系统的结构示意图。该实施例的动态生成令牌的系统可用于实现本申请上述各实施例的动态生成令牌的方法。如图7所示,该实施例的动态生成令牌的系统包括:服务端701和客户端702。其中:
服务端601,用于响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,所述第一目标方案包括多部分子方案对应的多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥;为所述第一会话密钥分配第一会话密钥标识,并将所述第一会话密钥与所述第一会话密钥标识之间的对应关系存储在对应关系表中;其中,所述第一会话密钥标识用于唯一标识所述第一会话密钥;所述子方案标识用于唯一标识一个子方案;分别获取所述多个目标子方案中各目标子方案对应的子代码;基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码;将所述总代码与所述第一会话密钥标识发送给客户端,以便客户端602基于所述总代码生成令牌;
客户端602,用于响应于接收到服务端601发送的总代码与第二会话密钥标识;其中,所述第二会话密钥标识用于唯一标识第二会话密钥;所述第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,所述第二会话密钥中包括所述多个子方案标识;所述第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到;基于所述总代码生成令牌;将请求内容、所述令牌、以及所述第二会话密钥标识发送给服务端601。
本申请实施例中,服务端601和客户端602的具体实现,可以参考本申请上述各相应实施例动态生成令牌的方法的装置,此处不再赘述。
另外,本申请实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请上述任一实施例所述的动态生成令牌的方法。
另外,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请上述任一实施例所述的动态生成令牌的方法。
图8示出了可以用来实施本申请的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图8所示,电子设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储电子设备700操作所需的各种程序和数据。计算单元701、ROM702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
电子设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许电子设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如Webshell文件的检测方法。例如,在一些实施例中,Webshell文件的检测方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到电子设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的Webshell文件的检测方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行Webshell文件的检测方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (16)

1.一种动态生成令牌的方法,其特征在于,应用于服务端,包括:
响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,所述第一目标方案包括多部分子方案对应的多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;
基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥;
为所述第一会话密钥分配第一会话密钥标识,并将所述第一会话密钥与所述第一会话密钥标识之间的对应关系存储在对应关系表中;其中,所述第一会话密钥标识用于唯一标识所述第一会话密钥;所述子方案标识用于唯一标识一个子方案;
分别获取所述多个目标子方案中各目标子方案对应的子代码;
基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码;
将所述总代码与所述第一会话密钥标识发送给客户端,以便所述客户端基于所述总代码生成令牌。
2.根据权利要求1所述的方法,其特征在于,所述按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,包括:
分别针对所述各部分子方案,从所述各部分子方案对应的候选方案中依序选取一个候选方案作为所述各部分子方案对应的目标子方案;或者,
分别针对所述各部分子方案,从所述各部分子方案对应的候选方案中随机选取一个候选方案作为所述各部分子方案对应的目标子方案。
3.根据权利要求2所述的方法,其特征在于,还包括:
预先设置所述各部分子方案对应的候选方案、以及所述候选方案对应的子代码;或者,
进一步对所述各部分子方案对应的候选方案、以及所述候选方案对应的子代码进行更新。
4.根据权利要求1-3任一所述的方法,其特征在于,所述分别获取所述多个目标子方案中各目标子方案对应的子代码,包括:
分别从预先设置的所述各部分子方案对应的候选方案以及各候选方案对应的子代码中,获取所述各目标子方案对应的子代码。
5.根据权利要求1-4任一所述的方法,其特征在于,还包括:
响应于接收到客户端发送的请求内容、令牌、以及第二会话密钥标识;
从所述对应关系表中获取所述第二会话密钥标识对应的第二会话密钥;
响应于从所述对应关系表中获取到所述第二会话密钥标识对应的第二会话密钥,获取所述第二会话密钥中包括的多个子方案标识;
基于所述多个子方案标识所标识的子方案从所述令牌获取有效数据;
响应于从所述令牌获取到有效数据,对所述请求内容进行处理。
6.根据权利要求5所述的方法,其特征在于,所述基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥,包括:
基于所述令牌版本号、所述多个目标子方案的子方案标识、以及所述第一目标方案的过期时间信息生成所述第一会话密钥。
7.根据权利要求6所述的方法,其特征在于,所述响应于从所述对应关系表中获取到所述第二会话密钥标识对应的第二会话密钥,获取所述第二会话密钥中包括的多个子方案标识,包括:
获取所述第二会话密钥中的过期时间信息;
基于所述第二会话密钥中的的过期时间信息确认所述第二会话密钥是否过期;
响应于所述第二会话密钥未过期,获取所述第二会话密钥中包括的多个子方案标识。
8.根据权利要求7所述的方法,其特征在于,所述将所述总代码与所述第一会话密钥标识发送给客户端,包括:
将所述总代码、所述第一会话密钥标识、以及预先获取的客户端密钥发送给所述客户端;其中,所述客户端密钥用于所述客户端加密所述令牌。
9.根据权利要求8所述的方法,其特征在于,所述接收到客户端发送的请求内容、令牌、以及第二会话密钥标识,包括:
接收到所述客户端发送的所述请求内容、加密的令牌、以及所述第二会话密钥标识;
所述基于所述多个子方案标识所标识的子方案从所述令牌获取有效数据,包括:
利用所述客户端密钥对所述加密的令牌进行解密,得到所述令牌;
基于所述多个子方案标识所标识的子方案,从所述令牌获取有效数据。
10.一种动态生成令牌的方法,其特征在于,应用于客户端,所述方法包括:
响应于接收到服务端发送的总代码与第二会话密钥标识;其中,所述第二会话密钥标识用于唯一标识第二会话密钥;所述第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,所述第二会话密钥中包括所述多个子方案标识;所述第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到;
基于所述总代码生成令牌;
将请求内容、所述令牌、以及所述第二会话密钥标识发送给所述服务端。
11.根据权利要求10所述的方法,其特征在于,所述第二会话密钥具体基于所述令牌版本号、所述多个子方案标识、以及所述第二目标方案的过期时间信息生成。
12.根据权利要求10或11所述的方法,其特征在于,所述接收到服务端发送的总代码与第二会话密钥标识,包括:
接收到所述服务端发送的所述总代码、所述第二会话密钥标识、以及客户端密钥;
所述基于所述总代码生成令牌之后,还包括:
利用所述客户端密钥对所述令牌进行加密,得到加密的令牌;
所述将请求内容、所述令牌、以及所述第二会话密钥标识发送给所述服务端,包括:
将所述请求内容、所述加密的令牌、以及所述加密的第二会话密钥发送给所述服务端。
13.一种动态生成令牌的装置,其特征在于,应用于服务端,包括:
确定模块,用于响应于达到预设触发条件,按照预设方式,确定本次用于生成令牌的总代码的第一目标方案,所述第一目标方案包括多部分子方案对应的多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;
第一生成模块,用于基于令牌版本号和所述多个目标子方案的子方案标识生成第一会话密钥;
分配模块,用于为所述第一会话密钥分配第一会话密钥标识,并将所述第一会话密钥与所述第一会话密钥标识之间的对应关系存储在对应关系表中;其中,所述第一会话密钥标识用于唯一标识所述第一会话密钥;所述子方案标识用于唯一标识一个子方案;
第一获取模块,用于分别获取所述多个目标子方案中各目标子方案对应的子代码;
第二获取模块,用于基于所述多个目标子方案中各目标子方案对应的子代码,获取本次用于生成令牌的总代码;
第一发送模块,用于将所述总代码与所述第一会话密钥标识发送给客户端,以便所述客户端基于所述总代码生成令牌。
14.一种动态生成令牌的装置,其特征在于,应用于客户端,包括:
接收模块,用于响应于接收到服务端发送的总代码与第二会话密钥标识;其中,所述第二会话密钥标识用于唯一标识第二会话密钥;所述第二会话密钥基于令牌版本号、第二目标方案对应的多个子方案标识生成,所述第二会话密钥中包括所述多个子方案标识;所述第二目标方案包括多部分子方案对应的多个目标子方案,所述多个子方案标识用于标识所述多个目标子方案;其中,所述多部分子方案包括:算法相关方案、数据结构方案、数据接口方案、代码执行流程方案和代码混淆方案;所述多部分子方案中各部分子方案分别存在多个候选方案;所述总代码基于所述多个目标子方案中各目标子方案对应的子代码得到;
第二生成模块,用于基于所述总代码生成令牌;
第二发送模块,用于将请求内容、所述令牌、以及所述第二会话密钥标识发送给所述服务端。
15.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-12任一所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-12任一所述的方法。
CN202211514569.0A 2022-11-29 2022-11-29 动态生成令牌方法和装置、电子设备及存储介质 Pending CN116150780A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211514569.0A CN116150780A (zh) 2022-11-29 2022-11-29 动态生成令牌方法和装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211514569.0A CN116150780A (zh) 2022-11-29 2022-11-29 动态生成令牌方法和装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116150780A true CN116150780A (zh) 2023-05-23

Family

ID=86372627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211514569.0A Pending CN116150780A (zh) 2022-11-29 2022-11-29 动态生成令牌方法和装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116150780A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116743461A (zh) * 2023-06-15 2023-09-12 上海银满仓数字科技有限公司 基于时间戳的商品数据加密方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116743461A (zh) * 2023-06-15 2023-09-12 上海银满仓数字科技有限公司 基于时间戳的商品数据加密方法和装置
CN116743461B (zh) * 2023-06-15 2023-12-22 上海银满仓数字科技有限公司 基于时间戳的商品数据加密方法和装置

Similar Documents

Publication Publication Date Title
US11451392B2 (en) Token-based secure data management
CN112131316B (zh) 应用于区块链系统的数据处理方法及装置
CA3186475A1 (en) Transaction messaging
CN112883361B (zh) 应用程序的功能跳转方法、装置、计算机设备及存储介质
US8875227B2 (en) Privacy aware authenticated map-reduce
CN109743161B (zh) 信息加密方法、电子设备和计算机可读介质
CN111753324B (zh) 私有数据的处理方法、计算方法及所适用的设备
US20210117533A1 (en) Private password constraint validation
CN112469036A (zh) 一种消息加解密方法、装置、移动终端和存储介质
US20180083773A1 (en) Information security device and information security method using accessibility
CN111340483A (zh) 一种基于区块链的数据管理方法及相关设备
CN116150780A (zh) 动态生成令牌方法和装置、电子设备及存储介质
CN112287376A (zh) 一种隐私数据的处理方法及装置
CN115603907A (zh) 加密存储数据的方法、装置、设备和存储介质
CN109711178B (zh) 一种键值对的存储方法、装置、设备及存储介质
CN107133517B (zh) 一种基于内存中数据加密和计算的数据还原方法
CN112100689B (zh) 一种可信数据处理方法、装置及设备
CN110545542A (zh) 基于非对称加密算法的主控密钥下载方法、装置和计算机设备
CN113794706A (zh) 数据的处理方法、装置、电子设备及可读存储介质
CN110602051B (zh) 基于共识协议的信息处理方法及相关装置
CN112182509A (zh) 一种合规数据的异常检测方法、装置及设备
CN115001768A (zh) 基于区块链的数据交互方法、装置、设备及存储介质
CN115589316A (zh) 一种数据加密传输方法、装置、电子设备及存储介质
CN115913574A (zh) 动态生成令牌方法和装置、电子设备及存储介质
CN114036364A (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