密码学导论--伪随机性和流密码

本文探讨了加密算法设计的两种基本策略,包括流密码(通过伪随机数生成器实现伪随机性)和分组密码。重点关注了流密码中的伪随机数生成和选择明文攻击,以及通过反馈移位寄存器和非线性组合提高安全性,最后介绍了祖冲之密码算法ZUC的特点和应用。
摘要由CSDN通过智能技术生成

伪随机性

计算安全方案,|K|<<|m| ≤ \leq |c|。也就是密钥长度过小。两种思路,一是拉长密钥(流密码),二是明文分组(分组密码)。

一、加密算法设计的两种基本策略

  1. 流密码(序列密码)
  • 密钥扩展到与密文等长(映射不变,即拉长密钥)
  • 加密算法一般为异或操作
  • 其安全性主要在于密钥扩展后的随机性(伪随机性)
  1. 分组密码
  • 明文分成等长的分组(比如64位、128位)
  • 对每个分组采用相同的加密算法进行加密
  • 算法一般是交替使用混乱和扩散技术
    (即代换和置换,对二进制的位01进行操作,混乱如16进制,用0->a,e->3,扩散即置换位置)

二、流密码

如何将密钥扩展后具有随机性,即伪随机性?使用伪随机数发生器

1 伪随机数发生器PRG(Pseudorandom Generator )

一个确定性的多项式算法
G : { 0 , 1 } n G:\left\{0,1\right\}^n G:{0,1}n { 0 , 1 } l ( n ) \left\{0,1\right\}^{l(n)} {0,1}l(n)
为一个伪随机数发生器,满足两个性质:
1.扩展性 l ( n ) > n l(n)>n l(n)>n。( l ( n ) l(n) l(n)称为扩展因子)
2.伪随机性:对任意PPT算法D在这里插入图片描述
即区分出输入来自随机数r还是伪随机数生成器 G ( k ) G(k) G(k)的概率小于 n e g l ( n ) negl(n) negl(n)

注:

  • n为安全参数
  • l(n)为扩展因子,n的多项式
  • k为密钥,长度为n
  • G(k)为确定性多项式时间算法,即伪随机数发生器,k->l(n)
  • 确定性指的是,对于同一个输入,输出相同(不能抵抗选择明文攻击)

加密方案:
在这里插入图片描述
与理想加密算法(即一次一密形式的完善保密)区别仅为用随机数代替了伪随机数。

2 选择明文攻击实验 P r i v K A , Π c p a ( n ) PrivK^{cpa}_{A,Π}(n) PrivKA,Πcpa(n)

在这里插入图片描述

任何确定性加密算法在选择明文攻击下都不是安全的。

3 随机加密

由于流密码是确定算法,在选择明文攻击下并不安全,因此需要改进,引入随机加密。

在这里插入图片描述


三、反馈移位寄存器

  1. 移位寄存器(Shift Register,SR)曾在SM4中提到过,是指有若干个寄存器排成一行,每个寄存器中都存储着一个二进制数(0或1)。移位寄存器每次把最右端(末端)的数字输出,然后整体向右移动一位。
  2. 反馈移位寄存器(Feedback Shift Register,FSR):在移位寄存器向右移位一位以后,左边就会空出一位(如上图所示),这时如果采用一个反馈函数,以寄存器中已有的某些序列作为反馈函数的输入,在函数中经过一定的运算后,将反馈函数输出的结果填充到移位寄存器的最左端,那么这样的移位寄存器就会有源源不断的输出。这样的,拥有反馈函数的移位寄存器称为反馈移位寄存器。
  3. 线性反馈移位寄存器(Linear Feedback Shift Register,LFSR):反馈移位寄存器的反馈函数是线性函数(即只进行简单线性运算的函数)

假设一个3位反馈移位寄存器中存储着数据101,则不断移位、输出的效果如图所示:

在这里插入图片描述
在线性反馈移位寄存器中假定(c1,c2,…,cn)中至少一个不为0,且cn=1,n级的输出序列周期即状态周期 ≤ \leq 2 n − 1 2^n-1 2n1。周期达到最大值的序列称为m序列。
线性反馈移位寄存器:
在这里插入图片描述
以线性反馈移位寄存器的输出序列作为密钥流容易被代数方法攻击,需要引入非线性

  1. 非线性反馈移位寄存器
    对(多个)LFSR的输出进行非线性组合。
  • 组合方式不能与任意一个LFSR有太高的相关性。
  • 最终输出必须无偏差,即0和1的个数相同。

其他非线性方式:

  • 反馈函数采用非线性布尔函数
  • 输出采用寄存器比特的非线性组合(而非输出最右侧的比特)

四、祖冲之密码算法ZUC

序列密码的国际加密标准
(其他:SM2->公钥加密 SM3->Hash SM4->分组加密 SM9->身份认证,签名)

  • 基于字设计的同步序列密码算法
  • 种子密钥SK和初始向量IV长度均为128比特
  • 每拍输出一个32比特的密钥字
    在这里插入图片描述
  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值