正式进入密码学领域,发现密码学更像是一门数学,主要是对数论、近世代数的简单应用以及运用在算法中,常常结合模运算以及数字逻辑运算。
流密码的第一部分主要是比较了同步流密码和自同步流密码,其中自同步流密码,由于密钥流的产生与明文有关, 因而较难从理论上进行分析。目前大多 数研究成果都是关于同步流密码的。
至于移位寄存器,是流密码产生密钥流的一个主要组成部分,常用的是线性反馈移位寄存器LFCR。

流密码 (一)

文章目录

  • 流密码 (一)
    • 流密码分类
      • 同步流密码
      • 自同步流密码
    • 线性反馈移位寄存器LFSR

流密码的基本思想是利用密钥 k 产生一个密钥流 z = z0 z1 ⋯,并使用如下规则对明文 串 x = x0 x1 x2 ⋯加密: y = y0 y1 y2 ⋯ = Ez0 ( x0 ) Ez1 ( x1 ) Ez2 ( x2 )⋯。密钥流由密钥流发生 器 f 产生: zi = f( k,σ i ) ,这里σ i 是加密器中的记忆元件(存储器)在时刻 i 的状态, f 是由 密钥 k 和σ i 产生的函数。利用不断变化的加密变换对明文消息进行 逐字符(二进制 )的加密。流密码的滚动密钥 z0 = f ( k,σ 0 ) 由函数 f、密钥 k 和指定的初态σ 0 完全确定。 0 ) 由函数 f、密钥 k 和指定的初态σ 0 完全确定。此后, 由于输入加密器的明文可能 影响加密器中内部记忆元件的存储状态, 因而σ i ( i > 0)可能依赖于 k,σ 0 , x0 , x1 , ⋯, xi - 1 等参数。

流密码的特点是速度快,且不需很复杂的硬件电路。 仅有有限的差错传播,即某个位符的密码在传输中丢失或出错没有只会对这个位符产生影响。

流密码分类

对称密钥和公开密钥两种

同步和自同步两类 :根据加密器中记忆元件的存储状态σ i 是否依赖于输入的明文字符, 流密码可进一步 分成同步和自同步两种。σ i 独立于明文字符的叫做同步流密码,否则叫做自同步流密码。

同步流密码

同步流密码指在该密码系统中,密钥流的生成独立明文消息和密文。由于同步流密码的这个特性,可将同步流密码的加密器分成密钥流产生器和加密变换器两个部分

在同步流密码中, 由于 zi = f ( k,σ i )与明文字符无关, 因而此时密文字符 yi = Ezi ( xi )也不依赖于此前的明文字符。的加密变换 Ez i 可以有多种选择, 只要保证变换是可逆的即可。实际使 用的数字保密通信系统一般都是二元系统。

同步流密码的关键是密钥流产生器。一般可将其看成一个参数为 k 的有限状态自动 机, 由一个输出符号集 Z、一个状态集∑、两个函数φ和ψ以及一个初始状态σ 0 。有限状态自助机即能根据有限状态集和输入输出字符集,在转移函数下发生状态转移并形成闭合回路。为了实现这一目标,必须采用非线性函数。

目前最为流行和实用的密钥流产生器驱动部分是一个或多个线性反馈移位寄存器。

同步流密码性质:同步要求严格,需要无错误传播,单个字符的传播错误不影响,但是不能抵御主动攻击。

其中二元加法流密码是一种常见的同步流密码,其中的密钥流、明文及密文字符均为二元字符,并且输出函数h为异或函数。

自同步流密码

自同步流密码(异步流密码)指其中的密钥流是由密钥及固定个数的以前密文字符的函数所生成。 加密过程如图,t为加密寄存器的数量。

性质:自同步,有限的错误传播,传输过程有误会影响t个字符的密码,t为加密解密寄存器中的个数,不能防御主动攻击,攻击者通过攻击打断通信。明文统计扩散,前面的明文密文一直会影响后面的明文密文的产生

线性反馈移位寄存器LFSR

