序列密码体制——密码学笔记(三)

一、密码学中的随机数

许多密码系统的安全性都依赖于随机数的生成,例如DES加密算法中的密钥,RSA加密和数字签名中的素数。

序列密码的保密性完全取决于密钥的随机性。

如果密钥是真正的随机数,则这种体制在理论上就是不可破译的。但这种方式所需的密钥量大得惊人,在实际上是不可行的。目前一般采用伪随机序列来代替随机序列作为密钥序列,也就是序列存在着一定的循环周期。这样序列周期的长短就成为保密性的关键。如果周期足够长,就会有比较好的保密性。现在周期小于10的10次方的序列很少被使用,周期长达10的50次方的序列也并不少见。


伪随机数产生器(PRNG):

何谓伪随机数产生器(PRNG)?假定需要生成介于1和10之间的随机数,每一个数出现的几率都是一样的。理想情况下,应生成0到1之间的一个值,不考虑以前值,这个范围中的每一个值出现的几率都是一样的,然后再将该值乘以10。

由任何伪随机数生成器返回的数目会受到0到N之间整数数目的限制。因为常见情况下,伪随机数生成器生成0到N之间的一个整数,返回的整数再除以N。可以得出的数字总是处于0和1之间。对生成器随后的调用采用第一次运行产生的整数,并将它传给一个函数,以生成0到N之间的一个新整数,然后再将新整数除以N返回。

二、序列密码的概念及模型


  1. 密钥发生器(也称滚动密钥发生器)输出一系列比特流(记为k1,k2,k3...ki),密钥流(也称滚动密钥)跟明文比特流(记为m1,m2...mi)进行异或运算产生密文比特流。
  2. 在解密端,密文流与完全相同的密钥流异或运算恢复出明文流。

事实上,序列密码算法的安全性依赖于简单的异或运算和一次一密乱码本。密钥流发生器生成的看似随机的密钥流实际上是确定的,在解密的时候能很好的将其再现。密钥流发生器输出的密钥越接近随机,对密码分析者来说就越困难。

一次一密乱码本:一种理想的加密方案,可以简单理解为每个密钥仅对一个消息使用一次。


如果密钥流发生器每次都生成同样的密钥流的话,就很容易被破译。假设Alice得到一份密文和相应的明文,她就可以将两者异或恢复出密钥流。或者,如果她有两个用同一个密钥流加密的密文,她就可以让两者异或得到两个明文互相异或而成的消息,接着就可以用明文和密文异或得出密钥流。在这种情况下,她就可以解密拦截到的任何密文消息,并阅读以前截获到的消息。


因此,流密码强度完全依赖于密钥序列的随机性和不可预测性。

          所有序列密码都有密钥,且密钥发生流的输出是密钥的函数。


三、流密码的分类

序列密码体制关键就在于这个产生密钥序列的方法,也就是密钥序列产生器应具有良好的随机性,让密钥序列不可预测。不过一般都是伪随机。分组密码的关键是加解密算法让明文密文关联尽可能复杂。

序列密码分为同步序列密码和自(异)同步序列密码。啥区别呢,就是前者密钥序列独立于明文序列和密文序列。后者并不独立。

同步序列密码:

密钥流的产生于明文消息流相互独立,即密钥序列产生算法与明文无关,所产生的密钥序列也与明文无关。在通信过程中,通信的双方必须保持精确的同步,收方才能正确解密,如果失步收方将不能正确解密。例如,如果通信中丢失或增加了一个密文字符,则收方的解密将一直错误。


同步序列密码就是密钥流的每一位是前面固定数量密文位的函数。如上图,其中,内部状态是前面n比特密文的函数,该算法的密码复杂性在于输出函数,它收到内部状态后生成密钥序列位。


实际上,序列密码不可能做到“一次一密”,但若密钥流生成器生成的密钥周期足够长,且随机性好,其安全强度可以得到保证!因此,序列密码的设计核心在于密钥流生成器的设计,序列密码的安全强度取决于密钥流生成器生成的密钥周期、复杂度、随机(伪随机)特性等。


自同步序列密码:

密钥流的产生于之前已经产生的若干密文有关,即密钥序列产生算法与明文(密文)相关,则所产生的密钥序列与明文(密文)相关。

https://wenku.baidu.com/view/56ffd3c20c22590103029d04.html

https://max.book118.com/html/2016/1207/69368879.shtm

分组密码与序列密码的区别

分组密码:是对一个大的明文数据块(分组)进行固定变换的操作。
序列密码:是对单个明文位的随时间变换的操作。

尽管分组和序列密码非常不同,但分组密码也可作为序列密码使用,反之亦然。两者的区别主要体现在实现上:
1. 每次只能对一个数据位进行加密和解密的序列密码并不适用于软件实现。分组密码算法就可以很容易地用软件实现,因为它可以避免耗时的位操作,并且它易于处理计算机界定大小的数据分组。
2. 序列密码更适合用硬件实现,因为使用硅材料可以非常有效地实现它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值