【密码学】ZUC祖冲之算法

一、ZUC算法简介

ZUC算法(祖冲之算法)是中国自主研发的一种流密码算法,2011年被3GPP批准成为4G国际标准,主要用于无线通信的加密和完整性保护。ZUC算法在逻辑上采用三层结构设计,包括线性反馈移位寄存器(LFSR)比特重组(BR)非线性函数F。ZUC算法集包括祖冲之算法、加密算法128-EEA3和完整性算法128-EIA3,已被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。

二、ZUC算法流程

  1. 关键步骤(Operation)
    LFSR:线性反馈移位寄存器生成一系列的内部状态。分为2种模式:初始化模式工作模式
    1.初始化模式:LFSR接收1个31比特字“的输人,对寄存器单元变量s0,s1…s15进行更新。
    2.工作模式:LFSR无输人,直接对寄存器单元变量s0,s1…s15进行更新。

在这里插入图片描述

比特重组(BR):从LFSR的寄存器单元中抽取128比特组成4个32比特字。
输入为LFSR寄存器单元变量s0,s2,s5,s7,s9,s11,s14,s15,输出为4个 32 比特字 X0、X1、X2、X3

在这里插入图片描述

非线性函数F:将LFSR生成的状态进行复杂的非线性变换,增强密钥流的随机性。把一个96比特压缩为32比特的一个非线性压缩函数。
F的输人为3个32比特字X0、X1、X2,输出为一个32比特字W。
在这里插入图片描述
密钥装入:密钥载入过程将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特长的整数,作为LFSR寄存器单元s0,s1…s15的初始状态。
在这里插入图片描述

2.算法运行

祖冲之算法的输入参数为初始密钥k初始向量iv正整数L,输出参数为L 个密钥字Z。算法运行过程包括初始化步骤工作步骤
在这里插入图片描述

初始化(Key and IV Setup)
调用密钥装载过程,将128比特的初始密钥k和128比特的初始向量iv装入到FSR的寄存器单元变量S0,S1,S2…S15中作为LFSR的初态;并置非线性函数F中的32比特存储单元R1和R2全为0。然后重复循环过程32次。
在这里插入图片描述
在这里插入图片描述
以下是ZUC算法的特点,以表格形式呈现:

特点描述
算法类型流密码算法
密钥长度128位
IV长度128位
输出生成32位的密钥流
结构由LFSR、BR(比特重组)和F(非线性函数)三部分组成
LFSR16级线性反馈移位寄存器,基于素域GF(2^31 - 1)的m序列
BR(比特重组)破坏LFSR在素域上的线性结构,增强随机性
F(非线性函数)包含S盒,提供非线性,确保算法安全的关键部分
S盒由4个8x8的S盒并置而成,其中S2=S0,S3=S1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/937214.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kaggler日志--Day5

进度24/12/15 昨日复盘 Intermediate Mechine Learning之类型变量 读两篇讲解如何提问的文章,在提问区里发起一次提问 实战:自己从头到尾首先Housing Prices Competition for Kaggle Learn Users并成功提交 Intermediate Mechine Learning之管道&#…

每天五分钟深度学习pytorch:基于AlexNet模型完成手写字体识别

本文重点 前面我们学习了LeNet的搭建,本文我们学习AlexNet网络模型的搭建,然后使用它跑一遍手写字体识别的项目 AlexNet 在2012年ImageNet竞赛中以超过第二名10.9个百分点的绝对优势一举夺冠,从此深度学习重新火热起来,我们来看一下它的网络结构,它比LeNet更深,同时第…

【学习笔记】桌面浏览器的视口

概念:设备像素和CSS像素 设备像素:设备物理屏幕的像素分辨率,使用screen.width/height获取 这里有四个像素100%缩放,CSS像素完全覆盖设备像素 缩小后,CSS像素开始缩小,意味着一个设备像素覆盖多个CSS像素…

分享两个爬虫练习网站+一个python游戏网站

目录 第一个网站第二个Python游戏网站 第一个网站 网站一 第二个 网站二 Python游戏网站 网站三

基于小程序实现地图定位、轨迹绘制、地图标点、快捷导航、唤醒导航APP、开箱即用

目录 前言研究背景与意义研究目标与内容研究方法与技术路线小程序地图组件介绍定位技术与原理轨迹绘制技术地图标注与标记功能地图定位与轨迹绘制功能实现定位功能设计与实现获取用户当前位置总结说明代码块前言 研究背景与意义 地图定位和轨迹追踪作为智能手机中常见的功能之…

微信小程序中 Echarts 的巧妙运用

一、引入 Echarts 的准备工作 在微信小程序中引入 Echarts 需要进行一系列的准备工作。首先,我们可以从 echarts 官网或 GitHub 上下载 echarts-for-weixin 项目。找到其中的 ec-canvas 文件夹,这个文件夹将是我们引入到微信小程序项目中的关键部分。 …

