CN111475824A - 数据访问方法、装置、设备和存储介质 - Google Patents
数据访问方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN111475824A CN111475824A CN202010207379.9A CN202010207379A CN111475824A CN 111475824 A CN111475824 A CN 111475824A CN 202010207379 A CN202010207379 A CN 202010207379A CN 111475824 A CN111475824 A CN 111475824A
- Authority
- CN
- China
- Prior art keywords
- signature
- client
- request
- server
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种数据访问方法、装置、计算机设备和存储介质。方法包括:加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;解密密文密钥得到明文密钥,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。通过多重验证才能访问数据,提高了服务器端中的数据的安全性。
Description
技术领域
本申请涉及数据加密技术领域,特别是涉及一种数据访问方法、装置、计算机设备和存储介质。
背景技术
随着安卓手机的普及,基于安卓平台开发的客户端在日常生活中的使用越来越多,对客户端的数据安全性要求越来越高。
传统技术中,运行在Java程序中的客户端容易被反编译,当黑客通过仿造身份访问加密库、获取存储在客户端中的信息时,会造成数据泄露。
发明内容
基于此,有必要针对上述黑客通过仿造身份访问加密库、获取存储在客户端中的信息时,会造成数据泄露的技术问题,提供一种数据访问方法、装置、计算机设备和存储介质。
一种数据访问方法,所述方法包括:
加载二进制文件;
当所述二进制文件的文件名与所述客户端的程序包名一致、且所述二进制文件的文件签名与所述客户端的签名一致时,获取密文密钥;
解密所述密文密钥得到明文密钥,通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
向服务器端提交所述客户端签名、所述请求参数和所述令牌,以使所述服务器端对存储的所述明文密钥以及所述请求参数和所述令牌进行数字签名,得到服务器端签名,当所述客户端签名与所述服务器端签名一致时,获取所述数据请求对应的请求数据;
接收所述服务器端返回的所述请求数据。
一种数据访问装置,所述装置包括:
启动模块,用于加载二进制文件;
获取模块,用于当所述二进制文件的文件名与所述客户端的程序包名一致、且所述二进制文件的文件签名与所述客户端的签名一致时,获取密文密钥;
客户端签名模块,用于解密所述密文密钥得到明文密钥,通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
服务器端模块,用于向服务器端提交所述客户端签名、所述请求参数和所述令牌,以使所述服务器端对存储的所述明文密钥以及所述请求参数和令牌进行数字签名,得到服务器端签名,当所述客户端签名与所述服务器端签名一致时,获取所述数据请求对应的请求数据;
接收模块,用于接收所述服务器端返回的所述请求数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
加载二进制文件;
当所述二进制文件的文件名与所述客户端的程序包名一致、且所述二进制文件的文件签名与所述客户端的签名一致时,获取密文密钥;
解密所述密文密钥得到明文密钥,通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
向服务器端提交所述客户端签名、所述请求参数和所述令牌,以使所述服务器端对存储的所述明文密钥以及所述请求参数和所述令牌进行数字签名,得到服务器端签名,当所述客户端签名与所述服务器端签名一致时,获取所述数据请求对应的请求数据;
接收所述服务器端返回的所述请求数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
加载二进制文件;
当所述二进制文件的文件名与所述客户端的程序包名一致、且所述二进制文件的文件签名与所述客户端的签名一致时,获取密文密钥;
解密所述密文密钥得到明文密钥,通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
向服务器端提交所述客户端签名、所述请求参数和所述令牌,以使所述服务器端对存储的所述明文密钥以及所述请求参数和所述令牌进行数字签名,得到服务器端签名,当所述客户端签名与所述服务器端签名一致时,获取所述数据请求对应的请求数据;
接收所述服务器端返回的所述请求数据。
上述数据访问方法、装置、计算机设备和存储介质,通过加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;当解密密文密钥得到明文密钥时,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及所述请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。通过验证二进制文件、密钥与签名都通过才能接收服务器端返回的请求数据,提高了存储在服务器端中的数据的安全性。
附图说明
图1为一个实施例中数据访问方法的应用环境图;
图2为一个实施例中数据访问方法的流程示意图;
图3为一个实施例中数据访问步骤的流程示意图;
图4为另一个实施例中数据访问方法的流程示意图;
图5为一个实施例中数据访问步骤的流程示意图;
图6为一个实施例中数据访问装置的结构框图;
图7为一个实施例中数据访问装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据访问方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器端104进行通信。在启动终端102的过程中,终端102加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;解密密文密钥得到明文密钥,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端104提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;终端102接收服务器端104返回的请求数据。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器端104可以用独立的服务器端或者是多个服务器端组成的服务器端集群来实现。
在一个实施例中,如图2所示,提供了一种数据访问方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
S202,加载二进制文件。
在一个实施例中,在启动客户端的过程中,或在启动客户端后,加载二进制文件。
其中,客户端是在终端运行的应用程序,可以是基于安卓平台开发的应用程序,也可以是基于IOS(苹果公司的移动操作系统)平台开发的应用程序,客户端可以是万维网使用的网页浏览器、收寄电子邮件时的电子邮件客户端以及用于即时通讯的客户端软件。
在一个实施例中,客户端接收到启动指令时,判断客户端运行模式是否为调试模式,调试模式是用于客户端在基于安卓平台或IOS平台进行开发工作的模式,例如USB调试模式。若客户端运行模式为非调试模式,客户端从服务器端下载二进制文件,将下载的二进制文件存放到指定文件位置中进行加载。二进制文件是一种共享库文件,例如SO库文件。由于基于虚拟机的编程语言JAVA容易被反编译,因此当客户端的核心代码以C/C++为编程语言时,通过SO文件使上层JAVA代码调用函数,可以提高存储在客户端中的代码与数据的安全性。
S204,当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥。
在一个实施例中,客户端根据客户端的程序包名与客户端的签名的存储位置(例如~/.android/debug.keystore),获取并下载客户端的程序包名packagename以及客户端的签名,每个客户端拥有唯一的程序包名与签名,不同的客户端的程序包名与签名都不相同。客户端根据默认的密码提取客户端的签名,签名包括指纹证书MD5、SHA1、SHA256、签名算法名称与版本等签名信息。
在一个实施例中,判断二进制文件的文件名与客户端的程序包名是否一致,若不一致,结束客户端启动过程,并生成用于提示启动客户端失败的提示信息。若一致,则判断二进制文件的文件签名中的签名信息与客户端的签名信息是否一致,若一致,则启动客户端并加载加密库,从服务器端获取密文密钥,若不一致则结束客户端启动过程,并生成用于提示启动客户端失败的提示信息。
S206,解密密文密钥得到明文密钥,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名。
在一个实施例中,服务器端中存储有明文密钥,服务器端根据加密规则、加密算法对明文密钥进行加密后得到密文密钥,客户端获取服务器端发送的密文密钥。密钥是用来完成加密、解密、完整性验证等的秘密信息。加密和解密用的是同一个密钥(类似于钥匙),因此密钥也需要通过加密进行保密,未加密的密钥是明文密钥,对密钥进行加密得到密文密钥。对明文密钥根据一定的加密规则和加密算法,对明文密钥以及用于提高加密性的一些掩码字符串进行拼接,拼接后得到的字符串为密文密钥,进行密文密钥解密是根据与加密规则、加密算法相对应的解密规则、解密算法,对密文密钥进行逆向计算,得到对应的明文密钥。
在一个实施例中,当对密文密钥进行解密得到明文密钥时,客户端接收数据请求,数据请求中携带请求参数,请求参数可以是用户账号与验证码,其中,验证码可以是用户账号登录客户端的密码,也可以是用户输入的短信验证码、字符验证码、语音验证码等。当客户端为首次启动时,客户端根据数据请求指示服务器端对请求参数中的用户账号与验证码进行验证,当服务器端验证通过后会生成用于用户账号登录客户端的令牌,令牌包括访问令牌(Access token)、密保令牌(Security token)、会话令牌(Session token)。客户端接收并存储服务器端返回的令牌,该令牌用于非首次启动客户端时,客户端向加密库发送携带请求参数与令牌的目标数据请求。
在一个实施例中,客户端向加密库发送明文密钥、携带请求参数与令牌的数据请求、以及用于提高安全性的混淆参数。加密库将明文密钥、请求参数、令牌与混淆参数中的字符进行打乱,并根据预设的组合规则将打乱后的字符进行重新组合,将重新组合后得到的字符串进行进制转换,根据进制转换后得到的字符串生成客户端证书文件,将客户端证书文件按照指定的证书文件存储名称与存储格式(如64位编码的证书存储格式、32位编码的证书存储格式、带密钥的存储格式)进行存储,利用签名工具对存储后的客户端证书文件进行数字签名,得到客户端签名。
S208,向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据。
在一个实施例中,客户端向服务器端提交客户端签名、请求参数和令牌,使服务器端根据服务器端中的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名。在提交请求参数和令牌过程中,有可能遭遇黑客通过仿造身份对提交的请求参数和令牌进行篡改,若服务器端接收到的请求参数和令牌是被篡改过的,服务器端进行数字签名得到的服务器端签名与客户端签名不一致,若服务器端接收到的请求参数和令牌未被篡改,则服务器端签名与客户端签名一致。
S210,接收服务器端返回的请求数据。
在一个实施例中,若服务器端签名与客户端签名一致,说明客户端发起的数据请求中携带的请求参数与令牌与服务器端接收到的请求参数和令牌相同,且客户端从服务器端获取的密文密钥与服务器端存储的明文密钥是相对应的,客户端对密文密钥解密使用的解密规则与服务器端对明文密钥加密的加密规则一致,从而客户端对密文密钥解密后得到的明文密钥与服务器端存储的明文密钥是相同的。说明发起数据请求的用户账号符合数据访问的安全性,能够访问数据请求对应的数据。客户端接收服务器端响应于数据请求、返回的请求数据。
上述数据访问方法中,通过加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;当解密密文密钥得到明文密钥时,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。通过验证二进制文件、密钥与签名都通过才能接收服务器端返回的请求数据,提高了存储在服务器端中的数据的安全性。
在一个实施例中,如图3所示,数据访问方法还包括:
S302,解密密文密钥,得到由明文密钥与掩码字符串拼接的拼接字符串。
在一个实施例中,服务器端中存储有明文密钥,服务器端根据加密规则与加密算法对明文密钥进行加密后得到密文密钥。客户端根据与加密规则相逆的解密规则、解密算法对密文密钥进行解密。例如,加密规则是Y=X+2,明文密钥X为5时,根据加密规则得到密文密钥为7,则解密规则为与加密规则相逆的X=Y-2,对密文密钥7根据解密规则进行解密得到明文密钥为5。
S304,删除拼接字符串中的掩码字符串,得到明文密钥。
在一个实施例中,若服务器端对明文密钥进行加密时,使用了用于提高安全性的掩码字符串,则解密得到的字符串为明文密钥与掩码字符串拼接的拼接字符串。删除拼接字符串中的掩码字符串,得到明文密钥。
上述实施例中,通过对密文密钥进行解密,得到由明文密钥与掩码字符串拼接的拼接字符串;删除拼接字符串中的掩码字符串,得到明文密钥。根据对获取到的密文密钥进行解密,得到明文密钥,提高了解密密文密钥的速度。
在一个实施例中,如图4所示,S304具体还包括:
S402,将拼接字符串进行进制转换,得到转换字符串。
在一个实施例中,将拼接字符串按照加密时的进制转换规则进行逆转换。例如,对于64位编码的转换字符串,加密时第一个字节放置于24位缓冲区的高8位,第二个字节放置于中间的8位,第三个字节放置于低8位。如果是少于3个字节的数据,相应的缓冲区置0。然后对24位缓冲区以6位为一组作为索引,高位优先,从字符串“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789+/”中取出相应的元素进行输出后得到拼接字符串。在对密文密钥进行解析时,根据加密时的进制转换规则进行逆转换,查找64位编码的字符串的每个字符在64位编码表中的索引,然后将这些索引的二进制相连接,重新以8位为一组进行分组,即可得到转换字符串。
S404,根据转换字符串的字符长度确定偏移量。
S406,根据偏移量确定转换字符串中的掩码字符串。
S408,将掩码字符串从转换字符串中删除。
在一个实施例中,偏移量是转换字符串存储单元对应的逻辑地址与段首的差值。例如:当使用64位编码时,若转换字符串的字符长度为62位,则说明偏移量为2。根据加密时的字符串存储格式确定转换字符串中的掩码字符串。字符串存储格式可以是:[偏移量1][偏移量2][数据位1][数据位2][数据位3][数据位4][算法位1][算法位2]。
在一个实施例中,若加密时对掩码字符串根据变换规则进行了变换,如将掩码字符串中的字符转换为异或指针,客户端进行解密时需要对确定的掩码字符串根据变换规则进行逆向变换,并将逆向变换得到的字符串进行删除。
例如,当密文密钥为(41474,3920,28771,27077,63340,10629,26105,13982,28089,26320,6559,40572,10774,8422,64601,32551,64629,32956,16796,19447,44945,17895,54741,31441,59536,9057,49749,11,17259,39980,35191,43068,39212,22990,28621,63445);根据解密规则、解密算法确定掩码字符串为1235234123+1123235123,将掩码字符串删除后得到明文密文abcdefghijklmnopqrstuvwxyz0123456789。
本实施例中,通过将拼接字符串进行进制转换,得到转换字符串;根据转换字符串的字符长度确定偏移量;根据偏移量确定转换字符串中的掩码字符串;将掩码字符串从转换字符串中删除;得到明文密钥,提高了解密密文密钥的速度。
作为一个示例,为了解决传统技术中黑客容易仿造身份访问加密库、获取存储在客户端中的信息,会造成数据泄露的技术问题,本实施例提出一种数据访问方法,如图5所示,包括以下步骤:
(一)在启动客户端的过程中,若客户端运行模式为非调试模式,加载二进制文件。
客户端接收到启动指令时,判断客户端运行模式是否为调试模式,若客户端运行模式为非调试模式,客户端利用JNI(Java本地调用)下载二进制文件(例如SO库文件),将下载的二进制文件存放到指定文件位置中进行加载。
(二)当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,启用客户端并加载加密库,获取密文密钥。
客户端根据客户端的程序包名与客户端的签名的存储位置,获取并下载客户端的程序包名packagename以及客户端的签名,每个客户端拥有唯一的程序包名与签名,不同的客户端的程序包名与签名都不相同。客户端根据默认的密码提取客户端的签名。
判断二进制文件的文件名与客户端的程序包名是否一致,若不一致,结束客户端启动过程,并生成用于提示启动客户端失败的提示信息。若一致,则判断二进制文件的文件签名中的签名信息与客户端的签名信息是否一致,若一致,则启动客户端并加载加密库,从服务器端获取密文密钥。若不一致,则结束客户端启动过程,避免用户通过客户端进行匿名访问加密库。
(三)对密文密钥进行解密得到明文密钥。
客户端获取服务器端发送的密文密钥,根据与加密明文密钥时相同的加密规则和加密算法,对密文密钥进行逆向计算,得到由明文密钥与掩码字符串拼接的拼接字符串。将拼接字符串进行进制转换,得到转换字符串,根据转换字符串的字符长度确定出偏移量,根据偏移量与字符串存储格式确定出转换字符串中的掩码字符串,将掩码字符串从转换字符串中删除,得到明文密钥。
(四)启用客户端并通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名。
当对密文密钥进行解密得到明文密钥时,客户端接收数据请求,数据请求中携带请求参数,请求参数可以是用户账号与验证码,其中,验证码可以是用户账号登录客户端的密码,也可以是用户输入的短信验证码、字符验证码、语音验证码等。当客户端为首次启动时,客户端根据数据请求指示服务器端对请求参数中的用户账号与验证码进行验证,当服务器端验证通过后会生成用于用户账号登录客户端的令牌,令牌包括访问令牌(Accesstoken)、密保令牌(Security token)、会话令牌(Session token)。客户端接收并存储服务器端返回的令牌,该令牌用于非首次启动客户端时,客户端向加密库发送携带请求参数与令牌的目标数据请求。
客户端向加密库发送明文密钥、携带请求参数与令牌的数据请求。加密库将明文密钥、请求参数、令牌中的字符进行打乱,并根据预设的组合规则将打乱后的字符进行重新组合,根据重新组合后得到的字符串生成客户端证书文件,将客户端证书文件按照指定的证书文件存储名称与存储格式进行存储,并利用签名工具对存储后的客户端证书文件进行数字签名,得到客户端签名。
(五)向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名。
客户端向服务器端提交客户端签名、请求参数和令牌,使服务器端根据存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名。
(六)当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据。
在提交过程中,有可能遭遇黑客通过仿造身份对提交的请求参数和令牌进行篡改,若服务器端接收到的请求参数和令牌是被篡改过的,服务器端进行数字签名得到的服务器端签名与客户端签名不一致,若服务器端接收到的请求参数和令牌未被篡改,则服务器端签名与客户端签名一致。
(七)接收服务器端返回的请求数据。
若服务器端签名与客户端签名一致,说明发起数据请求的用户账号符合数据访问的安全性,能够访问数据请求对应的数据。客户端接收服务器端响应于数据请求、返回的请求数据。若服务器端签名与客户端签名不一致,接收服务器端生成的用于提示访问失败的错误码信息。
上述实施例中,加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,启用客户端并加载加密库,获取密文密钥;对密文密钥进行解密得到明文密钥后,启用客户端并通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名;当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。通过验证二进制文件、密钥与签名都通过才能接收服务器端返回的请求数据,提高了存储在服务器端中的数据的安全性。
应该理解的是,虽然图2-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种数据访问装置,包括:启动模块602、获取模块604、客户端签名模块606、服务器端模块608、接收模块610,其中:
启动模块602,用于加载二进制文件;
获取模块604,用于当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;
客户端签名模块606,用于解密密文密钥得到明文密钥,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
服务器端模块608,用于向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;
接收模块610,用于接收服务器端返回的请求数据。
上述数据访问装置,通过加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;当解密密文密钥得到明文密钥时,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。通过验证二进制文件、密钥与签名都通过才能接收服务器端返回的请求数据,提高了存储在服务器端中的数据的安全性。
在一个实施例中,如图7所示,数据访问装置还包括:
解密模块612,用于解密密文密钥,得到由明文密钥与掩码字符串拼接的拼接字符串;删除拼接字符串中的掩码字符串,得到明文密钥。
解密模块612,还用于将拼接字符串进行进制转换,得到转换字符串;根据转换字符串的字符长度确定偏移量;根据偏移量确定转换字符串中的掩码字符串;将掩码字符串从转换字符串中删除。
上述实施例中,根据解密规则对密文密钥解密,得到由明文密钥与掩码字符串拼接的拼接字符串;删除拼接字符串中的掩码字符串,得到明文密钥,提高了解密密文密钥的速度。
在一个实施例中,如图7所示,数据访问装置还包括:
令牌模块614,用于当客户端为首次启动时,向服务器端发送数据请求,数据请求包括请求参数,数据请求用于指示服务器端对请求参数中的用户账号与验证码进行验证,当验证通过后生成令牌;接收并存储服务器端返回的令牌,令牌用于当非首次启动客户端时,根据请求参数和令牌生成目标数据请求。
在一个实施例中,如图7所示,客户端签名模块606,还用于:
获取混淆参数;将明文密钥、请求参数与令牌以及混淆参数进行数字签名,得到客户端签名。
上述实施例中,通过将明文密钥、请求参数与令牌以及混淆参数进行数字签名,得到客户端签名。提高了客户端签名的加密级别与安全性,使黑客无法轻易篡改明文密钥、请求参数与令牌。
关于数据访问装置的具体限定可以参见上文中对于数据访问方法的限定,在此不再赘述。上述数据访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据访问数据。该计算机设备的网络接口用于与外部的客户端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据访问方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;解密密文密钥得到明文密钥,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:密密文密钥,得到由明文密钥与掩码字符串拼接的拼接字符串;删除拼接字符串中的掩码字符串,得到明文密钥。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将拼接字符串进行进制转换,得到转换字符串;根据转换字符串的字符长度确定偏移量;根据偏移量确定转换字符串中的掩码字符串;将掩码字符串从转换字符串中删除。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:当客户端为首次启动时,向服务器端发送数据请求,数据请求包括请求参数,数据请求用于指示服务器端对请求参数中的用户账号与验证码进行验证,当验证通过后生成令牌;接收并存储服务器端返回的令牌,令牌用于当非首次启动客户端时,根据请求参数和令牌生成目标数据请求。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取混淆参数;将明文密钥、请求参数与令牌以及混淆参数进行数字签名,得到客户端签名。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:加载二进制文件;当二进制文件的文件名与客户端的程序包名一致、且二进制文件的文件签名与客户端的签名一致时,获取密文密钥;解密密文密钥得到明文密钥,通过加密库对明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;向服务器端提交客户端签名、请求参数和令牌,以使服务器端对存储的明文密钥以及请求参数和令牌进行数字签名,得到服务器端签名,当客户端签名与服务器端签名一致时,获取数据请求对应的请求数据;接收服务器端返回的请求数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:密密文密钥,得到由明文密钥与掩码字符串拼接的拼接字符串;删除拼接字符串中的掩码字符串,得到明文密钥。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将拼接字符串进行进制转换,得到转换字符串;根据转换字符串的字符长度确定偏移量;根据偏移量确定转换字符串中的掩码字符串;将掩码字符串从转换字符串中删除。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当客户端为首次启动时,向服务器端发送数据请求,数据请求包括请求参数,数据请求用于指示服务器端对请求参数中的用户账号与验证码进行验证,当验证通过后生成令牌;接收并存储服务器端返回的令牌,令牌用于当非首次启动客户端时,根据请求参数和令牌生成目标数据请求。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取混淆参数;将明文密钥、请求参数与令牌以及混淆参数进行数字签名,得到客户端签名。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据访问方法,所述方法包括:
加载二进制文件;
当所述二进制文件的文件名与所述客户端的程序包名一致、且所述二进制文件的文件签名与所述客户端的签名一致时,获取密文密钥;
解密所述密文密钥得到明文密钥,通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
向服务器端提交所述客户端签名、所述请求参数和所述令牌,以使所述服务器端对存储的所述明文密钥以及所述请求参数和所述令牌进行数字签名,得到服务器端签名,当所述客户端签名与所述服务器端签名一致时,获取所述数据请求对应的请求数据;
接收所述服务器端返回的所述请求数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
解密所述密文密钥,得到由所述明文密钥与掩码字符串拼接的拼接字符串;
删除所述拼接字符串中的掩码字符串,得到所述明文密钥。
3.根据权利要求2所述的方法,其特征在于,所述删除所述拼接字符串中的掩码字符串,包括:
将所述拼接字符串进行进制转换,得到转换字符串;
根据所述转换字符串的字符长度确定偏移量;
根据所述偏移量确定所述转换字符串中的掩码字符串;
将所述掩码字符串从所述转换字符串中删除。
4.根据权利要求1所述的方法,其特征在于,所述请求参数包括用户账号与验证码,所述方法还包括:
当所述客户端为首次启动时,向服务器端发送数据请求,所述数据请求包括所述请求参数,所述数据请求用于指示所述服务器端对所述请求参数中的所述用户账号与验证码进行验证,验证通过后生成所述令牌;
接收并存储所述服务器端返回的所述令牌,所述令牌用于非首次启动所述客户端时,根据所述请求参数和所述令牌生成目标数据请求。
5.根据权利要求1所述的方法,其特征在于,所述通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名包括:
获取混淆参数;
将所述明文密钥、所述请求参数与所述令牌以及混淆参数进行数字签名,得到客户端签名。
6.一种数据访问装置,其特征在于,所述装置包括:
启动模块,用于加载二进制文件;
获取模块,用于当所述二进制文件的文件名与所述客户端的程序包名一致、且所述二进制文件的文件签名与所述客户端的签名一致时,获取密文密钥;
客户端签名模块,用于解密所述密文密钥得到明文密钥,通过加密库对所述明文密钥和所接收的数据请求中携带的请求参数与令牌进行数字签名,得到客户端签名;
服务器端模块,用于向服务器端提交所述客户端签名、所述请求参数和所述令牌,以使所述服务器端对存储的所述明文密钥以及所述请求参数和令牌进行数字签名,得到服务器端签名,当所述客户端签名与所述服务器端签名一致时,获取所述数据请求对应的请求数据;
接收模块,用于接收所述服务器端返回的所述请求数据。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
解密模块,用于解密所述密文密钥,得到由所述明文密钥与掩码字符串拼接的拼接字符串;删除所述拼接字符串中的掩码字符串,得到所述明文密钥。
8.根据权利要求7所述的装置,其特征在于,所述解密模块还用于:
将所述拼接字符串进行进制转换,得到转换字符串;
根据所述转换字符串的字符长度确定偏移量;
根据所述偏移量确定所述转换字符串中的掩码字符串;
将所述掩码字符串从所述转换字符串中删除。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207379.9A CN111475824B (zh) | 2020-03-23 | 2020-03-23 | 数据访问方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010207379.9A CN111475824B (zh) | 2020-03-23 | 2020-03-23 | 数据访问方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475824A true CN111475824A (zh) | 2020-07-31 |
CN111475824B CN111475824B (zh) | 2023-05-05 |
Family
ID=71749313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010207379.9A Active CN111475824B (zh) | 2020-03-23 | 2020-03-23 | 数据访问方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475824B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971581A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 加密数据处理方法和装置 |
CN112003706A (zh) * | 2020-08-24 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 一种签名的方法、装置、计算机设备及存储介质 |
CN112329035A (zh) * | 2020-11-02 | 2021-02-05 | 成都中科大旗软件股份有限公司 | 一种基于jar程序解析加密解密的方法、系统及存储介质 |
CN112865981A (zh) * | 2021-02-02 | 2021-05-28 | 中国工商银行股份有限公司 | 一种令牌获取、验证方法及装置 |
CN113886892A (zh) * | 2021-08-31 | 2022-01-04 | 盐城金堤科技有限公司 | 应用程序的数据获取方法和装置、及存储介质和电子设备 |
CN114785505A (zh) * | 2022-06-22 | 2022-07-22 | 中科雨辰科技有限公司 | 一种获取异常设备的数据处理系统 |
CN114844644A (zh) * | 2022-03-16 | 2022-08-02 | 深信服科技股份有限公司 | 资源请求方法、装置、电子设备及存储介质 |
CN116112172A (zh) * | 2022-11-09 | 2023-05-12 | 上海创蓝云智信息科技股份有限公司 | Android客户端gRPC接口安全校验的方法和装置 |
CN117592093A (zh) * | 2024-01-19 | 2024-02-23 | 成都四方伟业软件股份有限公司 | 一种文件加密方法、解密方法、加密装置以及解密装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009140953A1 (de) * | 2008-05-23 | 2009-11-26 | RUHR-UNIVERSITäT BOCHUM | Verfahren, authentikationsserver und diensteserver zum authentifizieren eines client |
US20120144202A1 (en) * | 2010-12-06 | 2012-06-07 | Verizon Patent And Licensing Inc. | Secure authentication for client application access to protected resources |
US8775810B1 (en) * | 2009-09-30 | 2014-07-08 | Amazon Technologies, Inc. | Self-validating authentication token |
US20160337321A1 (en) * | 2015-05-14 | 2016-11-17 | River Security Inc. | Secure communication method and apparatus |
CN109150541A (zh) * | 2018-08-15 | 2019-01-04 | 飞天诚信科技股份有限公司 | 一种认证系统及其工作方法 |
US20190087550A1 (en) * | 2017-09-15 | 2019-03-21 | Insignary Inc. | Method and system for identifying open-source software package based on binary files |
US11271923B2 (en) * | 2018-08-30 | 2022-03-08 | Canon Kabushiki Kaisha | Information processing apparatus, authorization system, and verification method |
-
2020
- 2020-03-23 CN CN202010207379.9A patent/CN111475824B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009140953A1 (de) * | 2008-05-23 | 2009-11-26 | RUHR-UNIVERSITäT BOCHUM | Verfahren, authentikationsserver und diensteserver zum authentifizieren eines client |
US8775810B1 (en) * | 2009-09-30 | 2014-07-08 | Amazon Technologies, Inc. | Self-validating authentication token |
US20120144202A1 (en) * | 2010-12-06 | 2012-06-07 | Verizon Patent And Licensing Inc. | Secure authentication for client application access to protected resources |
US20160337321A1 (en) * | 2015-05-14 | 2016-11-17 | River Security Inc. | Secure communication method and apparatus |
US20190087550A1 (en) * | 2017-09-15 | 2019-03-21 | Insignary Inc. | Method and system for identifying open-source software package based on binary files |
CN109150541A (zh) * | 2018-08-15 | 2019-01-04 | 飞天诚信科技股份有限公司 | 一种认证系统及其工作方法 |
US11271923B2 (en) * | 2018-08-30 | 2022-03-08 | Canon Kabushiki Kaisha | Information processing apparatus, authorization system, and verification method |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971581A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 加密数据处理方法和装置 |
CN110971581B (zh) * | 2018-09-30 | 2022-05-27 | 北京国双科技有限公司 | 加密数据处理方法和装置 |
CN112003706A (zh) * | 2020-08-24 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 一种签名的方法、装置、计算机设备及存储介质 |
CN112003706B (zh) * | 2020-08-24 | 2023-07-18 | 北京字节跳动网络技术有限公司 | 一种签名的方法、装置、计算机设备及存储介质 |
CN112329035B (zh) * | 2020-11-02 | 2022-12-27 | 成都中科大旗软件股份有限公司 | 一种基于jar程序解析加密解密的方法、系统及存储介质 |
CN112329035A (zh) * | 2020-11-02 | 2021-02-05 | 成都中科大旗软件股份有限公司 | 一种基于jar程序解析加密解密的方法、系统及存储介质 |
CN112865981A (zh) * | 2021-02-02 | 2021-05-28 | 中国工商银行股份有限公司 | 一种令牌获取、验证方法及装置 |
CN112865981B (zh) * | 2021-02-02 | 2023-05-02 | 中国工商银行股份有限公司 | 一种令牌获取、验证方法及装置 |
CN113886892A (zh) * | 2021-08-31 | 2022-01-04 | 盐城金堤科技有限公司 | 应用程序的数据获取方法和装置、及存储介质和电子设备 |
CN113886892B (zh) * | 2021-08-31 | 2024-02-23 | 盐城天眼察微科技有限公司 | 应用程序的数据获取方法和装置、及存储介质和电子设备 |
CN114844644A (zh) * | 2022-03-16 | 2022-08-02 | 深信服科技股份有限公司 | 资源请求方法、装置、电子设备及存储介质 |
CN114785505B (zh) * | 2022-06-22 | 2022-08-23 | 中科雨辰科技有限公司 | 一种获取异常设备的数据处理系统 |
CN114785505A (zh) * | 2022-06-22 | 2022-07-22 | 中科雨辰科技有限公司 | 一种获取异常设备的数据处理系统 |
CN116112172A (zh) * | 2022-11-09 | 2023-05-12 | 上海创蓝云智信息科技股份有限公司 | Android客户端gRPC接口安全校验的方法和装置 |
CN116112172B (zh) * | 2022-11-09 | 2023-08-22 | 上海创蓝云智信息科技股份有限公司 | Android客户端gRPC接口安全校验的方法和装置 |
CN117592093A (zh) * | 2024-01-19 | 2024-02-23 | 成都四方伟业软件股份有限公司 | 一种文件加密方法、解密方法、加密装置以及解密装置 |
CN117592093B (zh) * | 2024-01-19 | 2024-04-05 | 成都四方伟业软件股份有限公司 | 一种文件加密方法、解密方法、加密装置以及解密装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111475824B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475824B (zh) | 数据访问方法、装置、设备和存储介质 | |
CN110401615B (zh) | 一种身份认证方法、装置、设备、系统及可读存储介质 | |
CN1439207A (zh) | 用于建立可核查身份而又保密的平台和方法 | |
CN111401901B (zh) | 生物支付设备的认证方法、装置、计算机设备和存储介质 | |
CN108199847B (zh) | 数字安全处理方法、计算机设备及存储介质 | |
CN112469036B (zh) | 一种消息加解密方法、装置、移动终端和存储介质 | |
CN107196907A (zh) | 一种安卓so文件的保护方法及装置 | |
CN110768784A (zh) | 密码传输方法、装置、计算机设备和存储介质 | |
CN113572743A (zh) | 数据加密、解密方法、装置、计算机设备和存储介质 | |
CN112241527B (zh) | 物联网终端设备的密钥生成方法、系统及电子设备 | |
CN115603907A (zh) | 加密存储数据的方法、装置、设备和存储介质 | |
CN109784072B (zh) | 一种安全文件管理方法和系统 | |
CN111628985A (zh) | 安全访问控制方法、装置、计算机设备和存储介质 | |
CN109995534B (zh) | 一种对应用程序进行安全认证的方法和装置 | |
US20240113898A1 (en) | Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity | |
CN114448722B (zh) | 跨浏览器登录方法、装置、计算机设备和存储介质 | |
CN115766244A (zh) | 车联网信息加密方法、装置、计算机设备和存储介质 | |
CN115361198A (zh) | 解密方法、加密方法、装置、计算机设备和存储介质 | |
CN114637985A (zh) | 一种基于多环境参数的Android应用登录伪造识别方法 | |
CN111542050B (zh) | 一种基于tee的保障虚拟sim卡远程初始化安全的方法 | |
CN110995437B (zh) | 基于etc系统的用户信息录入方法、装置、设备和存储介质 | |
CN114239004A (zh) | 电子签章生成方法、装置、计算机设备和存储介质 | |
CN114124440A (zh) | 安全传输方法、装置、计算机设备和存储介质 | |
CN114896621B (zh) | 应用服务的获取方法、加密方法、装置、计算机设备 | |
CN114915416B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |