关联数据的认证加密(Authenticated Encryption with Association Data,AEAD)
AEAD介绍
关联数据是AEAD和传统方法之间的重要区别在于,传统方法不使用关联数据进行认证,而AEAD在真实性和机密性方面更安全,其中一个最重要的细节是关联数据不需要与密文一起存储或传输。
双方能够正确推断的任何上下文相关的非秘密值都可以作为关联数据。举个例子,如果双方正在执行一个以状态机为基础的复杂协议,那么双方始终可以知道自己的状态以及一个诚实的对方应该处于的状态,那么这些状态可以用作关联数据。
同时有许多AEAD的算法,包括但不限于以下几种:
CCM (Counter with CBC-MAC)
GCM (Galois Counter Mode)
OCB (Offset Code Book)
Key Wrap
EAX
Encrypt-then-MAC (EtM)
GCM工作原理
GCM是Galois计数模式的缩写,该方法旨在实现高吞吐量、低成本和低延迟的并行化,GCM采用128比特的块密码块大小,每次调用时,GCM可以提供高达64GB的机密数据的真实性保证。
GCM使用了两个函数,它们分别是:
· GCTR(计数器由简单的递增操作设置的CTR模式)
· GHASH(带密钥的散列函数)
这两个函数将在GCM模式的加密和解密算法中使用,下面我们将着重介绍这些算法。
GHASH algorithm
Input: bit string X such that len(X) = 128m for some integer m
Output: block Ym
Steps:
Let X1, X2, … , X , X m-1 denote the unique sequence of blocks such that X = X1 || X2 || … || Xm-1 || Xm.
Let Y0 be the ‘zero block’ ,0128
For i=1, …, m , let Yi = (Yi-1 ‘xor’ Xi ). H
Return Ym
Following figure illustrates the GHASH function.
GCTR algorithm
Input: bit string X of arbitrary length, initial counter block
Output: bit string Y of bit length len(X)
Steps:
Let n = [len(X) / 128]
Let X1, X2, … , Xn-1, Xn denote the unique sequence of bit strings such that X = X1 || X2 || … || Xn-1 || Xn; X1, X2,…, Xn-1 are complete blocks.
Let CB1 = ICB
For i=2 to n, let CBi =inc(CBi-1)
For i=1 to n-1, let Yi = Xi CIPHK(CBi)
Let Yn* = Xn* ‘xor’ MSBlen(Xn) (CIPHK (CBn))
Let Y=Y1 || Y2 || … || Yn*
Return Y
Following figure illustrates the GCTR function.
Using these both functions, GCM algorithm do the authenticated encryption.
GCM algorithm
Input: valid initialization vector IV, valid plaintext P, valid additional authenticated data A
Output: ciphertext C, authentication tag T
Steps:
1. Let H = CIPHK (0128)
2. Define a bock, J0 as follows:
a) If len(IV) =96 , then J0 = IV || 0311
b) If len(IV) !=96 ,then J0 = GHASHH(IV|| 0s ) where s=128.[len(IV)/128]-len(IV)
3. Let C= GCTRk(inc(J0), P)
4. Let u=128.[len(C)/128]-len(C) and let v=128.[len(A)/128]-len(A)
5. Define a block , S as follows:
S= GHASHH( A|| 0v ||C ||0u||[len(A)]64|| [len(C)]64)
6. Let T=MSBt(GCTRK(J0,S))
7. Return (C,T)
在GCM模式中,首先通过将块密码应用于“零”块生成GHASH函数的哈希子密钥。然后从初始化向量生成计数器块,从IV生成计数器块。如果IV为96位,则将填充字符串0311附加到IV上以形成计数器块,如果IV不等于96位,则使用最小数量的0位填充IV,使长度成为块大小的倍数,并将GHASH函数应用于此字符串以形成计数器块。
然后将递增函数应用于上一步生成的计数器块,以生成GCTR函数在密文上调用的初始计数器块,给定IV的明文将是此GCTR函数调用的输出。附加的认证数据和密文分别附加最小数量的位,以使结果字符串的位长度成为块大小的倍数。将GHASH函数应用于结果以产生单个输出块。
使用在步骤2中生成的计数器块使用GCTR函数加密此输出块,并将结果截断为指定的标签长度以形成认证标签,最后将密文和标签作为输出返回。
下图是GCM的具体工作原理的示意图
OCB工作原理
OCB是一种基于分组密码的操作模式,能够同时为用户提供隐私和真实性。它在几乎与CTR模式相同的时间内实现了认证加密,并实现了隐私性,因此,OCB模式的一个关键目标是效率。通过最小化每个消息所需的加密次数,同时对消息块进行并行操作,从而提高效率。
假设M是我们想要加密的消息,A是相关数据,K是OCB加密密钥,N是96位的随机数,首先将M分成128位的块,即M= M1 …Mm。
校验和是一个128位的字符串。校验和=M1...Mm。方案的标签长度(τ)是0到128之间的一个数字。OCB模式的加密结构与ECB模式相同。
在这种方法中,使用不同的偏移量(Z1,Z2...)来从相同的消息块产生不同的密文。
几种加密模式间的比较
CCM
1. 消息认证是在明文上完成的。
2. 加密和MAC可以并行进行,但通常不会使用该方法。
3. 性能开销每个块通常是进行2次AES加密。
4. 不能并行化。
5. CCM密码在TLS 1.3中已经在OpenSSL中可用,但默认情况下被禁用。
GCM
1. GCM密码是全球最广泛使用的分块密码。从TLS 1.2开始强制使用,并且大多数客户端默认使用。
2. 消息认证是在密文上完成的,出于性能原因,大多数实现同时进行认证和解密。
3. 性能开销每个块为1次AES操作和1次GHASH操作(GHASH通常比AES更快)。
4. 多个块的加密/解密可以很好地并行化。
OCB
1. 三种加密模式中,最快的一种加密模式
2. OCB简单、干净,易于在硬件或软件中实现。
3. OCB在不引入通用哈希机制的情况下完成工作。
4. 在OCB中,提供的明文可以是任意长度的关联数据。
5. OCB对明文进行加密而无需将其填充到某个方便长度的字符串。
6. OCB是在线的。
AEAD不同模式的一些应用
CCM模式在IEEE 802.11i(作为WPA2的加密算法CCMP)、IPsec、TLS 1.2和蓝牙低功耗(蓝牙4.0)中使用。它也适用于TLS 1.3,但在OpenSSL中默认未启用。
GCM模式在IEEE 802.1AE(MACsec)以太网安全、IEEE 802.11ad、ANSI(INCITS)光纤通道安全协议(FC-SP)、IEEE P1619.1磁带存储、IETF IPsec标准、SSH、TLS 1.2和1.3中使用。
此外,GCM还包括在NSA Suite B Cryptography中,并在2018年的商业国家安全算法(CNSA)套件中得到最新替代,同时,SoftEther VPN服务器和客户端以及OpenVPN自2.4版本起也使用GCM模式。
OCB模式被列为IEEE 802.11无线安全标准中的一种可选方法,作为CCM的替代方案,OCB模式可以在GNU通用公共许可证下的软件中免费使用,也可以用于任何非商业、非政府应用,该算法可在未在美国内部开发和销售的软件中免费使用。
参考文献
Web.cs.ucdavis.edu. 2020. OCB — An Authenticated-Encryption Scheme — Background — Rogaway. [online] Available at: <https://web.cs.ucdavis.edu/~rogaway/ocb/ocb-faq.htm> [Accessed 18 July 2020].
Crypto Wiki. 2020. OCB Mode. [online] Available at: <https://cryptography.fandom.com/wiki/OCB_mode> [Accessed 18 July 2020].
Vocal.com. 2020. GCM And GMAC Authenticated Encryption Algorithms. [online] Available at: <https://www.vocal.com/cryptography/gcm-and-gmac-authenticated-encryption-algorithms/> [Accessed 18 July 2020].
David Ireland, w., 2020. AES-GCM Authenticated Encryption. [online] Cryptosys.net. Available at: <https://www.cryptosys.net/pki/manpki/pki_aesgcmauthencryption.html> [Accessed 18 July 2020].
2020. [ebook] Available at: <https://csrc.nist.rip/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf> [Accessed 18 July 2020].
2020. [ebook] Available at: <https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf> [Accessed 18 July 2020].
2020. [ebook] Available at: <https://web.cs.ucdavis.edu/~rogaway/ocb/gcm.pdf> [Accessed 18 July 2020].
作者: Nimantha Fernando
翻译: 杨赟博
来源:https://medium.com/@nimanthaF/authenticated-encryption-with-association-data-aead-ce51db79ddca
分享仅供学习参考,若有不当,请联系我们处理
END
3.会议信息 | 2023年10月截稿的密码学与信息安全会议整理
荐