一、前言
加密技术是一门古老而深奥的学科,长期以来,都应用在很小的范围,如军事、外交、情报等部门。
公元前405年,斯巴达的将领就使用了原始的错乱密码;公元1世纪,罗马皇帝凯撒就使用了有序的单表代替密码。中国古代出现的“符”,也是一种数据加密的方法。
20世纪初,电子通讯技术的发展,尤其是两次世界大战中,密码通讯和第三方解密的较量更为激烈。
但计算机技术的出现,互联网技术的迅猛发展,到今天,有成千上万的组织和个人需要保护自己的隐私数据,需要保护相互通讯中的数据安全,这就为数据加密解密提供了用武之地。
那什么是加密和解密呢?简单来说:
加密,即采用一些方式对数据进行处理后,使数据从表面上看,已经不能表达出原有的意思。
解密,就是对加密过的数据采用某些方法,去还原原有数据面貌,从而了解所包含信息的真实意图。
二、名词解释
明文:待加密的报文
密文:加密后的报文
密钥:加密过程中或解密过程中输入的数据
算法:将明文和密钥相结合进行处理,生成密文的方法,叫加密算法;或将密文和密钥相结合进行处理,生成明文的方法,叫解密算法。
三、加密技术分类
(一)单向加密
将数据进行计算变成另一种固定长度的值,而且这种行为不可逆。
这种加密算法具备几个特点:
定长输出,碰撞几率极低
相同消息反复加密获得同样的密文
雪崩效应,即使微小的单个字节的变化,也能引起加密结果的巨大变化
密文不可逆,即从密文不可以推出原明文。
常用算法
MD5、SHA1、、SHA256、SHA384、SHA512
(二)对称加密技术
使用同一个密钥,对数据镜像加密和解密,这种加密技术,称为对称加密。
- 对称加密
常用算法:
DES,3DES,IDEA,AES
优点
算法公开、计算量小、加密速度快、加密效率高
缺点
不同通讯双方使用不同密钥,导致密钥过多,难以管理
通讯双方密钥交换,无法保证安全
无法验证发送者和接受者身份
数据完整性无法保证
(三)非对称加密技术
Public-key cryptography,即公开密钥加密,又称非对称加密。在这个加密过程中,需要一对密钥,不公开的密钥称为私钥,公开的那一个密钥称为公钥。
常用算法:
RSA,DSA,EIGamal
优点
密钥数目较少。
从一对密钥中的任何一个密钥都不能计算出另一个密钥。
使用一对密钥中的任何一个加密,只有另一个密钥才能解密。如果截获公钥加密数据,没有私钥也无法解密。
缺点
算法复杂,加密解密速度要慢
密钥交换也不是非常安全
应用场景
1、A和B之间通信,首先互相发送各自的公钥给对方
非对称加密1公钥
2、A发数据给B,A将用B的 公钥加密 数据后发送给B
3、B收到这个数据后,B使用自己的私钥来解密数据。其他人截获了A发出的数据也没有用,他没有私钥。
注:如果2、3步骤中,A发给B的用B公钥加密的数据被C掉包,即使A的数据中,有自己数据的指纹信息,但是由于B的公钥是公开的,任何人都能获取B的公钥,C就可以做一个一样格式的数据包给B。B无法验证这就是A发过来的。
非对称加密2私钥
4、如果A用自己的 私钥加密 数据后,发送给B
5、B使用A的公钥解密数据成功,就能证明这段数据数据确实是A是发送者。
身份认证:
以上步骤4、5中使用私钥加密后发布数据,数据的接受者可以使用发布者的公钥来验证数据的完整性,接受者由此可知这条信息确实来自私钥拥有者,这也被称为数字签名。解决了数据的不可否认性。
四、安全网络通信模型
从以上的介绍中可以看出,各种加密算法都有其特点和适用性:
使用非对称加密,发送者A使用私钥加密,接受者B能够验证数据的发送者A是谁,由于所有人都能使用发布者A公钥解密,这种方法只能适合发布公开的信息。
接受者B的公钥是公开的,用它加密数据后发给B,有可能被截获掉包。
非对称加密算法,加密速度很慢,强度高。对称加密算法,速度快,但是密钥交换是个问题。
单向加密不可逆,接收者无法还原到明文。
那么,就需要一种通信模型能够扬长避短,解决通信安全的问题,于是便有了下面的模型:
PKI通信流程
通信工作流程
1、发送者A准备好信息明文。
2、发送者A对信息进行哈希运算(单向加密算法),得到一个信息摘要。
3、发送者A使用自己的私钥(SK)对信息摘要进行加密,即数字签名,之后将其附件在发送的信息上。(实现不可否认性)
4、发送者A随机生成一个对称加密密钥,并使用它对发送的信息包括摘要进行对称加密,生成密文。
5、发送者A再使用接收方的公钥(PK)对第4步使用的随机对称密钥进行加密,之后将其附加至第4步生成的密文上,一并发给接收者B。
6、接收者B收到发送者A的密文后,首先使用自己的私钥(SK)解密出对称加密的密钥。
7、接收者B使用对称密钥解密密文,得到附加摘要的信息明文。
8、接收者B使用发送者的公钥(PK)解密摘要,获得哈希值
9、接收者B使用同样的哈希算法再次对信息明文计算,得到新的信息摘要,与解密后的摘要比对,如果一致,则说明收到的信息明文未被篡改。(保证数据完整性)
五、总结
以上的通信模型很好的解决了数据完整性、不可否认性,但这个模型的依赖的关键点是双方公钥。
这个模型中双方公钥来源无法验证,而且在通讯前,如何获得每个人的可信任的公钥也成了整个系统的关键。
因此,需要一套系统,能够解决以上存在的种种问题:身份认证、数据完整性、密钥交换、操作的不可否认性,它就是PKI。