(完整word版)祖冲之序列密码算法(ZUC算法)

合集下载

实用文档之祖冲之序列密码算法(ZUC算法)

实用文档之祖冲之序列密码算法(ZUC算法)

实用文档之"祖冲之序列密码算法"第1部分:算法描述1范围本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。

2术语和约定以下术语和约定适用于本部分。

2.1比特bit二进制字符0和1称之为比特。

2.2字节byte由8个比特组成的比特串称之为字节。

2.3字word由2个以上(包含2个)比特组成的比特串称之为字。

本部分主要使用31比特字和32比特字。

2.4字表示word representation本部分字默认采用十进制表示。

当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。

例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。

2.5高低位顺序bit ordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。

3符号和缩略语3.1运算符+ 算术加法运算mod 整数取余运算⨁按比特位逐位异或运算⊞模232加法运算‖字符串连接符∙H取字的最高16比特∙L取字的最低16比特<<<k 32比特字左循环移k位>>k 32比特字右移k位a b向量a赋值给向量b,即按分量逐分量赋值3.2符号下列符号适用于本部分:s0,s1,s2,…,s15 线性反馈移位寄存器的16个31比特寄存器单元变量X0,X1,X2,X3比特重组输出的4个32比特字R1, R2非线性函数F的2个32比特记忆单元变量W非线性函数F输出的32比特字Z 算法每拍输出的32比特密钥字k初始种子密钥iv 初始向量D 用于算法初始化的字符串常量3.3缩略语下列缩略语适用于本部分:ZUC 祖冲之序列密码算法或祖冲之算法LFSR 线性反馈移位寄存器BR 比特重组F 非线性函数4算法描述4.1算法整体结构祖冲之算法逻辑上分为上中下三层,见图1。

上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。

我国在zuc序列密码算法

我国在zuc序列密码算法

我国在zuc序列密码算法
ZUC(祖冲之)序列密码算法是我国自主研发的一种序列密码算法,该算法主要用于数据的机密性和完整性保护,是实现网络空间安全的基础算法和核心技术。

ZUC算法已成为国际标准ISO/IEC 29189:2017,标志着我国在密码算法领域取得了重要突破。

ZUC算法主要由LFSR(线性反馈移位寄存器)、BR(比特重组)和F (非线性函数)三部分组成。

输入为128位长的密钥和128位长的初始化向量,输出为(n, n),其中n为节拍数(轮数)。

在ZUC算法的实现过程中,首先进行初始化阶段,然后进行多轮迭代,每轮迭代包括以下步骤:
1. 线性反馈移位寄存器(LFSR)操作:根据初始化向量和密钥进行LFSR操作,生成新的状态。

2. 比特重组(BR)操作:将LFSR生成的状态进行比特重组,得到新的数据。

3. 非线性函数(F)操作:将BR操作得到的新数据作为输入,经过非线性函数F处理,生成输出。

4. 输出:经过一定的轮数迭代后,ZUC算法输出一系列32位长的字串,用于加密和解密数据。

ZUC算法在我国商用密码体系中具有重要地位,广泛应用于移动通信、物联网、安全认证等领域。

其成为国际标准,不仅提升了我国在全球密码算法领域的地位,也为全球网络安全提供了更为可靠的技术保障。

祖冲之序列密码

祖冲之序列密码

a=0x1234
于是有
b=0x5678
c=a‖b=0x12345678
2021/8/17
商用密码算法原理与C语言实现
10
(2)最高16位和最低16位的划分 假设
a= 10010011001011000000010110100102 于是有
aH=10010011001011002 aL=00000010110100102 这里值得注意的是aH和aL都是16位。 (3)比特字移位 假设 a= 110010011001011000000010110100102 于是有 a>>1=11001001100101100000001011010012
2004年3GPP(The 3rd Generation Partner Project)启动LET(Long Term Evolution)计划, 2010年底,LET被指定为第四代移动通信标准,简称 4G通信标准,其中安全是LET的关键技术,并预留密 码算法的接口。
2021/8/17
商用密码算法原理与C语言实现
函数F。
2021/8/17
商用密码算法原理与C语言实现
5
2021/8/17
商用密码算法原理与C语言实现
6
2.1.1 ZUC算法参数
ZUC算法中所需的符号和惯例如下所示: 比特:二进制字符0和1称之为比特; 字节:由8个比特组成的比特串称之为字节; 字:由2个以上(包含2个)字节组成的比特串
=0x499602D2
十六进制表示法
=10010011001011000000010110100102
二进制表示法
高低位顺序:字的最高位总是位于字表示中的最左边,最低位总
是位于字表示中的最右边。

