当前位置:文档之家› 现代密码学小论文

现代密码学小论文

目录
现代密码学的认识与应用 (1)
一、密码学的发展历程 (1)
二、应用场景 (1)
2.1 Hash函数 (1)
2.2应用场景分析 (2)
2.2.1 Base64 (2)
2.2.2 加“盐” (2)
2.2.3 MD5加密 (2)
2.3参照改进 (3)
2.3.1 MD5+“盐” (3)
2.3.2 MD5+HMAC (3)
2.3.3 MD5 +HMAC+“盐” (3)
三、总结 (4)
现代密码学的认识与应用
一、密码学的发展历程
密码学的起源的确要追溯到人类刚刚出现,并且尝试去学习如何通信的时候,为了确保他们的通信的机密,最先是有意识的使用一些简单的方法来加密信息,通过一些(密码)象形文字相互传达信息。

接着由于文字的出现和使用,确保通信的机密性就成为一种艺术,古代发明了不少加密信息和传达信息的方法。

事实上,密码学真正成为科学是在19世纪末和20世纪初期,由于军事、数学、通讯等相关技术的发展,特别是两次世界大战中对军事信息保密传递和破获敌方信息的需求,密码学得到了空前的发展,并广泛的用于军事情报部门的决策。

20世纪60年代计算机与通信系统的迅猛发展,促使人们开始考虑如何通过计算机和通信网络安全地完成各项事务,从而使得密码技术开始广泛应用于民间,也进一步促进了密码技术的迅猛发展。

二、应用场景
2.1 Hash函数
Hash函数(也称杂凑函数、散列函数)就是把任意长的输入消息串变化成固定长度的输出“0”、“1”串的函数,输出“0”、“1”串被称为该消息的Hash值(或杂凑值)。

一个比较安全的Hash函数应该至少满足以下几个条件:
●输出串长度至少为128比特,以抵抗攻击。

对每一个给定的输入,计算
Hash值很容易(Hash算法的运行效率通常都很高)。

●对给定的Hash函数,已知Hash值,得到相应的输入消息串(求逆)是计
算上不可行的。

●对给定的Hash函数和一个随机选择的消息,找到另一个与该消息不同的
消息使得它们Hash值相同(第二原像攻击)是计算上不可行的。

●对给定的Hash函数,找到两个不同的输入消息串使得它们的Hash值相同
(即碰撞攻击)实际计算上是不可行的Hash函数主要用于消息认证算法
构造、口令保护、比特承诺协议、随机数生成和数字签名算法中。

Hash函数算法有很多,最著名的主要有MD系列和SHA系列,一直以来,对于这些算法的安全性分析结果没有很大突破,这给了人们足够的信心相信它们是足够安全的,并被广泛应用于网络通信协议当中。

2004年,中国密码学家王小云教授和她的团队将MD4的碰撞攻击复杂度时间降到手工可计算;并将寻找MD5算法实际碰撞的复杂度和SHA-1算法碰撞的理论复杂度分别降为239和263。

NESSIE工程推荐使用的Hash算法有
SHA-256/384/512和Whirlpool,日本密码研究与评估委员会推荐使用的算法有SHA-1/256/384/512、RIPEMD-160。

ECRYPT也在Hash算法研究方面举办了一系列活动。

2.2应用场景分析
随着计算机技术的飞速发展,计算机系统已经深入到社会的各个角落,极大的满足了用户的需求,提高了用户的办公效率,同时,也给用户信息安全提出了新的挑战。

在实际应用开发中,最直接的最基础的安全问题就是用户密码等信息的保存与保密。

常用的加密手段:
2.2.1 Base64
Base64加密算法,是网络上使用最广泛的一种编码格式,其编码原则为:将明文ASCII码转换为二进制以后,从左向右开始,每次取六个数字,转换为十进制后对照其索引表,找到相应的密文,一起进行编码,最后不足6位的全部补上0,编码完成以后的密文包括:A~Z,a~z,0-9和“+”“/”,同时最后补上零,每两个零被转换成“=”。

该方法运算简单,但是其密文可靠性较低,很容易被反编码的到相应的明文。

