CN118249990A - 数据加密认证方法 - Google Patents
数据加密认证方法 Download PDFInfo
- Publication number
- CN118249990A CN118249990A CN202410196685.5A CN202410196685A CN118249990A CN 118249990 A CN118249990 A CN 118249990A CN 202410196685 A CN202410196685 A CN 202410196685A CN 118249990 A CN118249990 A CN 118249990A
- Authority
- CN
- China
- Prior art keywords
- key
- length
- data
- mac
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000004891 communication Methods 0.000 claims description 40
- 239000003999 initiator Substances 0.000 claims description 24
- 238000009825 accumulation Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 239000013589 supplement Substances 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 8
- 238000012795 verification Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Abstract
本发明公开了一种数据加密认证方法,包括:步骤1,生成随机数IV和密钥key;所述随机数IV作为初始变量;步骤2,将数据分割为多个明文数据组,并利用所述随机数IV和密钥key对多个明文数据组并行加密;步骤3,将密钥key、随机数IV以及步骤2生成的密文输入HMAC算法,生成用于消息认证的MAC值,利用该MAC值验证数据的真实性和完整性。本发明利用随机数IV和密钥key对多个明文数据组并行加密,并利用HMAC算法生成MAC值,在保证效率的同时,提高了数据传输的安全性。
Description
技术领域
本发明属于信息安全技术领域,特别涉及一种数据加密认证方法。
背景技术
近年来,随着互联网的发展,网络用户逐渐增加,新型网络应用层出不穷,网络规模不断扩大,网络数据量变得越来越庞大。与此同时,在数据传输中的网络攻击问题也越来越严峻。信息泄露攻击、完整性破坏攻击,拒绝服务攻击等等,网络攻击工具变得智能化、自动化,网络攻击方式变得多样化、更加隐蔽化,网络攻击活动持续性增强。为了提高数据传输的安全性,越来越多的网络应用对数据进行加密。此外,通信双方还通过消息完整性验证来保证数据的完整性和正确性。
在互联网上,分组密码的使用比序列密码更广泛。分组密码有多种工作模式(即ECB、CBC、CFB、OFB、CTR、XTS)。这些工作模式中,CBC、CFB、OFB三种模式解决了ECB模式中相同明文生成相同密文的缺陷,CTR在此基础上提供了多分组并行加密特性,但是这些模式都不能提供密文消息完整性校验功能,因此GCM模式被提出。
GCM(Galois/Counter Mode,伽罗瓦计算模式),G是指GMAC,C是指CTR(CounTeR,计数器模式)。它在CTR加密的基础上增加GMAC的特性,解决了CTR不能对加密消息进行完整性校验的问题。然而,GCM模式也存在一些问题,分组密码的密钥必须保密,否者攻击者一旦获取密钥,便可解密数据,从而造成数据泄露、盗用、篡改等问题。GCM模式的IV通常使用96bit的固定长度,较小的IV长度导致认证标签很容易被伪造。这也导致消息完整性验证安全性弱。此外,小的数据组块导致GCM模式不适用于大量的数据加密。由于GHASH的运算方式,在网络加密传输的环境下消息认证部分往往会拖慢加解密的运算速度,成为系统性能的瓶颈。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种数据加密认证方法,以解决在数据传输中出现的上述安全性问题,提高消息完整性验证的安全性。
为了实现上述目的,本发明采用的技术方案是:
一种数据加密认证方法,其特征在于,包括如下步骤:
步骤1,生成随机数IV和密钥key;所述随机数IV作为初始变量;
步骤2,将数据分割为多个明文数据组,并利用所述随机数IV和密钥key对多个明文数据组并行加密;
步骤3,将密钥key、随机数IV以及步骤2生成的密文输入HMAC算法,生成用于消息认证的MAC值,利用该MAC值验证数据的真实性和完整性。
在一个实施例中,所述随机数IV、密钥key和分组后的数据均为相同的固定长度,所述步骤1还对密钥key进行如下处理:
判断密钥长度是否符合所述固定长度,如果密钥长度小于所述固定长度,则使用0对密钥key进行扩展,如果密钥长度大于所述固定长度,则将密钥长度截取为所述固定长度。
在一个实施例中,所述固定长度为128bit。
在一个实施例中,所述步骤2,使用分组密码算法SM4进行加密。
在一个实施例中,所述步骤2,对多个明文数据组并行加密的过程如下:
S1:将明文数据P划分为多个明文数据组P1、P2、…、Pi、…、Pn,分组长度为固定长度;Pi表示第i个明文数据组,Pn表示第n个也即最后一个明文数据组;
S2:生成累加计数器c1、c2、…、ci、…、cn,ci表示第i个累加计数器,cn表示第n个累加计数器;
S3:将所述初始变量和ci进行连接得到IV-ci,用密钥key加密IV-ci,将加密后的IV-ci和Pi进行异或运算得到密文Ci,取i∈[1,n],得到密文C1,C2,...,Ci,...,Cn;
S4:将得到的密文C1,C2,...,Ci,...,Cn拼接在一起。
在一个实施例中,对于所述第n个明文数据组Pn,如果其长度小于所述固定长度,则截取加密后的IV-cn的长度为Pn的长度,不进行填充。
在一个实施例中,所述步骤2,每次数据加密的初始变量是不同的,即每次加密时都会生成一个不同的值作为计数器的初始值。
在一个实施例中,所述步骤3,将密钥key、随机数IV以及步骤2生成的密文输入HMAC算法,生成用于消息认证的MAC值,过程如下:
S1:通信双方通过预共享密钥key生成密钥key2,通信发起方先对消息进行加密;所述消息,为所述密文,或为所述随机数IV与所述密文组合得到的数据;
S2:通信发起方对密钥key2进行处理,如果密钥key2长于Hash函数的分组长度,则利用Hash函数计算出密钥key2的散列值,然后将该散列值作为新的HMAC的密钥;如果密钥key2短于Hash函数的分组长度,则在密钥key2末尾填充0,以补充到分组长度;
S3:通信发起方将处理后的密钥key2与ipad进行异或运算,生成一个和Hash函数的分组长度相同,且和密钥key2相关的比特序列ipadkey;
S4:通信发起方将ipadkey与所述消息进行组合,即将ipadkey附加在消息的开头;
S5:通信发起方散列S4的结果,计算出散列值;
S6:通信发起方将处理后的密钥key2与opad进行异或运算,生成一个和hash函数的分组长度相同,且和密钥key2相关的比特序列opadkey;
S7:通信发起方将opadkey与S5的散列值进行组合,即将opadkey附加在S5的散列值的开头;
S8:通信发起方散列S7的结果,计算出最终的MAC值MAC-Value1;
S9:通信发起方将所述消息和MAC-Value1拼接,发给通信接收方;
S10:通信接收方执行S2-S9计算MAC值MAC-Value2,比对MAC-Value1和MAC-Value2是否相同,如果二者相同则证明消息未被篡改、重放。
在一个实施例中,当接收的数据未被篡改、重放,对消息执行并行的解密运算。
与传统加密模式(例如ECB、CBC、CFB、OFB、CTR、XTS等)相比,本发明并行分组加解密可以并行处理多个明文块或密文块,提高了加解密效率。此外,比起GCM模式,本发明的随机数使用预设的固定长度(如128bit),可以提高消息认证码的伪造难度,提高消息完整性验证的安全性。并行分组加密和大的数据分组块提高了吞吐量,因此,本发明适用于大规模数据加解密。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种数据加密认证方法的步骤流程示意图。
图2是本发明一种数据加密认证方法中并行加密过程图。
图3是本发明一种数据加密认证方法中消息认证的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明为一种数据加密认证方法,包括三个主要部分:参数生成部分、数据加密部分和消息完整性验证部分。在参数生成部分,生成随机数(即初始变量)和密钥;在数据加密部分,将数据分割为多个明文数据组,并行对多个明文数据组加密;在消息完整性验证部分,将密钥、随机数、生成的密文输入HMAC算法,生成用于消息认证的MAC值。本发明利用HMAC算法生成MAC值,在保证效率的同时,提高了数据传输的安全性。
本发明的具体过程如图1所示,主要包括如下三个步骤:
步骤1,参数生成。
在本步骤中,生成的参数主要是随机数IV和密钥key,其中随机数IV可由linux系统提供的随机数函数生成,其用作本发明的初始变量,密钥key可由国密算法SM4生成。
步骤2,数据加密。
将数据分割为多个明文数据组,并利用所述的随机数IV和密钥key对所述的多个明文数据组并行加密。
本发明中,随机数IV、密钥key和分组后的数据均为相同的固定长度,典型如128bit。
步骤3,消息完整性验证。
将密钥key、随机数IV以及步骤2生成的密文输入散列消息认证码(Hash-basedMessage Authentication Code,HMAC)算法,生成用于消息认证的MAC值,利用该MAC值验证接收的数据的真实性以及是否被篡改、伪装、重放。
通过上述步骤,利用HMAC算法生成了MAC值,该MAC值可用于验证数据的真实性和完整性,一方面保证效率,另一方面提高了数据传输安全性。
本发明使用初始值IV、计数器和密钥对数据分组进行加解密。在不使用初始值IV的情况下,相同的密钥会使相同的明文被加密为相同的密文。这样很容易通过分析破解密钥。初始值IV是随机生成的随机数,具有随机性、不可预测性、不可重现性。使用初始值IV可以打乱明文的特征信息,相同的明文会被加密为不同的密文,提高加密的安全性。逐次累加的计数器由初始值IV和分组序号运算得到。逐次累加计数器使加解密可以以任意分组顺序进行,即可以并行化处理。并行化加解密可以提高加数据解密的速率。
HMAC算法是一种基于Hash函数和密钥进行消息认证的方法。HMAC算法以一个密钥和一个消息为输入,生成一个消息摘要作为输出。HMAC算法具有高安全性。HMAC通过引入密钥来生成认证码,密钥是双方事先约定的,第三方无法获取。这能够有效地防止消息被篡改和伪造。HMAC算法具有高效性。HMAC算法使用了哈希函数,其计算速度较快,适用于实时通信场景。HMAC算法具有抗篡改性。HMAC算法对消息进行分块处理,增加了篡改的难度。同时,密钥的使用保证了算法的安全性。HMAC算法具有可靠性。HMAC算法经过多年实践,其性能和安全性得到了广泛认可。
在本发明的实施例中,步骤1为步骤2和步骤3提供所需的参数(即随机数IV、密钥key)。对于随机数IV,在每次加密时必须是不同的,即每次加密时都会生成一个不同的值(nonce)来作为计数器的初始值。对于密钥key,由于需要与随机数IV、分组后的数据为相同的固定长度,为此,需要对密钥key进行如下处理:判断密钥长度是否符合所述的固定长度(如128bit),如果密钥长度小于所述固定长度,则使用0对密钥key进行扩展,如果密钥长度大于所述固定长度,则将密钥长度截取为所述固定长度。上述对密钥key进行处理,可以在步骤1或步骤2执行。
在本发明的实施例中,步骤2可使用分组密码算法SM4等进行加密,SM4的密钥扩展算法和加密算法都使用非线性迭代结构,具有高灵活性、高安全性的特点。其对多个明文数据组并行加密,可以提高数据加密的效率。图2显示了并行加密的步骤。在图中Ek为使用秘钥key对数据进行对称加密运算。⊕为异或运算。并行加密具体步骤如下:
S1:将明文数据P划分为多个明文数据组P1、P2、…、Pi、…、Pn,分组长度为固定长度,本实施例取128bit。其中P1表示第1个明文数据组,Pi表示第i个明文数据组,Pn表示第n个也即最后一个明文数据组,i∈[1,n]。
S2:生成累加计数器c1、c2、…、ci、…、cn。其中c1表示第1个累加计数器,ci表示第i个累加计数器,ci表示第n个也即最后一个累加计数器。
S3:将初始变量和第1个累加计数器c1进行连接得到IV-c1,用密钥key加密IV-c1,将加密后的IV-c1和第1个明文数据组P1进行运算(典型如连接、异或等)得到密文C1。
S4:将初始变量和第2个累加计数器c2进行连接得到IV-c2,用密钥key加密IV-c2,将加密后的IV-c2和第2个明文数据组P2进行运算(典型如连接、异或等)得到密文C2。
…
S5:将初始变量和第i个累加计数器ci进行连接得到IV-ci,用密钥key加密IV-ci。将加密后的IV-ci和第i个明文数据组Pi进行运算(典型如连接、异或等)得到密文Ci。
…
S6:将初始变量和第n个累加计数器cn进行连接得到IV-cn,用密钥key加密IV-cn,将加密后的IV-cn和第n个明文数据组Pn进行运算(典型如连接、异或等)得到密文Cn。其中,如果第n个明文数据组Pn小于所述固定长度,则截取加密后的IV-cn的长度为第n个明文数据组Pn的长度,不需要进行填充,不影响加密数据的安全性。
S7:将得到的密文C1,C2,...,Ci,...,Cn拼接在一起。
本发明消息完整性验证采用HMAC算法,可以提高数据传输的安全性。HMAC算法具有简单、高效、安全的特性,其被广泛应用于各种网络通信场景。比起HASH算法,HMAC算法引入了密钥,其安全性已经不完全依赖于所使用的HASH算法。由于HMAC算法使用的密钥是通讯双方事先约定的,第三方不知,所以第三方无法仿造出相同的MAC值。因此,比起GHASH函数,HMAC算法提高了数据传输的安全性。在本发明实施例中,将密钥key、随机数IV以及步骤2生成的密文输入HMAC算法,生成用于消息认证的MAC值,具体步骤如下:
S1:通信双方通过预共享密钥key生成密钥key2。通信发起方先对消息进行加密。本实施例所述消息,为所述密文,或为所述随机数IV与所述组合得到的数据。
S2:通信发起方对密钥key2进行处理,如果密钥key2长于Hash函数的分组长度(block_size),则需要利用Hash函数计算出密钥key2的散列值,然后将该散列值作为新的HMAC的密钥。如果密钥key2短于Hash函数的分组长度,则在密钥key2的末尾填充0,以补充到分组长度。
S3:通信发起方将处理后的密钥与ipad(内部Pad,固定值0x36)进行异或运算,生成一个和Hash函数的分组长度相同,且和密钥key2相关的比特序列ipadkey。
S4:通信发起方将ipadkey与所述的消息进行组合,即将ipadkey附加在消息的开头。
S5:通信发起方散列S4的结果,计算出散列值。
S6:通信发起方将处理后的密钥与opad(外部Pad,固定值0x5c)进行异或运算,生成一个和hash函数的分组长度相同,且和密钥key2相关的比特序列opadkey。
S7:通信发起方将opadkey与S5的散列值进行组合,即将opadkey附加在S5的散列值的开头。
S8:通信发起方散列S7的结果,计算出最终的MAC值(称MAC-Value1)。
S9:通信发起方将所述消息和步骤8的MAC值拼接起来,发给通信接收方。
S10:通信接收方执行相同的步骤(S2-S9)计算MAC值(称MAC-Value2),比对MAC-Value1和MAC-Value2是否相同,如果二者相同则证明消息未被篡改,可对消息执行解密运算。本发明采用并行解密,其过程与前述的并行加密过程类似。
相应地,本发明亦可提供一种数据加密认证系统,包括参数生成模块、数据加解密模块、消息认证模块。其中参数生成模块主要执行前述步骤1,数据加解密模块的加密部分执行前述步骤2,在完成信息完整性验证后,解密部分可执行解密过程,消息认证模块执行前述步骤3。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而不脱离本发明技术方案的修改或者替换,其均应涵盖在本发明请求保护的技术方案范围当中。
Claims (9)
1.一种数据加密认证方法,其特征在于,包括如下步骤:
步骤1,生成随机数IV和密钥key;所述随机数IV作为初始变量;
步骤2,将数据分割为多个明文数据组,并利用所述随机数IV和密钥key对多个明文数据组并行加密;
步骤3,将密钥key、随机数IV以及步骤2生成的密文输入HMAC算法,生成用于消息认证的MAC值,利用该MAC值验证数据的真实性和完整性。
2.根据权利要求1所述数据加密认证方法,其特征在于,所述随机数IV、密钥key和分组后的数据均为相同的固定长度,所述步骤1还对密钥key进行如下处理:
判断密钥长度是否符合所述固定长度,如果密钥长度小于所述固定长度,则使用0对密钥key进行扩展,如果密钥长度大于所述固定长度,则将密钥长度截取为所述固定长度。
3.根据权利要求2所述数据加密认证方法,其特征在于,所述固定长度为128bit。
4.根据权利要求1所述数据加密认证方法,其特征在于,所述步骤2,使用分组密码算法SM4进行加密。
5.根据权利要求1所述数据加密认证方法,其特征在于,所述步骤2,对多个明文数据组并行加密的过程如下:
S1:将明文数据P划分为多个明文数据组P1、P2、…、Pi、…、Pn,分组长度为固定长度;Pi表示第i个明文数据组,Pn表示第n个也即最后一个明文数据组;
S2:生成累加计数器c1、c2、…、ci、…、cn,ci表示第i个累加计数器,cn表示第n个累加计数器;
S3:将所述初始变量和ci进行连接得到IV-ci,用密钥key加密IV-ci,将加密后的IV-ci和Pi进行异或运算得到密文Ci,取i∈[1,n],得到密文C1,C2,...,Ci,...,Cn;
S4:将得到的密文C1,C2,...,Ci,...,Cn拼接在一起。
6.根据权利要求5所述数据加密认证方法,其特征在于,对于所述第n个明文数据组Pn,如果其长度小于所述固定长度,则截取加密后的IV-cn的长度为Pn的长度,不进行填充。
7.根据权利要求1所述数据加密认证方法,其特征在于,所述步骤2中,每次数据加密的初始变量是不同的,即每次加密时都会生成一个不同的值作为计数器的初始值。
8.根据权利要求1所述数据加密认证方法,其特征在于,所述步骤3,将密钥key、随机数IV以及步骤2生成的密文输入HMAC算法,生成用于消息认证的MAC值,过程如下:
S1:通信双方通过预共享密钥key生成密钥key2,通信发起方先对消息进行加密;所述消息,为所述密文,或为所述随机数IV与所述密文组合得到的数据;
S2:通信发起方对密钥key2进行处理,如果密钥key2长于Hash函数的分组长度,则利用Hash函数计算出密钥key2的散列值,然后将该散列值作为新的HMAC的密钥;如果密钥key2短于Hash函数的分组长度,则在密钥key2末尾填充0,以补充到分组长度;
S3:通信发起方将处理后的密钥key2与ipad进行异或运算,生成一个和Hash函数的分组长度相同,且和密钥key2相关的比特序列ipadkey;
S4:通信发起方将ipadkey与所述消息进行组合,即将ipadkey附加在消息的开头;
S5:通信发起方散列S4的结果,计算出散列值;
S6:通信发起方将处理后的密钥key2与opad进行异或运算,生成一个和hash函数的分组长度相同,且和密钥key2相关的比特序列opadkey;
S7:通信发起方将opadkey与S5的散列值进行组合,即将opadkey附加在S5的散列值的开头;
S8:通信发起方散列S7的结果,计算出最终的MAC值MAC-Value1;
S9:通信发起方将所述消息和MAC-Value1拼接,发给通信接收方;
S10:通信接收方执行S2-S9计算MAC值MAC-Value2,比对MAC-Value1和MAC-Value2是否相同,如果二者相同则证明消息未被篡改、重放。
9.根据权利要求1或8所述数据加密认证方法,其特征在于,当接收的数据未被篡改、重放,对消息执行并行的解密运算。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118249990A true CN118249990A (zh) | 2024-06-25 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111541677B (zh) | 一种基于窄带物联网的安全混合加密方法 | |
Mathur et al. | AES based text encryption using 12 rounds with dynamic key selection | |
US5673318A (en) | Method and apparatus for data authentication in a data communication environment | |
US8687800B2 (en) | Encryption method for message authentication | |
US8712036B2 (en) | System for encrypting and decrypting a plaintext message with authentication | |
CN107147488A (zh) | 一种基于sm2加解密算法的签名验签系统和方法 | |
US8107620B2 (en) | Simple and efficient one-pass authenticated encryption scheme | |
US8509427B2 (en) | Hybrid mode cryptographic method and system with message authentication | |
CN109981285B (zh) | 一种口令保护方法、口令校验方法及系统 | |
NZ277128A (en) | Public key encryption system and mixture generator | |
CN112511304A (zh) | 一种基于混合加密算法的电力数据隐私通信方法 | |
CN114826656A (zh) | 一种数据链路可信传输方法和系统 | |
CN113312608B (zh) | 一种基于时间戳的电力计量终端身份认证方法及系统 | |
CN113779645A (zh) | 一种量子数字签名和量子数字签密方法 | |
CN1316405C (zh) | 一种获得数字签名和实现数据安全的方法 | |
CN114448641A (zh) | 一种隐私加密方法、电子设备、存储介质以及芯片 | |
Jolfaei et al. | A lightweight integrity protection scheme for fast communications in smart grid | |
CN108599922B (zh) | 新型含密钥消息完整性认证码的生成方法 | |
CN114095259B (zh) | 鉴别加解密装置及方法 | |
Al-Mashhadi et al. | Secure and time efficient hash-based message authentication algorithm for wireless sensor networks | |
CN116248316A (zh) | 文件加密方法、文件解密方法、装置及存储介质 | |
CN112423295B (zh) | 一种基于区块链技术的轻量级安全认证方法及系统 | |
Huang et al. | A secure wireless communication system integrating PRNG and Diffie-Hellman PKDS by using a data connection core | |
CN118249990A (zh) | 数据加密认证方法 | |
CN114124354B (zh) | 确定性鉴别加解密装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |