A51加密算法论文.docx
《A51加密算法论文.docx》由会员分享,可在线阅读,更多相关《A51加密算法论文.docx(47页珍藏版)》请在冰豆网上搜索。
A51加密算法论文
A5/1加密算法的设计与实现
Designandimplementation
ofA5/1algorithm
学院:
专业班级:
学号:
学生姓名:
指导教师:
2014年6月
摘要
GSM电话系统属于应用最为广泛的移动通信标准。
移动网络是一种共享媒体,任何用户都可以拦截网络来获取自己想知道的媒体信息。
当媒体是共享的时候,任何用户都可以在此共享媒体上收听或发送信息。
从而使得通信不再是私有的。
当媒体是共享的时候,隐私和身份验证都将会丢失,除非利用一些方法来恢复它们。
这时,A5/1加密算法提供了相应的方法,来恢复对隐私和身份验证的控制。
现阶段,针对A5/1加密算法进行了可抵抗相关攻击的改进的研究。
针对算法的漏洞,提出改进的方法,来增强A5/1加密算法的安全性。
由于A5/1加密算法具有硬件实现简单、抗攻击能力强等优点,所以它不仅可以应用在GSM电话系统中,也可以在应用方向上进行推广。
例如,在A5/1加密算法改进的基础上,结合雷达网数据通信,实现对雷达网数据保密通信的需要。
本论文中,主要是在对信息安全了解的基础上,对A5/1加密算法进行充分的研究,确切的理解算法的每一个步骤。
通过程序语言对A5/1加密算法进行实现,在此基础上对算法进行改进。
根据对A5/1加密算法已有的理解,对代码进行充分的测试并继续修改,从而优化了算法。
基于A5/1加密算法的通信信息加密功能,我将对其进行应用推广,达到实现对文件的加密,保证文件的安全性的目的。
最后,为了能够方便灵活的应用A5/1加密算法,我对算法实现了界面化,使得其应用起来简单高效。
关键词:
GSM;移动通信;A5/1;加密
Abstract
GSMismostwidelyusedcellularstandard.Mobilenetworkisthesharedmedia,andanyuserofthemediacaninterceptthenetwork.Whenthemediaareshared,anyonecanlistentothemedia,oranyonecantransmitonthemedia.Thuscommunicationisnolongerprivate.Whenmediaareshared,privacyandauthenticationarelostunlesssomemethodisestablishedtoregainit.Cryptographyprovidesthemeantoregaincontroloverprivacyandauthentication.
Atthisstage,ForA5/1encryptionalgorithm,TherearemethodstoimprovementofA5/1algorithmagainstcorrelationattack.ForA5/1encryptionalgorithmweakness,ProposedimprovedmethodstoenhancesecurityoftheA5/1encryptionalgorithm.Becauseitisofeasyhardwareimplementationandhighanti-attackfeature.ItnotonlycanbeusedinGSMtelephonesystembutalsocanbespreadtootherdirectionofapplication.Forexample,baseduponimprovingtheA5/1encryptionalgorithm,concerningtherequirementforradarnetworkdatacommunication,Itcanmeetthedemandofdataencryptioncommunicationinradarnetwork.
Inthispaper,mainlyonthebasisofunderstandingofinformationsecurity,fully understand the point of view of theA5/1encryptionalgorithm,understand exa-
ctly eachstepofinthisalgorithm.AchievetheA5/1encryptionalgorithmthroughprogramminglanguage.Onthisbasis,improvementthealgorithm,accordingtounderstoodoftheA5/1encryptionalgorithm.Inordertooptimizationalgorithm,fullytest code,continuetomodifyandimprovecode.SincetheA5/1encryptionalgorithmcannotonlyencryptthecommunicationofinformation,promotionofitsapplication,encryptionofthefilestoguarantee safetyoffiles.Intheend,implementationof theinterfaceoftheA5/1encryptionalgorithmto convenienttouse.Itprovidesaneasyandhigheffectivewaytooperate.
Keywords:
GSM;mobilecommunication;A5/1;encryption
第1章绪论
1.1通信安全的重要性
在过去,密码学是军队独家专有的领域,许多国家的安全机构将大量的财力投入到自己的通信中,同时又千方百计地去破解别人的通信。
而随着密码学的飞速发展,信息化已成为人类社会发展的大趋势,而且在如今的信息社会中,各个方向的行业都与信息息息相关的。
因此,应用密码学去保证信息安全也变得越来越重要[1]。
由于信息技术的发展和越来越广泛的应用,整个社会的运作也越来越密切的依赖于信息技术,依赖于各种信息系统的正常运转。
例如国家的政治运动、公司的市场策略、私人的信息数据这些都是秘密的。
信息安全问题,关系到国家社会的稳定,企业的兴衰。
这不仅得到了政府部门、金融部门重视,而且企业事业单位和个人也越来越重视这一问题。
所以,保证信息的安全是信息时代的迫切需要。
如何保护信息不被窃取、篡改、破坏等已成为当今社会普遍关注的重大问题之一[2]。
1.2A5/1加密算法的现状
GSM电话系统[3]是应用最为广泛的通信系统,A5/1加密算法是GSM电话系统中基本的加密算法,用来确保用户传输信息的安全。
对于大多数的人来说,手机安全和通话隐私已经成为日常问题。
为了防止窃听者能够窃听到用户的通话,在用户通信的GSM手机里采用了一套密码系统和协议来提供身份验证和加密[4]。
加密是在移动通讯中保护用户信息和防止欺诈行为非常重要的技术。
GSM电话系统用A5流产生器去加密传送在基站与移动台之间的数字用户数据[5]。
关于A5/1加密算法,它的基本思想是好的,效率非常高。
它已知的弱点是寄存器太短不能抗穷举攻击。
带有较长的寄存器和稠密反馈多项式的A5/1加密算法的变型是安全的。
现在有很多关于A5/1加密算法改进的研究,一般通过对密钥流的产生进行改进。
也有根据算法的弱点,研究算法的攻击方法[6]。
这两个方向都促进了A5/1算法的有效性。
1.3本论文工作的意义
每个加密算法都有它的优缺点,相比较而言,对称密钥算法要比非对称密钥算法快很多,如果想实现非常高的传输速率,就必须选择对称密钥算法进行加密。
A5/1算法是比较优秀的加密算法,我们的工作可以为生活实践提供一种加密工具,用来保护合法重要信息的安全性。
1.4本论文的主要工作
本论文的主要工作有:
1)对通信安全的意义和实施办法有初步的了解。
2)A5/1加密算法的描述进行充分的理解,精确理解算法的每一个步骤。
3)完成算法的详细设计。
4)能够用JAVA对算法进行编程工作,并尽量考虑程序的优化工作。
5)对代码进行充分的测试,给出相应的测试结果,保证算法的正确性。
6)在算法模块的基础上,再对文件进行加解密。
7)对以上算法进行界面化,使得操作更加方便。
第2章A5/1加密算法
2.1通信安全模型
通信安全模型[7]如图2-1所示,此时通信发送方通过公开信道将消息发送给接收方,我们要保证信息不被攻击者所截获、篡改等时,就涉及到信息安全的问题。
首先,要对通信的发送方所发送的消息进行安全转换,如加密、签名等技术,接收方在接收时进行相关的逆变换,如解密、验证签名等。
通过以上的工作,经过安全转换的信息即使在公开信道上被窃听者截取到,也不能够直接的看到信息的内容。
从而保证了信息的安全。
图2-1通信安全传输模型
2.2流密码
流密码[8]的加密方法是对字符逐位加密。
将图2-1中的消息加密为安全消息。
它利用秘钥K来产生一个密钥流
,用此秘钥流来加密明文串
,从而得到相应的密文串,加密方式如公式2-1所示。
(2-1)
其中,
是密文串,
是明文,
是加密函数。
与分组密码比,流密码的优点是运算速度快[9]。
因此主要应用于对信息时效性要求较高的军事、外交、无线通信等领域。
由于独立加密的特点也说明了它是无错误传播的,一个传输错误只影响一个符号,不影响后面的符号[10]。
有以上介绍可知,流密码含有以下几种内容:
a)明文,需要进行安全转换的信息。
b)密文,经过安全转换后的信息。
c)秘钥,用来产生秘钥流的信息。
d)密钥流,参与加解密的控制信息。
e)密钥流生成器,用秘钥产生密钥流的函数方法。
f)加密算法,将明文通过一种规则转换为密文的方法。
此时需要密钥流。
g)解密算法,将密文通过一种规则转换为明文的方法。
此时需要密钥流。
2.3A5/1加密算法的描述
A5/1加密算法[11]是一种流密码,通过密钥流对明文加密,因此有流密码的优点。
初始向量是64比特的会话密钥和22比特的帧序列号。
会话秘钥在通话期间被使用,但是帧序列号在通话期间会改变。
这样,会生成唯一的228bit密钥流控制两个方向的信道,每个方向的114比特密钥流与114比特的明文/密文进行异或运算,产生114比特密文/明文。
加密过程如图2-2所示。
图2-2A5/1加密算法
2.4A5/1加密算法密钥流的产生
密钥流的生成[12]可以21分成三个阶段,第一阶段,3个移位寄存器初始全部设置为0,然后在64个周期内,将每个线性反馈移位寄存器都移位64次(不带钟控),每次移位后将密钥k[i](i=0,1,2,...,63)与每个线性反馈移位寄存器的最低位比特异或;之后,在22个时钟周期内,将每个线性反馈移位寄存器都移位22次(不带钟控),每次移位后将22比特帧序列F[i](i=0,1,2,...,21)与每个线性反馈移位寄存器的最低位比特异或;记第一阶段后的内部状态为S1。
第二阶段,由状态S1出发,按照钟控规则移位100个周期,与第一阶段不同的是,不进行异或操作,舍弃密钥流。
记此时的内部状态为S2。
第三阶段:
由状态S2出发,按照钟控规则对R1,R2,R3进行移位操作。
R1,R2,R3的最高位异或生成228比特的密钥流,应用于加/解密明/密文流。
根据2.3A5/1加密算法的描述和2.4A5/1加密算法密钥流的产生的内容,可以总结出如图2-3A5/1加密算法结构图。
图2-3A5/1加密算法结构图
2.5A5/1加密算法的线性反馈移位寄存器
2.5.1线性反馈移位寄存器
在流密码中,对于需要加密的一组明文,通过密钥流的控制来加密明文,密钥流的一位加密明文的一位,因此实现了一次一密。
这样密钥流就决定了流密码的安全强度。
在实际应用中,密钥流是一个伪随机序列(看起来是随机序列,不能够重复产生,实际上只是它的序列周期足够长,长到在实际应用中能够满足在相当长的有限序列内都不是周期性的)。
所以,设计一个好的密钥流生成器是至关重要的。
下面,详细介绍一种流秘钥生成器--移位线性反馈移位寄存器。
移位寄存器序列已经被应用于密码学和编码理论当中。
自电子时代开始以来,军事密码学就已经使用基于移位寄存器的序列码。
一个反馈寄存器[13](feedbackshiftregister)由移位寄存器和反馈函数组成(如图2-4所示)。
其中,移位寄存器是一个位序列,位是移位寄存器长度的单位,如果是n位长,则为n-位移位寄存器。
每次运算时得到一位,此时,移位寄存器中全部向左移动一位。
这样最左端的位被舍去,最右端的位需要更新,根据寄存器中其他位计算得到最右端的位。
最后,移位寄存器输出一位,一般为bn的值。
图2-4反馈移位寄存器
线性反馈移位寄存器(LinearFeedbackShiftRegister,LFSR)(如图2-5所示)是反馈移位寄存器的一种,反馈函数和寄存器中的某些位进行异或,这些位被称为抽头序列(tapsequence)。
图2-5线性反馈移位寄存器
下面,用4位线性反馈移位寄存器(如图2-6所示)举例说明线性反馈移位寄存器的工作原理:
图2-64位线性反馈移位寄存器
如图2-6可知,抽头位置是第一位和第四位,假设初始值是1111,在输出序列重复之前(输出序列从开始到重复前的长度称为周期),能够产生的状态序列是:
1111,1110,1101,1010,0101,1011,0110,1100,1001,0010,0100,1000,0001,0011,0111
则输出序列为:
111101*********
对于一个n-位线性反馈移位寄存器[14]有
种内部状态(全部是零的状态除外,因为运算结果不能产生别的内部状态),即n-位线性反馈移位寄存器在重复之前,能够产生
位长的伪随机序列。
而线性反馈移位寄存器能够产生
种内部状态是需要某种抽头序列[15]。
为了能够有最大周期的线性反馈移位寄存器,则要求抽头序列加1后的多项式(多项式的阶是移位寄存器的长度)是本原多项式模2(一个n阶本原多项式是不可约多项式,它能够整除
,不能整除
,d是能够整除
)。
假设线性反馈移位寄存器的长度是32,抽头位置是在1、2、3、5、7处(抽头从移位寄存器的左边开始计数,即抽头的阶数越低,越靠近移位寄存器的左边)。
则通过(32,7,5,3,2,1,0)产生的多项式如公式2-2所示。
(2-2)
多项式(2-8)是本原多项式模2,在重复之前,可以循环产生
输出序列。
2.5.2A5/1加密算法的线性反馈移位寄存器
A5/1有3个长度分别为19,22,23的线性反馈移位寄存器[16]R1,R2,R3。
R1的抽头序列是18、17、16和13,R2的抽头序列是21和20,R3的抽头序列是22、21、20和7。
则它们的生成多项式如公式2-3所示。
且线性反馈移位寄存器的多项式均为本原多项式,故由R1,R2,R3产生的序列有最长周期。
(2-3)
2.5.3基于线性反馈移位寄存器的钟控规则
A5/1的钟控机制采用择多逻辑[17],在每一轮中时钟至少驱动2个LFSR移位。
有3个钟控输入(分别为每个线性反馈移位寄存器的中间位,即R1[8],R2[10],R3[10])和3个钟控输出(分别控制每个线性反馈移位寄存器的停/走)。
每次移位前计算R1[8],R2[10]和R3[10]中数量多的数字。
例如3个比特为(0,0,0),则
。
择多逻辑真值表[18]如表2-1所示。
表2-1择多逻辑真值表
R1[8]
R2[10]
R3[10]
maj
L1
L2
L3
0
0
0
0
1
1
1
1
0
0
0
0
1
1
0
1
0
0
1
0
1
0
0
1
0
1
1
0
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
1
1
1
1
a.maj是指majority(R1[8],R2[10],R3[10])的结果值。
b.L1,L2,L3分别表示R1,R2,R3是否移动的布尔值。
R1移位当且仅当公式2-4成立时,R2移位当且仅当公式2-5成立时,R3移位当且仅当公式2-6成立时。
值相等的线性反馈移位寄存器会被驱动,不相等则不被驱动。
移位后R1,R2,R3的异或即得最终密钥流。
(2-4)
(2-5)
(2-6)
带钟控规则的R1,R2,R3的操作过程[19]可如图2-7所示。
图2-7带钟控规则的LFSR操作图
第3章A5/1加密算法实现的详细设计
3.1算法函数
int
parity(intp);
32位模2运算
int
majority();
择多原则函数
int
clockOne(intr,inttaps,intmask);
单个LFSR的移位操作
void
clockAll();
所有LFSR的移位操作
void
clockControl();
带钟控的LFSR的操作状态
void
setKey();
密钥流的初始化
int
getOut();
输出位的获取
void
getKey();
获取密钥流
void
run();
密钥流的产生
byte[]
encryption(bytept[]);
加解密函数
void
printHexText(bytept[],bytect[]);
输出明文、密文函数
3.2算法的详细设计
3.2.1模2运算
关于32位数据二进制位中1的个数是奇数还是偶数,如果是奇数,则返回1,如果是偶数,返回0。
在32位中,所有0异或的结果是0,剩下的1中,两两异或为0,所以,当有偶数个1时,异或结果为0,当奇数个1时,异或结果为1。
因此是32位相异或的结果。
intparity(intp)
{
p^=p>>16;
p^=p>>8;
p^=p>>4;
p^=p>>2;
p^=p>>1;
p&=1;
returnp;
}
举例说明函数的操作方法,如图3-1所示。
假设32位二进制数p为010*********。
图3-1二进制模2运算
3.2.2择多原则
首先,来说明如何取得钟控位置的值。
以R1为例,取得R1[8]的值(0或1),通过公式3-1取得。
(3-1)
其中,R1是寄存器,R1MID是钟控位置。
如图3-2获取钟控位置值,以二进制图的方式进行详细的运算。
图3-2获取钟控位置值
由以上,同理可知R2[10]和R3[10]的值。
由表2-1择多逻辑真值表可知,当R1[8]、R2[10]和R3[10]的和大于等于2时,择多结果值为1,否则为0。
因此用和的值来判断最终的结果值,如果和大于等于2,返回结果值1;否则,返回结果值0。
可用图3-3择多原则程序流程图表示。
图3-3择多原则程序流程图
下面是具体择多原则的实现方法。
intmajority()
{
intsum=((R1&R1MID)>>8)+((R2&R2MID)>>10)+((R3&R3MID)>>10);//R1[8]+R2[10]+R3[10]求和
if(sum>=2)//如果和大于2
{
return1;
}
return0;
}
3.2.3LFSR的移位操作
首先以R1的二进制的形式详细描述具体的移位操作过程,如图3-4R1寄存器的移位操作。
先得到抽头位置的值,再通过parity(inta)来得到抽头位置异或的结果。
最后,当寄存器左移一位,最低位通过抽头异或值来更新。
图3-4R1寄存器的移位操作
LFSR移位操作的详细设计如下。
其中r是移位寄存器,taps是抽头序列,mask是掩码位。
intclockOne(intr,inttaps,intmask)
{
inttemp=r&taps;//取得抽头序列的值
r=(r<<1)&mask;//向左移动一位
r|=parity(temp);//更新最低位的值
returnr;
}
3.2.4带钟控的LFSR操作
当移位寄存器的钟控位的值与择多结果值相等时进行移位,否则,不进行操作。
程序流程图如3-5所示。
图3-5带钟控的LFSR操作的程序流程图
首先,由3.2.2择多原则的方法majority()可以获得钟控值,通过公式3-1和图3-2可知获取寄存器钟控位置值的方法。
下面则是带钟控的LFSR操作的详细设计。
voidclockControl()
{
inttemp=majority();//取得钟控值
if(temp==((R1&R1MID)>>8))//如果钟控值等于R1[8]
{
R1=clockOne(R1,R1TAPS,R1MASK);//R1进行移位操作
}
if(temp==((R2&R2MID)>>10))//如果钟控值等于R2[10]
{
R2=clockOne(R2,R2TAPS,R2MASK);//R2进行移位操作
}
if(temp==((R3&R3MID)>>10))//如果钟控值等于R3[10]
{
R3=clockOne(R3,R3TAPS,R3MASK);//R3进行移位操作
}
}
3.2.5密钥流的初始化
密钥流的初始化分为三部分,第一部分是64轮的会话密钥与寄存器的操作,第二部分是22轮帧序列与寄存器的操作,第三部分为带钟控的寄存器的操作。
流程图如图3-6所示。
图3-6密钥流初始化流程图
第一部分中,首先是64个周期的寄存器和秘钥之间的运算。
秘钥是64比特位,在64周期中,每一周期需要一比特位的秘钥。
密钥存储在byte数组中,如图3-7所示。
要获得位秘钥,要取得相应byte数组中的某一个数据,并进行移位得到。
byte型变量占一个字节,8位。
所以,每8个周期从数组中取一个byte型秘钥。
通过key[i/8]取余的方式获得分秘钥(i代表第i周期)。
然后将获取的分秘钥通过右移与1的方法即可获得位秘钥。
图3-7中第一行数字表示要想