安全和加密技术详解
目录
前言
一、加密技术分类
1、对称机密算法
2、非对称加密
3、单向散列
4、安全通信模型
前 言
随着网络通信和互联网时代的到来,与之而来的互联网安全问题面临很大的威胁。网络的传输的信息随时有可能会被不法分子截获、篡改,对于互联网数据安全和加密技术显得尤为重要。
加密技术其实是一门古老的学科。长期以来一直被应用于军事、情报等部门,例如早期古罗马的凯撒移位、中国古代的兵符等等都是早期的数据加密技术。密码学在近代发展尤为迅速,例如两次世界大战期间加密及解密技术在战争中起到确定行的作用,可见密码学的重要性。
一、加密技术分类
1、对称机密算法
对称机密(也叫私钥加密)指加密和解密使用相同密钥的加密算法,又称为传统算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称为这种加密算法为秘密密钥或单密密钥算法。
对称加密:加密和解密使用同一个密钥
常见对称加密算法
DES:Date Encryption Standard 56bits
3DES:
AES:Advanced(128,192,256bits)
Blowfish, Twofish
IDEA,RC6,CAST5
特性:
1) 加密、解密使用同一个密钥,效率高
2) 将原始数据分割成固定大小的块,逐个进行加密
缺陷:
交易双方都是用相同钥匙,安全性得不到保证。此外,每次用户使用对称加密算法时,都需要使用其他人不知道的唯一密钥,这使得收发双方所拥有的密钥数量呈几何级数增长,密钥管理成为负担。
工作过程
A、B双方交换数据,相互之间需要掌握相同的钥匙不得外泄,A将数据通过算法加密后传送给B,B则利用相互之间掌握的钥匙进行解密。此间双方知道的钥匙不可外泄否则会被他人截获并解密数据,与此同时如果A与C通信或B与C通信等,则双方都需要掌握相同的钥匙。假设一个企业中有n个用户则整个企业需要n(n-1)个密钥。密钥的生成和分发管理则称为负担,同时企业内不可能每一个密钥持有人都能很好的保守秘密,所以对称加密的安全性难以保证,管理成本也很高。
(对称加密图解 图示1)
2、非对称加密
非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(orivate key,简称私钥)
公钥加密:密钥是成对出现
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数字签名:主要下雨让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
数据加密:适合加密较小数据
缺点:
密钥长,加密解密效率低
算法:
RSA(加密,数字签名)、 DSA(数字签名)、 ELGamal
工作过程:
假设A、B之间使用非对称加密的方式进行重要数据的安全传输
1、 假设B生成密钥(公钥和私钥)并将公钥向其他人公开
2、 A使用该密钥对数据进行加密后在传送给B
3、 B则用自己的私钥对加密后的数据进行解密,B只能使用私钥解密对应公钥加密的数据
4、 如果在传输过程中有第三方攻击者截获了传输的密文,并得到了B的公钥也无法破解密文因为只有B的私有才可以解密。
但如果有人制作了一个与A相同的一样格式的数据包给B。B也无法验证这就是A发过来的。
5、 同上所述,如果A用自己的私钥加密数据后发送给B,则B使用A的公钥解密数据后,就能证明这段数据确实是A的,A是数
据的发送者。
6、 同上4、5所述,使用私钥加密后发布数据,数据的接受者可以使用发布者的公钥来验证数据的完整性,接受者由此可知这
条信息确实来自私钥拥有者,这也被称为数字签名。解决了数据的不可否认性
图示:
图示2中所述由A用B公钥加密数据发送给B,B用自己的私钥解密A发送的数据
图示3中所述由A用自己私钥将数据加密并发送给B,B利用A的公钥解密数据,不仅保证数据的安全性同时也保证数据的来源。一下两图对应上方所述非对称加密数据工作过程。
(图示2)
(图示3)
3、单向散列
单向散列算法(又称为hash函数),hash函数(也称为杂凑函数或杂凑算法)就是把任意长度的输入消息串变化为固定长度的输出字符串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等。
单向散列函数的输出值也被称为“散列值”或“消息摘要”,其长度通常在128-256位之间。
一个安全的杂凑函数应该至少满足一下几个条件;
① 输入长度是任意的;
② 输出长度固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击
③ 对每一个给定的输入,计算输出即杂凑值是很容易的;
④ 给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选
择消息,找到另一个与该消息不同的消息使得他们杂凑到同一个值是计算上可行的。
功能: 主要用于数据的完整性和提高数字签名的有效性。
常见的单向散列函数有 :
MD5(message Digest Algorithm 5)是rsa数据安全公司开发的一种单向散列算法,MD5被广泛应用,可以用来把不同长度的数据块进行暗码运算成一个128为的数值。
SHA1:安全哈希算法 可以对任意长度数据进行运算生成一个生成160位的数值。
Sha256、sha384、sha512等。
4、安全通信模型
从以上的介绍中可以看出,各种加密算法都有其特点和适用性:
使用非对称加密,发送者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。
PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。关于PKI
的详细介绍将在下一节博客中介绍。
生日攻击 百度百科
一个关于生日攻击故事:http://blog.renren.com/share/250153535/16381267487
http://me2xp.blog.51cto.com/6716920/1535027 以上文中所述图片以及部分文字描述皆来自于此博文