ZUC算法原理及实现过程

ZUC算法原理及实现过程

ZUC算法原理及实现过程ZUC(ZUC算法)是一种具有高安全性和高效率的流密码算法,被广泛应用于移动通信网络中,特别是3G和4G的LTE(Long Term Evolution)网络中。

本文将详细介绍ZUC算法的原理以及其实现过程。

一、ZUC算法原理1.关键算法2.非线性函数F非线性函数F是ZUC算法的核心部分,用于生成密钥流中的随机性。

它由4个环形移位寄存器、非线性函数和线性反馈位移寄存器组成。

非线性函数F的定义如下:F(ak, bk, ck) = (ak & bk) ^ ck其中ak,bk,ck是寄存器中的三个比特位。

3.移位寄存器移位寄存器是ZUC算法中用于保存密钥流状态的关键结构。

它由两个16位寄存器和两个5位寄存器组成。

每次生成一个比特的密钥流时,寄存器中的比特位都会按照一定的规则进行位移。

4.密钥扩展算法密钥扩展算法是为了生成ZUC算法中使用的一组初始密钥值。

在密钥扩展算法中,会对输入的64位密钥进行多次迭代以产生一组256位的初始密钥值。

5.密钥序列生成算法密钥序列生成算法用于生成流密码的密钥流。

该算法接受初始密钥以及明文矢量和序列号作为输入,并通过使用非线性函数F和移位寄存器产生密钥流。

二、ZUC算法实现过程1.密钥扩展首先,将输入的64位密钥进行迭代,产生一组256位的扩展密钥。

具体过程如下:1)将初始密钥分为两个32位的部分D1和D22)将D1与D2分别异或4个轮密钥W1,W2,W3,W43)每一轮的密钥Wn由Wn-1和Wn-2进行一系列位运算得到。

2.密钥序列生成生成密钥序列是ZUC算法的核心步骤,其过程如下:1)根据输入的初始密钥和序列号,生成初始状态寄存器LFSR1和LFSR2的比特位。

2)通过一系列的寄存器移位和异或运算,依次获取每一位的密钥流。

3.加密加密是ZUC算法的最后一步,其过程如下:1)将明文划分成32位的分组。

2)使用密钥序列生成算法生成相应的密钥流。

祖冲之序列密码算法

祖冲之序列密码算法

祖冲之序列密码算法
冯秀涛
【期刊名称】《信息安全研究》
【年(卷),期】2016(002)011
【摘要】祖冲之算法,简称ZUC,是一个面向字设计的序列密码算法,其在128b种子密钥和128b初始向量控制下输出32b的密钥字流.祖冲之算法于2011年9月被3GPP LTE采纳为国际加密标准(标准号为TS 35.221),即第4代移动通信加密标准,2012年3月被发布为国家密码行业标准(标准号为GM/T 0001-2012),2016年10月被发布为国家标准(标准号为GB/T 33133-2016).简单介绍了祖冲之算法,并总结了其设计思想和国内外对该算法安全性分析的主要进展.
【总页数】14页(P1028-1041)
【作者】冯秀涛
【作者单位】中国科学院数学与系统科学研究院北京 100190
【正文语种】中文
【中图分类】TP309
【相关文献】
1.祖冲之密码算法纳入ISO标准研究 [J], 王鹏;刘丽敏
2.基于FPGA的祖冲之序列密码算法实现 [J], 郁宁亚;朱宇霞
3.祖冲之序列密码算法IP核的设计与实现 [J], 江丽娜;高能;马原;刘宗斌
4.祖冲之序列密码算法 [J], 冯秀涛;
5.基于AHB-Lite总线的祖冲之密码算法IP核研究 [J], 刘政林;张振华;陈飞;邹雪城
因版权原因,仅展示原文概要,查看原文内容请购买。

[密码学——基础理论与应用][李子臣][电子课件] 第6讲---祖冲之序列密码算法

[密码学——基础理论与应用][李子臣][电子课件] 第6讲---祖冲之序列密码算法

