美文网首页
序列密码--A5-1算法

序列密码--A5-1算法

作者: reknow | 来源:发表于2017-07-18 13:09 被阅读0次

A5-1算法

基本原理

A5-1算法用于蜂窝式移动电话系统中的语音加密,主要用于用于的手机到基站之间的加密通信。通信内容到基站后先脱密变成明文,然后在进行基站到基站之间、以及基站到用户手机之间的信息加密,完成通信内容在通信过程的加密保护。
  每次通话的时候,基站会产生一个64比特的随机数,与我们手机sim卡内本身带的一个密码利用一种加密算法生成一个密钥,这个密钥就是这次通话过程中使用的主密钥,此密钥的生命周期为这一次通话的开始到结束。一旦通话完成,那么这个密钥也就没有用了。
  该加密算法把整个通讯的数据划分为每一帧来进行加密。每一帧是有228比特,其中发送端给接收端的数据114比特,接收端反馈给发送端的数据有114比特。除了上面提出的基站给出的64比特的总密钥,针对每一帧的加密,还有一种叫做会话密钥,这种会话密钥每加密一帧都会改变,会话密钥的生成是由帧号来决定的。每一次的会话密钥都会产生一个228比特的乱数来加密这一帧的数据。加密的方式是异或。帧号一共用22比特的二进制数来表示,也就是说一次通话只能传递2^22次方的通讯数据,因为每一次通话只有这么多帧可以进行加密数据并且传递。

A5-1算法基于三个线性移位反馈寄存器实现的。三个LFSR的级数分别是19 22 23。
f1(x) = x^19 + x^18 + x^17 + x^14 + 1
f2(x) = x^22 + x^21 + 1
f3(x) = x^23 + x^22 + x^21 + x^8 + 1
三个反馈多项式如上所示。

所用工具

根据上面所讲的,如果要实现a5-1的加密算法,我们需要哪些工具:首先是明文,其次是64位的密钥,三个LFSR,以及帧号。
  算法的输入应该就是三个LFSR的初始值,算法的输出就是我们加密明文所需要的乱数。

实现步骤

算法总体来说分为三个部分,初始化,运算,输出乱数



首先是初始化部分:
(1)将三个寄存器内的所有位全都赋值为0
(2)将三个寄存器做64次的移位操作,每第i次操作,寄存器的反馈内容都先与密钥中的第i位进行异或,然后把这样异或的结果作为寄存器此次的反馈内容。三个LSFR都要并行的做这样的工作64次。
(2)将三个寄存器做22次的移位操作,没第i次操作,寄存器的反馈项都先与帧序号的第i位进行异或,将异或的结果作为寄存器的最终反馈内容,同样,三个LSFR也都要并行做22次。
上述三步做完,A5-1加密算法的初始化操作也就做完了。另外需要注意的是,A5-1加密算法的LSFR是左移操作,并且,密钥和帧号都是从最低位到最高位编号。
当初始化步骤完成的时候,此时三个LSFR的状态合称为S0状态。

接下来是计算和输出部分:
大家可以看到,上面的逻辑结构图中,有一个叫做钟控的部分,他有三个输出三个输入,三个输入是分别来三个LSFR的某一个固定位,输出0或者1, 输出0表示此次这个LSFR不会工作,也就是不会发生移动等等,输出的是1的话,那么这个LSFR此次就会移动一位并且得出反馈的结果。也就是说这个钟控在控制着三个LSFR的工作与否。
首先根据钟控的方式三个LSFR连续移动100次,但是不输出乱数,此时应该只是做一个混乱的操作。因为LSFR在移动过程中,每一位寄存器内的数值都会不一样,所以在钟控决定每个寄存器运行与否的结果时也会不相同。
接下来会三个LSFR会接着进行连续的114次的移动,也是根据钟控的方式。这一次的移动过程中,三个寄存器将分别把最高位寄存器的值输出,然后三个值做异或运算,形成第i个乱数。这次114次移动会生成一个114位的乱数,用于对手机到基站这一段的数据加密。
之后再进行一次100次的移动和114次的移动,结果和上面说的相同,最终产生的114位密钥用于基站到手机这段的通讯数据加密。

关于钟控:
钟控将第一个寄存器的第八位,第二个寄存器的第10位,第三个寄存器的第10位。抽取这三个位用于控制三个LSFR的动作与否。他们决定的原则类似少数服从多数,三位一共有8种排列方式,当三位中1的个数多余0的个数时,那么这三位是1的对应的寄存器将会移动, 为0的不会,如果三位数中0的个数多余1的个数时,那么三位之中是0的对应的寄存器将会移动。

根据上面的步骤就可以算出当我们把通讯数据切割成每一帧,然后对每一帧进行加密传输的时候,所需要的那个加密的乱数是怎么得来的。至于加密过程很简单,就是明文和乱数的异或操作。

相关文章

  • 序列密码--A5-1算法

    A5-1算法 基本原理 A5-1算法用于蜂窝式移动电话系统中的语音加密,主要用于用于的手机到基站之间的加密通信。通...

  • DES加密算法原理

    什么是对称密码算法 网络安全通信中要用到两类密码算法,一类是对称密码算法,另一类是非对称密码算法。对称密码算法有时...

  • Java分组密码算法DES

    Java分组密码算法DES 1实验内容 掌握分组密码算法DES方法,能用高级语言实现分组密码算法DES。DES算法...

  • PKI知识点整理

    1 基础 1.1 对称算法 描述:对称加密是指加密过程和解密过程使用相同的密码。主要分:分组加密、序列加密。 原理...

  • 外泌体相关文章

    Nature | 破解miRNA释放或滞留的序列密码Nature | 破解miRNA释放或滞留的序列密码[http...

  • 序列密码

    什么是序列密码 使用序列密码对某一消息m执行加密操作时一般是先将m分成连续的符合(一般为比特串),m=m1m2m3...

  • 短网址(short URL)系统的原理及其实现

    内容来源 1. 短链接的两种常用算法: 自增序列算法 和摘要算法 分析:其中自增序列算法也叫永不循环算法,摘要算...

  • 密码学因区块链更“值钱” 区块链因密码学更“完善”

    作者:上海交大教授、密码学家来学嘉 与密码算法密不可分的区块链 首先,区块链是密码算法搭起来的,所以说它和密码算法...

  • C++ STL alg

    四类:STL算法原文详解 1、非可变序列算法:指不直接修改其所操作的容器内容的算法。 2、可变序列算法:指可以修改...

  • 仿射密码Python实现

    算法分析 仿射密码结合了移位密码和乘数密码的特点,是移位密码和乘数密码的组合。 仿射密码的加密算法就是一个线性变化...

网友评论

      本文标题:序列密码--A5-1算法

      本文链接:https://www.haomeiwen.com/subject/mbthkxtx.html