A5/1流密码算法详解

A5/1

A5 / 1是用于在GSM蜂窝电话标准中提供无线通信隐私的流密码。它是为GSM使用指定的七种算法之一。最初是保密的,但通过泄漏和逆向工程成为公众的知识。 密码中存在一些严重的弱点。


算法步骤:

A5/1流密码算法详解_第1张图片

A5/1算法使用3个线性反馈移位寄存器,简称为LFSR。三个寄存器的分别为19位、22位、23位。这里要使用三个共包含64位二进制的线性反馈移位寄存器,这个设计绝非偶然。绝非巧合的是,A5/1算法的密钥K也是64位。该密钥用于三个线性反馈移位寄存器的初始填充,也就是说,该密钥用于充当三个寄存器的初始值。这三个寄存器用密钥填充之后,就可以开始生成密钥流了。

每个回合步骤可以拆分为:取KEY,反馈多项式(Feedback Polynomial),位移


取Key:

取三个寄存器的最后一位,也就是19位、22位、23位,进行XOR操作,得到的结果为这一轮Key的一位。


反馈多项式(Feedback Polynomial):

LFSR进行位移的前置操作,具体可以分成两步:判定是否需要进行位移,判定新的充填的值。


判定是否需要进行位移:

这里使用的是择多原则,三个寄存器中选择三个钟控信号,19位中的第8位,22位,23位中皆为第10位,两种二进制0,1,必定有0或1数量居多,居多的寄存器需要进行位移操作。


判定新的充填的值:

这里需要用到反馈多项式:

A5/1流密码算法详解_第2张图片

XOR后得到的值是充填到第0位的值。


位移:

三个寄存器,由上一步的判定后进行位移,空出第0位用于充填反馈多项式得到的值。


安全性

针对A5 / 1的攻击已经被公布了很多,美国国家安全局能够按照公布的内部文件对A5 / 1信息进行例行解密。


A5 / 1的第一次攻击是由罗斯·安德森在1994年提出的。安德森的基本思想是猜测寄存器R1和R2的全部内容以及大约一半的寄存器R3。这样,所有三个寄存器的时钟都被确定,并且R3的后一半可以被计算出来。

Golic在1997年提出了一个基于求解时间复杂度为240.16的线性方程组的攻击方法(单位根据线性方程组的解的个数)。

在2000年,Alex Biryukov,Adi Shamir和David Wagner证明A5 / 1可以基于Jovan Golic的早期工作,使用时间记忆折衷攻击实时进行密码分析。一个权衡使得攻击者可以在一秒钟内从已知明文的两分钟内重新构造密钥,或者在已知纯文本的两秒钟之内在几分钟内重建密钥,但是他必须首先完成昂贵的预处理阶段,需要248个步骤来计算大约300GB的数据。预处理,数据需求,攻击时间和内存复杂度之间的几个折衷是可能的。

同一年,Eli Biham和Orr Dunkelman也发表了一个攻击A5 / 1的算法,其总工作复杂度为239.91个A5 / 1个时钟,给出了220.8位已知明文。在238的预计算阶段之后,攻击需要32 GB的数据存储。

Ekdahl和Johannson发表了一个关于初始化程序的攻击,它使用两到五分钟的对话明文在几分钟内打破A5 / 1。这种攻击不需要预处理阶段。 2004年,Maximov等人将此结果改进为“不到一分钟计算,几秒钟已知会话”的攻击。 Elad Barkan和Eli Biham在2005年进一步改善了这次袭击。

你可能感兴趣的:(信息安全,密码学)