A51加密算法论文.docx

上传人:b****5 文档编号:6869063 上传时间:2023-01-11 格式:DOCX 页数:47 大小:568.22KB
下载 相关 举报
A51加密算法论文.docx_第1页
第1页 / 共47页
A51加密算法论文.docx_第2页
第2页 / 共47页
A51加密算法论文.docx_第3页
第3页 / 共47页
A51加密算法论文.docx_第4页
第4页 / 共47页
A51加密算法论文.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

A51加密算法论文.docx

《A51加密算法论文.docx》由会员分享,可在线阅读,更多相关《A51加密算法论文.docx(47页珍藏版)》请在冰豆网上搜索。

A51加密算法论文.docx

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中第一行数字表示要想

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1