原标题:密码学算法之序列密码中的ZUC算法详解

作者:于中阳Mercina-zy

本文发表自区块链兄弟

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

区块链技术当中一个很重要的组成部分就是密码学作为从事区块链研究工作的相关人员,应对密码学有相当的认识。ZUC 算法,即祖冲之算法,属于序列密码,其也是中国第一个成为国际密码标准的密码算法。

ZUC 算法,即祖冲之算法,是移动通信 3GPP 机密性算法 EEA3 和完整性算法 EIA3的核心,其亦是中国自主设计的加密算法。

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

其中经历了两年多的时间, ZUC 算法经过包括 3GPP SAGE 内部评估,两个邀请付费的学术团体的外部评估以及公开评估等在内的 3 个阶段的安全评估工作后,于 2011 年 9 月正式被 3GPP SA全会通过,成为 3GPP LTE 第三套加密标准核心算法。

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

ZUC 标准化的成功,是中国在商用密码算法领域取得的一次重大突破,体现了中国离用密码应用的开放性和商用密码设计的高能力,极大的增加中国在国际通信安全应用领域的影响力,且今后无论是对中国在国际商用密码标准化方面的工作,还是商用密码的密码设计来说都有深远的影响。

ZUC 是一个同步流密码算法,其以中国古代著名数学家祖冲之的拼音(ZU Chongzhi)首字母命名,中文称作祖冲之算法。

此算法在设计之初就面拖着高的挑战。因为,美国高级加密标准 AES 和欧洲 SNOW 3G 当时已经被选为 LTE 加密标准,它们是两个设计非常优秀的密码算法,具有非常高的安全强度。

ZUC 算法的设计必须做到不能比 AES 或 SNOW 3G差, 才有可能在 3 GPPLTE 有立脚之处。

面对挑战, ZUC 算法的设计必须具有高安全、高效率以及新颖性等特点。其中高安全和高效率要求设计的新算法在安全和效率上不能比 AES 或 SNOW 3G 低,而新颖性要求设计的密码算法在结构和部件上都有创新。然而密码算法设计发展到今天,许多经典结构和部件的设计都基本定型,要同时达到上述目标,无疑是一项非常艰巨的任务。

ZUC 算法在逻辑上采用三层结构设计,如下图所示。

ZUC 算法上层为定义在素域 GF(231 - 1) 上的线性反馈移位寄存器(LFSR),这是 ZUC 算法设计的一大创新。

目前常见流密码体制的 LFSR 均采用二元域或二元域的某个扩域上的 m 序列。

这种序列具有明显的多重线性关系,这使得以其为序列源的密码算法容易受黠相关攻击。

ZUC 算法的 LFSR 设计首次采用素域 GF(231 - 1) 的 m 序列。该类序列周期长、统计特性好,且在特征为 2 的有限域上是非线性的,其具有线性结构弱、比特关系符合率低等优点。

因而采用GF(231 - 1) 上的 LFSR 设计的 ZUC 算法具有天然的强抵抗二元域上密码攻击方法的能力,譬如二元域上的代数攻击、区分分析和相关攻击等。此外,由于素域 GF(231 - 1)上的乘法可以快速实现, ZUC 算法 LFSR 在设计时充分考虑到安全和效率两方面的问题,在达到高安全目标的同时可以非常高效地软硬件实现。

ZUC 算法的中间层为比特重组。比特重组采用取半合并技术,实现 LFSR 数据单元到非线性函数 F 和密钥输出的数据转换,其主要目的是破坏 LFSR 在素域上GF(231 - 1) 上的线性结构。

结合下层的非线性函数 F,比特重组可使得一些在素域 GF(231 - 1) 上的密码攻击方法变得非常困难。

ZUC 算法下层为非线性函数 F。在非线性函数 F 的设计上, zuc 算法设计充分借鉴了分组密码的设计技巧,采用 S 盒和高扩散特性的线性变换 L ,非线性函数 F 具有高的抵抗区分分析、快速相关攻击和猜测确定攻击等方法的能力。

此外,非线性函数 F 的 S盒采用结构化设计方法,在具有好的密码学性质的同时降低了硬件实现代价,具有实现面积小、功耗低等特点。

经过上述三层结构的综合运用, ZUC 算法具有非常高的安全强度,能够抵抗目前常见的各种流密码攻击方法。

其设计已得到国内外著名密码学家的认可,他们对其安全强度给予了很高的评价。

最后,需要点明的是上面介绍的 ZUC 算法本质上是一种非线性序列产生器。由此,在种子密钥的作用下,可以产生足够长的安全密钥序列。把与密钥序列晓文数据模 2 相加,便完成了数据加密。同样,把密钥序列与密文数据模 2 相加,便完成了数据解密。

于中阳Mercina-zy

