1.加密概念加密要解决三个问题:机密性(不可破解)完整性(不可篡改)确定性(不可冒充)1.1.加密技术 网络传输给生活和工作带来极大的方便,同时这个方便又不能让我们不得不防止别有企图者的别有用心,于
.
1.加密概念
加密要解决三个问题:
机密性(不可破解)
完整性(不可篡改)
确定性(不可冒充)
1.1.加密技术
网络传输给生活和工作带来极大的方便,同时这个方便又不能让我们不得不防止别有企图者的
别有用心,于是加密成为关键。这里暂不谈加密算法的问题,就聊聊一个实现的过程原理。
加密技术简介:
对称加密 ------ 加密速度快,能更好的迎合实时沟通,缺点是密钥的传输需要秘密完
成。于是生成了一个递归困局。
非对称加密 ------ 加密速度相对较慢,优势在于甲方需要接受密文时,乙方只需要发布公钥
公开传输。
单向加密 ------ 加密过程不可逆,密文具有唯一性,而且密文格式固定。可以用来唯一认证被加密对象。
举例子来说明:
场景介绍,某机构在西安跟芝加哥有两个独立运营的机构。因为业务原因,西安方面需要
跟芝加哥那边沟通一些机密事宜。
这是,芝加哥那边可以使用非对称加密技术把公钥发送给西安方面,于是西安方面使用公
钥对“对称加密”的密钥进行加密发送。这样双方可以使用对称加密的方式进行比较安全的沟
通。
1.2.数据完整性
单向加密就可以很好地保证传输文件的完整性。
1.3.加密模型
通讯方式
通讯双方A B。私钥S,公钥G。
1、双方使用对称加密相互通讯;
骑个“自行车”把密钥给送过去,完成密钥交换。(Diffie-Hellman密钥交换)
2、双方使用非对称加密相互通讯;
这个过程叫做公共密钥交换,然后各自发送信息时使用对方公钥加密后传送;接受的信息使用自
己的私钥解密。
密钥交换
Diffie-Hellman密钥交换
通过该方法,协议双方在一定程度上可以获取一个安全的对称密钥。
通过非对称加密交换一把对称加密的密钥
双方使用任意一方的公钥交换一把私钥,然后使用对称私钥加密交换信息;继而可以更换对称密钥,达到与多个通讯对象的安全传输。
1.4.身份唯一性
通讯的双方,使用非对称加密的私钥加密文件,传输给对方。对方使用其公钥可以解密时,那么代表其身份是可以唯一确定的。
用公钥解密,就无法保证数据的机密性。再加上,其加密效率问题(速度太慢),非对称加密就用来做身份验证。
1.5.认证机制
认证的必要性
* 请思考一个问题,Diffie-Hellman密钥交换时,怎么确定对方就是自己要通讯的真实对象呢。
就用非对称加密的特性完成身份验证。从而确保,通讯方的身份是唯一、确定的。
* 请思考一个问题,如果我是那个别有用心之人,我该做什么呢?
那么就是冒充甲方,因为人人都能取得非对称加密的公钥,我不就可以冒充了,……
1、C冒充A,给B发布自己的公钥
2、C同样冒充任意一方,与之交换对称密钥;同时窃取双方的加密信息。
“身份验证”……
通讯双方,需要互相验证对方的身份。
认证过程
基于公钥冒充的问题,那就请第三方机构认证公钥。通过提交自己的公钥交给认证机构,经过认证后,确定下私钥拥有者的合法身份信息。
这个时候,通讯双方就能互相信任对方身份的真实存在。拿着自己获取对方的证书,去第三方机构验证公钥的合法性。相互验证身份结束。
身份验证时,通过了第三方的认证,可以解决身份验证问题是个好事情。问题是该项服务是个付费项目。客户端访问服务器,网站可以花费一笔费用去验证自身的身份,客户呢,费用巨大……。在网络交易时,站点提供有偿服务时,怎么确定能在提供服务后,获取客户端用户的报酬呢?
1.6.安全通道
通过一个可信任的第三方认证机构,实现身份认证。认证后也可以通过加密手段实现通讯的机密性,使用单向加密把传输的信息再次确认,排除掉因为可能存在的传输质量等问题引起的数据缺失、恶意修改。假如存在恶意修改,虽然修改者不一定能解密获得数据信息,但是却能起到一定破坏作用,即使破环在数据完整性检测下会丢弃。可是不堪其扰也绝不是一件该忍受的事情。
加密方法:
对称加密,加密和解密使用同一个密钥。
公钥加密,一对密钥(私钥、公钥)。
单向加密、散列加密,计算数据特征码。
单向加密的特征: ①雪崩效应 ②定长输出 MD5: 128位 SHA1: 160位 |
2.加密算法
Hash算法
又称单向散列算法,是一个将任意长度的消息经过各种处理返回一定长度的消息摘要算法;
Hash算法是不可逆的。由于不可逆特点,不能用于加密;只能用于数字签名、数据的完成性校验。
对称算法
又称传统算法(或是单密钥算法),就是加密密钥能从解密密钥中推算出来;反之也成立,
其实也就是加密密钥和解密密钥是同一个密钥。
公开密钥算法
公开密钥算法是非对称的,并且它使用两个密钥;基于数学函数,而非基于替换和置换。
Hash算法
CRC32 循环冗余校验
MD5 消息摘要算法
SHA 安全散列算法
对称算法
DES 数据加密标准(分组算法)
(双重DES、三重DES)
AES 高级加密标准
(DES的替代算法)
公开密钥算法
RSA
EIGamal
RSA:是一个比较完善的公开密钥算法,既能用于加密,也能用于数字签名。
RSA的安全性基于整数因子分解问题的困难性,公钥和私钥是一对大素书的函数。
从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。
公钥:加密 认证 (作用)
私钥:解密 签名
3.SSL/TLS
SSL 安全套接字层/在TCP和使用TCP的应用之间提供安全服务
TLS 传输层安全协议
DSA 数字签名算法
SSL的主要目标是为两个通信主体提供保密、可靠的信道。建立在可靠的传输层之上,与应用层
的具体协议无关;加密算法、通信密钥的协商以及服务器的认证都是由SSL自动地完成的。在 SSL
的连接建立之后,应用层不需要进行任何干预,通信中的所有数据都会被SSL自动加密。
什么是SSL?
是一种用于确保应用程序间数据传输的机密性和可靠的internet传输层协议;
使各应用程序可以通过公钥和私钥相互验证身份;
使用密钥加密和数字签名为应用程序间交换的数字加密;
可能是单向的,即服务器向客户端验证身份;也可能是双向的……
在初次建立连接时需要握手。
4.数字签名
基于安全的考虑,需要对信息进行加密。于是出现了加密算法。由于信息是需要传递的,为了能够解密,需要交换密钥。于是,又出现了非对称加密,用来交换对称加密的密钥。到了这里,仅仅解决了“机密性”,仍然存在风险可能会面对“完整性”(被篡改)。终于,解决“完整性”出现了单向加密技术,现在只需要发送单向加密的特征码既可以验证信息的完整性。信息是安全的,完整的,就剩下最后一个问题,就是“确定性”。最后,为了实现信息传递“确定性”出现了数字签名技术。到此为止,加密模型建立完毕,信息是安全的,具有了机密、完整、确定的特性。
数字签名,用私钥把信息的特征码进行加密后得到就是签名。
这么个加密模型已经很完善了,是否就一定是安全的?答案是否定的,中间人***。***者发送自己取得的两个公钥分别发送给信息的双方……
所以,数字签名实现了确定的身份,这个身份还需要进一步得到公信机构的确认。大家都信任一个公信机构,该机构给数字签名做公正。这么一来,信息发送的双方就真实的确认了双方的身份。
5.CA证书
加密模型中公信机构,又叫“证书颁发机构”,该机构颁发的证书用来完成身份验证。
SSL证书
证书包括:
组织的名称和ip地址;
组织的公钥;
证书颁发机构名称,及机构的数字签名。
用途:
加密所有使用SSL协议传输的数据。
SSL证书链 (一些列的证书)
每个证书都包含该证书的签发者的名称,即链中下一个证书的请求者名称;
每个证书都使用其颁发者的私钥来签名,该签名可以使用证书链中下一个证书颁发者的公钥
进行验证;
根证书颁发机构的证书是自签名证书。
* 首先需要生成一个主证书(顶级CA),然后使用这个主证书来签发服务器证书和客户端证
书。
CA(证书颁布机构)
受信任的第三方;
对被颁发者的真实性负责;
向申请机构签发 数字证书(公钥);该证书使用CA的私钥签署;
CA的公钥广泛发布。
SSL握手
SSL握手顺序
●确定加密算法、密钥交换方式
●建立、互换会话密钥
●验证服务端证书
●验证客户端证书