2020\3\17 Tuesday
密码学---基础理论与应用
13
密钥和初始向量会扩展成16个长度为31位的整数, 加载到每个记忆单元si中。 在LFSR里,si=ki‖di‖IVi(0≤i≤15),其中ki和IVi长度 为8位一个字节,di长度为15位。
128位的密钥K和初始向量IV表示成16个字串级联的 形式k=k0‖k1‖K2‖…‖k15,IV=IV0‖IV1‖IV2‖…‖Iv15 ,16 个di已知字符串级联成一个240位的长字符串 D=d0‖d1‖d2‖L‖d15。
d8 1001101011110002, d9 0101111000100112, d10 1101011110001002, d11 0011010111100012, d12 1011110001001102, d13 0111100010011012, d14 1111000100110102, d15 1000111101011002.
第六章 祖冲之序列密码 (ZUC)
2020\3\17 Tuesday
密码学---基础理论与应用
1
目录
6.1 ZUC算法的概念与原理 6.2 ZUC机密性算法和完整性算法 6.3 ZUC算法的安全性分析 6.4 ZUC算法案例
2020\3\17 Tuesday
密码学---基础理论与应用
2
祖冲之序列密码算法(简称ZUC算法)是由我国自 主设计的密码算法,包括祖冲之算法、加密算法 128-EEA3和完整性算法128-EIA3。
11
接着算法进入产生密钥流阶段,也就是说,将下 面的操作运行一次就会输出一个32位的字Z:
KeystreamGeneration()
(1)Bitreorganization();

ZUC算法原理及实现过程

ZUC算法原理及实现过程

ZUC 算法原理及实现过程1.1 算法设计背景ZUC 算法,即祖冲之算法,是3GPP 机密性算法EEA3和完整性算法EIA3的核心,为中国自主设计的流密码算法。

2009年5月ZUC 算法获得3GPP 安全算法组SA 立项,正式申请参加3GPPLTE 第三套机密性和完整性算法标准的竞选工作。

历时两年多的时间,ZUC 算法经过评估,于2011年9月正式被3GPPSA 全会通过,成为3GPPLTE 第三套加密标准核心算法。

ZUC 算法是中国第一个成为国际密码标准的密码算法。

1.2 算法原理ZUC 是一个面向字的流密码。

它采用128位的初始密钥作为输入和一个128位的初始向量(IV ),并输出关于字的密钥流(从而每32位被称为一个密钥字)。

密钥流可用于对信息进行加密/解密。

ZUC 的执行分为两个阶段:初始化阶段和工作阶段。

在第一阶段,密钥和初始向量进行初始化,即不产生输出。

第二个阶段是工作阶段,在这个阶段,每一个时钟脉冲产生一个32比特的密钥输出。

(1)运算符说明mod整数模 ⊕整数比特异或 a b 字符串a 和b 的连接H aa 二进制表示的最左16位值 L aa 二进制表示的最右16位值 n a k <<< a 向左k 比特的循环移位1a >>a 向右1比特的移位 ()()1212,,,,,,n n a a ab b b → i a 值分配到对应i b 的值(2)算法结构ZUC 有三个逻辑层,见下图。

顶层为一个线性反馈移位寄存器(LFSR )的16个赛段,中间层是比特重组(BR ),最下层为一个非线性函数F 。

图1 ZUC 的整体结构图(3) 线性移位反馈寄存器(LFSR )LFSR 具有16个31比特的单元()0115,,,s s s ,每个单元()015i s i ≤≤取值均在下面的集合中:{}311,2,3,21-LFSR 有两种模式的操作,即初始化模式和工作模式。

祖冲之序列密码算法(ZUC算法)

祖冲之序列密码算法(ZUC算法)

祖冲之序列密码算法第1部分:算法描述1范围本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。

2术语和约定以下术语和约定适用于本部分。

2.1比特bit二进制字符0和1称之为比特。

2.2字节byte由8个比特组成的比特串称之为字节。

2.3字word由2个以上(包含2个)比特组成的比特串称之为字。

本部分主要使用31比特字和32比特字。

2.4字表示word representation本部分字默认采用十进制表示。

当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。

例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。

2.5高低位顺序bit ordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。

3符号和缩略语3.1运算符+ 算术加法运算mod 整数取余运算⨁按比特位逐位异或运算⊞模232加法运算‖字符串连接符∙H取字的最高16比特∙L取字的最低16比特<<<k 32比特字左循环移k位>>k 32比特字右移k位a b向量a赋值给向量b,即按分量逐分量赋值3.2符号下列符号适用于本部分:s0,s1,s2,…,s15线性反馈移位寄存器的16个31比特寄存器单元变量X0,X1,X2,X3比特重组输出的4个32比特字R1, R2非线性函数F的2个32比特记忆单元变量W非线性函数F输出的32比特字Z算法每拍输出的32比特密钥字k初始种子密钥iv初始向量D用于算法初始化的字符串常量3.3缩略语下列缩略语适用于本部分:ZUC 祖冲之序列密码算法或祖冲之算法LFSR 线性反馈移位寄存器BR 比特重组F 非线性函数4算法描述4.1算法整体结构祖冲之算法逻辑上分为上中下三层,见图1。

