CN114844645A - 一种数据验证方法、装置、电子设备和存储介质 - Google Patents

一种数据验证方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114844645A
CN114844645A CN202210313343.8A CN202210313343A CN114844645A CN 114844645 A CN114844645 A CN 114844645A CN 202210313343 A CN202210313343 A CN 202210313343A CN 114844645 A CN114844645 A CN 114844645A
Authority
CN
China
Prior art keywords
client
plaintext
key
server
data
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.)
Granted
Application number
CN202210313343.8A
Other languages
English (en)
Other versions
CN114844645B (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.)
Wuba Co Ltd
Original Assignee
Wuba Co 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 Wuba Co Ltd filed Critical Wuba Co Ltd
Priority to CN202210313343.8A priority Critical patent/CN114844645B/zh
Publication of CN114844645A publication Critical patent/CN114844645A/zh
Application granted granted Critical
Publication of CN114844645B publication Critical patent/CN114844645B/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/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/72Signcrypting, i.e. digital signing and encrypting simultaneously

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

本申请实施例提供了一种数据验证方法、装置、电子设备和存储介质,所述方法应用于服务端,所述服务端与客户端通信连接,所述方法包括:动态生成明文秘钥;根据所述明文秘钥生成签名秘钥表;接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端;接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。本申请实施例可以根据明文秘钥生成签名秘钥表,从而隐藏原始明文秘钥,避免原始明文秘钥暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,提高网络黑产对抗强度。

Description

