基于AES算法的HASH函数的设计应用
目 录
摘 要 I
ABSTRACT II
第一章 绪论 1
1.1 设计背景 1
1.2 国内外研究现状 1
1.3 设计目标与意义 2
第二章 密码学概述 3
2.1 密码学基础 3
2.2 AES加密算法概述 4
2.3 HASH函数 8
2.3.1 HASH函数的概念与发展 8
2.3.2 单向函数与单向HASH函数 9
2.3.3 HASH函数的应用 10
第三章 基于AES算法的HASH函数的设计 13
3.1 基于AES算法的HASH函数的构造 13
3.1.1 AES加密/解密原理图 13
3.1.2 构造哈希函数的算法和原理图 13
3.2 基于AES算法的HASH函数的程序设计 14
3.2.1 Visual C++与VC6.0 14
3.2.2 HASH函数的程序设计 15
3.2.3 加密解密测试 16
3.3 HASH函数的各项性能分析 16
3.3.1 散列性 16
3.3.2 混乱和扩散特性 17
3.3.3 抗冲突性 17
3.3.4 执行速度 18
第四章 基于AES算法的HASH函数的应用 19
4.1 Winsock简介 19
4.2 客户机/服务器模式 20
4.3 用Winsock通信实现HASH函数的传输 21
4.3.1服务器端操作 socket(套接字) 22
4.3.2客户端Socket的操作 25
4.3.3数据的传输 26
结束语 29
致 谢 30
参考文献 31
附 录 32
摘 要
随着密码攻击手段的不断更新、计算能力的不断提高以及对运算速度的要求,传统的散列算法MD5,SHA已日益显示出它们的缺点和不足,并且过去hash函数的构造多是基于分组密码算法DES的,而hash函数的安全性是建立在分组函数的安全性之上的,由于DES运算量很大、运算速度很慢以及其本身的一些特性(弱密钥),因此基于DES算法的散列函数具有潜在的不安全性。为了提高Hash函数性能,本文构造了一种基于AES的hash函数,该哈希函数散列结果的长度为256比特,可以很好的防御穷举攻击。经过计算与测试这种新的hash函数具有很好的散列性、混乱与扩散特性和抗冲突性,能有效的抵御差分密码分析和线性密码分析,且具有很快的执行速度。
关键词:数据加密标准;高级加密标准;安全散列算法;Winsock通信;单向函数
ABSTRACT
Abstract: Along with the password attack method unceasing renewal, the computation ability unceasing enhancement as well as to the operating speed request, the tradition disperses row algorithm MD5, SHA has demonstrated their shortcoming and the insufficiency day by day, and the
structure of hash function is mostly based on block cipher algorithm DES, but the HASH function security is established above the grouping function security, because the DES operand is very big, the operating speed very slowly by and its itself some characteristics (weak key), therefore disperses a row function based on the DES algorithm to have potential unsecurity. In order to enhance the Hash function performance, this article structure one kind based on the AES HASH function, this HASH function has dispersed a row result the length is 256 bits, may the very good defense exhaustion attack. After calculates and tests this kind of new HASH function to have very good disperses a row nature, is chaotic and the diffusion properties and the anti- conflict, can the effective resistance difference cryptanalysis and the linear cryptanalysis, also has very quickly speed.
Key words: Data encryption standard; Advanced encryption standard;Rijndael; The security disperses a row algorithm; Winsockc orrespondence; Unidirectional function
第一章 绪论
1.1 设计背景
当今世界,计算机网络不断发展,全球信息化已成为发展的大趋势。计算机已经应用到社会生活的方方面面,计算机网络已成为重要的通信手段,但由于计算机网络具有连接形式多样性、终端分布不均匀性和网络的开放性、互联性等特征,致使网络易受黑客、怪客、恶意软件和其他不良企图的攻击,由此造成的损失也是极其巨大的,所以网络信息安全是一个至关重要的问题。对于军用的自动化指挥网络和银行等传输敏感数据的计算机网络系统而言,其网上信息的安全尤为重要。因此,网络必须有足够强的安全措施,否则该网络将是个无用的、甚至会危及国家安全。
密码是有效而且可行的保护信息安全的办法,有效是指密码能做到使信息不被非法窃取,不被篡改或破坏,可行是说它需要付出的代价是可以接受的。因此,密码学的产生和发展对计算机通信具有重要的意义,计算机网络的不断发展客观上也要求密码学要不断向前发展。1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES,RSA,SHA等。随着密码攻击手段的不断更新、计算能力的不断提高以及对运算速度的要求,传统的散列算法MD5,SHA已日益显示出它们的缺点和不足。为了抵御新的密码攻击手段,美国国家标准与技术研究所(NIST)在2002年5月26日建立了新的高级数据加密标准(AES)规范,它代替了DES,成为新的数据加密标准。
1.2 国内外研究现状
2002年亚洲密码分析研讨会上,Courtois提出一种称为XSL攻击的分组密码分析新方法[1],主要思想是用一系列次数低、方程数大于变元数的超定方程组来描述密码系统,通过解方程组来破解分组密码。同年美洲密码分析研讨会上,Murphy设计了一种新的算法BES(Big Encryption System),将AES中GF(28)和GF(2)上的两种域运算归结为域GF(28)上的运算,使AES成为某种消息空间和密钥空间下的BES,通过研究形式更为简洁的BES,可以更清晰地了解AES算法内部的数学结构。2002年第297期《科学》杂志高度评价了这两个最新分析成果。
中国的研究人员也对AES算法进行了大量研究分析。吴文玲用能量攻击对Rijndael算法进行了分析,攻击复杂度在267到2131之间,大大降低了攻击的规模;曾祥勇等用布尔函数的迹表示给出置换函数的表达式,对由幂函数合成可逆仿射变换产生的S盒间的关系进行了研究;李娜通过研究q-多项式的性质给出了一种求解S盒代数表达式的简易算法,具有可预先计算、操作简单的特点和一定的通用性,并对曾祥勇提出的一类S盒进行了仿射等价划分,明确了这些S盒间的相互关系;冯国柱对Rijndael算法作了变动和改进,使新算法在不降低抗差分攻击性能、牺牲少许密钥装填速度的情况下提高统计效果,并可部分抵抗Square攻击;胡辛征研究发现Rijndael算法S盒在有限域GF(28)上的迭代循环周期过短,设计了一种新的仿射变换对之加以改进;曾游调整Rijndael算法轮变换的顺序,采用密钥的变形形式,通过合理安排求取密钥的顺序,利用密钥相关性将5轮简化算法的密钥穷尽量减少到240+232+216+9×28。
韦宝典利用Walsh谱理论分析Rijndael算法S盒的严格雪崩特性、扩散特性和相关免疫性等密码性质[2],提出了广义自相关函数的概念,解决了严格雪崩准则和扩散准则阶数的确定问题;基于等价类的划分、线性方程组的求解和标准基之对偶基的计算,给出了域元素分量代数表达式的3种求法,提出了一种基于生日悖论、利用活动性进行攻击的新方法;指出了Square-6攻击是不成功的,并给出了修正攻击方案。
1.3 设计目标与意义
在计算机系统和公共信道中,如果不设防,则信息数据的传输是不安全的,容易受到攻击和破坏,信息的丢失不容易被发现,后果是极其严重的。因此,密码技术的应用就极为必要。
本课题设计目标就是:应用密码学技术,使计算机网络中的通信更为安全。具体来说分两部分:第一,应用AES算法对通信内容进行加密,使接收方可以利用公用密钥对密文进行解密。第二,利用HASH函数验证传输的内容有没有被篡改。
通过AES算法的应用,可以对通信数据进行加密解密,从而提高信息传输的安全性;通过HASH函数的应用,可以进一步验证传输内容的可靠性,从而避免在传输过程中可能发生的伪造和欺骗问题。由于时间有限,本文难免会出现一些错误与不足,希望老师和同学多给我提出宝贵的意见。
//////////////////////////////////////////////////////////////////////////////////
参考文献
[1] Weidong Kou. Network security and standarda[M]. Boston:Kluwer Academic Publishers,1997.
[2] Piepzyh J,Sadeghiyan B. Design of Hashing Algorithm[M]. Berlin:Springer-verlag,1993.
[3] Atul Kahate.密码学与网络安全.清华大学出版社.2005
[4] 张基温编。信息系统安全原理。中国水利水电出版社.
[5] 杨波.网络安全与应用[M].北京:人民邮电出版社,2002
[6] 卢开澄编著.计算机密码学(第二版)[M].北京:清华大学出版社,1998
[7] 钟诚,赵跃华编。信息安全概论。武汉:武汉理工大学出版社.
[8] 卢开澄. 计算机密码学:计算机网络中的数据保密与安全(第3版)[M]. 北京:清华大学出版社,2003.
[9] 刘军宁,谢成杰,王普. 基于混沌映射的单向Hash 函数构造[J]. 清华大学学报(自然科学版),2000.
[10] 汪翔,袁辉.Visual C++实践与提高——网络编程篇[M].北京:中国铁道出版社,2001
[11] 王育民,刘建伟.通信网的安全——理论与技术[M]. 西安:西安电子科技大学出版社,2000
附 录
#ifndef AES_H_
#define AES_H_
#include
#include
using namespace std;
class AES
{
public:











请问如何可以看到全文?(包括附录中的代码),如果可以的话麻烦发给我好吗??谢谢,非常感谢~
@赵琦, http://www.tuscany.hk/pay