CN108599922B - 新型含密钥消息完整性认证码的生成方法 - Google Patents
新型含密钥消息完整性认证码的生成方法 Download PDFInfo
- Publication number
- CN108599922B CN108599922B CN201810383629.7A CN201810383629A CN108599922B CN 108599922 B CN108599922 B CN 108599922B CN 201810383629 A CN201810383629 A CN 201810383629A CN 108599922 B CN108599922 B CN 108599922B
- Authority
- CN
- China
- Prior art keywords
- message
- block cipher
- len
- cipher algorithm
- 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.)
- Active
Links
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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Abstract
本发明属于密码学技术领域,特别是涉及一种新型含密钥消息完整性认证码的生成方法,首先,预处理分别得到分组密码算法E1,k1、E2,k2;对待处理的消息进行填充,选择随机数C0,对填充之后的消息按分组密码算法单次处理长度做切分,切分为(M1,M2,M3,M4,…,Mn);利用公式对(M1,M2,M3,M4,…,Mn)进行处理,得到中间数据Cn,其中1≤i≤n;最后,利用公式MAC=E1,k1(E2,k2(Cn))对中间数据Cn进行处理,得到消息认证码MAC。本发明能够用于数据完整性检验,将传统CBC‑MAC模式及其各种变形中只调用一个分组密码算法改进成同时调用两个分组密码算法,使消息完整性认证码更安全。
Description
技术领域
本发明属于密码学技术领域,特别是涉及一种新型含密钥消息完整性认证码的生成方法。
背景技术
消息完整性是信息安全的一项基本要求,它可以防止数据未经授权被篡改。随着网络技术的不断进步,尤其是电子商务的不断发展,保证信息的完整性变得越来越重要,特别是双方在一个不安全的信道上通信时,就需要有一种方法保证一方所发送的数据能够被另一方验证是正确的、未经篡改的。含密钥的消息完整性认证函数的提出就是专门解决此类问题的。
最著名的消息完整性认证算法是CBC-MAC,同时它也是一个ANSI标准(X9.17)。CBC-MAC实际上就是对消息使用CBC模式进行加密,取密文的最后一块作为认证码,参见图1。
CBC-MAC模式全程使用的是同一个密钥控制下的分组密码算法Ek(这里的要素有两个,一是分组密码算法,用E表示,另一个要素是下标k,表示该分组密码使用的密钥,我们下面记这个分组密码算法的明文分组规模为B比特),具体步骤是:
(1)对原始消息数据做填充,使其长度构成B比特的整数倍,为表述方便,记为填充后的消息数据长度为nB比特;
(2)选择B比特随机数C0;
(3)将填充后的消息数据按照每B比特进行切分,切分之后的数据为
(M1,M2,M3,M4,…,Mn);
(4)将第一块的明文数据M1和预先选好的随机数C0做逐位异或操作,并将异或之后的数据通过由密钥控制下的分组密码算法Ek,得到当前时刻的密文数据C1;
(5)让第i(2≤i≤n)块的明文数据Mi和上一时刻生成的密文Ci-1做逐位异或操作,并将异或之后的数据通过由密钥控制下的分组密码算法Ek,得到当前时刻的密文数据Ci;
(6)输出最后一块密文数据Cn作为消息完整性认证码。
CBC-MAC对于固定长度的消息(即每次消息的长度都是一定的)处理时具备理论上的安全性。但是在消息长度可变的前提下很容易受到攻击。因此出现了HMAC、PMAC、OMAC等多个变种和改进,安全性有一定程度的提升。
不论是CBC-MAC还是其后续的改进,这些消息认证码技术的本质都是将安全性寄托在内部分组密码Ek之上。一旦该分组密码算法被破解,上述的消息认证码技术将全部不安全。因此,如何进一步增强消息认证码生成函数的强度,使之不完全依赖单一密码算法的安全性,是一个值得解决的问题。
发明内容
针对现有技术中存在的问题,本发明提供一种新型含密钥消息完整性认证码的生成方法,能够用于数据完整性检验,将传统CBC-MAC模式及其各种变形中只调用一个分组密码算法改进成同时调用两个分组密码算法,使消息完整性认证码更安全。
为了实现上述目的,本发明采用以下的技术方案:
本发明提供一种新型含密钥消息完整性认证码的生成方法,包括以下步骤:
步骤1,预处理分别得到分组密码算法E1,k1、E2,k2;
步骤2,对待处理的消息进行填充,选择随机数C0,对填充之后的消息按分组密码算法单次处理长度做切分,切分为(M1,M2,M3,M4,…,Mn);
步骤4,利用公式MAC=E1,k1(E2,k2(Cn))对中间数据Cn进行处理,得到(M1,M2,M3,M4,…,Mn)对应的消息认证码MAC。
进一步地,所述步骤1的具体实现过程如下:
步骤101,选择两个分组规模为B比特的分组密码加密变换E1,E2;
步骤102,将密钥k1注入E1中,得到分组密码算法E1,k1;
步骤103,将密钥k2注入E2中,得到分组密码算法E2,k2。
进一步地,所述步骤2中对待处理的消息进行填充的具体步骤如下:
步骤201,设原始消息长度为len,计算len modB的取值t,即len除以B之后的余数为t;
步骤202,当t值小于64时,先在原始消息之后添加1,再添加B+t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤203,当t值等于64时,直接在原始消息之后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤204,当t值大于64时,先在原始消息之后添加1,再添加t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0。
进一步地,所述步骤3和步骤4的具体实现过程如下:
步骤301,将第一块的明文数据M1和预先选好的随机数C0做逐位异或操作;
步骤302,将步骤301异或之后的数据通过由密钥控制下的分组密码算法E1,k1;
步骤303,将E1,k1的输出作为E2,k2的输入,得到当前时刻的中间数据C1;
步骤304,对i从2增至n,将第i块的明文数据Mi和上一时刻生成的中间数据Ci-1做逐位异或操作,并将异或之后的数据通过由密钥控制下的分组密码算法E1,k1,将E1,k1的输出作为E2,k2的输入,得到当前时刻的中间数据Ci;
步骤305,对Cn依次用E2,k2和E1,k1作用,得到B比特消息认证码MAC。
与现有技术相比,本发明具有以下优点:
利用单一分组密码的CBC-MAC,其最大的缺点在于:算法的安全性完全取决于被调用的分组密码算法的强度,一旦该密码算法不安全,则整个消息完整性认证码生成系统就会崩溃。这个问题出现的根本在于CBC-MAC的工作过程仅仅调用了一个分组密码算法。
本发明提出的一种新型含密钥消息完整性认证码的生成方法,本质上是一种更先进、更安全、更有效的消息完整性认证码。原因如下:(1)单一分组密码算法被破解的风险是存在的,但是同一时期内,两个著名分组密码算法同时被成功攻击的可能性微乎其微。由于我们的消息认证码方案调用了两个分组密码算法,因此只有在两个分组密码算法同时被攻破的前提下,整个消息认证码系统才会被破解,其中的任何一个分组密码算法被破译,本发明仍然能够保证消息认证码系统的安全性。(2)与CBC-MAC相比,我们的方案能够用于变长消息的认证码生成。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是CBC-MAC的消息完整性认证码生成的流程示意图;
图2是本发明的一种新型含密钥消息完整性认证码的生成方法的流程示意图。
具体实施方式
为了便于理解,对本发明中出现的部分名词作以下解释说明:
消息完整性认证码:又称消息摘要或者消息指纹。由消息完整性认证函数生成。该函数的输入是任意长的二进制数据,输出是固定长度的二进制数据(一般不低于128bit长度,称为消息完整性认证码)。一般而言,只要消息不同,消息摘要的取值就不同。根据消息完整性认证函数的结构是否受到密钥控制,可以将其分为含密钥的消息完整性认证函数(MAC)和不含密钥的消息完整性认证函数(MDC)。
实施例一,参见图2,本实施例提供一种新型含密钥消息完整性认证码的生成方法,包括以下步骤:
步骤S101,选择两个分组规模为B比特的分组密码加密变换E1,E2;
步骤S102,将密钥k1注入E1中,得到分组密码算法E1,k1;
步骤S103,将密钥k2注入E2中,得到分组密码算法E2,k2;
对待处理的消息进行填充,按照如下步骤S104至步骤S107。
步骤S104,设原始消息长度为len,计算len modB的取值t,即len除以B之后的余数为t;
步骤S105,当t值小于64时,先在原始消息之后添加1,再添加B+t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤S106,当t值等于64时,直接在原始消息之后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤S107,当t值大于64时,先在原始消息之后添加1,再添加t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
将步骤S104至步骤S107的输出称为填充之后的消息。
步骤S108,选择B比特随机数C0,存储并通过公开方式发送给接收方;
步骤S109,对填充之后的消息按分组密码算法单次处理长度做切分,切分之后的数据为(M1,M2,M3,M4,…,Mn),即每个Mi的长度都是B比特;
步骤S110,将第一块的明文数据M1和预先选好的随机数C0做逐位异或操作;
步骤S111,将步骤S110异或之后的数据通过由密钥控制下的分组密码算法E1,k1;
步骤S112,将E1,k1的输出作为E2,k2的输入,得到当前时刻的中间数据C1;
步骤S113,对i从2增至n,将第i块的明文数据Mi和上一时刻生成的中间数据Ci-1做逐位异或操作,并将异或之后的数据通过由密钥控制下的分组密码算法E1,k1,将E1,k1的输出作为E2,k2的输入,得到当前时刻的中间数据Ci;
步骤S114,对Cn依次用E2,k2和E1,k1作用,得到B比特消息认证码MAC;
步骤S115,输出MAC码的值,流程结束。
步骤S109至步骤S113用公式可表述为:
步骤S114用公式可表述为:
MAC=E1,k1(E2,k2(Cn))。
下面结合一个具体实施例对本发明进一步详细描述:
实施例二,高级加密标准AES和中国的分组密码算法加密标准SM4是两个著名的分组密码算法,它们的分组规模均为128比特,下面通过实例来说明,如何利用这两个分组密码算法来搭建本发明的一种新型含密钥消息完整性认证码的生成方法。
步骤S201,生成两组128比特的密钥,分别为k1和k2;
步骤S202,选择两个加密算法分别为AES和SM4加密算法,记作AES和SM4;
步骤S203,将k1和k2分别注入到AES和SM4的加密函数之中,得到加密算法AESk1,SM4k2;
对待处理的消息进行填充,按照如下步骤S204至步骤S207。
步骤S204,设原始消息长度为len,计算len mod128的取值t,即len除以128之后的余数为t;
步骤S205,当t值小于64时,先在原始消息之后添加1,再添加64+t个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤S206,当t值等于64时,直接在原始消息之后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤S207,当t值大于64时,先在原始消息之后添加1,再添加t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
将步骤S204至步骤S207的输出称为填充之后的消息。
步骤S208,选择128比特随机数C0,存储并通过公开方式发给接收方;
步骤S209,对填充之后的消息按分组密码分组长度128做切分,切分之后的数据为(M1,M2,M3,M4,…,Mn);
步骤S210,将第一块的明文数据M1和预先选好的随机数C0做逐位异或操作;
步骤S211,将步骤S210异或之后的数据通过由密钥控制下的分组密码算法AESk1;
步骤S212,将AESk1的输出作为SM4k2的输入,得到当前时刻的中间数据C1;
步骤S213,对i从2增至n,将第i块的明文数据Mi和上一时刻生成的中间数据Ci-1做逐位异或操作,并将异或之后的数据通过由密钥控制下的分组密码算法AESk1;将AESk1的输出作为SM4k2的输入,得到当前时刻的中间数据Ci;
步骤S214,对Cn依次用SM4k2和AESk1作用,得出128比特消息认证码MAC;
步骤S215,输出MAC码的值,流程结束。
本发明将传统CBC-MAC模式及其各种变形中只调用一个分组密码算法改进成同时调用两个分组密码算法,保持了传统CBC-MAC模式的其余部分不变,使消息完整性认证码更安全。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来讲是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽范围。
Claims (3)
1.一种新型含密钥消息完整性认证码的生成方法,其特征在于,包括以下步骤:
步骤1,预处理分别得到分组密码算法E1,k1、E2,k2,分组密码算法E1,k1和分组密码算法E2,k2是两个不同的密码算法,具体过程为:
步骤101,选择两个分组规模为B比特的分组密码加密变换E1,E2;
步骤102,将密钥k1注入E1中,得到分组密码算法E1,k1;
步骤103,将密钥k2注入E2中,得到分组密码算法E2,k2;
步骤2,对待处理的消息进行填充,选择随机数C0,对填充之后的消息按分组密码算法单次处理长度做切分,切分为(M1,M2,M3,M4,…,Mn);
步骤4,利用公式MAC=E1,k1(E2,k2(Cn))对中间数据Cn进行处理,得到(M1,M2,M3,M4,…,Mn)对应的消息认证码MAC。
2.根据权利要求1所述的新型含密钥消息完整性认证码的生成方法,其特征在于,所述步骤2中对待处理的消息进行填充的具体步骤如下:
步骤201,设原始消息长度为len,计算len modB的取值t,即len除以B之后的余数为t;
步骤202,当t值小于64时,先在原始消息之后添加1,再添加B+t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤203,当t值等于64时,直接在原始消息之后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0;
步骤204,当t值大于64时,先在原始消息之后添加1,再添加t-64个0,然后在其后添加原始消息的比特长度值len的64位表示,len不足64位的在其高位补0。
3.根据权利要求2所述的新型含密钥消息完整性认证码的生成方法,其特征在于,所述步骤3和步骤4的具体实现过程如下:
步骤301,将第一块的明文数据M1和预先选好的随机数C0做逐位异或操作;
步骤302,将步骤301异或之后的数据通过由密钥控制下的分组密码算法E1,k1;
步骤303,将E1,k1的输出作为E2,k2的输入,得到当前时刻的中间数据C1;
步骤304,对i从2增至n,将第i块的明文数据Mi和上一时刻生成的中间数据Ci-1做逐位异或操作,并将异或之后的数据通过由密钥控制下的分组密码算法E1,k1,将E1,k1的输出作为E2,k2的输入,得到当前时刻的中间数据Ci;
步骤305,对Cn依次用E2,k2和E1,k1作用,得到B比特消息认证码MAC。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810383629.7A CN108599922B (zh) | 2018-04-26 | 2018-04-26 | 新型含密钥消息完整性认证码的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810383629.7A CN108599922B (zh) | 2018-04-26 | 2018-04-26 | 新型含密钥消息完整性认证码的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108599922A CN108599922A (zh) | 2018-09-28 |
CN108599922B true CN108599922B (zh) | 2021-03-30 |
Family
ID=63609541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810383629.7A Active CN108599922B (zh) | 2018-04-26 | 2018-04-26 | 新型含密钥消息完整性认证码的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108599922B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109660328A (zh) * | 2018-12-26 | 2019-04-19 | 中金金融认证中心有限公司 | 对称块加密方法、装置、设备及介质 |
CN114513311A (zh) * | 2022-02-25 | 2022-05-17 | 上海芯钛信息科技有限公司 | 一种改进消息认证码算法的方法、装置、设备和介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1624609B1 (en) * | 2000-01-21 | 2011-08-24 | Sony Computer Entertainment Inc. | Encryption data processing apparatus and method |
US7362859B1 (en) * | 2000-10-06 | 2008-04-22 | Sandia Corporation | Enhancement of utilization of encryption engine |
US20050149739A1 (en) * | 2003-12-31 | 2005-07-07 | Hewlett-Packard Development Company, L.P. | PIN verification using cipher block chaining |
CN101237320B (zh) * | 2008-02-04 | 2010-09-08 | 西安理工大学 | 利用无穷维超混沌构造单向散列函数进行密码保护的方法 |
DE102012201164B4 (de) * | 2012-01-26 | 2017-12-07 | Infineon Technologies Ag | Vorrichtung und verfahren zur erzeugung eines nachrichtenauthentifizierungscodes |
US9443107B2 (en) * | 2013-02-19 | 2016-09-13 | Qualcomm Incorporated | Method for protecting the integrity of a group of memory elements using an aggregate authentication code |
TWI510046B (zh) * | 2013-07-04 | 2015-11-21 | Univ Nat Cheng Kung | 認證式加解密方法 |
CN105159654B (zh) * | 2015-08-21 | 2018-06-12 | 中国人民解放军信息工程大学 | 基于多线程并行的完整性度量散列算法优化方法 |
CN107528689B (zh) * | 2017-09-18 | 2020-10-02 | 上海动联信息技术股份有限公司 | 一种基于Ukey的密码修改方法 |
-
2018
- 2018-04-26 CN CN201810383629.7A patent/CN108599922B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108599922A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20010046292A1 (en) | Authentication method and schemes for data integrity protection | |
JP2022537733A (ja) | 認証付き鍵共有 | |
Toorani et al. | A secure cryptosystem based on affine transformation | |
EP3921971A1 (en) | End-to-end double-ratchet encryption with epoch key exchange | |
CN116321129B (zh) | 一种轻量级的基于动态密钥的电力交易专网通信加密方法 | |
CN113726725A (zh) | 一种数据加解密方法、装置、电子设备及存储介质 | |
CN114095170A (zh) | 数据处理方法、装置、系统及计算机可读存储介质 | |
CN108599922B (zh) | 新型含密钥消息完整性认证码的生成方法 | |
US8458452B1 (en) | System and method for encryption and decryption of data transferred between computer systems | |
CN111049738A (zh) | 基于混合加密的电子邮件数据安全保护方法 | |
CN112532384B (zh) | 基于分组密钥模式下对传输密钥快速加解密的方法 | |
CN116248316A (zh) | 文件加密方法、文件解密方法、装置及存储介质 | |
Balasubramanian | Hash functions and their applications | |
CN108566270B (zh) | 使用双分组密码的新型加密方法 | |
Simplicio et al. | Revisiting the security of the ALRED Design and Two of Its Variants: Marvin and LetterSoup | |
CN111683061A (zh) | 基于区块链的物联网设备访问控制方法及装置 | |
EP3883178A1 (en) | Encryption system and method employing permutation group-based encryption technology | |
KR20150103394A (ko) | 암호화 시스템 및 그것의 암호 통신 방법 | |
CN117544418B (zh) | 一种基于报文加解密实现不同终端互信的方法和系统 | |
US20170366355A1 (en) | Parity check message authentication code | |
Mohamed et al. | Cryptography concepts: Confidentiality | |
Tripathi et al. | Survey on performance comparison of various symmetric encryption algorithms | |
Huang et al. | A secure wireless communication system by integrating RSA and Diffie-Hellman PKDS in 4G environments and an intelligent protection-key chain with a data connection core | |
CN111698219A (zh) | 基于材料光谱特征的区块链分类帐实现方法及装置 | |
Rajas et al. | A walkthrough on various methods of Public Key Cryptosystems |
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 |