论文阅读笔记:OminiControl: Minimal and Universal Control for Diffusion Transformer

论文阅读笔记:OminiControl: Minimal and Universal Control for Diffusion Transformer 1 背景1.1 问题1.2 提出的方法 2 创新点3 方法4 模块4.1 预备知识4.2 OminiControl4.2.1 利用已有的结构4.2.2 统一序列处理4.2.3 位置感知token交互4.2.4 可控调节强度 4.3 S…

时序论文30|NIPS24一篇对时间戳深入研究的文章

论文标题:Frequency Adaptive Normalization For Non-stationary Time Series Forecasting 论文链接:https://arxiv.org/pdf/2409.18696 代码链接:https://github.com/ForestsKing/GLAFF 前言 这篇论文提出了一个新框架GLAFF,…

图像处理 - 车道线检测:智能驾驶的“眼睛”

引言 在智能驾驶技术飞速发展的今天,车道线检测作为一项基础而关键的技术,扮演着车辆“眼睛”的角色。它不仅关系到车辆的导航和定位,还直接影响到自动驾驶系统的安全性和可靠性。本文将带你深入了解车道线检测技术的原理、方法以及在实际应用…

加速科技精彩亮相ICCAD 2024

12月11日—12日 ,中国集成电路设计业的年度盛会——ICCAD 2024在上海世博馆隆重举行。本次活动以“智慧上海,芯动世界”为主旨,汇聚了众多业界精英,共同探讨集成电路产业的未来。作为半导体测试行业领军企业,加速科技携…

java+springboot+mysql法律咨询网

项目介绍: 使用javaspringbootmysql开发的法律咨询网(文书),系统包含管理员、用户角色,功能如下: 管理员:登录系统;用户管理;文章管理(法律知识&#xff09…

安卓BLE蓝牙开发经验分享

注意点一:一开始必须申请权限,否则后面根本无法成功。 注意点二:BLE使用向某个特征写入来发送数据,写入一次默认长度是23字节,必须向蓝牙设备申请更大字节的写入才能发送更多字节。(23字节是BLE通信的最小…

Linux shell的七大功能 ---自动补齐、管道机制、别名

1、自动补齐---TAB 输入命令的前几个字符,按下tab键,会自动补齐完整的字符,若有多个命令、文件或目录的前几个字符相同,按下tab将会全部列举出来 2、管道机制---| 例如:ls -- help |more 将有关ls的帮助内容传递给“|…

实现SpringBoot项目嵌入其他项目

很多时候我们需要在项目里面嵌入其他项目或者被其他项目嵌入,如我们开发一个开源项目b,用户需要在自己的项目a嵌入b项目,使用b项目的功能,而且要实现a项目工作最小化,最好实现引入即用。 1.定义b项目的自定义配置 …

Fiddler查看服务器响应数据有乱码,如何解决?

解决方案: 第1步: (1)打开注册表,快捷键winr,操作如下图所示: (2) 在运行输入框中输入:regedit。 第2步:进入注册页主界面,如下图所示&#x…

ASP.net Core EntityFramework Code EF code 汇总

Entity FrameWork EF 总结 EF Core EF Core 如果实体模型很多,全部放在 上下文中的 OnModelCreating(ModelBuilder modelBuilder) 不太好维护 可以把实体模型 分离出去,每个类创建一个实体模型 public class BookConfiguration :IEntityT…

Docker概述与基础入门

1. 什么是Docker? Docker 是一个开源的平台,用于自动化应用程序的构建、部署和管理。它允许开发人员通过将应用程序及其依赖项打包成容器镜像,从而确保应用可以在任何环境中一致地运行。Docker 容器是轻量级的、可移植的、且具有高度隔离性的…

【Linux学习】十五、Linux/CentOS 7 用户和组管理

Linux下组和用户的管理都必须是root用户下进行: 一、组的管理 1.组的创建 格式: groupadd 组名参数: -g:指定用户组的组ID(GID),如果不提供则由系统自动分配。 【案例】创建一个名为 oldg…

XV6 开发环境搭建

Step 1 搭建ubuntu 20.04 虚拟机 注意:一定要使用ubuntu 20.04,该版本可以直接通过deb安装gnu编译工具链。 安装完虚拟机后,换apt源。 ubuntu20.04镜像下载链接 设置root账户密码: sudo passwd root Step 2 下载解压qemu 5.1.0 wget ht…

计算机网络-基础概念(HTTP,TPC/IP, DNS,URL)

HTTP不同的版本 HTTP0.9于1990年问世,此时HTTP并没有作为正式的标准被建立。HTTP正式被公布是1996年的5月,版本命名为HTTP/1.0。HTTP1.1,1997年1月公布,目前仍然是主流版本的HTTP协议版本。 TCP/IP 通常使用的网络是在TCP/IP协…