关闭

密码学基础知识(五)序列密码

标签: 信息安全密码学通信
3347人阅读 评论(0) 收藏 举报
分类:

序列密码,也就是流密码,是对称密码。跟前面分组密码的区别就在于其加密变换的对象比分组的块小,一般是Bit。前面说过的vernam密码就是一种序列密码。

序列密码的特点有哪些呢?

     明文:被加密的是叫明文字。是明文序列的一项。

     密钥:由主密钥(初始密钥)产生一个密钥序列,长度和明文字bit长度相同。相应的别叫做密钥字。

     密文:经加密函数,明文字与密钥产生了密文字。

     加密:与现态(当前状态)有关。照分组密码的OFB和CFB理解。

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

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

同步序列密码特点:消息的发送者和接受者必须同步,即相同的密钥。

自同步序列密码特点:明文统计扩散。

好了,说完这些啰嗦的东西,咱们就说说这关键的密钥序列产生器:

         密钥流产生器。一般看做一个有限状态自动机,这个机又是啥呢?可以这样理解,它有三部分,分别是有限状态集,有限输入字符集和有限输出字符集,状态转移函数。就是在状态Si,输入为Ai时,状态装换为Sh并输出Ah。放在咱们序列密码中,就是把密钥流当做输入,当状态一变,就输出。

         好了,那问题来了,这状态序列怎么确定呢?还有你说输出就输出,咋输出的呢?

         我们将控制状态序列的部分叫驱动器,一般利用线性反馈移位寄存器。一般要求最长周期或m序列产生器实现。这样就能为非线性组合部分提供统计性能好的序列了。

         我们将进行非线性组合产生输出序列的部分叫非线性组合部分。要求F输入是二元序列输出也得是,这是最基本要求。对于可定的序列,F应使输出序列周期足够大。

         那就谈谈线性反馈移位寄存器(LFSR)。

一个n阶反馈寄存器,由n个二元寄存器和一个反馈函数组成。这n个寄存器的内容所形成的向量即为此时状态。所以其有2n个状态。T时刻LFSR状态为st=(at,at+1,…at+n-1),t+1时刻:st+1=(at+1,at+2,…,at+n),两者一比,发现两点不同:

1.    at输出了。就这样,状态改变就输出一个,成了输出序列。S0是及寄存器的初始状态。

2.    多了个at+n,其求法:at+n=f(at,at+1,…at+n-1)。f就是反馈函数。当f的运算为模2加法时,称为线性移位反馈寄存器(LFSR)。

LFSR特点:

初始状态非0,新状态就非0;初始为0 ,状态恒为0。

选择合适的f反馈函数可以使周期达到2n-1,即m序列。(2n长明密文就可攻破,毕竟伪随机)

驱动部分就说这么多,下面说说几种非线性序列生成器,一般都是几个LFSR组合起来:

gaffe:3个LFSR,LFSR1,3是输入,LFSR2是输出。

J-K触发器:2个LFSR, Pless产生器是其加强版。

Pless产生器:8个LFSR,4个J-K,一个循环计数器。

钟控序列产生器:2个LFSR,一个控制另一个的时钟脉冲。

门限产生器:可变数量n个LFSR。要求:大奇数,所有LFSR长度互素,反馈多项式都是本原的,这样就最大周期了。

总结一下:序列密码进行bit加密,有明文字,密钥字,密文字,关键在于密钥产生器,其分两部分,驱动(状态转移函数,输出函数,状态集和输出集)和非线性组合。驱动一般是LFSR,LFSR是反馈函数f运算为模2加法。最后介绍了集中产生器,都是LFSR组合的,想法设法达成最大周期。


典型的序列密码算法:RC4,A5和SNOW2.0,最后一个不细说。

首先RC4:被广泛应用

     基于非线性数据表变换的序列密码。有一个足够大的数据表提供进行非线性变换,产生非线性输出序列,它也叫S盒,S盒大小为2n,通常n=8。RC4每个输出都是S盒中的随机元素。

好了,那么问题又来了,S盒内是咋排列的?又是怎么随机选出来的?

     主角登场:KSA密钥调度算法和PRGA伪随机生成算法,分别解决上述两个问题。

KSA:

S初始化:把0~255线性填入。

T初始化:临时向量T,将主密钥K值付给T,假如K长度小于L,那就将K重复赋值给L,直到L都被赋值了。

