非线性序列密码结构

news/2025/11/15 19:30:00/文章来源:https://www.cnblogs.com/luminescence/p/19226102

关于LFSR线性反馈移位寄存器和攻击方法B-M算法参考:序列密码概述部分:https://www.cnblogs.com/luminescence/p/18938331
下面内容主要围绕对LFSR进行非线性改造的四种经典方法展开,以克服LFSR序列线性复杂度低、易被B-M算法破解的缺陷


非线性序列密码结构

一、 非线性过滤生成器(Non-linear Filter Generator, NFG)

  1. 基本结构:
    由一个LFSR和一个非线性过滤函数 \(f\) 构成。
    LFSR负责生成线性序列,其内部状态(多个寄存器的值)作为非线性函数 \(f\) 的输入。
    函数 \(f\) 对这些状态进行非线性运算,其输出才是最终的密钥流。

  2. 工作原理图:

    LFSR状态 (a_{t}, a_{t+1}, ..., a_{t+n-1}) --> 非线性函数 f --> 密钥流比特 z_t
    
  3. 安全性:
    过滤函数 \(f\) 必须是非线性的。
    如果 \(f\) 是线性的,那么输出序列的线性复杂度不会超过LFSR的级数,无法抵抗B-M算法攻击。
    设计目标是使输出序列的线性复杂度远高于LFSR本身的级数,同时具有良好的随机性。

二、 非线性组合生成器(Non-linear Combining Generator, NCG)

  1. 基本结构:
    使用多个LFSR(如LFSR 1, LFSR 2, ..., LFSR M) 并行运行。
    每个LFSR的输出(而不是内部状态)作为一个组合函数 \(g\) 的输入。
    函数 \(g\) 对这些多个线性序列进行组合,其输出是最终的密钥流。

  2. 工作原理图:

    LFSR 1 输出 x1_t ->
    LFSR 2 输出 x2_t --> 非线性组合函数 g --> 密钥流比特 z_t
    ...                
    LFSR M 输出 xM_t ->
    
  3. 安全性:
    组合函数 \(g\) 必须是非线性的。
    如果 \(g\) 是线性的,输出序列的线性复杂度至多是所有LFSR级数之和,仍然不够安全。
    NFG可以被视为NCG的一个特例(只有一个LFSR,但函数作用于其多个状态)。
    这种结构容易遭受相关攻击,即如果攻击者能通过输出序列推测出某个LFSR的序列,就可能逐个击破。

三、 有记忆非线性组合生成器(Non-linear Combining Generator with Carry, NCGC)

  1. 基本结构:
    这是对NCG的增强,引入了记忆单元(通常为1比特或多比特)。
    它使用两个组合函数 \(f_1\)\(f_2\)
    输入包括多个LFSR的输出和当前记忆单元的值。

  2. 工作原理:
    函数 \(f_1\) 的输出用于生成当前的密钥流比特。
    函数 \(f_2\) 的输出用于更新记忆单元的值,为下一时刻的计算做准备。
    记忆的引入使得生成器的输出不仅依赖于当前的输入,还依赖于过去的历史,从而大大增加了序列的复杂度和安全性。

  3. 核心特点:
    通过记忆单元将状态概念引入组合生成器,使其成为一个有限状态机。
    能有效提高序列的线性复杂度和抵抗相关攻击的能力。

四、 钟控生成器(Clock Controlled Generator, CCG)

  1. 基本思想:
    摒弃所有LFSR同步步进的传统方式,用一个(或一组)LFSR的输出来控制另一个(或另一组)LFSR的时钟脉冲。
    被控的LFSR在某些时钟周期可能不步进(“停”),或在某些周期步进多次(“走”),从而产生不规则的输出。

  2. 常见控制方式:
    一个LFSR控制另一个LFSR:最典型的模式。
    自控制:一个LFSR参与控制它自己的时钟。
    相互控制:两个LFSR互相控制对方的时钟(如MICKEY算法)。

  3. 工作原理图:

    LFSR A (控制寄存器) --输出--> 控制逻辑 --时钟信号--> LFSR B (被控寄存器)---> 密钥流输出
    

    控制逻辑根据LFSR A的当前输出值,决定LFSR B在本时钟周期内步进多少次。

  4. 核心特点与安全性:
    通过制造不规则的运动,极大地增加了输出序列的线性复杂度和不可预测性。
    能有效破坏LFSR序列的线性结构,使其难以用标准的代数方法分析。

设计思想

所有这些结构都旨在通过非线性和增加复杂度来掩盖LFSR的线性本质,但其安全性高度依赖于非线性函数/时钟控制机制的具体设计。后期研究表明,这些经典结构若单独使用,在面对代数攻击等现代分析方法时仍显薄弱,因此现代序列密码(如Grain, Trivium)往往采用更复杂的混合结构

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025/11/15

