A5-1加密算法
1、基本原理
A5-1加密算法是一种流password,通过密钥流对明文进行加密。然后用密钥流进行对密文的解密操作。
这样的算法主要用于GSM加密。也就是我们平时打电话的时候。通信数据发送到基站,基站发送到还有一个基站,基站发送到接收方。
每次通话的时候,基站会产生一个64位的随机数,与我们手机sim卡内本身带的一个password利用一种加密算法生成一个密钥。这个密钥就是这次通话过程中使用的主密钥,此密钥的生命周期为这一次通话的開始到结束。一旦通话完毕。那么这个密钥也就没实用了。
该加密算法把整个通讯的数据划分为每一帧来进行加密。每一帧是有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
三个反馈多项式如上所看到的。
2、所用工具
依据上面所讲的。我们基本能够确定,假设要实现a5-1的加密算法。我们须要哪些工具:
首先是明文,其次是64位的密钥。三个LFSR。以及帧号。
算法的输入应该就是三个LFSR的初始值,算法的输出就是我们加密明文所须要的乱数。
3、实现步骤
算法整体来说分为三个部分。初始化,运算,输出乱数
A5-1加密算法实现的逻辑结构图例如以下:
首先是初始化部分:
(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的相应的寄存器将会移动。
依据上面的步骤就能够算出当我们把通讯数据分割成每一帧,然后对每一帧进行加密传输的时候。所须要的那个加密的乱数是怎么得来的。至于加密过程非常easy。就是明文和乱数的异或操作。
DES加密算法
假设说A5-1是流password的加密算法的话,那么DES就是分组password体制中典型的一个算法。
分组password的主要思想。就是把明文和密钥都分成一定长度的很多断数据,为了保证每个明文都只唯独一个密钥。须要做的就是分组的密钥长度要大于等于分组的明文长度。通过分组加密,每一组使用的密钥都不同样,这就是主要的分组password。
分组password的安全性除了收到一些密钥长度參数的影响之外。最重要的两个原则就是混乱原则和扩散原则。
混乱原则要求明文和密文在逻辑上的关系越复杂越好。为了保证混乱原则的实行。我们将尽可能使用非线性的变换。
扩散原则,我理解是这样的,在设计password的时候,通过实行混乱原则。使得我们的password会在整个序列的某基础发生混乱,那么扩散原则要做的,就是要通过移位的方式,将这样的混乱最大化。让明文和密钥的变化尽可能多的影响密文的生成。这样的思想最典型的体现,就是S-P网络。
分组password中的一个非常典型的样例就是DES算法:
DES算法也是分组password的一个案例,它属于分组password中的迭代分组password。即用简单的加密措施先构造出一个加密函数来,之后不断的进行乘积迭代。两个简单的方式乘积在一起的话。会形成一个更加复杂的password函数,DES正式利用这种思想来实现。
DES加密算法的实现须要几个工具:
1.分组长度2.密钥长度3.迭代次数4.子密钥长度
DES默认分组长度为64bit,密钥长度也是64bit,迭代次数为16,子密钥的长度为48位
DES加密算法的输入是一组64bit的明文,输出是64bit的密文
算法运行过程中有3步:初始变换, 16轮迭代, 初始逆变换
要注意的是。DES的算法中的比特序号是从1開始。而且是从左边開始。
DES算法中的初始变换:
初始变化实际上就是对明文序列进行顺序打乱操作。
他会依照一个特定的表格进行对比移动。
初始逆置换是对16次迭代后的结果序列进行移位操作,也是有一个对比表,告诉你移动的规则。
DES算法中的圈函数:
从上面的DES算法的逻辑结构图中能够看出。他李永乐Feistel模型进行迭代password的实现。那么这个迭代有一个圈函数
L