上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。

图 1 祖冲之算法结构图4.2线性反馈移位寄存器LFSR4.2.1 概述LFSR包括16个31比特寄存器单元变量s0, s1, …, s15。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

祖冲之序列密码算法第1部分:算法描述1范围本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。

2术语和约定以下术语和约定适用于本部分。

2.1比特bit二进制字符0和1称之为比特。

2.2字节byte由8个比特组成的比特串称之为字节。

2.3字word由2个以上(包含2个)比特组成的比特串称之为字。

本部分主要使用31比特字和32比特字。

2.4字表示word representation本部分字默认采用十进制表示。

当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。

例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。

2.5高低位顺序bit ordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。

3符号和缩略语3.1运算符+ 算术加法运算mod 整数取余运算⨁按比特位逐位异或运算⊞模232加法运算‖字符串连接符∙H取字的最高16比特∙L取字的最低16比特<<<k 32比特字左循环移k位>>k 32比特字右移k位a b向量a赋值给向量b,即按分量逐分量赋值3.2符号下列符号适用于本部分:s0,s1,s2,…,s15线性反馈移位寄存器的16个31比特寄存器单元变量X0,X1,X2,X3比特重组输出的4个32比特字R1, R2非线性函数F的2个32比特记忆单元变量W非线性函数F输出的32比特字Z算法每拍输出的32比特密钥字k初始种子密钥iv初始向量D用于算法初始化的字符串常量3.3缩略语下列缩略语适用于本部分:ZUC 祖冲之序列密码算法或祖冲之算法LFSR 线性反馈移位寄存器BR 比特重组F 非线性函数4算法描述4.1算法整体结构祖冲之算法逻辑上分为上中下三层,见图1。

上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。

图 1 祖冲之算法结构图4.2线性反馈移位寄存器LFSR4.2.1 概述LFSR包括16个31比特寄存器单元变量s0, s1, …, s15。

LFSR的运行模式有2种:初始化模式和工作模式。

4.2.2 初始化模式在初始化模式下,LFSR接收一个31比特字u。

u是由非线性函数F的32比特输出W通过舍弃最低位比特得到,即u=W >> 1。

在初始化模式下,LFSR计算过程如下:LFSRWithInitialisationMode(u){(1)v = 215s15 +217 s13 + 221s10 + 220s4 + (1 + 28)s0 mod (231-1);(2)s16=(v+u) mod (231-1);(3)如果s16=0,则置s16=231-1;(4)(s1, s2, …, s15, s16) (s0, s1, …, s14, s15)。

}4.2.3 工作模式在工作模式下,LFSR不接收任何输入。

其计算过程如下:LFSRWithWorkMode(){(1)s16 = 215 s15 +217s13 + 221 s10 + 220s4 + (1 + 28)s0 mod (231-1);(2)如果s16=0,则置s16=231-1;(3)(s1, s2, …, s15, s16) → (s0, s1, …, s14, s15)。

}4.3比特重组BR比特重组从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。

BR的具体计算过程如下:BitReconstruction(){(1)X0 = s15H‖s14L;(2)X1 = s11L‖s9H;(3)X2 = s7L‖s5H;(4)X3 = s2L‖s0H。

}4.4非线性函数FF包含2个32比特记忆单元变量R1和R2。

F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。

F的计算过程如下:F (X0, X1, X2){(1)W = (X0⊕R1) ⊞R2;(2)W1 = R1⊞X1;(3)W2 = R2⊕X2;(4)R1 = S(L1(W1L‖W2H));(5)R2 = S(L2(W2L‖W1H))。

}其中S为32比特的S盒变换,定义在附录A中给出;L1和L2为32比特线性变换,定义如下:L1(X) = X⊕ (X <<< 2) ⊕ (X <<< 10) ⊕ (X <<< 18) ⊕ (X <<< 24),L2(X) = X⊕ (X <<< 8) ⊕ (X <<< 14) ⊕ (X <<< 22) ⊕ (X <<< 30)。

4.5密钥装入密钥装入过程将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特字作为LFSR 寄存器单元变量s0, s1, …, s15的初始状态。

设k和iv分别为k0‖k1‖……‖k15和iv0‖iv 1‖……‖iv 15,其中k i和iv i均为8比特字节,0≤i≤15。