2.2.2 加“盐”
上面刚刚提到的Base64编码中,由于其可逆性导致在密码传递过程中的低可靠性,因此,出现一个补救措施:加“盐”。

这里的“盐”,就是干扰项。

在具体的应用中,在明文前后加上指定的“盐”,增大破解的难度。

但是具有规律可观察性。

2.2.3 MD5加密
MD5加密是Hash函数的一种典型应用,应用场景很广泛,上面已经提到,在这就不做具体赘述。

一般的应用中,我们常常只是用MD5对用户重要信息进行加密(比如密码),由于MD5加密的健壮性相对较高,所以该方法被认定为有效可靠的。

最近学习过程中发现一个网站(),该网站收录了160T 的MD5特征码,对简单MD5特征码的破纪录可以达到90%以上(未具体论证
其准确性)。

因此,淡出的MD5加密已经无法满足信息保密的需求。

还有一种常用的加密方法就是SHA算法,他与MD5算法具有同样的问题,在此不做赘述。

2.3参照改进
2.3.1 MD5+“盐”
上面已经提到,一个比较常用加密手段就是加“盐”,同时要求盐的复杂度和长度要达到一定的要求。

对于一般的应用场景,该方法已经基本可以胜任,国内一些公司就是才用的这种方法进行加密。

不过,我注意到在网站中也提供了对“加盐”特征码的破解,但是需要收费,具体的论证没有做,但是做了小测试:对于短的简单的“盐”很容易破解,长的复杂的“盐”破解成功率不太高。

2.3.2 MD5+HMAC
HMAC本身也是一种加密算法,他是基于SHA算法实现的。

单纯的使用HMAC也可以通过上进行解密。

因此,可以使用MD5+HMAC方法进行加密,该方法采用两次加密,在一定程度上保障了信息的安全性,但是对于长文本,性能上会受到一定的影响,不过对于密码的加密来说,已经足够了(其实归根结底只是形式上的变化,没有达到方法创新的层面,如果找到一定规律,也是可以慢慢破解的)。

2.3.3 MD5 +HMAC+“盐”
该方法是一种大杂烩形式的解决方法,但个人感觉应该是一种比较靠谱的解决方法。

该方法中的关键其实是“盐”的定义。

一般比较好的加盐方式是利用时间戳。

将时间戳作为“盐”的好处就是用户每次登陆得到的密码密文都是不相同的,在服务器端解析中,动态生成“两”个密码(详细解释见下图),而且一次请求的密码有效期是一分钟(其实按照网络请求过程中时间限定的相关原则,一般1分钟是网络请求等待时间的极限,超过一分钟的请求一般会被丢包(可设定,只是个人理解)或者用户就会重新请求),给相应的破译提高了一定的难度。

同时该方法在一定程度上也兼顾了实时性和运算效率的平衡。

对于进一步的安全措施,我们可以采用一些辅助手段,在上图中也写到了,如:ip记录、短信验证等。

不做赘述,一般的应用中,上面第三种方法已经可以胜任。

而至于辅助手段,不可以说没有意义,但是在一定程度上,是对用户个人信息的采集(如手机验证,个人感觉就是对个人信息的采集,并不能起到实时保护的作用,只是事后的一个通知补救措施)。

三、总结
通过现代密码学课程的学习,我对密码学的构成、主流加密算法和各个算法的基本算法有了全新的理解。

现代密码学是一个充满神秘性的学科,现代密码学是一个充满神秘性的学科,他是以计算机科学的发展为背景,数学思想为根本的一个交叉学科,因此密码学归根结底是数学问题,要想深入透彻的进行密码学相关的理论研究,我们需要有扎实的数学功底和广泛的兴趣爱好。

现代密码学中涉及的数学有:数论、近世代数、矩阵论、域论,以及其它结合较为紧密地理论:信息论、编码论、量子学、混沌论。

与之对应了一些前沿的密码学研究:在线/离线密码学、圆锥曲线密码学和代理密码学等。

因此,对密码学感兴趣的话,在后学的学习过程中,可以朝着这些方向努力。

相关主题