本发明提出了一种适用于zuc-256流密码算法的可变长度认证标签生成方法和通信方法及系统,属于通信技术领域。
背景技术:
机密性保护和完整性保护是信息安全的两个重要目标。随着互联网技术的发展,不安全信道中的消息认证变得越来越重要。消息认证码(mac)是一种重要的消息认证方法,可用于检测在传输过程中数据是否存在被篡改,即保护数据的完整性,又可以对数据源进行认证,目前已被广泛应用在数字签名、文件校验等方面。
消息认证码(mac)算法是一种对称密码算法,收发双方共享一个密钥,发送方利用密钥和消息通过标签生成算法得到该消息的标签,并将消息和标签一起通过信道发送给接收方,接收方根据接收的消息和持有的密钥重新计算一次标签,并与接收到的标签进行对比。若一致,则接受该消息,否则不接受该消息。
一般来说,设计mac算法的基本方法包括3种。第1种基于分组密码算法设计,这类消息认证码也称为认证工作模式,需要将消息划分为若干个分组进行处理,例如omac;第2种基于杂凑函数,例如hmac;第3种基于泛杂凑函数,利用杂凑函数对消息进行压缩,然后再利用伪随机函数加密得到该消息的标签,例如gmac。基于泛杂凑函数构造mac算法是一类广泛研究的技术,其具备良好的安全性与算法实现效率。
2004年3gpp启动了长期演进计划(lte)的研究,亦即4g国际通信标准。由我国自主设计的以zuc-128算法为核心的加密算法128-eea3(zuc-128算法)和完整性算法128-eia3也参与了lte通信加密标准的申报工作。2011年9月,加密算法128-eea3和完整性算法128-eia3正式成为lte国际通信加密标准,这是我国商用密码首次走出国门参与国际标准竞争,并取得重大成功,极大提高了我国在世界移动通信领域的地位和影响力,对我国移动通信产业和商用密码产业发展具有重大而深远意义。128-eia3算法是一个消息认证码生成算法,与128-eea3配合使用,可完成消息加密认证功能。与基于snow3g的f9算法(128-eia1)相比,128-eia3算法硬件资源占用少,实现效率高。但128-eia3算法只能用于生成32比特长的标签。
zuc-256流密码算法是zuc-128算法的升级版,可支持256比特密钥和184比特的iv,具备更强的安全性,以应对5g通信标准的更高要求。与此同时zuc-256算法保持了和zuc-128的良好兼容性。但目前还没有适用于zuc-256流密码算法的可变长度认证标签生成方法。
技术实现要素:
本发明主要提供了一种适用于zuc-256流密码算法的可变长度认证标签生成方法,可以与zuc-256流密码算法配合作为5g应用中的完整性验证算法。本标签生成方法基于泛杂凑函数构造,与基于分组密码或杂凑函数的构造相比,效率高,占用硬件资源少。
本发明的zuc-256流密码算法的可变长度认证标签生成方法采用了基于泛杂凑函数的wegman-carter方案设计,其设计原理与128-eia3算法相同,保持了良好的兼容性,且占用硬件资源少、实现效率高。同时,具备可证明安全性:理论分析表明,若使用的泛杂凑函数是∈-axu的,则伪造标签成功的概率不超过∈。因此,只要∈足够小且其使用的密钥流生成算法是安全的,则基于泛杂凑函数构造之zuc-256的可变长度认证标签生成算法就是安全的。
本发明的技术方案为:
一种适用于zuc-256流密码算法的可变长度认证标签生成方法,其步骤包括:
1)将输入的明文消息m写为二元序列形式(m0,m1,…,ml-1),设置标签长度t为32或64或128比特;
2)将输入的zuc-256算法生成的密钥流序列z写为比特串形式(z0,z1,…,z32l-1),长度为l个32比特的密钥流字,其中z0表示第一个密钥流字的最高位,z31表示第一个密钥流字的最低位;
3)设置一个长度t比特的标签状态tag,并初始赋值为(z0,z1,…,zt-1);
4)对于0≤i≤l-1,依次判断mi值是否为1,若是,则将t比特的密钥流片段(zt+i,zt+i+1,…,zi+2t-1)按比特位异或到tag上,将异或结果作为tag的最新值;
5)将t比特的密钥流片段(zl+t,zl+t+1,…,zl+2t-1)按比特位异或到tag上,将异或结果作为tag的更新值;
6)返回tag值作为标签。
进一步地,所述密钥流序列z其字长度l为
1)所述的标签长度t=32比特时,(d0,d1,…,d15)取值如下,
d0=0100010,d1=0101111,d2=0100101,d3=0101010,
d4=1101101,d5=1000000,d6=1000000,d7=1000000,
d8=1000000,d9=1000000,d10=1000000,d11=1000000,
d12=1000000,d13=1010010,d14=0010000,d15=0110000。
2)所述的标签长度t=64比特时,(d0,d1,…,d15)取值如下,
d0=0100011,d1=0101111,d2=0100100,d3=0101010,
d4=1101101,d5=1000000,d6=1000000,d7=1000000,
d8=1000000,d9=1000000,d10=1000000,d11=1000000,
d12=1000000,d13=1010010,d14=0010000,d15=0110000。
3)所述的标签长度t=128比特时,(d0,d1,…,d15)取值如下,
d0=0100011,d1=0101111,d2=0100101,d3=0101010,
d4=1101101,d5=1000000,d6=1000000,d7=1000000,
d8=1000000,d9=1000000,d10=1000000,d11=1000000,
d12=1000000,d13=1010010,d14=0010000,d15=0110000。
进一步地,所述
本发明提供的一种适用于zuc-256流密码算法的可变长度认证标签生成方法,其标签长度可选择32、64或128比特。该方法基于泛杂凑函数的原理构造,当输入消息长度为l比特时,需要zuc-256产生l个32比特密钥流字,算法的具体步骤如下:
1)将输入的明文消息m写为二元序列形式(m0,m1,…,ml-1),设置标签长度t=32或64或128比特。所述的标签长度t=32或64或128比特时,不同取值对应的zuc-256算法密钥装载常数(d0,d1,…,d15)不同;将输入的zuc-256算法生成的密钥流序列z写为比特串形式(z0,z1,…,z32l-1),长度为
2)tag赋初值。设置一个长度t比特的标签状态tag,并初始赋值为tag=(z0,z1,…,zt-1)
3)泛杂凑阶段。计算
4)异或密钥流。计算
5)将tag作为标签输出。
所述
与上面方法对应地,本发明还提供一种适用于zuc-256流密码算法的可变长度认证标签生成系统,其包括:
明文消息处理模块,负责将输入的明文消息m写为二元序列形式(m0,m1,…,ml-1);
密钥流序列处理模块,负责将输入的zuc-256算法生成的密钥流序列z写为比特串形式(z0,z1,…,z32l-1),长度为l个32比特的密钥流字,其中z0表示第一个密钥流字的最高位,z31表示第一个密钥流字的最低位;
初始赋值模块,负责设置一个长度t比特的标签状态tag,并初始赋值为(z0,z1,…,zt-1);
异或模块,负责对于0≤i≤l-1,依次判断mi值是否为1,若是,则将t比特的密钥流片段(zt+i,zt+i+1,…,zi+2t-1)按比特位异或到tag上,将异或结果作为tag的最新值;将t比特的密钥流片段(zt+l,zt+l+1,…,zl+2t-1)按比特位异或到tag上,将异或结果作为tag的最终值;
输出模块,用于输出tag值作为标签。
本发明还提供一种基于消息认证的通信方法,包括以下步骤:
a)发送端和接收端共享一个密钥,发送端利用密钥和消息采用上面所述方法得到该消息的标签,并将消息和标签一起通过信道发送给接收端;
b)接收端根据接收的消息和持有的密钥采用上面所述方法重新计算一次标签,并与接收到的标签进行对比,若一致则接受该消息,否则不接受该消息。
本发明还提供一种基于消息认证的通信系统,包括发送端和接收端,所述发送端和所述接收端共享一个密钥;所述发送端利用密钥和消息采用上面所述方法得到该消息的标签,并将消息和标签一起通过信道发送给所述接收端;所述接收端根据接收的消息和持有的密钥采用上面所述方法重新计算一次标签,并与接收到的标签进行对比,若一致则接受该消息,否则不接受该消息。
与现有技术相比,本发明的积极效果为:
与现有的消息认证码相比,本发明具有支持可变长度认证标签的特点,占用硬件资源少,实现效率高,具备可证明安全性。与128-eia3相比,本发明具有3种标签长度可选择:分别为32、64和128比特,安全性和适用性更佳。与128-eia1(基于snow3g的f9算法)相比,占用硬件资源少,实现效率高,128-eia1算法本身占用硬件资源较多。与基于分组密码的消息认证码算法omac相比,在处理长消息时效率高。
本发明提出的可变长度认证标签生成方法,与zuc-256流密码算法的配合性好,与128-eia3原理相同,兼容性好,保持了128-eia3硬件占用资源少,实现效率高的优点。本发明提出的可变长度认证标签生成算法适用于现代移通信应用环境。
附图说明
图1为可变长度认证标签生成算法结构图。
具体实施方式
下面通过具体实施示例和附图,对本发明做详细的说明。
本实施例的适用于zuc-256流密码算法的可变长度认证标签生成方法,处理流程如图1所示,其中k表示初始密钥,iv表示初始向量,h表示泛杂凑函数,该方法包括以下步骤:
step1:将输入的明文消息m写为二元序列形式(m0,m1,…,ml-1),其中mi表示第i位的明文比特,设置标签长度t=32或64或128比特。所述的标签长度t=32或64或128比特时,不同取值对应的zuc-256算法密钥装载常数(d0,d1,…,d15)各不相同;
step2:将输入的zuc-256算法生成的密钥流序列z写为比特串形式(z0,z1,…,z32l-1),长度为
step3:设置一个长度t比特的标签变量tag,并对其初始赋值为(z0,z1,…,zt-1);
step4:对于0≤i≤l-1,依次判断mi值是否为1,若是,则将t比特的密钥流片段(zt+i,zt+i+1,…,zi+2t-1)逐比特异或到tag上,将异或结果作为tag的更新值;
step5:将t比特的密钥流片段(zt+l,zt+l+1,…,zl+2t-1)逐比特位异或到tag上,将异或结果作为tag的更新值;
step6:返回tag值作为标签。
其中,步骤step3~step5可以用矩阵乘法来表示:
本发明另一实施例提供一种适用于zuc-256流密码算法的可变长度认证标签生成系统,其包括:
明文消息处理模块,负责将输入的明文消息m写为二元序列形式(m0,m1,…,ml-1);
密钥流序列处理模块,负责将输入的zuc-256算法生成的密钥流序列z写为比特串形式(z0,z1,…,z32l-1),长度为l个32比特的密钥流字,其中z0表示第一个密钥流字的最高位,z31表示第一个密钥流字的最低位;
初始赋值模块,负责设置一个长度t比特的标签状态tag,并初始赋值为(z0,z1,…,zt-1);
异或模块,负责对于0≤i≤l-1,依次判断m;值是否为1,若是,则将t比特的密钥流片段(zt+i,zt+i+1,…,zi+2t-1)按比特位异或到tag上,将异或结果作为tag的最新值;将t比特的密钥流片段(zt+l,zt+l+1,…,zl+2t-1)按比特位异或到tag上,将异或结果作为tag的最终值;
输出模块,用于输出tag值作为标签。
本发明另一实施例提供一种基于消息认证的通信方法,包括以下步骤:
a)发送端和接收端共享一个密钥,发送端利用密钥和消息采用上面所述方法得到该消息的标签,并将消息和标签一起通过信道发送给接收端;
b)接收端根据接收的消息和持有的密钥采用上面所述方法重新计算一次标签,并与接收到的标签进行对比,若一致则接受该消息,否则不接受该消息。
本发明另一实施例提供一种基于消息认证的通信系统,包括发送端和接收端,所述发送端和所述接收端共享一个密钥;所述发送端利用密钥和消息采用上面所述方法得到该消息的标签,并将消息和标签一起通过信道发送给所述接收端;所述接收端根据接收的消息和持有的密钥采用上面所述方法重新计算一次标签,并与接收到的标签进行对比,若一致则接受该消息,否则不接受该消息。
在本发明的一个实例中,令密钥ki=0x00,对于0≤i≤31;而初始向量ivi=0x00,对于0≤i≤24,l=400-比特的消息为m=0x00…00,其中0x0表示4-比特的十六进制数,则相应的32-比特标签,64-比特标签与128-比特标签分别如下:
以上对本发明方法进行了详细的说明,但显然本发明的具体实现形式并不局限于此。对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。