AES 加密算法原理的研究与实现毕业论文
2020-04-04 10:52:53
摘 要
2.认真填写周记,完成800字开题报告;
3.完成5000中文字以上的相关英文专业文献翻译,并装订成册(中英文一起,带封面);
4.完成系统的编码与调试;
5.完成10000字以上的毕业论文;
(三) 完成任务的时间节点:
(1) 2018/1/14—2018/2/28:确定选题,查阅文献,外文翻译和撰写开题报告;
(2) 2018/3/1—2018/4/30:软件架构、程序设计与开发、测试与完善;
(3) 2018/5/1—2018/5/25:撰写及修改毕业论文;
(4) 2018/5/26—2018/6/6:准备答辩。
(四) 必读参考文献:
[1]Christof Pear著. 马小婷译。深入浅出密码学:常用加密技术原理与应用,北京:清华大学出版社。2012.09
[2]Douglas R. Stinson著. 冯登国 等译.密码学原理与实践(第三版),北京:电子工业出版。2016.10
[3]杨波 著. 现代密码学(第4版)(网络空间安全重点规划丛书),北京:清华大学出版社.2017.06
指导教师签名: 肖敏 2017 年 12 月 31 日
系主任签名: 肖敏 2018 年 1 月 5 日
院长签名(章): 2018 年 1 月 5 日
目录
摘 要 1
Abstract 2
1 绪论 3
1.1 研究背景 3
1.2 研究的目的及意义 4
1.3国内外研究现状 4
1.4论文组织结构 5
2数据加密技术介绍 6
2.1非对称加密简介 6
2.2对称加密介绍 7
2.1.2数据加密标准DES 7
2.1.2高级加密标准AES 8
2.3 本章小结 9
3 AES加解密算法原理研究 10
3.1 AES加解密算法原理 10
3.2数据处理及填充 11
3.3 AES加解密算法 12
3.3.1字节替代 12
3.3.2行移位 13
3.3.3列混淆 14
3.3.4轮密相加 15
3.3.5密钥拓展 15
3.4本章小结 17
4 AES加解密算法的实现及测试示例 18
4.1开发环境及平台 18
4.2 AES加解密算法实现 18
4.2.1 字节替代 18
4.2.2 行移位 19
4.2.3 列混淆 19
4.2.4 轮密相加 20
4.2.5 密钥拓展 20
4.3 关键问题及解决方法 21
4.4 AES加解密算法的示例 22
4.4.1 加密 22
4.4.2 解密 23
4.5 本章小结 23
5总结与展望 24
6 致谢 27
摘 要
数据已然成为我们日常生活以及科学和经济发展的重要核心。也就是说,我们时时刻刻都在产生数据,使用数据。而在这众多数据中,很多数据我们都是不想轻易地被他人知道的。小到自己的账号密码身份信息,大到国家机密,为这些数据提供安全的保障,正是数据加密技术所要做的。因此,数据加密十分重要。然而,旧的数据加密标准在如今计算能力愈来愈强大的计算机面前已经不再安全。于是,1997年4月,美国ANSI发起了征集高级加密标准的的活动,而直到2000年10月,高级加密标准才终于被确定下来。到目前为止,高级加密标准依然是所有对称加密算法中最好的算法,也是目前最流行的加密算法。因此对高级加密标准的研究是十分有意义的。
论文研究高级加密标准算法(AES)的原理及实现。主要工作如下:
(1)研究AES算法的原理。AES算法在加密前首先对数据进行分组,每组是一个固定长度的字节块,而后对这些块进行填充处理。AES算法采用迭代加密技术,以16字节的密钥长度为例,加密算法包括10轮迭代加密过程,每个加密过程包括字节替代、行移位、列混淆和轮密钥加等步骤。轮密相加是通过轮密钥与每一轮产生的数据矩阵进行异或,进行十轮之后得到密文。
(2)AES算法实现和测试。在深入AES加解密算法原理的基础上商,对密钥长度为16位的AES算法进行编程实现及测试。对AES算法中的字节替代、行移位、列混淆、轮密钥加等关键算法实现,并给出对应的测试示例。
关键词:数据加密(Data Encryption),高级加密标准(Advanced Encryption Standard),C 。
Abstract
Data has become an important core of our daily lives , scientific and economic development. In other words, we are generating data and using data at all times. In many of these data, we do not want to be easily known by other people.Own account password identity information as the minimum to national secrets as the maximum, to provide security protection for these data, it is data encryption technology to do. Therefore, data encryption is very important. However, the old data encryption standards are no longer safe for computers that are increasingly capable of computing today. Thus, in April 1997, the United States ANSI launched an initiative to recruit advanced encryption standards, and until October 2000, the advanced encryption standard was finally determined. Up till the present moment, the advanced encryption standard is still the best algorithm among all symmetric encryption algorithms, and it is also the most popular encryption algorithm at present. Therefore, research on advanced encryption standards is very meaningful.
The thesis studies the principle and implementation of Advanced Encryption Standard Algorithm (AES). The main work is as follows:
(1) Study the principle of the AES algorithm. The AES algorithm first groups data before encryption, each group is a fixed-length byte block, and then these blocks are filled. The AES algorithm adopts iterative encryption technology. Taking the 16-byte key length as an example, the encryption algorithm includes 10 iterations of the encryption process. Each encryption process includes steps such as byte substitution, row shifting, column aliasing, and round key addition. The round-compact addition is performed by exclusive-ORing round keys and the data matrix generated in each round, and after ten rounds, ciphertext is obtained.
(2) AES algorithm implementation and testing. Based on the in-depth knowledge of the principle of the AES encryption and decryption algorithm, the AES algorithm with a key length of 16 bits is programmed and tested. Key algorithm implementation such as byte substitution, row shift, column obfuscation and round key addition in AES algorithm, and corresponding test examples are given.
KeyWords:Data Encryption; Advanced Encryption Standard; Visual Basic C
1 绪论
1.1 研究背景
随着信息技术和通信技术的飞速发展,人们越来越频繁地使用互联网进行交流。而在信息交流的过程中,必然会涉及到密码保护和信息的隐私保护等问题,并且这个问题不仅关系到个人隐私,还关系到了国家的机密与安全。而数据,则是信息的具体表现。也就是说,要实现对信息的安全性保障,就要对数据进行安全的加密。因此,数据加密就显得十分重要了。
要想解决这个问题,就必须提出一种能够同时满足保密性强、速度较快并且复杂度低的算法。在几十年的国内外的计算机科学家的不懈努力下,研究出了各式各样的加密算法。我们一般将加密算法分为2类:对称加密算法和非对称加密算法。其中非对称加密算法的典型便是RSA算法(由一起提出该算法的罗纳德•李维斯特(Ron Rivest)、阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Leonard Adleman)的姓氏开头字母组成)。尽管RSA是目前最常用和最有影响力的公钥加密算法,而且它能够抵抗几乎全部的密码攻击,但是其缺点也很明显:产生密钥的原理是寻找大质数,然而直到目前为止,还没有可以比较快速寻找一对大质数的算法,它的速度太慢。并且在同样的安全级别下,RSA的速度只有对称加密算法的1/1000左右。
相比之下,对称加密算法中的高级加密标准(Advanced Encryption Standard,AES)的运算速度快,密钥的产生也相比于基于素数产生技术的RSA算法更加方便。并且高级加密标准还提供了多种工作模式,不同的工作模式可以应用于不同的场景。譬如:ECB(ElectronicCodebook,电子密码本)模式的过程简单,可以并行计算且误差不会传递,在需要并行加密的场合将会使用这种模式;而CBC(Cipher Block Chaining,密码分组链接)模式具有误差传递、不能并行的特点,使得这种模式适用于长报文传输,并且它已经是SSL(Secure Sockets Layer,安全套接层)和IPSec(InternetProtocolSecurity,因特网协议安全性)的标准。所以,高级加密标准是所有对称加密算法中目前为止最好的算法,也是目前最流行的加密算法,其加密速度快,安全性高,资源消耗也较低。
本程序基于Visual Basic为编程环境,以被选为AES算法的Rijndael算法为核心,对AES的加解密过程进行实现。
1.2 研究的目的及意义
AES加密是为了既能满足人们对于数据安全性的要求,使得数据不能轻易被外人破解利用;又能满足人们对于数据交流的速度和经济要求,使得加解密速度够快而消耗较少的资源。本论文研究的目的正是为了详细解释AES加密的原理,并用程序对其进行实现。
数据的产生和交流已经和我们息息相关,数据加密是十分必要且重要的。因此在人们对数据安全性的要求越来越高,计算机计算速度越来越快,暴力破解越来越容易的今天,AES加密具有十分重要的现实意义。主要体现在以下方面:
(1)数据的产生速度愈来愈快,一个人在单位时间能够产生的数据相比于以前已经是若干数量级倍,因此数据加密需要较快的速度而不能太慢。
(2)现在的大多数计算机已经是以前老式计算机的计算速度的上十万甚至百万倍。对于以前的数据加密,由于其计算机速度的限制,可能当时的加密技术足够安全。可是随着计算机计算速度的越来越迅速,对加密算法的安全性要求也越来越高。也就是说数据加密需要足够的安全性。
因此,兼顾速度与安全性的算法才能满足我们对数据加密的要求,而AES加密正是这些加密技术中的佼佼者。
1.3国内外研究现状
美国很早之前,在1977年就制定了自己的数据加密标准——DES。在DES出现之后,人们开始对分组密码进行深入的研究,并且讨论现已有大量的分组密码,如DES的各种变形、IDEA算法、Rijndael算法等等。
AES活动使得国际上又掀起了一次研究分组密码的新高潮。继美国征集AES 活动之后,欧洲开始了名为Nessie 的计划,日本也不甘落后地启动了相关标准的征集和制定,这些计划看起来比美国的计划更庞大。同时美国等一些国家为了适应技术发展的需求也加快了其他密码标准的更新,比如SHA-1和FIPS140-1。而我国也在国家“863”计划中,把制定密码的标准化的相关问题提上了议程。
2017年,在互联网上转发的一条题为“AES 256加密被破 一套1500元设备5分钟内搞定”的新闻也引起了各界的广泛关注。实际上这次的破解来自Fox-IT,他们利用了电磁辐射泄露的信息,可以实现无线攻击,这种攻击方式确实是攻击了AES算法本身。这样的攻击形式称为旁路攻击(Side Channel Attack,SCA),旁路攻击已经有20多年的研究历史,其攻击方法也比较系统和完善。实际上AES早在之前就已经被用过类似于这样的方法破解了,这个方法是差分功耗分析(Differential Power Analysis,DPA)。不过旁路攻击本身对物理条件的要求非常之高,因为要准确地测量其物理属性,如电磁特征,就必须要十分接近目标设备,而如果超出若干厘米之外,其电磁特征就会被噪声所淹没而无法测量。所以对于这种破解方式,目前来说还完全不必担心AES的安全性,AES依然是十分安全的。
另外值得一提的是哈希算法(Hash),又叫散列算法,杂凑算法。这个算法的和加密算法类似,是用来处理明文的,,并且能快速地通过给定的明文输出对应的哈希值。和加密算法不同的是,输出的哈希值不可逆向地转化为明文,这也是哈希算法不能被称为加密算法的原因。但哈希算法和密码学息息相关,它主要应用于消息的摘要和签名,也就是对消息的完整性的校验。主流的哈希算法有MD5和SHA-1等。
目前AES算法研究的方向:
(1) 新型密码的研究;
(2) 密码安全性综合评估原理与准则的研究;
(3) 密码的实现研究包括软件优化硬件实现和专用芯片等;
(4) AES的分析及其应用研究;
1.4论文组织结构
本文的组织结构由如下组成:
- 数据加密技术的介绍。包括了对称加密技术和非对称加密技术,其中将会对对称加密技术中的DES和AES作详细介绍。
- AES加解密算法原理研究。包括了进行AES加密之前的必要数据处理和AES的各个步骤的算法原理详解。
- AES加解密算法的实现及测试示例。包括了对AES的各个步骤的算法实现的重要细节进行详细的描述,并给出实现的具体示例。
2数据加密技术介绍
2.1非对称加密简介
非对称加密,和只需要一个加密密钥的对称加密不同,它需要2个密钥:一个是公开密钥(public key,简称公钥),一个是私有密钥(private key,简称私钥)。最早公开密钥系统是在1976年由美国学者Dime和Henman提出的一种新的密钥交换协议。而后来由罗纳德•李维斯特(Ron Rivest)、阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Leonard Adleman)三人提出的RSA算法成为了非对称加密的典型代表。
为了能清楚地描述非对称加密的大致原理,我假设现在有两个用户A和B,他们之间想要互相发送消息而不会被其他人看到(比如黑客C),非对称加密则会分别派发给A和B一对密钥,A将持有公钥Xa和私钥Ya,B将持有公钥Xb和私钥Yb。
当A需要发给B消息M时,B将先发给A自己的公钥Xb,然后A利用Xb加密信息M为M’,收到M’的B再用自己的私钥Yb解密M’得到M。同理,如果B要回复信息给A,则A也要先发送公钥Xa给B,B把回复信息加密发给A,A再用自己的密钥Ya解密得到明文。
在非对称加密中,公钥是公开的,可以被任何人知道的,而密钥只有自己知道,并且别人通过自己的公钥不能知道自己的密钥是什么,这也就是非对称加密的原理。
这种通过知道公钥无法知道私钥的原理是基于2个大素数的乘积没有有效的算法快速分解得到结果,也就是大数分解。正是由于非对称加密的这个特性,使得其本身的安全性会比较高。黑客需要同时知道多个密钥才能破解,而对称加密中只需要知道那一个密钥就可以了。但是也正是由于非对称加密基于大数分解,首先要找出2个较大的素数对于目前计算机的速度来说还是不够快,尤其是要加密大量数据时,在同样的安全级别下,非对称加密的速度会是对称加密的1/1000。
所以,非对称加密尽管安全,但无法满足快速加密大量数据的要求,在现实中非对称加密一般用于对密钥的加密或者数字签名。
2.2对称加密介绍
2.1.2数据加密标准DES
DES(Data Encryption Standard,数据加密标准)是在1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用的一种加密标准。DES使用的算法是DEA(Data Encryption Algorithm,数据加密算法),是一种使用密钥加密的块算法。
DES加密采用了64位的分组长度和64位的密钥长度,也就是说,DES加密会先将明文分成一个个块,每个块的大小是64位,然后再用64位的密钥去加密得到一个个的密文块,然后把这些块组合在一起得到密文