密钥装入过程如下:(1)D为240比特的常量,可按如下方式分成16个15比特的子串:D =d0‖d1‖……‖d15,其中:d0 = 1000100110101112,d1= 0100110101111002,d2 = 1100010011010112,d3 = 0010011010111102,d4= 1010111100010012,d5 = 0110101111000102,d6 = 1110001001101012,d7 = 0001001101011112,d8 = 1001101011110002,d9 = 0101111000100112,d10 = 1101011110001002,d11= 0011010111100012,d12 = 1011110001001102,d13 = 0111100010011012,d14 = 1111000100110102,d15 = 1000111101011002。

(2)对0≤i≤15,有s i = k i‖d i‖iv i。

4.6算法运行4.6.1 初始化阶段首先把128比特的初始密钥k和128比特的初始向量iv按照4.5节密钥装入方法装入到LFSR的寄存器单元变量s0, s1, …, s15中,作为LFSR的初态,并置32比特记忆单元变量R1和R2为全0。

然后执行下述操作:重复执行下述过程32次:(1)BitReconstruction();(2)W= F(X0, X1, X2);(3)LFSRWithInitialisationMode (W >> 1)。

4.6.2 工作阶段首先执行下列过程一次,并将F的输出W舍弃:(1)BitReconstruction();(2)F (X0, X1, X2);(3)LFSRWithWorkMode()。

然后进入密钥输出阶段。

在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:(1)BitReconstruction();(2)Z = F (X0, X1, X2) X3;(3)LFSRWithWorkMode()。

附录A(规范性附录)S盒32比特S盒S由4个小的8х8的S盒并置而成,即S=(S0, S1, S2, S3),其中S0=S2,S1=S3。

S0和S1的定义分别见表1和表2。

设S0(或S1)的8比特输入为x。

将x视作两个16进制数的连接,即x=h||l,则表1 (或表2)中第h行和第l列交叉的元素即为S0(或S1)的输出S0(x)(或S1(x))。

设S盒S的32比特输入X和32比特输出Y分别为:X = x0‖ x1‖x2‖x3,Y = y0‖y1‖y2‖y3,其中x i和y i均为8比特字节,i = 0, 1, 2, 3。

则有y i = S i(x i), i = 0, 1, 2, 3。

表1 S0盒表2 S1盒01(资料性附录)模231-1乘法和模231-1加法的实现B.1 模231-1乘法两个31比特字模231-1乘法可以快速实现。

特别地,当其中一个字具有较低的汉明重量时,可以通过31比特的循环移位运算和模231-1加法运算实现。

例如,计算ab mod(231-1),其中b=2i+2j+2k。

则ab mod(231-1) = (a <<<31i) + (a <<<31j) +(a <<<31k) mod(231-1),其中<<<31表示31比特左循环移位运算。

B.2 模231-1加法在32位处理平台上,两个31比特字a和b模231-1加法运算c =a + b mod(231-1)可以通过下面的两步计算实现:1)c = a + b;2)c = (c & 0x7FFFFFFF) + (c >> 31)。

附录C(资料性附录)算法计算实例C.1 测试向量1(全0)输入:密钥k: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00初始向量iv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 输出:z1: 27bede74z2: 018082da初始化:有限状态机内部状态:R1 = 14cfd44cR2 = 8c6de800密钥流:C.2 测试向量2(全1)输入:密钥k: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff初始向量iv: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 输出:z1: 0657cfa0z2: 7096398b初始化:线性反馈移位寄存器初态:R1 = b8017bd5R2 = 9ce2de5c密钥流:C.3 测试向量3(随机)输入:密钥k: 3d 4c 4b e9 6a 82 fd ae b5 8f 64 1d b1 7b 45 5b初始向量iv: 84 31 9a a8 de 69 15 ca 1f 6b da 6b fb d8 c7 66输出:z1: 14f1c272z2: 3279c419初始化:线性反馈移位寄存器初态:R1 = 860a7dfaR2 = bf0e0ffc密钥流:————————————参考文献[1]ETSI/SAGE TS 35.221. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 &128-EIA3. Document 1: 128-EEA3 and 128-EIA3 Specification.[2]ETSI/SAGE TS 35.222. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 &128-EIA3. Document 2: ZUC Specification.[3]ETSI/SAGE TS 35.223. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 &128-EIA3. Document 3: Implementor's Test Data.[4]ETSI/SAGE TR 35.924. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 &128-EIA3. Document 4: Design and Evaluation Report.祖冲之序列密码算法第2部分:基于祖冲之算法的机密性算法1 范围本部分描述了基于祖冲之算法的机密性算法。

相关文档
最新文档