祖冲之序列密码算法(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算法)祖冲之序列密码算法第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⽐特<<>>k32⽐特字右移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。
我国在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算法在我国商用密码体系中具有重要地位,广泛应用于移动通信、物联网、安全认证等领域。
其成为国际标准,不仅提升了我国在全球密码算法领域的地位,也为全球网络安全提供了更为可靠的技术保障。
国产商用密码算法及其相关标准介绍
标准咨询国产商用密码算法及其相关标准介绍谢宗晓(中国金融认证中心)董坤祥(山东财经大学管理科学与工程学院)甄杰(重庆工商大学管理科学与工程学院)1 概述《中华人民共和国密码法》第六条中规定:密码分为核心密码、普通密码和商用密码。
同时,在第七条和第八条中规定:核心密码、普通密码属于国家秘密,商用密码用于保护不属于国家秘密的信息。
因此,在常见应用中,商用密码得到了大面积的推广,以至于,在实践中,提到“国密”,经常就被默认为国产商用密码算法。
在现代密码系统中,密码算法、密码协议和密钥管理是三个不可或缺的部分,而在这三者之中,最为核心的毫无疑问就是密码算法。
虽然实践证明,绝大部分的安全漏洞都产生于实现和部署过程中,但是,算法的安全与否,直接决定了一个密码系统的基础是否安全。
例如,选用SHA-1、MD4、MD5、RC4和密钥长度小于2048位的RSA 等不安全的算法,不可能实现安全的密码系统。
已经发布的国产商用密码算法,按照类别可以分为:1)对称密码算法,主要包括ZUC 和SM4;2)非对称密码算法,主要包括SM2和SM9;3)密码杂凑算法,主要包括SM3。
2 对称密码算法对称密码(symmetric cryptography)是用相同的密钥(或方法)进行加密解密,这在逻辑上非常清晰,也最直观,有时候也被称之为共享密钥密码,对称密码算法的基本过程如图1所示。
1) 注意,RC4算法已经证明不安全。
图1 对称密码的工作过程已经发布国产商用密码算法中属于对称密码算法的有ZUC 和SM4。
ZUC(祖冲之密码算法)属于序列密码,也称为“流密码”,与之类似的国外密码算法如RC41)。
ZUC 对应的国家标准、行业标准,如表1所示。
SM4属于分组密码,也称为“块密码”,与之类似的国外密码算法如DES(数据加密标准),TDEA/3DES(三重数据加密标准)以及AES(高级加密标准)等。
SM4对应的国家标准、行业标准,如表2所示。
祖冲之序列密码
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
二进制表示法
高低位顺序:字的最高位总是位于字表示中的最左边,最低位总
是位于字表示中的最右边。
祖冲之算法
祖冲之密码算法祖冲之密码算法由中国科学院等单位研制,名字源于我国古代数学家祖冲之,它包括加密算法128-EEA3和完整性保护算法128-EIA3。
祖冲之密码算法(ZUC)的名字源于我国古代数学家祖冲之,祖冲之算法集是由我国学者自主设计的加密和完整性算法,是一种流密码。
它是两个新的LTE算法的核心,这两个LTE算法分别是加密算法128-EEA3和完整性算法128-EIA3。
ZUC算法由3个基本部分组成,依次为:1、比特重组;2、非线性函数F;3、线性反馈移位寄存器(LFSR)。
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3July 2011: ** NEW ** Prospective FINAL VERSIONS of the Algorithms 128-EEA3 & 128-EIA3 are now available for download. The algorithms themselves are identical to the ones published in January 2011, although some text in the documents has changed slightly. The documents have been submitted to the 3GPP Security Group, which will decide whether they can be recommended for inclusion in the LTE standards. The documents have not yet been through final 3GPP approval, hence they are still preliminary draft algorithm specifications, provided for evaluation purposes only, and potentially subject to change.January 2011: ** NEW ** REVISED VERSIONS of the Algorithms 128-EEA3 & 128-EIA3 are available for download prior to approval and publication of a final version by 3GPP. These revised versions were published in January 2011. They are still preliminary draft algorithm specifications, provided for evaluation purposes only, and subject to change.Individuals or companies intending to implement and/or use the 128-EEA3 & 128-EIA3 Algorithms will be required to sign appropriate usage undertakings with an appointed custodian, such as the GSM Association. Commercial implementors of the algorithms will need to demonstrate that they satisfy approval criteria yet to be specified and formal permission to use the algorithms will need to be obtained by way of signing appropriate usage undertakings and intellectual property agreements and paying any relevant administrative charges. These arrangements will be published by the GSM Association in due course.The draft specifications are as follows:Please note, that by obtaining or distributing this algorithm you may also be bound by laws in your own country about cryptographic algorithms. It is your responsibility to conform to all these restrictions.。
[密码学——基础理论与应用][李子臣][电子课件] 第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();
(完整word版)祖冲之序列密码算法(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。
salsa20和ZUC算法详细介绍及对比
1 流密码算法概述1.1 Salsa20算法 1.1.1 算法设计背景2004年ECRYPT 启动了eSTREAM 流密码计划的研究项目,Salsa20是最终胜出的7个算法之一。
Salsa20是由Daniel J.Bernstein 提出的基于hash 函数设计的流密码算法,其核心部分是一个基于32比特加、比特异或以及旋转操作的512比特输入512比特输出的hash 函数。
现有的对Salsa20攻击方法包括线性分析、差分分析、非随机性分析、相关密钥分析和滑动分析等,其中以滑动攻击尤其是偶数轮的滑动攻击方式最为有效。
在软件仿真方面,算法可以在目前的x86处理器上实现4至14cycles/byte 的加密效率;且具备尚可的硬件性能。
Salsa20没有申请专利,属于公开的应用算法,为了在多个公共领域的共同架构,Bernstein 对算法的实现优化做了进一步研究和改动。
1.1.2 算法介绍(1)运算符定义word :word 是一个32比特的二进制数,即集合{}320,1,,21-中的元素之一。
(2)异或和移位计算两个word u ,v 的异或用公式表示为:()22i i i i i i u v u v u v ⊕=+-∑设非零整数c ,{}0,1,2,3c ∈,对一个word u 的c 比特左移位表示为u c <<<,用公式表示为:mod322i c i i u c u +<<<=∑(3)quarterround 函数设()0123,,,y y y y y =,输出()()0123,,,z quarterround y z z z z ==,则()()11037z y y y =⊕+<<<()()22109z y z y =⊕+<<< ()()332113z y z z =⊕+<<< ()()003218z y z z =⊕+<<<两者关系如图所示:图1 Salsa20的quarterround 函数(4)rowround 函数 设()012315,,,,,y y y y y y =,输出()()012315,,,,,z quarterround y z z z z z ==,则:()()01230123,,,,,,z z z z quarterround y y y y = ()()56745674,,,,,,z z z z quarterround y y y y = ()()101189101189,,,,,,z z z z quarterround y y y y = ()()1512131415121314,,,,,,z z z z quarterround y y y y =若将输入()012315,,,,,y y y y y 看作是一个方阵0123456789101112131415y y y y y y y y y y y y y y y y ⎛⎫ ⎪ ⎪⎪ ⎪⎝⎭则rowround 函数将方阵的每一行重新排列后作为quarterround 函数的输入,从而并行地修改了所有行。
祖冲之算法在数字图像加密中的应用与实现
以中国古代著名数学家祖冲之的拼音 ( ZU Chong-
3期
任高峰, 等: 祖冲之算法在数字图像加密中的应用与实现
767
zhi) 首字母命名, 中文称作祖冲之算法。 ZUC 算法 是 3GPP 机密性算法 EEA3 和完整性算法 EIA3 的 作用在于产生用于加解密的密钥。 发送端加 核心, 密过程为, 将 ZUC 算法产生的密钥和输入的明文按 位异或; 接收端的解密过程为, 输入的密文与上述 加密过程相同的密钥按位异或, 即可实现解密。 如图 1 所 示, 为 ZUC 算 法 加 解 密 过 程 示 意 图
[12 ]
ZUC 算法下层为非线性函数 F 。在非线性函数 F 的设计上, ZUC 算法借鉴了分组密码的设计技巧, 采用 S 盒和高扩散特性的线性变换 L。 非线性函数 F 具有高的抵抗区分分析、 快速相关攻击和猜测确 定攻击等方法的能力。 此外, 非线性函数 F 的 S 盒 采用结构化设计方法, 在保证好的密码学性质的同 时降低了软硬件实现代价, 具有硬件实现面积小、 功耗低等特点。
第 13 卷 第 3 期 2013 年 1 月 1671 — 1815 ( 2013 ) 03-0766-05
科
学
技
术
与
工
程
Science Technology and Engineering
Vol. 13 No. 3 Jan. 2013 2013 Sci. Tech. Engrg.
祖冲之算法在数字图像加密中的应用与实现
[ 2009ZX01034002004007 ( 002) ]资助 第一作者简介: 任高峰( 1986 —) , 男, 博士。 研究方向: 无线通信系 统, 电 力 线 通 信 系 统, 低 功 耗 集 成 电 路 设 计。 Email: rengaofeng @ ime. ac. cn。
密码学-ZUC算法介绍
ZUC算法介绍摘要:ZUC算法是一种流密码算法,中文称作祖冲之算法,其以中国古代著名数学家祖冲之的拼音(ZU Chongzhi)首字母命名。
是移动通信 3GPP加密算法128-EEA3和完整性算法128-EIA3的核心,也是中国自主设计的加密算法。
本文介绍了ZUC算法及其结构、原理以及安全性。
关键词:ZUC,流密码,加密算法,安全性2009年5月,ZUC算法获得了3GPP安全算法组SA立项,正式申请参加3GPP-LTE第三套机密性和完整性算法标准的竞选工作[1]。
经历了两年多的时间,ZUC 算法经3个阶段的安全评估工作后,于2011年9月正式被通过,成为第三套3GPP-LTE加密标准核心算法。
ZUC算法设计具有高安全、高效率以及新颖性等特点。
由3个基本部分组成:1、线性反馈移位寄存器(LFSR);2、比特重组;3、非线性函数NLF。
ZUC算法在逻辑上采用三层结构设计。
上层为定义在素域GF(231- 1)上的线性反馈移位寄存器(LFSR)[2]。
中间层为比特重组。
比特重组采用取半合并技术,实现LFSR数据单元到非线性函数F和密钥输出的数据转换,其主要目的是破坏LFSR在素域上GF(231 - 1)上的线性结构。
下层为非线性函数NLF。
在非线性函数NLF的设计上,算法设计充分借鉴了分组密码的设计技巧,采用S盒和高扩散特性的线性变换L,非线性函数NLF具有高的抵抗区分分析、快速相关攻击和猜测确定攻击等方法的能力。
图1 ZUC算法结构ZUC是一种面向字的流密码。
其内部架构由分别对应于LFSR,BR(比特重组)和NLF (非线性函数)的三层组成。
LFSR层由每个31位(S0,S1,...,S15)的16级寄存器形成。
BR层由LFSR层的8个级寄存器(S15,S14,S11,S9,S7,S5,S2,S0)填充的四个32位寄存器(X0,X1,X2,X3)形成。
除了两个各自为31位的内部寄存器(R1,R2)之外,BR输出还用作NLF层的输入[3]。
zuc算法原理
zuc算法原理
ZUC(祖冲之算法)是一种加密算法,主要用于无线通信和网络安全领域。
它是由我国科学家研发的一种对称加密算法,其命名来源于中国古代数学家祖冲之。
ZUC算法的原理主要包括以下几个方面:
1.分组:ZUC算法采用64位分组大小,将明文或密文分成若干个64位分组。
2.初始化:在加密和解密过程中,需要使用一个初始化向量(IV)。
IV的作用是确保每个加密过程都是唯一的,从而提高安全性。
3.循环移位:ZUC算法采用一种循环移位操作,对64位分组进行处理。
循环移位次数根据密钥长度来确定。
4.混淆:ZUC算法利用多个混淆函数,将原始分组与循环移位后的分组进行混合,从而实现加密效果。
5.扩散:在混淆过程中,ZUC算法通过特定的扩散操作,将明文或密文的特征扩散到整个加密过程中,提高加密强度。
6.输出:经过上述步骤后,加密器将输出加密后的密文。
同样,解密器根据相同的算法和密钥还原原始明文。
ZUC算法在无线通信和网络安全领域具有广泛应用,因其具有较高的安全性和效率。
它已成为我国无线通信标准的一部分,并在国内外得到广泛认可。
SM系列国密算法
SM系列国密算法SM系列国密算法众所周知,为了保障商⽤密码的安全性,国家商⽤密码管理办公室制定了⼀系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。
其中SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法;SM2、SM9是⾮对称算法;SM3是哈希算法。
⽬前,这些算法已⼴泛应⽤于各个领域中,期待有⼀天会有采⽤国密算法的区块链应⽤出现。
其中SM1、SM7算法不公开,调⽤该算法时,需要通过加密芯⽚的接⼝进⾏调⽤;⽐较少⼈了解这些算法,在这⾥对这些国密算法做简单的科普1 SM1对称密码SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 ⽐特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯⽚中。
采⽤该算法已经研制了系列芯⽚、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,⼴泛应⽤于电⼦政务、电⼦商务及国民经济的各个应⽤领域(包括国家政务通、警务通等重要领域)。
2 SM2椭圆曲线公钥密码算法SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换⽅⾯不同于ECDSA、ECDH等国际标准,⽽是采取了更为安全的机制。
另外,SM2推荐了⼀条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及⽰例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表⽰,运算,以及域上的椭圆曲线的点的表⽰,运算和多倍点计算算法。
然后介绍了编程语⾔中的数据转换,包括整数和字节串,字节串和⽐特串,域元素和⽐特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数⽣成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线⽅程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。
最后给椭圆曲线上密钥对的⽣成以及公钥的验证,⽤户的密钥对为(s,sP),其中s为⽤户的私钥,sP为⽤户的公钥,由于离散对数问题从sP难以得到s,并针对素域和⼆元扩域给出了密钥对⽣成细节和验证⽅式。
《商用密码算法原理》第二章 祖冲之序列密码
2021/1/1
商用密码算法原理与C语言实现
27
安全性分析
➢ 在猜测过程中,猜测的位置是t=0时刻的S90 ,S50 的高8位, 共16比特;t=1时刻的S91 ,S51 的高8位,共16比特,t=2时刻 的S02 ,S52 ,S92 ,S102 ,S132 的高8位和S152的低15位,共55比 特;t=3时刻共31比特,t=4时刻共8比特。因此总共猜测
ZUC算法在初始执行过程中,需用到的参数为一个 128位的初始密钥k和128位的初始向量iv。 (1)密钥装入
初始密钥和初始向量按照如下方法装入到LFSR的寄
存器单元(s0,s1,…,s15)中,每个单si(0≤i≤15)仅在有限
域GF(232 –1)中取值。密钥装入过程将128比特的初始 密钥k和128比特的初始向量iv扩展为16个31比特加载
➢ 由此类推,在t=3 、t=4、t=5 时刻时均用此分析方法,在 t=5 时刻,由(S14,S24,…,S154,S164)→(S05,S15,…,S145,S155) 可知该时刻的已知量为S05, S15, S25, S35, S45, S55, S65, S75, S85, S95, S105, S115, S125, S135, S145, S155,此外还有 R15和R25 。因此t=5时刻的全部内部单元均已找到。之后即 可用所求内部单元生成密钥来检测与原密钥是否相同。
2021/1/1
商用密码算法原理与C语言实现
14
2021/1/1
商用密码算法原理与C语言实现
15
2021/1/1
商用密码算法原理与C语言实现
16
2021/1/1
商用密码算法原理与C语言实现
17
(3)线性变换L1和L2 L1和L2都是32位到32位的线性变换,其定义如下:
祖冲之算法
祖冲之密码算法祖冲之密码算法由中国科学院等单位研制,名字源于我国古代数学家祖冲之,它包括加密算法128-EEA3和完整性保护算法128-EIA3。
祖冲之密码算法(ZUC)的名字源于我国古代数学家祖冲之,祖冲之算法集是由我国学者自主设计的加密和完整性算法,是一种流密码。
它是两个新的LTE算法的核心,这两个LTE算法分别是加密算法128-EEA3和完整性算法128-EIA3。
ZUC算法由3个基本部分组成,依次为:1、比特重组;2、非线性函数F;3、线性反馈移位寄存器(LFSR)。
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3July 2011: ** NEW ** Prospective FINAL VERSIONS of the Algorithms 128-EEA3 & 128-EIA3 are now available for download. The algorithms themselves are identical to the ones published in January 2011, although some text in the documents has changed slightly. The documents have been submitted to the 3GPP Security Group, which will decide whether they can be recommended for inclusion in the LTE standards. The documents have not yet been through final 3GPP approval, hence they are still preliminary draft algorithm specifications, provided for evaluation purposes only, and potentially subject to change.January 2011: ** NEW ** REVISED VERSIONS of the Algorithms 128-EEA3 & 128-EIA3 are available for download prior to approval and publication of a final version by 3GPP. These revised versions were published in January 2011. They are still preliminary draft algorithm specifications, provided for evaluation purposes only, and subject to change.Individuals or companies intending to implement and/or use the 128-EEA3 & 128-EIA3 Algorithms will be required to sign appropriate usage undertakings with an appointed custodian, such as the GSM Association. Commercial implementors of the algorithms will need to demonstrate that they satisfy approval criteria yet to be specified and formal permission to use the algorithms will need to be obtained by way of signing appropriate usage undertakings and intellectual property agreements and paying any relevant administrative charges. These arrangements will be published by the GSM Association in due course.The draft specifications are as follows:Please note, that by obtaining or distributing this algorithm you may also be bound by laws in your own country about cryptographic algorithms. It is your responsibility to conform to all these restrictions.。
[密码学——基础理论与应用][李子臣][电子课件] 第6讲---祖冲之序列密码算法
③ s16=(v+u)mod(231-1);//其中u为w>>1,w为非线性函数F的输出; ④ If s16=0,then set s16=231-1; ⑤ (s1,s2,…,s15,s16)→(s0,s1,…,s14,s15)。
密码学---基础理论与应用
3
2011年,我国推荐ZUC算法的128-EEA3加密算法和 128-EIA3完整性算法成为3GPP LTE保密性和完整性 算法标准,即第四代移动通信加密标准,这是第一个 成为国际标准的我国自主研制的密码算法,对我国电 子信息产业具有非常重要的意义。
2012年,ZUC算法被发布为国家密码行业标准( GM/T 0001—2012)。
25
(1)初始化模式 LFSRWithInitialisationMode( )
在初始化模式下,LFSR接收一个31位的输入字u,而u是通过 去掉非线性函数F输出的32位字w的最右边的位获得的。也就 是u=w>>1,即循环右移1位。初始化模式详细步骤如下。
LFSRWithInitialisationMode(u)
2020\3\17 Tuesday
密码学---基础理论与应用
6
祖冲之序列密码结构图
2020\3\17 Tuesday
密码学---基础理论与应用
7
6.1.2 算法原理
ZUC算法以高安全性作为优先目标,同时兼顾高的软 硬件实现性能,在整体结构上分为上中下三层: LFSR、BR、非线性函数F。
国密算法介绍
国家商用密码算法简介密码学是研究编制密码和破译密码的技术科学,起源于隐秘消息传输,在编码和破译中逐渐发展起来。
密码学是一个综合性的技术科学,与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。
密码学的基本思想是对敏感消息的保护,主要包括机密性,鉴别,消息完整性和不可否认性,从而涉及加密,杂凑函数,数字签名,消息认证码等。
一.密码学简介密码学中应用最为广泛的的三类算法包括对称算法、非对称算法、杂凑算法。
1.1 对称密码对称密码学主要是分组密码和流密码及其应用。
分组密码中将明文消息进行分块加密输出密文区块,而流密码中使用密钥生成密钥流对明文消息进行加密。
世界上应用较为广泛的包括DES、3DES、AES,此外还有Serpent,Twofish,MARS 和RC6等算法。
对称加密的工作模式包括电码本模式(ECB 模式),密码反馈模式(CFB 模式),密码分组链接模式(CBC 模式),输入反馈模式(OFB 模式)等。
1.2 非对称密码公钥密码体制由Diffie和Hellman所提出。
1978年Rivest,Shamir和Adleman提出RAS密码体制,基于大素数分解问题。
基于有限域上的离散对数问题产生了ElGamal密码体制,而基于椭圆曲线上的离散对数问题产生了椭圆曲线密码密码体制。
此外出现了其他公钥密码体制,这些密码体制同样基于困难问题。
目前应用较多的包括RSA、DSA、DH、ECC等。
1.3杂凑算法杂凑算法又称hash函数,就是把任意长的输入消息串变化成固定长的输出串的一种函数。
这个输出串称为该消息的杂凑值。
一个安全的杂凑函数应该至少满足以下几个条件。
1)输入长度是任意的;2)输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;3)对每一个给定的输入,计算输出即杂凑值是很容易的;4)给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。
zuc算法草案
zuc算法草案
ZUC算法,也称为祖冲之算法,是中国国家密码管理局推出的一种流密码算法,它是3GPP 的LTE加密算法之一,被广泛应用于移动通信领域中的数据加密和认证。
ZUC算法基于128位的密钥,它使用了状态机和非线性移位寄存器技术,通过多轮的置换和替代运算实现加密。
与其他流密码算法相比,ZUC算法具有以下优点:- 安全性高:ZUC算法采用了状态机和非线性移位寄存器技术,这使得它具有很高的安全性,难以受到攻击。
- 加密效率高:ZUC算法的加密效率非常高,可以满足移动通信领域的数据加密和认证需求。
- 算法轻量化:ZUC算法采用了较为轻量化的算法设计,这使得它能够在移动设备上快速运行,不占用过多的计算资源。
ZUC算法可以使用在以下场景下:
- 移动通信领域:作为3GPP的LTE加密算法之一,被广泛应用于移动通信领域中的数据加密和认证。
- 无线局域网领域:可以应用于无线局域网领域,在保证安全性的同时,提高无线局域网的数据传输速度和效率。
- 互联网领域:可以应用于互联网领域的数据加密,尤其是在大数据场景下,能够提高数据传输的效率。
ZUC算法的缺点在于可能受到类似于彩虹表等攻击方法的影响,这将对其安全性带来一定的挑战。
此外,ZUC算法目前只在中国国家密码管理局中得到广泛应用,因此在国际范围内的应用将会受到限制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 范围本部分描述了基于祖冲之算法的机密性算法。