CN114584291A - 基于hmac算法的密钥保护方法、装置、设备和存储介质 - Google Patents
基于hmac算法的密钥保护方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114584291A CN114584291A CN202210153605.9A CN202210153605A CN114584291A CN 114584291 A CN114584291 A CN 114584291A CN 202210153605 A CN202210153605 A CN 202210153605A CN 114584291 A CN114584291 A CN 114584291A
- Authority
- CN
- China
- Prior art keywords
- key
- hash
- signature
- hash function
- service parameter
- 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
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000006870 function Effects 0.000 claims description 141
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000002238 attenuated effect Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000005336 cracking Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000002427 irreversible effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/3236—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 using cryptographic hash functions
- H04L9/3242—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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Abstract
本申请涉及一种基于HMAC算法的密钥保护方法、装置、设备和存储介质,其中,该方法包括:基于预设长度设定第一密钥;基于第一哈希函数,对第一密钥进行哈希处理,得到经过信息衰减的第二密钥;第一哈希函数用于基于衰减系数对所述第一密钥进行信息衰减;基于第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;基于第二哈希函数,对第二密钥和第二业务参数拼接得到的输入参数进行哈希处理,以生成签名;其中,签名与标准哈希函数生成的签名兼容。通过本申请中预先生成第二密钥,解决了无法通过隐藏密钥提高HMAC算法的安全性的问题,实现了进行密钥保护的效果。
Description
技术领域
本申请涉及信息安全领域,特别是涉及一种基于HMAC算法的密钥保护方法、装置、设备和存储介质。
背景技术
HMAC算法是一种基于Hash函数和密钥进行消息认证的方法,密钥通常以私密的方式在客户端和服务端之间共享,客户端将密钥和业务参数基于Hash函数生成签名,以通过签名进行消息验证。如果密钥泄露或被破解,导致非正常授权的人也能根据密钥获取通信信息,那么HMAC算法不再能保护通信安全。
在一些应用场景中,客户端不能将密钥编译成机器码保存时,所有客户端的使用者都能直接在客户端读取密钥,使密钥的可靠性降低。通常可以采用代码混淆技术使密钥失去可读性,但是通过Hash函数中常用的一些字符串函数,依然可以由Hash函数的输入参数获取密钥,因此无法通过隐藏密钥提高HMAC算法的安全性。
针对相关技术中存在无法通过隐藏密钥提高HMAC算法的安全性的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种基于HMAC算法的密钥保护方法、装置、设备和存储介质,以解决相关技术中无法通过隐藏密钥提高HMAC算法的安全性的问题。
第一个方面,在本实施例中提供了一种基于HMAC算法的密钥保护方法,其特征在于,包括:
基于预设长度设定第一密钥;
基于第一哈希函数,对所述第一密钥进行哈希处理,得到经过信息衰减的第二密钥;
所述第一哈希函数用于基于衰减系数对所述第一密钥进行信息衰减;
基于所述第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;
基于第二哈希函数,对所述第二密钥和所述第二业务参数拼接得到的输入参数进行哈希处理,以生成签名;其中,所述签名与标准哈希函数生成的签名兼容。
在其中的一些实施例中,上述方法还包括:
在发起业务请求时,将所述签名和所述第一业务参数传递给服务端;
在所述服务端中,通过对拼接后的所述第一业务参数和第一密钥进行哈希处理,以对所述签名进行验证;其中,所述第一密钥拼接在所述第一业务参数之前组成所述服务端的输入参数,并且所述第一业务参数之前还可以拼接所述预设长度的字符。
在其中的一些实施例中,上述方法还包括:
定期对所述第一哈希函数和第二哈希函数进行动态调整;
定期更换选用的哈希算法,并在发起业务请求时,将所述哈希算法的信息传递给服务端;
通过字符编码对所述第二密钥进行编码。
在其中的一些实施例中,上述方法还包括:
通过代码混淆技术和web assembly技术对所述方法的各步骤和结果进行混淆和编译。
在其中的一些实施例中,上述方法还包括:
通过构建用于执行所述方法各步骤的函数,并设置与各步骤相应的输入参数,自动生成在客户端用于生成签名的函数和在服务端用于验证所述签名的函数。
第二个方面,在本实施例中提供了一种基于HMAC算法的密钥保护装置,包括:预生成模块和签名生成模块;
所述预生成模块,用于用于基于预设长度设定第一密钥;基于第一哈希函数,对所述第一密钥进行哈希处理,得到经过信息衰减的第二密钥;所述第一哈希函数用于基于衰减系数对所述第一密钥进行信息衰减;
所述签名生成模块,用于基于第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;基于第二哈希函数,对所述第二密钥和所述第二业务参数拼接得到的输入参数进行哈希处理,以生成签名;其中,所述签名与标准哈希函数生成的签名兼容。
第三个方面,在本实施例中提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的基于HMAC算法的密钥保护方法。
第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的基于HMAC算法的密钥保护方法。
与相关技术相比,在本实施例中提供的一种基于HMAC算法的密钥保护方法、装置、设备和存储介质,通过获取预生成的经过信息衰减的第二密钥;基于第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;基于第二哈希函数,对所述第二密钥和所述第二业务参数进行哈希处理,以生成签名,解决了无法通过隐藏密钥提高HMAC算法的安全性的问题,使无法在终端通过逆推得到真实的密钥,实现了通过隐藏密钥提高HMAC算法的安全性的效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为一个实施例中基于HMAC算法的密钥保护方法的硬件结构框图;
图2为一个实施例中基于HMAC算法的密钥保护方法的流程图;
图3为一个实施例中MD5算法的哈希运算函数调用过程示意图;
图4为一个实施例中客户端从服务端获取第二密钥的示意图;
图5为一个实施例中客户端从开发者桌面客户端获取第二密钥的示意图;
图6为一个实施例中客户端从第三方服务获取第二密钥的示意图;
图7为一个实施例中客户端生成签名的过程示意图;
图8为一个优选实施例中基于HMAC算法的密钥保护方法的流程图;
图9为一个实施例中基于HMAC算法的密钥保护装置的结构框图。
图中:10、客户端;20、服务端;30、开发者桌面端;40、第三方服务;50、预生成模块;60、签名生成模块。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
在本实施例中提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。比如在终端上运行,图1是本实施例的基于HMAC算法的密钥保护方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102和用于存储数据的存储器104,其中,处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置。上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限制。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示出的不同配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的基于HMAC算法的密钥保护方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(NetworkInterface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在互联网业务系统中,为了保证通信的安全,需要在发送方和接收方之间约定一种方法以鉴定消息发送方是可信的。通常使用哈希算法来实现两方之间数字签名的验证,以保证通信的内容未经篡改。HMAC(基于哈希算法的消息认证码,Hash-based MessageAuthentication Code)是一种基于哈希函数和密钥进行消息认证的方法,其主要的过程是在消息发送方和接收方之间约定一个密钥(secret),并以私密的方式进行共享,然后由发送方根据业务参数(param)和密钥进行哈希运算得到的结果作为签名,并在发起请求时将签名和业务参数传递给接收方。在接收方,将自身存储的密钥和接收的业务参数进行哈希运算,根据运算结果对接收的签名进行验证,如果两方签名相同,则证明是可信的消息发送方。
本申请以下实施例中所描述的客户端和网页等,都可以作为上述消息发送方,本申请中所描述的服务端,可以作为上述接收方。其中,典型的哈希函数有MD5、SHA、SHA1以及SHA256等,HMAC算法可以在任意哈希函数的基础上使用。
在本实施例中提供了一种基于HMAC算法的密钥保护方法,图2是本实施例方法的流程图,如图2所示,该方法包括以下步骤:
步骤S210,基于预设长度设定第一密钥;基于第一哈希函数,对第一密钥进行哈希处理,得到经过信息衰减的第二密钥;第一哈希函数用于基于衰减系数对第一密钥进行信息衰减。
具体地,由于HMAC算法可以在任意哈希函数的基础上使用,常用的哈希算法包括MD5、SHA、SHA1以及SHA256等,在本实施例中,可以选用任意的哈希算法并设置相应长度的第一密钥,第一密钥也就是原始密钥。例如,在选用MD5、SHA1以及SHA256算法时,相应的预设长度是8的整数倍,比如长度为8、16或者32等,大多数采用长度16的字符串作为第一密钥。
进一步地,在服务端、开发者桌面端或者第三方服务中,通过执行第一哈希函数对第一密钥进行信息衰减,在第一哈希函数中,不同哈希算法具有相应的衰减系数,基于衰减系数对第一密钥进行信息衰减。这里的信息衰减指的是哈希运算过程中不可逆的部分,通过信息衰减以输出固定长度的哈希运算结果。
以下以MD5算法的哈希运算函数调用过程为例对信息衰减的过程进行说明,图3是MD5算法的哈希运算函数调用过程示意图。图中rstr2binl函数的代码如下:
在上述代码中,假设input长度为8个字节,那么input.length=8,length8=64,以8的步长对length8从0开始循环取值,得到8个值,分别是:0,8,16,24,32,40,48,56,再基于衰减系数32进一步取值得到0,0,0,0,1,1,1,1,最终输出output数组中包括两个元素,输出的长度是输入长度的四分之一,通过信息衰减得到哈希运算的固定输出长度。需要说明的是,上述函数代码是以JavaScript语言进行编写,在其他语言和其他哈希算法中,也有相似的信息衰减的过程,只是具体的函数调用和衰减系数可能不同,但是根据信息衰减得到第二密钥的过程也是可以构想的。在图3的哈希运算过程中,第一哈希函数可以由包括rstr2binl函数在内的前三个函数合并得到,第二哈希函数可以由rstr2binl函数之后的十个函数合并得到。
步骤S220,获取预生成的经过信息衰减的第二密钥。
具体地,根据步骤S210中的说明,预生成第二密钥的过程可以在服务端、开发者桌面端或者其他第三方服务中进行,客户端相应地获取经过信息衰减后的第二密钥并进行存储。其中,信息衰减指的是对密钥进行哈希处理时,导致发生信息衰减的不可逆的处理过程,由哈希函数中的具体相关的函数实现。
在本实施例中分别提供了三种客户端获取第二密钥的应用场景。
第一种应用场景包括客户端10和服务端20,如图4所示,图4是客户端10从服务端20获取第二密钥的示意图,在服务端20中对共享的密钥进行哈希处理,得到经过信息衰减的第二密钥,并发送给客户端10。此处的服务端20不限于是自身服务相应的服务端,还可以包括第三方服务的服务端,比如开放平台等,在客户端10调用开放平台API时,需要向开放平台申请密钥,通过在开放平台中预生成第二密钥,相应地,客户端10可以申请得到第二密钥。
第二种应用场景包括客户端10和开发者桌面端30,如图5所示,图5是客户端10从开发者桌面端30获取第二密钥的示意图,在开发者桌面端30根据预设的密钥进行哈希处理,得到经过信息衰减的第二密钥,并传递给客户端10。此处的开发者桌面端30包括但不限于网页、应用、桌面客户端或者工具等。
第三种应用场景包括客户端10和第三方服务40,如图6所示,图6是客户端10从第三方服务40获取第二密钥的示意图,在第三方服务40中,可以通过网页、应用、桌面客户端或者工具,根据指定的参数(密钥等)自动生成第二密钥,客户端10通过调用第三方服务40以获取经过衰减的第二密钥。
步骤S230,基于第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数。
具体地,在哈希处理中,通过调用一系列函数对输入参数进行具体的哈希运算,通常输入参数指的是密钥和业务参数组成的字符串,由于客户端已经预先获取了经过衰减的第二密钥,所以在此步骤中,输入参数指的是第一业务参数,通过执行第一哈希函数得到经过衰减的第二业务参数。其中,第一哈希函数可以看作是由哈希运算中包括发生信息衰减步骤的前n个函数合并得到的函数,若整个哈希运算包括N个函数,n<N。
步骤S240,基于第二哈希函数,对第二密钥和第二业务参数拼接得到的输入参数进行哈希处理,以生成签名;其中,签名与标准哈希函数生成的签名兼容。
具体地,进一步将得到的第二密钥和第二业务参数作为输入参数,执行第二哈希函数。其中,第二哈希函数可以看作是由哈希运算中发生信息衰减后的N-n个函数合并得到的函数,由第一哈希函数和第二哈希函数共同组成完整的哈希运算过程。由于在哈希运算中是以固定循环步长逐字节对输入的字符串参数进行处理的,密钥的长度通常是固定的,并且为循环步长的整数倍,而业务参数的长度通常是不固定的,在对第二密钥和第二业务参数进行拼接时,具有固定长度的密钥需要拼接在业务参数之前组成字符串,作为哈希运算的输入参数,这样在哈希运算中能够确保密钥能够在循环取值中保持完整性,避免发生密钥的部分字符和业务参数一起进行循环取值造成的密钥泄漏问题,从而无法保证密钥的安全性。其中,标准哈希函数指的是常用的哈希算法包括MD5、SHA、SHA1以及SHA256等,由于上述第一哈希函数和第二哈希函数实现也是基于HMAC算法的哈希运算过程,所以本方案中生成的签名与现有技术中标准哈希函数生成的签名是兼容的。
需要说明的是,在所有描述的实施例中,都需要确保密钥拼接在业务参数之前以组成哈希运算的输入参数,从而保证密钥的安全性。
在现有的一些客户端不能将密钥编译成机器码保存的情况下,例如客户端为网页时,负责计算签名的是JavaScript,浏览器中的JavaScript只能以源码形式存在,因此不能进行编译;客户端为linux脚本(bash,perl,python)时,脚本以源码形式运行;客户端为Java代码时,只能编译成字节码(byte code)给虚拟机运行,不能编译成机器码等情况,通常可以采用代码混淆技术使密钥失去可读性,但是通过Hash函数中常用的一些字符串函数,依然可以由Hash函数的输入参数获取密钥,本实施例在现有技术的基础上进行了有效的补充,通过预先生成经过衰减的第二密钥,这样只需在客户端中获取和存储第二密钥,即使从客户端中得到了第二密钥,也无法逆推得到原始密钥,从而解决了无法通过隐藏密钥提高HMAC算法的安全性的问题,实现了在客户端进行密钥保护的效果。
在其中的一些实施例中,上述方法还包括以下步骤:
在发起业务请求时,将签名和第一业务参数传递给服务端;
在服务端中,通过对拼接后的第一业务参数和第一密钥进行哈希处理,以对签名进行验证;其中,第一密钥拼接在第一业务参数之前组成服务端的输入参数,并且第一业务参数之前还可以拼接预设长度的字符。
具体地,客户端在向服务端发起业务请求时,只将第一业务参数和生成的签名传递给服务端,第一密钥是以另外私密的方式在客户端和服务端之间共享,不会在此进行传递。由于服务端通常被认为是可靠的,在服务端中可以直接存储共享的第一密钥,服务端在接收到客户端传递的报文后,由于在哈希运算中是以8字符的固定循环步长逐字节对输入的字符串参数进行处理的,为了保证第一密钥能够在循环取值中保持完整性,还需将第一密钥拼接在第一业务参数之前以组成服务端的输入参数,并且第一密钥的长度需为预设长度,在本实施例中以选用MD5、SHA1以及SHA256算法时,预设长度是8的整数倍进行说明,进一步地,第一密钥也可以由两个长度为4的密钥共同组成,也可以实现在循环取值中保持完整性。在其他的一些情况中,第一业务参数之前还可以拼接长度为8的倍数的字符,比如长度为0或32的系统参数,固定长度的系统参数可以拼接在第一密钥之前,也可以拼接在第一密钥和第一业务参数之间共同组成服务端的输入参数,但是需要保证第一密钥循环取值中保持完整性,防止第一密钥中的部分字符在循环取值中泄漏。
通过在服务端以和客户端相同的哈希算法对输入参数进行完整的哈希处理,得到哈希运算结果,如果验证与客户端传递的签名相同,则认为客户端持有正确的密钥,是一个合法用户,否则,服务端对客户端鉴权不通过。
需要说明的是,本实施例中描述的服务端不限于是自身服务相应的服务端,还可以包括第三方服务的服务端,比如开放平台等,在向其他第三方申请服务时,本实施例中提供的方法也是适用的。
通过本实施例中在服务端中根据第一密钥和第一业务参数进行完整的哈希运算处理,以对客户端传递的签名进行验证,能够在客户端不存储第一密钥的情况下实现两端之间的合法性鉴定,并且无需相应地在服务端提取哈希处理过程中信息衰减的中间值,提高了该方法在服务端进行验证的适用性。
综合以上实施例,图7是客户端生成签名过程的示意图,在图7中,由第一密钥衰减得到第二密钥的过程在客户端以外的服务端、开发者桌面端或是第三方服务中基于第一哈希函数进行,在客户端中基于第一哈希函数,由第一业务参数得到第二业务参数,然后将获取的第二密钥拼接在第二业务参数之前组成字符串输入参数,基于第二哈希函数计算得到签名。
在其中的一些实施例中,上述方法还包括以下步骤:
定期对第一哈希函数和第二哈希函数进行动态调整。
具体地,根据以上实施例中第一哈希函数和第二哈希函数分别可以看作是由哈希运算中包括发生信息衰减步骤的前n个函数合并得到的函数和发生信息衰减后的N-n个函数合并得到的函数,若整个哈希运算包括N个函数,n<N。并且还可以定期动态调整n值,通过调整第一哈希函数中合并的函数数量和第二哈希函数中合并的函数数量,实现对第一哈希函数和第二哈希函数的动态调整。需要说明的是,在动态调整的过程中,需要保证第一哈希函数中至少包括实现信息衰减步骤的函数。进一步地,还可以通过工具自动定期调整n值,自动生成第一哈希函数和第二哈希函数。
以图3为例进行说明,本实施例中第一哈希函数可以由包括rstr2binl函数在内的至少前三个函数合并得到,具体由四个、五个或更多函数合并得到都是可以构想的,第二哈希函数可以由rstr2binl函数之后的至多十个函数合并得到,相应的,具体可以由九个、八个或更少函数合并得到。
在其中的一些实施例中,上述方法还包括以下步骤:
定期更换选用的哈希算法,并在发起业务请求时,将哈希算法的信息传递给服务端;
通过字符编码对第二密钥进行编码;
通过代码混淆技术和web assembly技术对上述方法的各步骤和结果进行混淆和编译。
具体地,还可以在上述实施例的基础上定时更换选用的哈希算法,在请求服务端时,携带相应的信息让服务端能判断本次业务请求中相应的哈希算法,并且该哈希算法也要在服务端的支持范围内。
字符编码指的是对第二密钥中的字符进行ASCII码转换、变换大小写或者在第二密钥中添加特定字符等,通过字符编码进一步使解读客户端算法代码的难度增大。
代码混淆方法是一种降低代码可读性的方法,根据配置的混淆参数,具体通过变量重命名、字符串提取和加密随机添加无用代码进行混淆、控制流扁平化、各种代码转换等步骤。上述各步骤指的是在客户端生成签名的整个算法中的步骤,包括基于第一哈希函数和第二哈希函数的哈希处理,结果指的是签名生成过程中的第二密钥和第二业务参数,通过对各步骤和结果进行代码混淆,进一步加大解读算法代码的难度。
通过使用web assembly技术,用可以编译成机器码的编程语言(例如C++,RUST等)编写客户端生成签名的算法,并将上述第二密钥一起编译成机器码后,再进行发布。由于客户端中的机器码反编译难度更大,更进一步保护了客户端中的密钥和整个生成签名的算法过程。
进一步地,对以上实施例中提供的所有编码和编译技术,都可以进行组合以提高破解的难度,并且其他实施例中所有在客户端实现签名生成的步骤都可以通过上述技术进行混淆和编译。由于攻击方在破解密钥时还需要一定的时间,那么还可以通过定期变换算法以及重新生成哈希运算中的中间结果和混淆结果等,使破解难度加大。
通过本实施例中对第二密钥和客户端中生成签名的整个算法过程进一步进行编码,加大了解读客户端算法和破解密钥的难度,有效地保护了密钥和客户端的整个生成签名的算法。
在其中的一些实施例中,上述方法还包括以下步骤:
通过构建用于执行方法各步骤的函数,并设置与各步骤相应的输入参数,自动生成在客户端用于生成签名的函数和在服务端用于验证签名的函数。
具体地,上述每个实施例中的方法过程都可以通过构建函数自动生成相应的结果,例如设置选用的哈希算法作为输入参数,通过执行相应的函数,自动生成第二密钥;设置选择的代码混淆技术,通过执行相应的函数,自动对各步骤的代码进行混淆,根据以上用于执行方法所有步骤的函数,通过对函数进行合并,能够分别在客户端和服务端自动生成相应的函数,具体的,也可以理解为分别自动生成客户端和服务端的业务代码。进一步地,上述函数也可以由工具相应地实现。
下面通过优选实施例对本实施例进行描述和说明。
图8是本优选实施例中基于HMAC算法的密钥保护方法的流程图,如图8所示,该方法包括以下步骤:
步骤S810,根据选用的哈希函数设定相应长度的第一密钥。
步骤S820,通过调整合并组成第一哈希函数和第二哈希函数的函数个数,自动动态生成第一哈希函数和第二哈希函数。
步骤S830,基于第一哈希函数,对第一密钥进行信息衰减,得到第二密钥。
步骤S840,客户端获取经过信息衰减后的第二密钥,再通过字符编码对第二密钥进一步编码。
步骤S850,基于第一哈希函数,对第一业务参数进行信息衰减,得到第二业务参数。
步骤S860,将第二业务参数拼接在第二密钥之后,组成字符串输入参数,基于第二哈希函数对输入参数进行哈希处理,以生成签名。
步骤S870,通过代码混淆技术和web assembly技术对客户端中生成签名的过程进一步进行加密。
步骤S880,客户端将签名、第一业务参数以及选用的哈希函数的相关信息传递给服务端。
步骤S890,在服务端中,将第一业务参数拼接在第一密钥之后,组成字符串输入参数,根据客户端传递的哈希函数信息,选用相同的哈希函数进行哈希处理,以对客户端的签名进行验证。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。例如,步骤S840和步骤S850之间可以进行顺序互换。
在本实施例中还提供了一种基于HMAC算法的密钥保护装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图9是本实施例中基于HMAC算法的密钥保护装置的结构框图,如图9所示,该装置包括:预生成模块50和签名生成模块60;
预生成模块,用于基于预设长度设定第一密钥;基于第一哈希函数,对第一密钥进行哈希处理,得到经过信息衰减的第二密钥;第一哈希函数用于基于衰减系数对第一密钥进行信息衰减;
签名生成模块,用于基于第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;基于第二哈希函数,对第二密钥和第二业务参数进行哈希处理,以生成签名;其中,签名与标准哈希函数生成的签名兼容。
通过本实施例提供的装置,能够预先生成经过衰减的第二密钥,这样只需在客户端中获取和存储第二密钥,即使从客户端中得到了第二密钥,也无法逆推得到原始密钥,从而解决了无法通过隐藏密钥提高HMAC算法的安全性的问题,实现了在客户端进行密钥保护的效果。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
在本实施例中还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述计算机设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。
此外,结合上述实施例中提供的基于HMAC算法的密钥保护方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于HMAC算法的密钥保护方法。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (8)
1.一种基于HMAC算法的密钥保护方法,其特征在于,包括:
基于预设长度设定第一密钥;
基于第一哈希函数,对所述第一密钥进行哈希处理,得到经过信息衰减的第二密钥;
所述第一哈希函数用于基于衰减系数对所述第一密钥进行信息衰减;
获取预生成的经过信息衰减的第二密钥;
基于所述第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;
基于第二哈希函数,对所述第二密钥和所述第二业务参数拼接得到的输入参数进行哈希处理,以生成签名;其中,所述签名与标准哈希函数生成的签名兼容。
2.根据权利要求1所述的基于HMAC算法的密钥保护方法,其特征在于,还包括:
在发起业务请求时,将所述签名和所述第一业务参数传递给服务端;
在所述服务端中,通过对拼接后的所述第一业务参数和第一密钥进行哈希处理,以对所述签名进行验证;其中,所述第一密钥拼接在所述第一业务参数之前组成所述服务端的输入参数,并且所述第一业务参数之前还可以拼接所述预设长度的字符。
3.根据权利要求1所述的基于HMAC算法的密钥保护方法,其特征在于,还包括:
定期对所述第一哈希函数和第二哈希函数进行动态调整;
定期更换选用的哈希算法,并在发起业务请求时,将所述哈希算法的信息传递给服务端;
通过字符编码对所述第二密钥进行编码。
4.根据权利要求1所述的基于HMAC算法的密钥保护方法,其特征在于,还包括:
通过代码混淆技术和web assembly技术对所述方法的各步骤和结果进行混淆和编译。
5.根据权利要求1所述的基于HMAC算法的密钥保护方法,其特征在于,还包括:
通过构建用于执行所述方法各步骤的函数,并设置与各步骤相应的输入参数,自动生成在客户端用于生成签名的函数和在服务端用于验证所述签名的函数。
6.一种基于HMAC算法的密钥保护装置,其特征在于,包括:预生成模块和签名生成模块;
所述预生成模块,用于基于预设长度设定第一密钥;基于第一哈希函数,对所述第一密钥进行哈希处理,得到经过信息衰减的第二密钥;所述第一哈希函数用于基于衰减系数对所述第一密钥进行信息衰减;
所述签名生成模块,用于基于第一哈希函数,对第一业务参数进行哈希处理,得到第二业务参数;基于第二哈希函数,对所述第二密钥和所述第二业务参数拼接得到的输入参数进行哈希处理,以生成签名;其中,所述签名与标准哈希函数生成的签名兼容。
7.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至5中任一项所述的基于HMAC算法的密钥保护方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的基于HMAC算法的密钥保护方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153605.9A CN114584291B (zh) | 2022-02-18 | 2022-02-18 | 基于hmac算法的密钥保护方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153605.9A CN114584291B (zh) | 2022-02-18 | 2022-02-18 | 基于hmac算法的密钥保护方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114584291A true CN114584291A (zh) | 2022-06-03 |
CN114584291B CN114584291B (zh) | 2023-12-29 |
Family
ID=81770333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210153605.9A Active CN114584291B (zh) | 2022-02-18 | 2022-02-18 | 基于hmac算法的密钥保护方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114584291B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115442026A (zh) * | 2022-11-07 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种hmac算法处理系统、方法、设备及介质 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201467167U (zh) * | 2009-08-07 | 2010-05-12 | 薛明 | 一种密码编码器和密码保护系统 |
KR20120091618A (ko) * | 2011-02-09 | 2012-08-20 | (주)에이티솔루션 | 연쇄 해시에 의한 전자서명 시스템 및 방법 |
US20150248568A1 (en) * | 2014-02-28 | 2015-09-03 | Seagate Technology Llc | Device Security Using an Encrypted Keystore Data Structure |
CN106656476A (zh) * | 2017-01-18 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 一种密码保护方法及装置 |
US20170272251A1 (en) * | 2015-11-22 | 2017-09-21 | Dyadic Security Ltd. | Method of performing keyed-hash message authentication code (hmac) using multi-party computation without boolean gates |
US20170331631A1 (en) * | 2014-11-28 | 2017-11-16 | Katholieke Universiteit Leuven | A method and device for authentication |
CN107437996A (zh) * | 2016-05-27 | 2017-12-05 | 宇龙计算机通信科技(深圳)有限公司 | 一种身份认证的方法、装置及终端 |
CN109067526A (zh) * | 2018-08-15 | 2018-12-21 | 数字钱包(北京)科技有限公司 | 层次公私钥对生成方法和装置 |
US20190173670A1 (en) * | 2016-08-04 | 2019-06-06 | Huawei Technologies Co., Ltd. | Authentication method, server, terminal, and gateway |
CN110661813A (zh) * | 2019-10-11 | 2020-01-07 | 浪潮软件股份有限公司 | 一种基于CMSP的对象存储的RESTful服务的身份认证实现方法 |
CN110889595A (zh) * | 2019-11-06 | 2020-03-17 | 国网浙江省电力有限公司 | 一种基于哈希算法的电力物资编码优化方法 |
CN110943840A (zh) * | 2018-09-25 | 2020-03-31 | 杭州字符串科技有限公司 | 一种签名验证方法及系统 |
CN111611576A (zh) * | 2020-04-30 | 2020-09-01 | 南京南瑞继保工程技术有限公司 | 账户密钥验证方法、装置及计算机存储介质 |
KR20210033846A (ko) * | 2019-09-19 | 2021-03-29 | 주식회사 엔에스에이치씨 | 암호학적 해시 알고리즘을 이용해 트랜잭션 사이즈를 감소시킨 블록체인 트랜잭션 방법 |
US20210281432A1 (en) * | 2019-03-13 | 2021-09-09 | Arizona Board Of Regents On Behalf Of Northern Arizona University | Physical unclonable function-based encryption schemes with combination of hashing methods |
WO2021201779A1 (en) * | 2020-03-31 | 2021-10-07 | Agency For Science, Technology And Research | Method and system for generating a hash-based message authentication code (hmac) based on white-box implementation |
CN113688399A (zh) * | 2021-08-25 | 2021-11-23 | 深圳忆联信息系统有限公司 | 固件数字签名保护方法、装置、计算机设备及存储介质 |
CN113794573A (zh) * | 2021-10-25 | 2021-12-14 | 南京大学 | 一种基于离散调制cv-qkd的数字签名系统及方法 |
-
2022
- 2022-02-18 CN CN202210153605.9A patent/CN114584291B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201467167U (zh) * | 2009-08-07 | 2010-05-12 | 薛明 | 一种密码编码器和密码保护系统 |
KR20120091618A (ko) * | 2011-02-09 | 2012-08-20 | (주)에이티솔루션 | 연쇄 해시에 의한 전자서명 시스템 및 방법 |
US20150248568A1 (en) * | 2014-02-28 | 2015-09-03 | Seagate Technology Llc | Device Security Using an Encrypted Keystore Data Structure |
US20170331631A1 (en) * | 2014-11-28 | 2017-11-16 | Katholieke Universiteit Leuven | A method and device for authentication |
US20170272251A1 (en) * | 2015-11-22 | 2017-09-21 | Dyadic Security Ltd. | Method of performing keyed-hash message authentication code (hmac) using multi-party computation without boolean gates |
CN107437996A (zh) * | 2016-05-27 | 2017-12-05 | 宇龙计算机通信科技(深圳)有限公司 | 一种身份认证的方法、装置及终端 |
US20190173670A1 (en) * | 2016-08-04 | 2019-06-06 | Huawei Technologies Co., Ltd. | Authentication method, server, terminal, and gateway |
CN106656476A (zh) * | 2017-01-18 | 2017-05-10 | 腾讯科技(深圳)有限公司 | 一种密码保护方法及装置 |
CN109067526A (zh) * | 2018-08-15 | 2018-12-21 | 数字钱包(北京)科技有限公司 | 层次公私钥对生成方法和装置 |
CN110943840A (zh) * | 2018-09-25 | 2020-03-31 | 杭州字符串科技有限公司 | 一种签名验证方法及系统 |
US20210281432A1 (en) * | 2019-03-13 | 2021-09-09 | Arizona Board Of Regents On Behalf Of Northern Arizona University | Physical unclonable function-based encryption schemes with combination of hashing methods |
KR20210033846A (ko) * | 2019-09-19 | 2021-03-29 | 주식회사 엔에스에이치씨 | 암호학적 해시 알고리즘을 이용해 트랜잭션 사이즈를 감소시킨 블록체인 트랜잭션 방법 |
CN110661813A (zh) * | 2019-10-11 | 2020-01-07 | 浪潮软件股份有限公司 | 一种基于CMSP的对象存储的RESTful服务的身份认证实现方法 |
CN110889595A (zh) * | 2019-11-06 | 2020-03-17 | 国网浙江省电力有限公司 | 一种基于哈希算法的电力物资编码优化方法 |
WO2021201779A1 (en) * | 2020-03-31 | 2021-10-07 | Agency For Science, Technology And Research | Method and system for generating a hash-based message authentication code (hmac) based on white-box implementation |
CN111611576A (zh) * | 2020-04-30 | 2020-09-01 | 南京南瑞继保工程技术有限公司 | 账户密钥验证方法、装置及计算机存储介质 |
CN113688399A (zh) * | 2021-08-25 | 2021-11-23 | 深圳忆联信息系统有限公司 | 固件数字签名保护方法、装置、计算机设备及存储介质 |
CN113794573A (zh) * | 2021-10-25 | 2021-12-14 | 南京大学 | 一种基于离散调制cv-qkd的数字签名系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115442026A (zh) * | 2022-11-07 | 2022-12-06 | 苏州浪潮智能科技有限公司 | 一种hmac算法处理系统、方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114584291B (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8775794B2 (en) | System and method for end to end encryption | |
CN110401615B (zh) | 一种身份认证方法、装置、设备、系统及可读存储介质 | |
US11153074B1 (en) | Trust framework against systematic cryptographic | |
CN112989426B (zh) | 授权认证方法及装置、资源访问令牌的获取方法 | |
US20110271109A1 (en) | Systems and methods of remote device authentication | |
CN112507326B (zh) | 基于sm3杂凑算法的密码信息加密方法、装置以及计算机设备 | |
WO2021041771A1 (en) | Decentralized techniques for verification of data in transport layer security and other contexts | |
CN112468478A (zh) | 攻击拦截方法、装置、计算机设备和存储介质 | |
CN107453871B (zh) | 口令生成方法、口令验证方法、支付方法及装置 | |
CN114553590A (zh) | 数据传输方法及相关设备 | |
US9264234B2 (en) | Secure authentication of identification for computing devices | |
CN114584291B (zh) | 基于hmac算法的密钥保护方法、装置、设备和存储介质 | |
CN111241492A (zh) | 一种产品多租户安全授信方法、系统及电子设备 | |
CN109936438A (zh) | 一种物联网系统终端设备安全接入认证的方法 | |
CN112328415A (zh) | 接口调用方法、装置、计算机设备和可读存储介质 | |
CN115879074B (zh) | 一种基于区块链的身份认证方法、装置和系统 | |
CN116684104A (zh) | Api接口的rsa2签名复核方法、装置、电子设备及介质 | |
CN109302442B (zh) | 一种数据存储证明方法及相关设备 | |
CN115987690A (zh) | 基于api的隐私计算方法、api调用端和api提供端 | |
CN115604034A (zh) | 一种通信连接的加解密方法、系统及电子设备 | |
CN113794568A (zh) | 接口安全验证方法、访问接口的方法、装置、设备和介质 | |
CN114282254A (zh) | 加密、解密方法及装置、电子设备 | |
CN114168909A (zh) | 基于代码签名的程序保护方法、装置、设备和存储介质 | |
US20220035924A1 (en) | Service trust status | |
RU2633186C1 (ru) | Персональное устройство аутентификации и защиты данных |
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 |