由于排版的问题,上述出现的 GF(231 - 1) 实际是:

特此注明。

文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

责任编辑:

zuc算法代码详解_密码学算法之序列密码中的ZUC算法详解相关推荐

  1. des算法密码多长_密码学中的多个DES

    des算法密码多长 This is a DES that was susceptible to attacks due to tremendous advances in computer hardw ...

  2. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  3. python开发的程序中以电子表格显示数据_使用 Python 读取电子表格中的数据实例详解...

    Python 是最流行.功能最强大的编程语言之一.由于它是自由开源的,因此每个人都可以使用.大多数 Fedora 系统都已安装了该语言.Python 可用于多种任务,其中包括处理逗号分隔值(CSV)数 ...

  4. ucos 消息队列代码详解_用python实现 多进程队的列数据处理详解,零基础记得都收藏哦

    今天就为大家分享一篇python 多进程队列数据处理详解,具有很好的参考价值,希望对大家有所帮助.喜欢的话记得点赞转发关注不迷路哦!!! 总之了写到多进程队列数据处理问题,也就不多废话了,直接来上代码 ...

  5. java冒泡排序算法代码降序_冒泡排序(起泡排序)算法及其C语言实现

    起泡排序,别名"冒泡排序",该算法的核心思想是将无序表中的所有记录,通过两两比较关键字,得出升序序列或者降序序列. 例如,对无序表{49,38,65,97,76,13,27,49} ...

  6. python快速排序算法没看懂_你需要知道的九大排序算法【Python实现】之快速排序...

    五.快速排序 基本思想:  通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序. 算法实现: ​ #coding: ...

  7. 0832工作原理详解_最经典MOS管电路工作原理及详解没有之一

    欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 1105621549 高可靠新能源行业顶尖自媒体 在这里有电力电子.新能源干货.行业发展趋势分析.最新产品介绍.众多技术达人与您分享经验,欢 ...

  8. python协程详解_对Python协程之异步同步的区别详解

    一下代码通过协程.多线程.多进程的方式,运行代码展示异步与同步的区别. import gevent import threading import multiprocessing # 这里展示同步和异 ...

  9. java改写weka中的算法_用Eclipse在Weka中嵌入新算法

    本文介绍添加一个新算法到Weka集成环境中的过程,并能在GUI中运行并显示其结果.想做到这一点有两种方法,一是用ANT命令生成新的weka.jar(稍后写教程),二是用IDE(Eclipse或NetB ...

  10. 基4fft算法的蝶形图_原地且自动整序的FFT算法

    传统的计算快速傅里叶变换的Cooley-Tukey算法效率极高,因其主要由蝶形运算构成,所以代码形式也非常简单,只是需要将输入或者输出按照位反转的方式重新排序. 这个重新排序的步骤并不是必须的.Cli ...

最新文章

  1. PHP PSR-2 代码风格规范 (中文版)
  2. 遵义春季招生计算机学校,遵义计算机学校招生
  3. oracle存储过程详解--游标 实现增、删、改、查的
  4. 大盘点|卷积神经网络必读的 100 篇经典论文,包含检测 / 识别 / 分类 / 分割多个领域
  5. 服务器硬盘维修工具,服务器硬盘镜像备份和恢复工具_OO DiskImage Server V8.5.39 服务器版...
  6. 基于某网站的信息爬取与保存_指定跳转页
  7. js 箭头函数没有 constructor,不能被new
  8. 查看电脑wifi密码
  9. WPF编程学习 —— 样式
  10. JS之Date对象和获取系统当前时间
  11. 开发完微信小程序后,怎样做好微信小程序运营?
  12. win7 注册表禁 com服务器,Win7系统注册表禁用USB和启用USB接口方法
  13. JavaScript实现DoublyLinkedList双链表的算法(附完整源码)
  14. c语言一本书的页码从自然数1开始顺序编码,C++_关于统计数字问题的算法,一本书的页码从自然数1开始顺 - phpStudy...
  15. 【统计分析】(task4) 应用随机过程(更新ing)
  16. RS485 通信电路 PCB
  17. 深入优化GPU编程概述
  18. 云场景实践研究第83期:众安保险
  19. Python可变/不可变对象
  20. 关于4A统一安全管理平台解决方案简单介绍

热门文章

  1. netperf-2.7.0 交叉编译
  2. 班迪录屏算法注册机!
  3. Android Studio汉化版教程
  4. 【转】GB2312 编码
  5. shell脚本之循环语句
  6. 使用MTK的SN writer工具写IMEI的方法
  7. Fall 2020 Berkeley cs61a hw02答案
  8. 图书馆借阅系统(应用)的设计与实现
  9. Creo:Creo2.0安装实例教程之图文详细攻略
  10. Python题目:个人所得税计算