密码学复习 序列密码(流密码)

基本原理

在序列密码中,明文按一定长度分组后被表示成一个序列,称为明文流,序列中的一项称为“明文字”。加密时,先由主密钥产生一个密钥流序列,该序列的每一项和明文字具有相同的比特长度,称为一个“密钥字”。然后依次把明文流和密钥流中的对应项输入加密函数,产生相应的“密文字”,由密文字构成密文流输出。令
在这里插入图片描述
序列密码原理图
序列密码的设计重点是密钥流生成器,其核心问题是如何衡量伪随机性和有效地生成伪随机序列。
在这里插入图片描述

同步流密码

在这里插入图片描述
在这里插入图片描述
同步流密码密钥生成器
在这里插入图片描述
同步流密码系统
在这里插入图片描述
同步流密码的特点如下:
(1)同步要求。在同步密码中,消息的发送者和接收者必须同步才能做到正确的加密和解密,即双方使用相同的密钥,并用其对同一状态进行操作。一旦由于密文字符在传递过程中被插入或删除而破坏了这种同步性,那么解密工作将失败。这时只有借助其他方式重建同步,解密才能继续进行。
(2)无错误传播。密文字符在传输过程中被修改(但未被删除和插入)并不影响其他密文字符的解密。
(3)主动攻击。一个主动攻击者对密文字符进行的插入、删除或重复都会立即破坏系统的同步性,从而可能被解密器检测出来。但主动攻击者可能有选择地对密文字符进行改动,并准确地知道这些改动对明文的影响。因此,必须采用附加技术为数据提供数据源认证,并保证数据的完整性。

自同步流密码

在这里插入图片描述
在这里插入图片描述
自同步流密码加密模型
自同步流密码加密模型
自同步流密码的特点如下:
(1)自同步。由于对当前密文字的解密仅仅依赖于固定个数的以前的密文字,因此,当密文字被插入或者删除时,密码的自同步性就会体现出来。这种密码在同步性遭到破坏时,可以自动地重建正确的解密,而且仅有固定数量的明文字不可恢复。
(2)有限的错误传播。假设一个自同步流密码系统的状态依赖于t个以前的密文字。在传输过程中,当一个单独的密文字被改动(或被插入、删除)时,至多有t个随后的密文字解密出错,然后恢复正确解密。
3)主动攻击。从性质(2)看出,主动攻击对密文字的任何改动都会引发一些密文字的解密出错。因此,与同步流密码相比,自同步流密码具有更高的被(解密器)检测出来的可能性。作为性质(1)的结果,这种密码在检测主动攻击者发起的对“密文字”的插入、删除、重复等攻击时,就更加困难,必须采用一些附加的技术来提供消息源鉴别和消息完整性。
(4)明文统计扩散。每个明文字都会影响其后的整个密文,即明文的统计学特征被扩散到了密文中。因此,自同步流密码在抵抗利用明文冗余度而发起的攻击方面要强于同步流密码。

比较同步流密码和自同步流密码的优缺点。
同步流密码:密(明)文字符是独立的,一个错误传输只会影响一个字符,不会影响后面的字符。它的优点是容易检测插入、删除、重放等主动攻击,且没有差错传播。但是,一旦接收端和发送端的种子密钥和内部状态不同步,解密就会失败,两者必须借助外界手段才能重新建立同步。
自同步流密码:密(明)文字符参与了密钥流的生成,一个错误传输将影响后面 个字符。与同步密钥流相比,其优点是即使接收端和发送端不同步,只要接收端能连续接收到 个密文字符,就能重新建立同步。因此,自同步流密码具有有限的差错传播,且能把明文每个字符扩散在密文多个字符中,强化了抗统计分析的能力。

在这里插入图片描述

密钥流生成器的架构

有限状态自动机理论

有限状态自动机是具有离散输入和输出(输入集和输出集)的一种数学模型,由以下3个部分组成:
(1)有限状态集在这里插入图片描述
(2)有限输入字符集

在这里插入图片描述
有限输出字符集
在这里插入图片描述
(3)转移函数
在这里插入图片描述

在这里插入图片描述
有限状态自动机可用有向图表示,称为状态转移图。顶点表示状态,有向弧表示输入输出字符。如下图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线性反馈移位寄存器

线性反馈移位寄存器(LFSR)是序列密码中密钥流生成器的一个重要组成部分,简言之,一个线性反馈移位寄存器由两个部分组成:移位寄存器(Shift Register)和反馈函数(Feedback Function)

移位寄存器是位序列,具有n位长的移位寄存器成为n位移位寄存器。每次输出一位,然后寄存器中的所有位都右移一位。新的最左端的位根据寄存器中其它位计算得到,寄存器输出的一位通常是最低有效位。通常反馈函数是寄存器中某些位的简单异或,这些位叫抽头序列(Tap Sequence),有时也叫Fibonacci配置。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

A5算法

A5算法由3个长度分别为19、22、23的LFSR组合而成钟控密钥流生成器。
在这里插入图片描述
在这里插入图片描述
A5算法工作过程如下:
(1) 将64bit密钥输入LFSR,因为3个LFSR的总比特数为64;
(2) 将22bit帧数与LFSR反馈值模2加,再输入LFSR;
(3) LFSR开始停—走钟控;
(4) 舍去产生的100bit输出;
(5) 产生114bit作为密钥流;
(6) 舍去产生的100bit输出;
(7) 产生114bit作为密钥流。
故共产生228bit密钥流。

RC4算法

整体实现:先用不大于256字节的可变长密钥初始化一个256字节的状态数组变量S,S的元素记为S[0],S[1],…,S[255]。然后,对S中的字节进行适当置换,置换后的S始终包含0到255所有的8bit数,每次置换后产生1字节密钥。
在这里插入图片描述

for i=0 to 255
    S[i]=i
    T[i]=K[i mod Keylen]
j=0
for i=0 to 255
    j=(j+S[i]+T[i]) mod 256
    Swap(S[i],S[j])

在这里插入图片描述

i,j=0
While (true)
   i=(i+1) mod 256
   j=(j+S[i]) mod 256
   Swap(S[i],S[j])
   t=(S[i]+S[j]) mod 256
   k=S[t]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值