认证加密设备、认证加密方法以及用于认证加密的程序的制作方法
【技术领域】
[0001]本发明涉及用于通过使用公共密钥执行认证加密的认证加密设备、加密设备、解码设备、认证加密方法以及用于认证加密的程序。
【背景技术】
[0002]认证加密(AE)是用于通过使用之前共享的秘密密钥对明文消息进行加密且同时向其给出消息认证代码(MAC)的技术。认证加密的使用使得被保护的内容避免被窃听,并且检测未认证的操作。如果认证加密被应用于通信路径,可以获得对要发送的内容的强保护。
[0003]下面将描述认证加密的基本输入和输出。共享秘密密钥K的两个人将在下文中被假定为是Alice和Bob,认证加密所加密的消息被假定为从Alice传送到Bob。
[0004]假设认证加密的加密函数和解码函数分别为AEncJ(和ADec_K。假设要加密的明文是Μ且引入被称为初始矢量的变量N。初始矢量N通常是随机数,具有短的固定长度或者由Alice生成的计数器。
[0005]首先将描述Alice侧的加密处理。Alice生成初始矢量N,然后执行(C,T)=AEnc_K(N,Μ)。这里,AEncJ(被称为加密函数,使用密钥K作为参数,C被称为加密的文本,且T被称为认证标签,这些是用于检测更改的固定长度的变量。Alice传送初始矢量N、生成的加密文本C和生成的认证标签T的组合(N,C,T)给Bob。
[0006]下面将描述Bob侧的解码处理。这里,Bob从Alice接收到的信息被假定为(N’,C’,T’)。当从Alice接收到信息时,Bob执行ADec_K(N’,C’,T’)作为解码处理。ADecJ(是使用密钥K作为参数的解码函数。如果通信在中间被修改且(N’,C’,T’)不同于(N,C,T),假定指示更改的符号为Ybot,ADec_K(N’,C,,T,)输出Ybot。没有更改且在(N’,C,,T,)= (N,C,T)的情况下,ADec_K(N’,C’,T ’)输出解码的明文Μ’,该明文Μ’具有与由A1 ice加密的明文Μ相同的内容。由此,Μ被正确解码。
[0007]实践中,输入和输出在许多情况下包括被称为报头Η的变量。报头Η不被加密,而是例如要用于表达协议版本等的用于消息认证的信息。
[0008]通过包括报头H,加密函数是(C,T)=AEnC_K(N,M,H)的输入/输出,对明文M加密且给出消息认证代码至明文Μ和报头Η的组合。Alice传送初始矢量Ν、报头Η、生成的加密文本C和生成的认证标签T的组合(N,Η,C,T)给Bob。
[0009]当获得ADec_K(N’,C,,T,,Η’)的输入/输出且(N’,C,,Τ,,H,)不同于(N,C,T,H)时,解码函数输出指示更改的符号Ybot。当接收到的(N’,H’,C’,T’)未被更改或者建立了 (Ν’,H’,C’,T’)= (N,H,C,T)时,在接收侧的Bob可以正确地解码M且确认报头H未更改。
[0010]输入/输出添加了报头Η的认证加密可以被称为具有相关联数据的认证加密(AEAD),并在下面将被简单标注为“认证加密”,除非另外声明。
[0011]认证加密实现方法之一基于一般组成。这是一种使用安全加密系统和安全MAC系统的组合的方法。例如,通过公知的组合Enc-then-Auth,使用两个密钥K1和K2来实现采用(〇,1')=1^(:_1(20311(3_1(1(10)的认证加密。这里411(3_乂乂表示在加密系统中使用的加密函数,MAC_XX表示在MAC系统中使用的MAC给出函数。
[0012]当使用诸如AES(先进加密标准)加密的块加密时,例如,加密系统可以利用AES计数器模式加密,且MAC系统可以利用CMAC-AES(基于密码的MAC-AES)。此外,作为一种用于通过使用一个块加密密钥而不使用两个密钥来执行认证加密的方法,已知认证加密系统被称为CCM模式(具有CBC-MAC的计数器)(例如,非专利文献1)。
[0013]然而,所有上面的方法需要两次通过处理,包括加密和MAC给出。也就是,数据需要被完全扫描至少两次。此外,当输入明文有m块时,块加密需要被调用m次用于在CCM系统中使用的加密和MAC函数。因此,块加密需要被调用2m次用于对m±夬明文的认证加密处理。也就是,诸如加密函数或MAC给出函数的处理函数需要每明文块被调用两次。处理函数每块被调用两次的系统也被称为两速率系统。两次通过或两速率系统具有的问题是处理花费长时间且具有重负担。
[0014]一种用于解决问题的方法是使用块加密的单次通过认证加密系统。
[0015]在专利文献1中描述的被称为0CB模式的认证加密系统首先被提议(下面将被称为0CB系统K0CB系统使得在非专利文献2中描述的被称为可调块加密的块加密被扩展。
[0016]可调块加密是引入称为Tweak的辅助变量到加密和解码的认证加密系统。当块尺寸为n比特时,具有可调块加密的加密可以被表达为“TE_K(TW,M)=C”,且解码可以被表达为“TD_K(Tw,C)=M,,0对于任何组合(K,Tw),TE_K(Tw,*)在η比特空间中配置置换。它的逆置换是TD_K(Tw,*)。Tw表示辅助变量Tweak,且*表示变量。辅助变量Tw要求用于解码,但是如果其被释放,可调块加密的安全性不会被影响。
[0017]在0CB系统中,首先,通过使用在非专利文献3中描述的XEX模式,典型块加密的加密函数被转换为可调块加密的加密函数或者可调指派的加密函数。然后,下面的TEJ(函数被调用来加密初始矢量N和明文M=(M[1],M[2],...,M[m])。每个M[i]被假设为η比特块。0CB系统中使用的ΤΕ_Κ函数利用对应于Tweak的变量(N,i)。N表示初始矢量且i表示块识别号。
[0018]C[1]=TE_K((N,1),M[1]),
[0019]C[2]=TE_K((N,2),M[2]),
[0020]...,
[0021]C[m]=TE_K((N,m),M[m])
[0022]通过调用与如下的消息相同的TE_K函数来得到认证标签T,,例如,对于SUM=M[1]xor M[2]xor....xor M[m],认证标签T是对所有明文块进行X0R(异或)。
[0023]T = TE_K((N,m+l),SUM)
[0024]通过添加Tw=(N,i)以及通过秘密密钥K计算的序列mask_K(N,i)到块加密的加密函数E_k的输入/输出来执行0CB系统中使用的TEJ(函数(在XEX模式中转换)。XEX模式中的转换公式被表达如下。转换公式可以在下面被称为XEX转换公式。
[0025]TE_K((N,i),M[i])=E_K(M[i]xor mask_K(N,i)xor mask_K(N,i)
[0026]E_K用于计算掩蔽,且在OCB系统中启用有效序列处理。也就是,可以有效地进行从mask_K(N, i)至丨Jmask_K(N, i+1)的计算。
[0027]图19是示意性示出0CB系统中的加密处理的解释图。在图19中,虚线中的块对应于TE_K((N,i),*)。在图19中忽略了计算掩蔽序列的处理的过程。
[0028]如在图19中所图示,EJ(被调用一次用于计算L以便在OCB系统中分别得到掩蔽序列和认证标签T,但是作为一个整体,可能一次通过处理。此外,除了掩蔽序列的计算,每个块中的处理可以并行执行。更具体地,对于m块明文的块加密的调用数几乎为m,且几乎是诸如CCM系统和GCM(迦罗瓦/计数器模式)系统的其它两次通过认证加密系统的一半。
[0029]引用列表
[0030]专利文献
[0031]PTL 1:美国专利N0.8321675说明书
[0032]非专利文献
[0033]NPL 1:Morris Dworkin,“Recommendat1n for Block Cipher Modes ofOperat1n: The CCM Mode for Authenticat1n and Confidentiality.,,,[线上]May2005 ,NIST Special Publicat1n 800-38C,互联网〈URL:http://csrc.nist.gov/publicat1ns/nistpubs/800-38C/SP800-38C_updated-July20_2007.pdf>
[0034]NPL 2:Moses Liskov,Ronald L.Rivest,David Wagner,“Tweakable BlockCiphers.”,2002,Advances in Cryptology-CRYPTO 2002,Lecture Notes in ComputerScience 2442Springer 2002,p.31-46.
[0035]NPL 3:P.Rogaway,“Efficient Instantiat1ns of Tweakable Blockciphersand Refinements to Modes OCB and PMAC.”,2004,Advances in Cryptology-ASIACRYPT’04,LNCS 3329,p.16-31.
【发明内容】
[0036]技术问题
[0037]图20是示意性示出0CB系统中的解码处理的解释图。在CCM模式或GCM中,作为认证加密的解码处理只通过块加密的加密函数E_K来获取,而在0CB系统中,如图20中所示,不仅块加密的加密函数EJ(而且块加密的解码函数DJ(都被要求用于可调块加密的解码处理。
[0038]当块加密的加密函数和解码函数都作为部分被要求用于认证加密的加密和解码时,由于存储器或电路规模,造成装配上的负担增加。代表块加密AES通常在解码处理中比在加密中更慢,且事实表明性能上的差异是在使用AES等的0CB系统中的加密处理和解码处理之间导致的。
[0039]0CB及其类似单次通过认证加密系统不能解决上面的问题。
[0040]因此,本发明的目标是提供一种认证加密设备,用于获取单次通过和单速率认证加密,通过使用仅仅一个加密函数、一种加密设备、一种解码设备、一种认证加密方法、和一种用于认证加密的程序而能够执行并行处理且整体执行加密和解码处理。
[0041 ]问题的解决方案
[0042]根据本发明的一种认证加密设备,其特征在于包括认证加密装置,用于每两块应用使用指派有用于轮函数的辅助变量的加密函数的两轮Feistel结构给输入明文或加密文本,由此生成加密文本或解码的明文。
[0043]根据本发明的一种加密设备,其特征在于包括加密装置,用于每两块应用使用指派有用于轮函数的辅助变量的加密函数的两轮Feistel结构给输入明文,由此生成加密文本。
[0044]根据本发明的一种解码设备,其特征在于包括解码装置,用于每两块应用使用指派有用于轮函数的辅助变量的加密函数的两轮Feistel结构给输入加密文本,由此生成解码的明文。
[0045]根据本发明的一种认证加密方法,其特征在于,信息处理装置每两块应用使用指派有用于轮函数的辅助变量的加密函数的两轮Feistel结构给输入明文或加密文本,由此生成加密文本或解码的明文。
[0046]根据本发明的用于认证加密的一种程序,其特征在于,使得计算机执行每两块应用使用指派有用于轮函数的辅助变量的加密函数的两轮Feistel结构给输入明文或加密文本,由此生成加密文本或解码的明文的处理。
[0047]发明的有益效果
[0048]根据本发明,有可能获得单次通过且单速率(one-pass and one-rate)的认证加密,能够通过仅使用一个加密函数来执行并行处理且整体执行加密和解码处理。
【附图说明】
[0049][图1]描述了根据本发明示意性示出整个加密处理的示例性处理流程的解释图。
[0050][图2]描述了根据本发明示意性示出整个解码处理的示例性处理流程的解释图。
[0051][图3]描述了示出认证加密系统中提供的示例设备的框图。
[0052][图4]描述了示出认证加密系统的示例功能结构的框图。
[0053][图5]描述了示意性示出实现具有两个输入变量的伪随机函数的示例的解释图。
[0054][图6]描述了(a)示意性示出使用块加密XEX模式的采用伪随机函数的整个加密处理的示例处理流程的解释图,以及(b)示意性示出使用块加密XEX模式的采用伪随机函数的整个解码处理的示例处理流的解释图。
[0055][图7]描述了示意性示出实现具有两个输入变量的伪随机函数的其它示例的解释图。
[0056][图8]描述了根据第一示例实施例示出认证加密系统的示例加密操作的流程图。
[0057][图9]描述了根据第一示例实施例示出认证加密系统的示例解码操作的流程图。
[0058][图10]描述了示出认证加密系统的其它示例结构的框图。
[0059][图11]描述了根据第二示例实施例示意性示出整个加密处理的示例处理流程的解释图。
[0060][图12]描述了根据第二示例实施例示意性示出整个解码处理的示例处理流程的解释图。
[0061][图13]描述了根据第三示例实施例示意性示出整个加密处理的示例处理流程的解释图。
[0062][图14]描述了根据第三示例实施例示意性示出整个解码处理的示例处理流程的解释图。
[0063][图15]描述了示出用于并行处理的加密设备100的示例结构的框图。
[0064][图16]描述了示出用于并行处理的解码设备200的示例结构的框图。
[0065][图17]描述了根据本发明示出认证加密设备的示例最小结构的框图。
[0066][图18]描述了根据本发明示出认证加密设备的其它示例结构的框图。
[0067][图19]描述了示意性示出OCB系统中整个加密处理的示例处理流程的解释图。
[0068][图20]描述了示意性示出0CB系统中整个解码处理的示例处理流程的解释图。
【具体实施方式】
[0069]首先描述本发明的概述。本发明涉及基于块加密系统使用公共密钥的加密系统,对每个确定尺寸进行加密。本发明对每两个块应用两轮Feistel结构。被指派以被称为Tweak的辅助变量Tw(调整值)的加密函数被用于两轮Feistel结构的一轮函数。以这种方式,Feistel结构以两个块为单位用于认证加密,由此解决上述的问题。
[0070]下面将更具体地描述根据本发明的认证加密系统。本发明使用下面的变量的序列,假设将辅助变量Tw引入到加密函数中。被用作辅助变量Tw的变量的序列可以在下面被称为“辅助序列”。配置辅助序列,使得不同值被输入到要在由一个密钥进行加密时被调用的所有加密函数中。下面将描述这样一种情况:用于加密一个明文的具有不同值的初始矢量N、用于识别单位为两个块的组块的标识符1、以及用于识别组块中的块与其它处理的j的组合或者(N,i,j)的组合中的辅助序列被用作辅助变量Tw,但是辅助序列不限于此。辅助序列被配置为在加密和解码时都能够生成用于一个明文的相同的值。例如,用于生成辅助序列的值预先被定义。上面的示例满足上面的条件,因为辅助序列的值可以基于初始矢量和明文或加密文本的长度而被唯一地定义。
[0071]例如,假设每个块具有η比特,当要被处理的明文或加密文本中的块的数目为2m时,则可以假设(N,1,1),、(N,1,2)、(N,2,1)、(N,2,2)、...、(N,m,1)、(N,m,2)根据每个块的索引被用作辅助序列,且(N,m,3)被用作用于生成认证标签的辅助序列。
[0072]使用这样定义的辅助序列,要被加密的明文Μ在加密处理中在双块组块中被处理。通过使用辅助序列04,1),04,2)和键控的伪随机函数?_1((*,*)作为具有两个输入变量的伪随机函数,第i个加密文本组块(C[2i],C[21-l])被生成以用于第i个明文组块(M[21-l],M[2i],其中(i = l,...,m))。“伪随机函数”是加密函数基于其属性的名称。伪随机函数可以是例如块加密或键控散列函数的加密函数。
[0073]图1是根据本发明示意性示出整个加密处理的示例处理流程的解释图。在图1中,虚线中的块在两轮Fe i ste 1结构中,且对应于以两块为单位的加密处理中的处理块。例如,假设第一输入变量作为辅助序列,通过使用具有辅助序列(N,i,1)作为第一输入变量的F_K((N,i,1),*)、以及具有辅助序列(N,i,2)作为第一输入变量的F_K( (N,i,2),*)在每个处理块中如下地获取第i个加密文本组块(CDiLCD1-lD^or表示每比特的异或。
[0074]C[21-l]=F_K((N,i,l),M[21-l])xor M[2i],
[0075]C[2i]=F_K((N,i,2),C[21-l])xor M[2i_l]
[0076]..?公式(1)
[0077]公式(1)表示通过使用对应于第i个明文组块中的奇数块的辅助序列(N,i,l)对第i个明文组块中奇数块M[2i_l]运行伪随机函数FJ(所获得的结果与第i个明文组块中被假设为作为第i个加密文本组块中的奇数块的加密文本块C[21-1 ]的偶数块M[2i]的X0R,以及通过使用对应于第i个明文组块中的偶数块的辅助序列(N,i,2)对由此获得的加密文本块C[2i_l]运行伪随机函数FJ(而获得的结果与第i个明文组块中被假设为作为第i个加密文本组块中的偶数块加密文本块C[2i]的奇数块M[21-1]的X0R。针对所有组块执行该处理。
[0078]除了上面的处理,通过使用用于生成明文的认证标签的辅助序列(N,m,3)和具有两个具有密钥K的输入变量的伪随机函数FJ(,认证标签T被生成用于对明文中所有偶数块Μ[2]、Μ[4]、...、M[2m]取XOR的明文校验和SUM=M[2]xor M[4]xor...xor M[2m],。在图1中,点划线中的块对应于用于认证标签生成处理的处理块。通过使用例如使用辅助序列(叱111,3)作为第一输入变量的?_1(((叱111,3),*),如下地获取认证标签1'。在计算3而中401?可以是任何群组中的加法,诸如算术加法。
[0079]T=F_K((N,m,3),SUM)..?公式(2)
[0080]用于偶数块和奇数块的处理可以被互相替换。在此情况下,明文校验和可以从每个奇数块中生成。此外,划分为以两个块为单位的组块不限于此。当序列处理的需求相对不高时,诸如没有在线计算时,一个组块可以以例如第一块和第三块来创建。辅助序列可以被配置为使得不同值被输入到图中所有伪随机函数中,同时用一个密钥来进行加密。在图中,带圈+的符号表示进行X0R。
[0081 ]加密文本C、初始矢量N和认证标签T被发送到解码侧。
[0082]当要被解码的加密文本C、初始矢量N和认证标签T在解码侧被输入时,首先根据相同规则来确定辅助序列。例如,假设加密文本C=(C[1],C[2],...,C[2m]),每块具有η比特,(Ν,1,1),(Ν,1,2),(Ν,2,1),(Ν,2,2),...,(N,m,1),(N,m,2)可以根据加密文本C中的每个块的索引被确定为用作辅助序列,且(N,m,3)可以基于关于初始矢量N和加密文本的长度的信息被确定为用作用于生成认证标签的辅助序列。
[0083]而且,在解码处理中,要被解码的加密文本C被划分为以两个块为单位的组块,针对第i个加密文本组块(C[21-l],C[2i],其中(i = l,...,m))使用配置有具有与加密中引入的辅助序列相同的辅助序列的伪随机函数F_K(*,*)的两轮Feistel结构来执行解码处理。由此,可以获取解码的明文组块(1’[21]^’[21-1])。
[0084]此外,当基于对明文中的所有生成的偶数块M’[2]、M’[4]、...、M’[2m]取XOR得到的明文校验和执行与在加密期间执行的处理相同的处理时,获取解码检查认证标签T。
[0085]图2是根据本发明示意性示出整个解码处理的示例处理流程的解释图。在图2中,虚线中的块在两轮Feistel结构中,并且对应于以两块为单位的解码处理的处理块。在每个处理块中,通过使用采用辅助序列(N,i,1)作为第一输入变量的F_K( (N,i,1),*),,以及使用采用辅助序列(^2)作为第一输入变量的?_1(((^2),*),获取如下地解码的明文块M’[2i]和M’[21-1]。
[0086]M,[21-l]=F_K((N,i,2),C[21-l])xor C[2i],
[0087]M,[2i]=F_K((N,i,l),M,[21-l])xor C[2i_l]
[0088]...公式(3)
[0089]针对所有加密文本组块执行这些处理。通过使用用于生成解码的明文的认证标签的辅助序列(N,m,3)和具有两个具有密钥K的输入变量的伪随机函数FJ(,解码检查认证标签T’被生成用于对解码的明文中的所有偶数块M’[2],M’[4],...,M’[2m]取XOR的用于解码检查的明文校验和SUM’=M[2]xor M’[4]xor...xor M’[2m]。在图2中,点划线中的块对应于认证标签生成处理的处理块。通过使用采用辅助序列(N,m,3)作为第一输入变量的F_K((N,m,3),*),如下地获取解码检查认证标签T,。
[0090]T,=F_K((N,m,3),SUM,)..?公式(4)
[0091]当获取解码检查认证标签T’时,对于输入认证标签T是否匹配解码