一种数据验证方法、装置、电子设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据验证方法、一种数据验证装置、一种电子设备和一种计算机可读存储介质。
背景技术
随着互联网的迅速发展,数据传输的安全性受到了更广泛的关注。在进行多端通信时,需要对传输的数据进行完整性验证,以保证传输的数据不被未授权的第三方篡改。然而,通常直接采用秘钥进行校验,使得秘钥暴露在代码中,容易导致秘钥被未授权的第三方窃取,从而伪造数据进行传输。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据验证方法、一种数据验证装置、一种电子设备和一种计算机可读存储介质。
为了解决上述问题,本申请实施例公开了一种数据验证方法,所述方法应用于服务端,所述服务端与客户端通信连接,所述方法包括:
动态生成明文秘钥;
根据所述明文秘钥生成签名秘钥表;
接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端;
接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
可选地,所述根据所述明文秘钥生成签名秘钥表,包括:
生成所述明文秘钥对应的秘钥标识符;
对所述明文秘钥进行异或运算处理,得到运算结果;
根据所述运算结果和所述秘钥标识符,生成签名秘钥表。
可选地,所述方法还包括:
将所述签名秘钥表上传至签名秘钥表存储服务器;
接收所述存储服务器发送的签名秘钥表存储地址;
将所述秘钥标识符、所述存储服务器发送的签名秘钥表存储地址以及所述明文秘钥进行关联,得到秘钥查询表;
所述接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,包括:
接收到所述客户端发送的接口请求时,从所述秘钥查询表中获取签名秘钥表存储地址;
将所述签名秘钥表存储地址发送至所述客户端。
可选地,所述客户端验证数据包括客户端散列结果和所述秘钥标识符,所述接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证,包括:
查找所述秘钥标识符对应的明文秘钥;
采用散列算法,对所述秘钥标识符对应的明文秘钥和所述明文进行散列运算,确定服务端散列结果;
将所述服务端散列结果和所述客户端散列结果进行一致性对比;
若所述客户端散列结果与所述服务端散列结果相同,则所述明文验证成功。
本申请实施例还公开了另一种数据验证方法,所述方法应用于客户端,所述客户端与服务端通信连接,所述方法包括:
向所述服务端发送接口请求;
接收所述服务端发送的签名秘钥表;
根据所述签名秘钥表以及获取到的明文确定客户端验证数据;
将所述客户端验证数据和所述明文发送至所述服务端,以使所述服务端根据所述客户端验证数据对所述明文进行验证。
可选地,所述签名秘钥表包括对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符;所述根据所述签名秘钥表以及所述明文确定客户端验证数据,包括:
采用散列算法,对所述运算结果和所述明文进行散列运算,得到客户端散列结果;
将所述客户端散列结果和所述秘钥标识符作为客户端验证数据。
本申请实施例还公开了一种数据验证装置,所述装置应用于服务端,所述服务端与客户端通信连接,所述装置具体可以包括如下模块:
秘钥生成模块,用于动态生成明文秘钥;
签名秘钥表生成模块,用于根据所述明文秘钥生成签名秘钥表;
签名秘钥表发送模块,用于接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端;
验证模块,用于接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
可选地,所述签名秘钥表生成模块,包括:
标识符生成子模块,用于生成所述明文秘钥对应的秘钥标识符;
异或运算子模块,用于对所述明文秘钥进行异或运算处理,得到运算结果;
生成子模块,用于根据所述运算结果和所述秘钥标识符,生成签名秘钥表。
可选地,所述装置还包括:
上传模块,用于将所述签名秘钥表上传至签名秘钥表存储服务器;
存储地址接收模块,用于接收所述存储服务器发送的签名秘钥表存储地址;
关联模块,用于将所述秘钥标识符、所述存储服务器发送的签名秘钥表存储地址以及所述明文秘钥进行关联,得到秘钥查询表;
所述验证模块,包括:
存储地址获取子模块,用于接收到所述客户端发送的接口请求时,从所述秘钥查询表中获取签名秘钥表存储地址;
存储地址发送子模块,用于将所述签名秘钥表存储地址发送至所述客户端。
可选地,所述客户端验证数据包括客户端散列结果和所述秘钥标识符,所述验证模块,包括:
查找子模块,用于查找所述秘钥标识符对应的明文秘钥;
散列运算子模块,用于采用散列算法,对所述秘钥标识符对应的明文秘钥和所述明文进行散列运算,确定服务端散列结果;
对比判断子模块,用于将所述服务端散列结果和所述客户端散列结果进行一致性对比;
对比验证子模块,用于若所述客户端散列结果与所述服务端散列结果相同,则所述明文验证成功。
本申请实施例还公开了另一种数据验证装置,所述装置应用于客户端,所述客户端与服务端通信连接,所述装置具体可以包括如下模块:
接口请求发送模块,用于向所述服务端发送接口请求;
签名秘钥表接收模块,用于接收所述服务端发送的签名秘钥表;
验证数据确定模块,用于根据所述签名秘钥表以及获取到的明文确定客户端验证数据;
验证数据发送模块,用于将所述客户端验证数据和所述明文发送至所述服务端,以使所述服务端根据所述客户端验证数据对所述明文进行验证。
可选地,所述签名秘钥表包括对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符;所述验证数据确定模块,包括:
客户端散列结果确定子模块,用于采用散列算法,对所述运算结果和所述明文进行散列运算,得到客户端散列结果;
客户端验证数据确定子模块,用于将所述客户端散列结果和所述秘钥标识符作为客户端验证数据。
本发明实施例还公开了一种电子设备,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的数据验证方法的步骤。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的数据验证方法的步骤。
本申请实施例包括以下优点:
在本申请实施例中,服务端可以根据明文秘钥生成签名秘钥表并将签名秘钥表发送至客户端,客户端可以接收到包括服务端对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符的签名秘钥表,从而可以在服务端隐藏原始的明文秘钥,使得客户端接收的是对原始明文秘钥进行隐藏后的数据,避免原始明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度;通过服务端动态生成明文秘钥,可以使得明文秘钥动态化,避免明文秘钥写入客户端代码导致明文秘钥不易修改,明文秘钥易被网络黑产窃取的问题,从而进一步降低黑产窃取风险。
附图说明
图1是本申请实施例提供的一种数据验证方法的步骤流程图;
图2是本申请实施例提供的另一种数据验证方法的步骤流程图;
图3是本申请实施例提供的另一种数据验证方法的步骤流程图;
图4是本申请实施例提供的一种数据验证装置的结构框图;
图5是本申请实施例提供的另一种数据验证装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
为了保证数据安全,在服务端接收客户端传输的明文之前,服务端与客户端之间需要约定明文秘钥,客户端将约定的明文秘钥直接写入客户端代码中,并对明文秘钥和明文进行运算得到认证码以进行数据完整性验证。然而,网络黑产可以从客户端获取客户端代码,对客户端代码进行反向编译来窃取明文秘钥,批量生成伪造数据,通过调用服务端接口将伪造数据传输给服务端。另外,由于约定的明文秘钥被写入客户端代码,只有修改客户端代码才能更新明文秘钥。因此,明文秘钥直接暴露在客户端,且明文秘钥不易修改,容易导致明文秘钥被网络黑产窃取以伪造数据。
本申请实施例的核心构思在于,根据明文秘钥生成签名秘钥表并将签名秘钥表发送至客户端进行处理,可以隐藏原始的明文秘钥,避免原始明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度;通过服务端动态生成明文秘钥,可以使得明文秘钥动态化,避免明文秘钥写入客户端代码导致明文秘钥不易修改,明文秘钥易被网络黑产窃取的问题,从而进一步降低黑产窃取风险。
参照图1,示出了本申请实施例提供的一种数据验证方法的步骤流程图,所述方法应用于服务端,所述服务端与客户端通信连接,所述方法具体可以包括如下步骤:
步骤101,动态生成明文秘钥。
本申请实施例的数据验证方法可以应用于服务端,服务端可以与至少一个客户端进行通信连接,从而通过数据交互对数据进行验证。
在业务场景中,服务端可以接收到客户端发送的接口请求,并将签名秘钥表下发至客户端。客户端可以接收服务端下发的签名秘钥表,可以由业务方将用户场景值进行URL(Uniform Resource Locator,统一资源定位符)拼接得到明文,并在客户端采用白盒签名算法对明文进行数据签名,将客户端签名结果发送至服务端进行验证。当客户端签名结果与服务端的签名结果不一致时,可以表示明文已经被黑产篡改,则对当前用户进行标记处理,从而通过隐藏原始明文秘钥,防止黑产窃取明文秘钥更改用户场景值、导致绕过数据治理策略的拦截,避免对业务造成损失。
不同的业务场景可以对应不同的数据治理策略,在业务场景下,可以通过预先配置的数据治理策略提醒消费者当前场景中可能存在的风险行为。示例性地,在租房场景下,若在消费者与其他用户聊天的过程中,频繁出现引导消费者添加私人社交账号进行沟通交易的信息,可以通过对租房场景预先配置的数据治理策略提醒该引导行为可能存在风险。在另一示例中,在不涉及钱财交易的聊天场景下,由于配置的是该场景对应的数据治理策略,可以不对引导消费者添加私人社交账号的行为进行治理。
不同的业务场景可以具有不同的用户场景值,当异常用户(即黑产)更改场景值数据后,可以导致无法采取原始业务场景对应的数据治理策略来提醒当前业务场景中可能存在的风险行为,绕过数据治理策略的拦截行为。本申请实施例的数据验证方法可以防止黑产更改用户场景值导致绕过数据治理策略的拦截,避免对业务造成损失。
明文秘钥可以是传输或保存为明文的密码。服务端可以动态生成随机字符串,将随机字符串作为明文秘钥。示例性地,服务端可以生成一个16位的随机数作为明文秘钥,例如,asdhaihpadwrksol。
在本申请实施例中,通过服务端动态生成明文秘钥,可以使得明文秘钥动态化,避免明文秘钥写入客户端代码导致明文秘钥不易修改,容易被网络黑产窃取明文秘钥的问题。
本领域技术人员应该可以理解,上述随机数的位数仅仅是本申请的示例,本领域技术人员可以根据实际需求设置不同的随机数的位数,本申请在此不作限制。
步骤102,根据所述明文秘钥生成签名秘钥表。
在本申请实施例中,服务端动态生成明文秘钥后,根据生成的明文秘钥可以动态更新签名秘钥表。
步骤103,接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端。
客户端验证数据可以是客户端发送给服务端的用于对明文进行完整性验证的数据。在服务端接收到客户端发送的接口请求时,可以将签名秘钥表发送至客户端。客户端可以根据签名秘钥表和明文确定客户端验证数据,将客户端验证数据和明文发送给服务端。
可以由业务方将不同业务场景对应的用户场景值进行URL拼接得到不同的明文。示例性地,在房产的聊天场景中,用户场景值可以为scene=10,该场景对应的明文可以为https:/im.58.com?scene=10;在招聘的聊天场景中,用户场景值可以为scene=20,该场景对应的明文可以为https://im.58.com?scene=20。
客户端可以采用白盒签名算法对明文进行数据签名,得到客户端白盒签名结果,并将白盒签名结果以及秘钥标识符附加在明文后,发送至服务端。示例性地,在房产的聊天场景中,可以将https://im.58.com?scene=100&sign=白盒签名结果&keyId=白盒keyId,发送至客户端。
步骤104,接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
服务端可以接收客户端发送的客户端验证数据和明文,根据客户端验证数据对明文进行验证。
在本申请实施例中,根据明文秘钥生成签名秘钥表并将签名秘钥表发送至客户端进行处理,可以隐藏原始的明文秘钥,避免原始明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度;通过服务端动态生成明文秘钥,可以使得明文秘钥动态化,避免明文秘钥写入客户端代码导致明文秘钥不易修改,明文秘钥易被网络黑产窃取的问题,从而进一步降低黑产窃取风险。
参照图2,示出了本申请实施例提供的另一种数据验证方法的步骤流程图,所述方法应用于服务端,所述服务端与客户端通信连接,所述方法具体可以包括如下步骤:
步骤201,动态生成明文秘钥。
步骤202,生成所述明文秘钥对应的秘钥标识符。
秘钥标识符可以是用于标识明文秘钥的符号。秘钥标识符可以由数字+字母组成,例如,123456huyjkigtfr。服务端动态生成明文秘钥后,可以随机生成明文秘钥对应的秘钥标识符,其中,一个明文秘钥可以对应唯一一个秘钥标识符。
步骤203,对所述明文秘钥进行异或运算处理,得到运算结果。
在本申请实施例中,服务端可以对明文秘钥进行异或运算处理,得到运算结果,具体的运算逻辑可以如下所示:
(1)确定明文秘钥的长度。例如,可以确定明文秘钥asdhaihpadwrksol的长度为16位。
(2)将明文秘钥的长度与块字节的长度进行对比,根据对比结果对明文秘钥进行处理,得到与块字节长度相同的用于异或运算的明文秘钥:
(a)当明文秘钥的长度大于块字节的长度时,可以采用散列算法对明文秘钥进行散列运算,得到与块字节长度相同的用于异或运算的明文秘钥。例如,块字节的长度可以为64位,当明文秘钥的长度大于64位时,可以采用散列算法得到64位明文秘钥K=hash(key)。
(b)当明文秘钥的长度小于块字节的长度时,可以对明文秘钥进行填充处理,得到与块字节的长度相同的用于异或运算的明文秘钥。例如,当明文秘钥的长度小于64位时,可以在明文秘钥后填充0x00,得到64位明文秘钥K。
(3)对64位明文秘钥进行异或运算处理,得到填充运算结果。填充运算结果可以包括内部填充运算结果ikey和外部填充运算结果okey。具体的,可以将64位明文秘钥与内部填充常量进行异或运算,得到内部填充运算结果;可以将64位明文秘钥与外部填充常量进行异或运算,得到外部填充运算结果。其中,内部填充常量可以为0x36,外部填充常量可以为0x5c,内部填充运算结果ikey=K^0x36,外部填充运算结果okey=K^0x5c。
(4)对填充运算结果进行散列运算,得到运算结果。运算结果可以包括内部运算结果和外部运算结果。具体的,可以对内部填充运算结果进行散列运算sha256.update(ikey);sha256.saveState(istate),可以调用saveState方法获取到内部运算结果istate;可以对外部填充运算结果进行散列运算sha256.update(okey);sha256.saveState(ostate),可以调用saveState方法获取到外部运算结果ostate。
在本申请实施例中,一个明文秘钥可以对应唯一一个内部运算结果和外部运算结果。
在本申请实施例中,通过对明文秘钥进行异或运算处理,可以隐藏原始的明文秘钥,避免明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度。
步骤204,根据所述运算结果和所述秘钥标识符,生成签名秘钥表。
服务端可以根据内部运算结果、外部运算结果和秘钥标识符,生成签名秘钥表。具体的,可以将内部运算结果、外部运算结果和对应的秘钥标识符写入keyfile.key文件,生成签名秘钥表。
在一种可选的实施例中,所述方法还可以包括以下子步骤S11-S13:
子步骤S11,将所述签名秘钥表上传至签名秘钥表存储服务器。
签名秘钥表存储服务器可以是用于存储签名秘钥表的服务器。示例性地,签名秘钥表存储服务器可以是CDN(Content Delivery Network,内容分发网络)服务器。
子步骤S12,接收所述存储服务器发送的签名秘钥表存储地址。
签名秘钥表存储地址可以用于表示签名秘钥表存储位置的链接地址。服务端将签名秘钥表上传至签名秘钥表存储服务器后,存储服务器可以返回该签名秘钥表对应的链接地址。
子步骤S13,将所述秘钥标识符、所述存储服务器发送的签名秘钥表存储地址以及所述明文秘钥进行关联,得到秘钥查询表。
服务端可以将秘钥标识符、存储服务器发送的签名秘钥表存储地址以及明文秘钥关联到一张秘钥查询表中,并将秘钥查询表预先存储在服务端的数据库中。例如,参照表1为秘钥查询表中的明文秘钥字段、存储地址字段和秘钥标识符字段。
明文秘钥 签名秘钥表存储地址 秘钥标识符
asdhaihpadwrkso https://cdn.58.com/xxzl/wbox/x.key 123456huyjkigtfr
fchilycdnvlwngp https://cdn.58.com/xxzl/wbox/y.key 456789hdnkjrdkit
vseiusksvwdeiru https://cdn.58.com/xxzl/wbox/z.key 549621slfhalkcnj
表1
在本申请实施例中,服务端可以动态生成明文秘钥,当有新的明文秘钥生成时,可以将最新生成的明文秘钥对应的签名秘钥表存储地址和秘钥标识符动态更新到秘钥查询表中,并写入秘钥查询表的最后一项。例如,秘钥查询表中存储有明文秘钥asdhaihpadwrkso以及fchilycdnvlwngp各自对应的签名秘钥表存储地址秘钥标识符,当服务端动态生成明文秘钥vseiusksvwdeiru时,可以将该明文秘钥对应的签名秘钥表存储地址和秘钥标识符写入秘钥查询表中。
步骤205,接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端。
在一种可选的实施例中,所述步骤205可以包括以下子步骤S21-S22:
子步骤S21,接收到所述客户端发送的接口请求时,从所述秘钥查询表中获取签名秘钥表存储地址。
子步骤S22,将所述签名秘钥表存储地址发送至所述客户端。
服务端在接收到客户端发送的接口请求时,可以从预先存储在数据库的秘钥查询表中,获取过期时间最晚即记录在秘钥查询表最后一项记录的签名秘钥表存储地址,并将签名秘钥表存储地址发送至客户端,以使客户端根据签名秘钥表以及明文确定客户端验证数据,并将客户端验证数据和明文发送至服务端。
在本申请实施例中,在接收到接口请求时,通过从预先存储在数据库的秘钥查询表中获取下发给客户端的签名秘钥表存储地址,可以避免在接收到接口请求时才根据明文秘钥生成签名秘钥表,并确定下发的签名秘钥表存储地址,导致消耗网络数据传输时间的问题,从而减少数据传输时间。
在本申请实施例中,秘钥查询表中每项数据记录都有过期时间,通过将动态更新后的秘钥查询表最后一项记录中的签名秘钥表存储地址下发给客户端,可以防止网络黑产使用过期数据调用服务端接口。
在本申请实施例中,通过将签名秘钥表存储地址发送至客户端,可以使得发送至客户端的是对原始明文秘钥进行隐藏后的数据,避免明文秘钥直接写入客户端代码容易被网络黑产窃取明文秘钥的问题,提高黑产对抗强度。
步骤206,接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
在一种可选的实施例中,所述客户端验证数据包括客户端散列结果和所述秘钥标识符,所述步骤206可以包括以下子步骤S31-S34:
子步骤S31,查找所述秘钥标识符对应的明文秘钥。
服务端接收到客户端发送的客户端散列结果、秘钥标识符和明文后,可以从预先存储在数据库的秘钥查询表中查找秘钥标识符对应的明文秘钥。
子步骤S32,采用散列算法,对所述秘钥标识符对应的明文秘钥和所述明文进行散列运算,确定服务端散列结果。
散列算法可以是将明文秘钥和明文变换成固定长度的字符串,得到散列结果的算法。示例性地,可以采用HMAC(Hash-based Message Authentication Code,哈希运算消息认证码)算法相关的签名算法,如HMACSHA(Hash-based Message Authentication CodeSecure Hash Algorithm,哈希运算消息认证码安全散列算法)256、HMACSHA1、HMACSHA512等。
服务端可以将查找到的明文秘钥和明文采用散列算法进行散列运算,得到服务端散列结果。
子步骤S33,将所述服务端散列结果和所述客户端散列结果进行一致性对比。
子步骤S34,若所述客户端散列结果与所述服务端散列结果不同,则所述明文验证未成功。
可以将服务端散列结果和客户端散列结果进行一致性对比,如果客户端散列结果与服务端散列结果不同,则明文未验证成功,服务端从客户端获取的明文来源于未授权的第三方,且已经被篡改。
在本申请实施例中,通过对明文秘钥进行异或运算处理得到运算结果,并将明文秘钥对应的签名秘钥表存储地址发送至客户端,可以使得发送至客户端的是对原始明文秘钥进行隐藏后的数据,避免明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度;通过服务端动态生成明文秘钥,将动态更新后的秘钥查询表中最新生成的签名秘钥表存储地址下发给客户端,可以使得明文秘钥动态化,防止网络黑产使用过期数据调用服务端接口,从而进一步降低黑产窃取风险。
参照图3,示出了本申请实施例提供的另一种数据验证方法的步骤流程图,所述方法应用于客户端,所述客户端与服务端通信连接,所述方法具体可以包括如下步骤:
步骤301,向所述服务端发送接口请求。
本申请实施例的数据验证方法可以应用于客户端,客户端可以与服务端进行通信连接,通过数据交互使服务端对数据进行验证。
在业务场景中,客户端可以向服务器发送接口请求,接收服务器下发的签名秘钥表,可以由业务方将用户场景值进行URL拼接得到明文,并在客户端采用白盒签名算法对明文进行数据签名,将客户端签名结果发送至服务端进行验证。
步骤302,接收所述服务端发送的签名秘钥表。
客户端向服务端发送接口请求后,可以接收服务端发送的签名秘钥表。
步骤303,根据所述签名秘钥表以及获取到的明文确定客户端验证数据。
在一种可选的实施例中,所述签名秘钥表包括对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符,所述步骤303可以包括以下子步骤S41-S42:
子步骤S41,采用散列算法,对所述运算结果和所述明文进行散列运算,得到客户端散列结果。
客户端可以拉取签名秘钥表,从签名秘钥表中解析出对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符,将解析出的运算结果和获取的明文采用散列算法进行散列运算,得到客户端散列结果。
子步骤S42,将所述客户端散列结果和所述秘钥标识符作为客户端验证数据。
步骤304,将所述客户端验证数据和所述明文发送至所述服务端,以使所述服务端根据所述客户端验证数据对所述明文进行验证。
客户端验证数据可以是客户端发送给服务端的用于对明文进行完整性验证的数据。可以将客户端散列结果和秘钥标识符作为客户端验证数据,并将客户端验证数据和明文发送至服务端,以使服务端根据客户端验证数据对明文进行验证。
在本申请实施例中,客户端可以通过接口请求接收到包括服务端对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符的签名秘钥表,对运算结果和明文进行散列运算,从而使得客户端接收的是对原始明文秘钥进行隐藏后的数据,避免明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度。
为了使本领域技术人员能够更好地理解本申请实施例,下面通过一个例子对本申请实施例加以说明:
(1)服务端生成一个16位的随机数作为明文秘钥hmackey。
(2)服务端随机生成一个16位的字符串和明文秘钥进行关联,得到明文秘钥对应的秘钥标识符keyid。
(3)服务端将明文秘钥和明文秘钥对应的秘钥标识符输入生成算法,通过生成算法将明文秘钥hmackey和内部填充常量0x36进行异或运算,得到内部填充运算结果ikey,对ikey进行散列运算,得到内部运算结果istate;将明文秘钥hmackey和外部填充常量0x5c进行异或运算,得到外部填充运算结果okey,对okey进行散列运算,得到外部运算结果ostate;根据内部运算结果、外部运算结果和秘钥标识符,生成签名秘钥表(keyfile.key),签名秘钥表包括istate、ostate和keyid。
(4)服务端将签名秘钥表上传CDN服务器,得到CDN服务器返回的签名秘钥表存储地址(cdn地址)。
(5)服务端将明文秘钥hmackey、签名秘钥表存储地址cdn地址和秘钥标识符keyid关联到一张秘钥查询表mysql表中。
(6)服务端通过HTTP请求向客户端下发秘钥查询表中最近生成即最后一项记录的cdn地址A。
(7)客户端通过cdn地址A拉取该地址存储的签名秘钥表a,并解析出签名秘钥表a记录的istate、ostate和keyid。
(8)客户端采用hash算法对istate、ostate和明文进行散列运算,得到客户端散列结果。
(9)客户端将客户端散列结果、签名秘钥表a记录的秘钥标识符keyid和明文发送给服务端。
(10)服务端接收客户端发送的客户端散列结果、签名秘钥表a记录的秘钥标识符keyid和明文。
(11)服务端从秘钥查询表中查找签名秘钥表a记录的秘钥标识符keyid对应的明文秘钥。
(12)服务端采用HMAC算法,对明文秘钥和明文进行散列运算,确定服务端散列结果。
(13)服务端将所服务端散列结果和客户端散列结果进行一致性对比,若客户端散列结果与服务端散列结果相同,则验证成功,服务端从客户端获取的明文没有被未授权的第三方篡改。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请实施例提供的一种数据验证装置的结构框图,所述装置应用于服务端,所述服务端与客户端通信连接,所述装置具体可以包括如下模块:
秘钥生成模块401,用于动态生成明文秘钥;
签名秘钥表生成模块402,用于根据所述明文秘钥生成签名秘钥表;
签名秘钥表发送模块403,用于接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端;
验证模块404,用于接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
在本申请实施例中,所述签名秘钥表生成模块,包括:
标识符生成子模块,用于生成所述明文秘钥对应的秘钥标识符;
异或运算子模块,用于对所述明文秘钥进行异或运算处理,得到运算结果;
生成子模块,用于根据所述运算结果和所述秘钥标识符,生成签名秘钥表。
在本申请实施例中,所述装置还包括:
上传模块,用于将所述签名秘钥表上传至签名秘钥表存储服务器;
存储地址接收模块,用于接收所述存储服务器发送的签名秘钥表存储地址;
关联模块,用于将所述秘钥标识符、所述存储服务器发送的签名秘钥表存储地址以及所述明文秘钥进行关联,得到秘钥查询表;
所述验证模块,包括:
存储地址获取子模块,用于接收到所述客户端发送的接口请求时,从所述秘钥查询表中获取签名秘钥表存储地址;
存储地址发送子模块,用于将所述签名秘钥表存储地址发送至所述客户端。
在本申请实施例中,所述客户端验证数据包括客户端散列结果和所述秘钥标识符,所述验证模块,包括:
查找子模块,用于查找所述秘钥标识符对应的明文秘钥;
散列运算子模块,用于采用散列算法,对所述秘钥标识符对应的明文秘钥和所述明文进行散列运算,确定服务端散列结果;
对比判断子模块,用于将所述服务端散列结果和所述客户端散列结果进行一致性对比;
对比验证子模块,用于若所述客户端散列结果与所述服务端散列结果相同,则所述明文验证成功。
在本申请实施例中,通过对明文秘钥进行异或运算处理得到运算结果,并将明文秘钥对应的签名秘钥表存储地址发送至客户端,可以使得发送至客户端的是对原始明文秘钥进行隐藏后的数据,避免明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度;通过服务端动态生成明文秘钥,将动态更新后的秘钥查询表中最新生成的签名秘钥表存储地址下发给客户端,可以使得明文秘钥动态化,防止网络黑产使用过期数据调用服务端接口,从而进一步降低黑产窃取风险。
参照图5,示出了本申请实施例提供的另一种数据验证装置的结构框图,所述装置应用于客户端,所述客户端与服务端通信连接,所述装置具体可以包括如下模块:
接口请求发送模块501,用于向所述服务端发送接口请求;
签名秘钥表接收模块502,用于接收所述服务端发送的签名秘钥表;
验证数据确定模块503,用于根据所述签名秘钥表以及获取到的明文确定客户端验证数据;
验证数据发送模块504,用于将所述客户端验证数据和所述明文发送至所述服务端,以使所述服务端根据所述客户端验证数据对所述明文进行验证。
在本申请实施例中,所述签名秘钥表包括对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符;所述验证数据确定模块,包括:
客户端散列结果确定子模块,用于采用散列算法,对所述运算结果和所述明文进行散列运算,得到客户端散列结果;
客户端验证数据确定子模块,用于将所述客户端散列结果和所述秘钥标识符作为客户端验证数据。
在本申请实施例中,客户端可以通过接口请求接收到包括服务端对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符的签名秘钥表,对运算结果和明文进行散列运算,从而使得客户端接收的是对原始明文秘钥进行隐藏后的数据,避免明文秘钥直接暴露在客户端代码中容易被网络黑产窃取明文秘钥进而伪造数据的问题,从而提高网络黑产对抗强度。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,包括:
包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述数据验证方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述数据验证方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据验证方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种数据验证方法,其特征在于,所述方法应用于服务端,所述服务端与客户端通信连接,所述方法包括:
动态生成明文秘钥;
根据所述明文秘钥生成签名秘钥表;
接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端;
接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
2.根据权利要求1所述的方法,其特征在于,所述根据所述明文秘钥生成签名秘钥表,包括:
生成所述明文秘钥对应的秘钥标识符;
对所述明文秘钥进行异或运算处理,得到运算结果;
根据所述运算结果和所述秘钥标识符,生成签名秘钥表。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
将所述签名秘钥表上传至签名秘钥表存储服务器;
接收所述存储服务器发送的签名秘钥表存储地址;
将所述秘钥标识符、所述存储服务器发送的签名秘钥表存储地址以及所述明文秘钥进行关联,得到秘钥查询表;
所述接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,包括:
接收到所述客户端发送的接口请求时,从所述秘钥查询表中获取签名秘钥表存储地址;
将所述签名秘钥表存储地址发送至所述客户端。
4.根据权利要求2所述的方法,其特征在于,所述客户端验证数据包括客户端散列结果和所述秘钥标识符,所述接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证,包括:
查找所述秘钥标识符对应的明文秘钥;
采用散列算法,对所述秘钥标识符对应的明文秘钥和所述明文进行散列运算,确定服务端散列结果;
将所述服务端散列结果和所述客户端散列结果进行一致性对比;
若所述客户端散列结果与所述服务端散列结果相同,则所述明文验证成功。
5.一种数据验证方法,其特征在于,所述方法应用于客户端,所述客户端与服务端通信连接,所述方法包括:
向所述服务端发送接口请求;
接收所述服务端发送的签名秘钥表;
根据所述签名秘钥表以及获取到的明文确定客户端验证数据;
将所述客户端验证数据和所述明文发送至所述服务端,以使所述服务端根据所述客户端验证数据对所述明文进行验证。
6.根据权利要求5所述的方法,其特征在于,所述签名秘钥表包括对明文秘钥进行异或运算处理得到的运算结果和明文秘钥对应的秘钥标识符;所述根据所述签名秘钥表以及所述明文确定客户端验证数据,包括:
采用散列算法,对所述运算结果和所述明文进行散列运算,得到客户端散列结果;
将所述客户端散列结果和所述秘钥标识符作为客户端验证数据。
7.一种数据验证装置,其特征在于,所述装置应用于服务端,所述服务端与客户端通信连接,所述装置包括:
秘钥生成模块,用于动态生成明文秘钥;
签名秘钥表生成模块,用于根据所述明文秘钥生成签名秘钥表;
签名秘钥表发送模块,用于接收到所述客户端发送的接口请求时,将所述签名秘钥表发送至所述客户端,以使所述客户端根据所述签名秘钥表以及明文确定客户端验证数据,并将所述客户端验证数据和所述明文发送至所述服务端;
验证模块,用于接收所述客户端验证数据和所述明文,根据所述客户端验证数据对所述明文进行验证。
8.一种数据验证装置,其特征在于,所述装置应用于客户端,所述客户端与服务端通信连接,所述装置包括:
接口请求发送模块,用于向所述服务端发送接口请求;
签名秘钥表接收模块,用于接收所述服务端发送的签名秘钥表;
验证数据确定模块,用于根据所述签名秘钥表以及获取到的明文确定客户端验证数据;
验证数据发送模块,用于将所述客户端验证数据和所述明文发送至所述服务端,以使所述服务端根据所述客户端验证数据对所述明文进行验证。
9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-4或5-6中任一项所述的数据验证方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4或5-6中任一项所述的数据验证方法的步骤。
CN202210313343.8A 2022-03-28 2022-03-28 一种数据验证方法、装置、电子设备和存储介质 Active CN114844645B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210313343.8A CN114844645B (zh) 2022-03-28 2022-03-28 一种数据验证方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210313343.8A CN114844645B (zh) 2022-03-28 2022-03-28 一种数据验证方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN114844645A true CN114844645A (zh) 2022-08-02
CN114844645B CN114844645B (zh) 2024-06-14