移位寄存器是流密码产生密钥流的一个主要组成部分。其特点:是许多密钥流生成器的基本部件 ;LFSR非常适合硬件的实现 ;可以产生大周期序列 ;可以产生具有良好统计性质的序列 ;易于利用代数方法对其进行分析 。

定义:一个长度为L的线性反馈移位寄存器(LFSR )由0,1,…,L-1共L个级和一个时钟构成,每个级都有1比特输入和1比特输出,并可存储1比特字 符;时钟用于控制数据的移动。每个时间单位内执 行下述操作: 输出0级所存储的字符,以作为输出序列的一部分。 对每个i属于[1,L-1] ,将i级的内容移入i-1级。 L-1级中存储的新元素为反馈比特 sj,它由0,1,…,L-1级中一个固定子集的内容模2相加而得。

上图尤其十分特别重要。其中常数 c i = 0 或 1, 是模 2 加法。 c i = 0 或 1 可用开关的断开和闭合来实现。输出序列{ at }满足an + t = c n at cn - 1 at+ 1 ⋯ c 1 an + t- 1,其中 t 为非负正整数。

特别注意的是:在线性反馈移位寄存器中总是假定 c 1 , c 2 , ⋯, cn 中至少有一个不为 0, 否则 f ( a1 , a2 ,⋯, an )≡0, 这样的话,在 n 个脉冲后状态必然是 00⋯0。 n 级线性反馈移位寄存器的状态周期小于等于 2n - 1。其 输出序列的周期与状态周期相等, 也小于等于 2n - 1。选择合适的反馈函数便可使 序列的周期达到最大值 2n - 1,周期达到最大值的序列称为 m序列 。

设 n 级线性移位寄存器的输出序列{ ai }满足递推关系
an+ k = c 1 an+ k - 1异或 c 2 an + k - 2 异或⋯ 异或cn ak ( * ) 对任何 k≥1 成立。这种递推关系可用一个一元高次多项式
p( x) = 1 + c 1 x + ⋯ + cn - 1 xn - 1 + cn xn

表示, 称这个多项式为 LFSR 的特征多项式或特征多项式。


看一个例子:


定理 :n 级 LFSR 产生的序列有最大周期 2^n - 1 的必要条件是其特征多项式为不可约的。

证明 : 设 n级 LFSR 产生的序列周期达到最大 2^n - 1, 除 0 序列外, 每一序列的周期 由特征多项式惟一决定, 而与初始状态无关。设特征多项式为 p( x) , 若 p( x)可约, 可设 为 p( x) = g( x) h( x) , 其中 g( x)不可约, 且次数 k < n。由于 G( g( x)) 属于G( p( x) ) , 而 G( g( x) ) 中序列的周期一方面不超过 2^k - 1 , 另一方面又等于 2^n - 1, 这是矛盾的, 所以 p( x) 不可约。 (证毕)

逆定理不成立f( x) = x^4 + x^3 + x^2 + x + 1 为 GF(2)上的不可约多项式, 这可由 x, x + 1 ,
x^2+x + 1 都不能整除 f ( x)得到。以 f ( x)为特征多项式的 LFSR 的输出序列可由
ak = ak - 1异或 ak - 2 异或ak - 3 异或ak - 4 ( k ≥ 4) 和给定的初始状态求出, 设初始状态为 0001, 则输出序列为 000110001100011⋯, 周期为 5 ,不是 m 序列。

**定理 ** 若 n次不可约多项式 p( x)的阶为 2n - 1 ,则称 p( x)是 n次本原多项式。设{ a i }∈G( p( x)) , { ai }为 m 序列的充要条件是 p( x)为本原多项式。

定义:前图所示LFSR可记为 <L,C(D)>。若 C(D) 的次数为L,则称此LFSR为非奇异的。对于每一个i, 属于[0,L-1] ,若i级的初始存储值为si属于{0,1} ,则称 [sL-1,…,s1,s0]为该LFSR的初始状态.LFSR <L,C(D)> 的每一个输出序列(即对于所有可能的初始状态)是周期的,当且仅当联结多项式的 C(D)次数为L。