2025/11/15学习算法

LoongOS 上传文件

LoongOS 上传文件一般开发板预装的系统都自带有一个ssh服务器 如果默认没打开ssh服务 通过ifconfig查看ip地址 打开ssh服务systemctl start sshd 然后用MobaXterm连接ssh并登录 先在控制台选好地方 比如 cd \test 直接…

2025年目前品质好的羊毛地毯厂家推荐

文章摘要 2025年羊毛地毯行业持续向环保化、个性化方向发展,手工编织与天然材质成为市场主流趋势。本文基于行业数据与用户口碑,深度评测当前市场上品质优异的羊毛地毯生产厂家,为采购商和消费者提供权威参考。文末…

2025年市场上品质好的羊毛地毯制造企业

摘要 2025年,羊毛地毯行业持续增长,消费者对环保、设计和品质的需求日益提升。本文基于行业数据和用户评价,为您呈现市场上品质优秀的羊毛地毯制造企业排名,并提供详细分析供参考。如果您有采购或合作意向,可通过…

基础设施即服务(IaaS)全面解析:云计算的基石

本文详细介绍了基础设施即服务(IaaS)的概念、架构、工作原理、实施要点、优缺点及主要供应商。IaaS作为云计算三大服务模式之一,通过虚拟化技术为企业提供灵活、可扩展的计算资源。什么是基础设施即服务(IaaS)? 基础…

CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤

CentOS 7 通过 Packstack 安装 OpenStack Train 完整步骤该文章详细指导如何在 CentOS 7 系统上通过 Packstack 工具安装 OpenStack Train。首先介绍 OpenStack 的定义、核心特性(开源免费、资源统一管理等)与应用场…

【STM32工程开源】基于STM32的人体健康监测环境

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:【C# OOP 入门到精通】从基础概念到 MVC 实战(含 SOLID 原则与完整代码)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

tailwind自定义class问题小记

非常好的问题!您提到了两个关键点: 1. @layer components 是否合适? 是的,非常合适! pure-ipt 应该定义在 @layer components 中,因为:@layer base - 用于基础样式(如 *, body, html) @layer components - 用…

2025年主流开源AI智能体框架平台概览 - 实践

2025年主流开源AI智能体框架平台概览 - 实践2025-11-15 19:06 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

threading.local()的实例化机制

threading.local() 的实例化机制threading.local() 是全局实例化一次的:它在模块/类/函数级别(通常在 __init__ 或全局作用域)创建一个单一的 local 对象实例(类型为 _thread._local)。这个对象本身是共享的(所有…

Tarjan复建

塔尖踏践他荐太监肽键抬肩台站太真。写在前面: 我 \(C_aO\) 了全™的忘干净了于是步了鱼鱼的后尘开始切黄绿DP绿蓝 \(Tarjan\) 。 哎呀呀反正肝硬化不受人待见没人看就随便写写了。强连通分量: 这个没忘干净,当年为…

采用git进行项目管理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Golang游戏开发笔记:地图索引系统实现

好家伙, 在游戏开发,尤其是后端服务的构建过程中,我们常常从一个简单的想法或原型开始。 代码直接、功能明确,一切看起来都很好。但随着项目复杂度的提升,最初的“简洁”设计往往会变成“僵化”的枷锁。0.需求分析…

20251115

依旧平凡的日常生活

网络爬虫:简单静/动态网页

爬虫实验*2 反思总结爬虫实验 实验一:静态网页 what to show? 实验一总流程 第一步:终端下载爬虫三件套第二步:创建文件。因为已经下载了vscode,这里用code进入,python运行。猜猜爬的是什么?第三步:爬虫中impo…

20232307 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20232307 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1. 实验内容 本周学习内容: 信息搜集:通过各种方式获取目标主机或网络的信息,属于攻击前的准备阶段 网络踩点:Google Hacking技术、Web信息搜集与挖掘…

EXECUTE IMMEDIATE语句分析

在 Oracle 的 PL/SQL 环境中,EXECUTE IMMEDIATE 通常需要包裹在 BEGIN...END 块中执行,因为它是 PL/SQL 的语法元素,不能直接在 SQL 命令行中单独执行(除非使用特定工具的简化模式)。 具体说明:在 PL/SQL 程序中…

产品更新与重构策略:创新与稳定的平衡之道 - 详解

产品更新与重构策略:创新与稳定的平衡之道 - 详解2025-11-15 18:47 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

MySQL MVCC实现原理

一、概述 1.1 MVCC的定义与价值 MVCC(Multi-Version Concurrency Control)是一种非锁定式并发控制技术,其核心目标是解决读写操作的相互阻塞问题。传统锁机制中,读操作加共享锁、写操作加排他锁,导致读写互斥;而…