Family

ID=82564530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210313343.8A Active CN114844645B (zh) 2022-03-28 2022-03-28 一种数据验证方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114844645B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100131756A1 (en) * 2008-11-26 2010-05-27 James Paul Schneider Username based authentication and key generation
CN109728914A (zh) * 2019-01-23 2019-05-07 北京奇艺世纪科技有限公司 数字签名验证方法、系统、装置及计算机可读存储介质
CN111030814A (zh) * 2019-12-25 2020-04-17 杭州迪普科技股份有限公司 秘钥协商方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100131756A1 (en) * 2008-11-26 2010-05-27 James Paul Schneider Username based authentication and key generation
CN109728914A (zh) * 2019-01-23 2019-05-07 北京奇艺世纪科技有限公司 数字签名验证方法、系统、装置及计算机可读存储介质
CN111030814A (zh) * 2019-12-25 2020-04-17 杭州迪普科技股份有限公司 秘钥协商方法及装置

Also Published As

Publication number Publication date
CN114844645B (zh) 2024-06-14

Similar Documents

Publication Publication Date Title
JP3899808B2 (ja) ディジタル署名生成方法およびディジタル署名検証方法
CN110096903B (zh) 基于区块链的资产验证方法及区块链网络系统
CN105335667B (zh) 创新创意数据处理方法、装置、系统及存证设备
WO2022134951A1 (zh) 一种数据同步方法、装置、设备以及计算机可读存储介质
CN102946384B (zh) 用户验证方法和设备
CN111835526B (zh) 一种生成匿名凭证的方法及系统
SG178726A1 (en) Method and system for generating digital fingerprint
CN108768618B (zh) 一种基于区块链的ip软核授权方法、装置及介质
CN111815321A (zh) 交易提案的处理方法、装置、系统、存储介质和电子装置
CN105099707A (zh) 一种离线认证方法、服务器及系统
CN112000744A (zh) 一种签名方法及相关设备
CN111884811A (zh) 一种基于区块链的数据存证方法和数据存证平台
CN112769567A (zh) 一种区块链hd私钥找回方法
CA2981202C (en) Hashed data retrieval method
CN110865793B (zh) 一种基于区块链智能合约生成随机数的方法
CN114944921A (zh) 登录认证方法、装置、电子设备及存储介质
CN113129008B (zh) 数据处理方法、装置、计算机可读介质及电子设备
CN113761578A (zh) 一种基于区块链的文书验真方法
CN110175471B (zh) 一种档案的存储方法及系统
WO2018047120A1 (en) A system and method for data block modification detection and authentication codes
CN110034922B (zh) 请求处理方法、处理装置以及请求验证方法、验证装置
CN114844645A (zh) 一种数据验证方法、装置、电子设备和存储介质
CN108712657B (zh) 一种弹幕验证方法、计算机设备和存储介质
CN114827074B (zh) 社交消息处理方法、装置、服务器、终端及介质
US20230246848A1 (en) Methods and system for issuing an electronic signature

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