流密码(一)同步流密码、自同步流密码以及线性反馈移位寄存器相关推荐

  1. 线性反馈移位寄存器(LSFR)

    线性反馈移位寄存器(LSFR) 流密码的流密钥产生器可以通过线性驱动和非线性组合两部分来实现.而线性驱动部分可以由线性反馈移位寄存器(LFSR)来实现. 线性反馈移位寄存器(LFSR):通常由移位寄存 ...

  2. 序列密码体制(python随机数密码,RC4,线性反馈移位寄存器

    目录 概念: Vernam密码技术(序列密码的起源 伪随机数 线性反馈移位寄存器: 线性反馈移位寄存器LFSR 概念: 明文按一定长度分组后表示成一个序列,称为明文流.加密时,由种子密钥通过密钥流生产 ...

  3. HDLBITS笔记29:移位寄存器(包括4位移位寄存器,创建100位左/右旋转器,算术偏移,线性反馈移位寄存器等)

    题目1:4位移位寄存器(4-bit shift register) 构建一个具有异步复位.同步加载和使能功能的 4 位移位寄存器(右移位). reset:将移位寄存器重置为零. load: 加载数据[ ...

  4. LFSR线性反馈移位寄存器循环码编码原理

    线性反馈移位寄存器(LFSR)循环码编码原理    作为知识储备,近日在学习循环码编码的原理,教材为John G.Proakis和Masoud Salehi所著的<数字通信>第五版,循环码 ...

  5. 【数字IC手撕代码】Verilog伪随机数生成器|线性反馈移位寄存器|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  6. HDLBits 系列(21)LFSR(线性反馈移位寄存器)

    目录 5 bit LFSR 3 bit LFSR 32 bit LFSR 5 bit LFSR A linear feedback shift register is a shift register ...

  7. quartus仿真6:74194构建线性反馈移位寄存器计数器LFSR

    扭环形计数器具有8个有效状态,仍然有8个无效状态.进一步提高移位寄存器构建的计数器的有效状态数,可采用线性反馈移位寄存器计数器(Linear Feedback Shift-Register Count ...

  8. Verilog 实现伪随机数生成器(线性反馈移位寄存器)

    Verilog 实现伪随机数生成器(线性反馈移位寄存器) 1,题目 2,RTL代码设计 3,testbench测试代码 4,前仿真,波形验证 参考文献1 1,题目 不简单的进行移位,而是在移位的基础上 ...

  9. 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

    移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...

最新文章

  1. JSON字符串 拼接与解析
  2. 为师不以学为大,不如以死谢天下
  3. 【转】对服务采购订单的条目确认
  4. Sentinel(八)之熔断降级
  5. 几种常见光端机的作用介绍
  6. 离线登陆_iphone手机,苹果手机如何登陆网易163邮箱
  7. MAC安装MySQL的正确姿势
  8. 零基础转行Web前端开发自学靠谱吗?菜鸟学习前端的方法分享
  9. 附加作业:源自邹老师的作业“链接”
  10. Java开发人员可以从Spring框架中学到编程技巧
  11. 让ssh跳转支持ipv6
  12. Backward_chaining
  13. 小功能大用处 ---- 一键检测各服务器是否存活
  14. STM8L051F3_03_CLK应用
  15. 心电信号越界怎么回事_心电信号基础
  16. RADIUS协议指南
  17. d3d示例程序_3D打印改变我们现实的10个示例
  18. ios零基础学习 准备什么,如何去学习
  19. 小米笔记本Ruby默认开启fn键如何解决方法步骤
  20. Springboot毕设项目电商系统设计与实现t32la(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. mysql on.000002_mysql | 同乐学堂
  2. 2022蓝桥杯A组Python
  3. es6 filter() 数组过滤方法总结
  4. TP5的自动过滤方法
  5. 智能手表的机遇与挑战
  6. 爱创课堂每日一题第五十六天-对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?...
  7. OkHttp GET请求步骤
  8. 2018个人面试记录
  9. html动画(1)大白
  10. python现成项目_搭建python项目