用T对S置换:按照T[i]对S进行位置置换,就把元素换个位置。

结束了KSA就是PRFA了

PRGA:从S中随机取出,并修改S方便下次选取

     就是一个算法

所以我们发现其实S盒里就是0-255,只不过是位置一直在变。

RC4至少128位密钥才安全。

 

A5算法:GSM

     介绍下A5/1,典型的基于LFSR的序列密码算法,3个LFSR,阶数分别为19,22,23,均为本原多项式。64位密钥。

     已经明文就可破解A5/1,原因:算法设计太简单,没有足够的混淆和扩散。

 

 

SNOW2.0:

     基于LFSR和有限状态机的序列密码算法。1个LFSR+1个有限状态转换机(2个32位寄存器)。主密钥K:128位或256位,初始向量:128位。


就这些吧,算法谷歌度娘多得是,有功夫我再写个上来。懒得写啊。

0
0
查看评论

密码学常见基本概念-序列密码,一次一密

提到序列密码,不得不先从一次一密这个概念说起。     一次一密(one-timepad)指在流密码当中使用与消息长度等长的随机密钥,密钥本身只使用一次。就字面来说,一次一密就是一个完全随机的密钥只使用一次,用这个密钥对明文进行加密后销毁,然后下次加密使用下...
  • BadAyase
  • BadAyase
  • 2016-12-20 21:13
  • 1351

《祖冲之序列密码算法》(国密)

序号 标准编号 标准名称 简 介 1 GM/T 0001-2012 《祖冲之序列密码算法》 规定祖冲之序列密码算法,以及基于祖冲之算法的机密性算法和完整性算法的算法结构和算法描述,并给出了运算示例。   应用领域:4G无线通信、新一代宽带无线移动通...
  • CBEMA
  • CBEMA
  • 2014-03-18 17:42
  • 5058

EA&UML日拱一卒--序列图(Sequence Diagram)::同步/异步

本文主要介绍消息的三个种类:同步调用,异步调用和异步信号。
  • craftsman1970
  • craftsman1970
  • 2017-05-03 18:54
  • 1197

Vernam加密法 Playfair密码加密

#include <stdio.h> #include <iostream> #include <math.h> #include <stdlib.h> #include <ctype.h> #include <algorithm&g...
  • u014427196
  • u014427196
  • 2015-09-23 18:48
  • 587

全部古典密码加密与解密的C语言程序

  • 2015-05-30 16:11
  • 10KB
  • 下载

密码学基础知识

基本概念:(1)最好的算法是那些已经公开的,并经过世界上最好的密码分析家们多年的攻击,但还是不能破译的算法(2)怎样才算是一个安全的密码系统如果不论密码分析者有多少密文,都没有足够的信息恢复出明文,那么这个算法就是无条件保密的,事实上,只有一次一密乱码本(参看1.5节),才是不可破的(给出无限多的资...
  • guanbin
  • guanbin
  • 2005-07-01 17:49
  • 2238

流密码

流密码: 流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0,1数字),字符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流实现。
  • zhkchd
  • zhkchd
  • 2013-12-04 17:03
  • 2085

线性反馈移位寄存器的实现

1、写出n阶线性反馈移位寄存器的实现过程 2、假设一个GF(2)上的5阶线性反馈移位寄存器的反馈函数为 f(x1,x2,x3,x4,x5)=x1+x5 初始状态为10011,试写出该线性反馈移位寄存器的输出序列程序:#include<iostream> #include<ma...
  • qq_14858923
  • qq_14858923
  • 2016-04-23 15:04
  • 2126

基于C++的LFSR+JK触发器代码实现

  • 2013-12-11 20:22
  • 41KB
  • 下载

A5/1流密码算法详解

A5/1 A5 / 1是用于在GSM蜂窝电话标准中提供无线通信隐私的流密码。它是为GSM使用指定的七种算法之一。最初是保密的,但通过泄漏和逆向工程成为公众的知识。 密码中存在一些严重的弱点。 算法步骤: A5/1算法使用3个线性反馈移位寄存器,简称为LFSR。三个寄存器的分...
  • jerry81333
  • jerry81333
  • 2017-11-27 04:37
  • 633
    个人资料
    • 访问:25071次
    • 积分:431
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条