出处:https://www.cnblogs.com/gordon0918/p/5237717.html
1、基础知识
1.1 对称加密算法
对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DES、AES等
对称加密算法加密流程和解密流程
1.2 非对称加密算法
非对称加密算法的特点是加密密钥K1和解密密钥K2是不一样的,他们是一对可互为加解密的密钥,一个可以公开,叫公钥;一个自己保留,不能让其他人知道,叫私钥。这样就能比较好的解决信息传递的安全性,相对来说加解密速度较慢,典型的非对称加密算法有RSA、DSA等。问题是如何保证加密用的接收者的公钥,即如何安全的传递公钥。
非对称加密算法加密流程和解密流程
1.3 摘要算法、数字签名
F(M) = D E(D)=S
F是单向散列函数:即如果已知x,很容易计算F(x),但已知F(x),却很难算出x
数字签名就是用私钥将摘要加密的结果,这样能够保证数据的完整性、放篡改、以及不可抵赖性。
摘要算法及数字签名过程
1.4 校验数据的完整性
乙方把接收到的发送方的明文用单向哈希函数取得摘要值与甲方的公钥解密甲方的数字签名而得到的摘要值进行比较,如果一样说明信息完整,未受篡改,如果不一样说明受到篡改
检验数据完整性过程
1.5 严密的数字加解密、数字签名与验证流程
在发送过程中首先将甲方的明文取摘要值,再将此摘要值用甲方的私钥加密得到甲方的签名,然后将甲的明文、数字签名和数字证书合在一起用甲方随机生成的对称密钥加密得到密文;第二步是将这一随机生成的对称密钥用乙方的公钥加密后得到数字信封;最后将密文和数字信封一起发送给乙方。
在乙方接收过程中,首先将收到数字信封用乙方的私钥解密,得到随机生成的对称密钥,第二步是解密得到的随机生成的对称密钥将密文解密,得到甲方的明文、数字签名和数字证书;第三步将甲方的明文取摘要值与甲方的数字签名用甲方的公钥解密得到的摘要进行比较,从而验证签名和检验数据的完整性。这一流程同时用到对称算法和非对称算法,是比较安全的流程
数字证书在这里起到的作用有:提供甲方的公钥,保证发送信息方的不可抵赖性。
严密的数字加解密、数字签名和验证流程
1.6 X.509证书
为了保证证书的一致性,国际电信联盟设计了一套专门针对证书格式的标准X.509,其核心提供了一种描述证书的格式。
X.509数字证书不仅包括用户名和密码,而且还包含了与用户有关的其他信息,通过使用证书,CA可以为证书接收者提供一种方法,使他们不仅信任证书主体的公钥,而且还信任有关证书主体的其他信息
X.509证书有有效期限、证书在期满后就会失效。期间CA可能会出于某些原因吊销证书。要吊销证书,CA保存并分发一个吊销证书的列表,即证书吊销列表CRL。网络用户可以访问CRL以确定证书的有效性
目前, X.509标准已在编排公共密钥格式方面被广泛接受,用户许多网络安全的应用程序,其中包括Ipsec, SSL, SET, S/MIME(安全多媒体Internet邮件扩展)
证书中主要域
2、HTTPS协议详解
2.1 HTTPS概念说明
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。其实现是在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
SSL协议位于TCP/IP协议与各种应用协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性。SSL层所处位置如下
SSL示意图
2.2、SSL协议特点
①SSL协议可用于保护正常运行与TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telent的通信,最常见的是用户SSL来保护HTTP通信
②SSL协议的优点在于它是应用层协议无关的。高层的应用协议能透明的建立于SSL协议之上
③SSL协议的应用层协议之前就完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密。从而保证通信的安全性。
④SSL协议使用通信双方的客户证书以及CA根证书。允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方建立起了一条安全的、可信任的通信通道。
⑤该协议使用密钥对传送数据加密,许多网站都是通过这种协议从客户端接收信用卡编号等保密信息。常用于交易过程
2.3、SSL协议工作的基本流程
Sl工作基本流程图如下所示
SSl工作基本流程图
SSL协议既用到了非对称加密技术又用到了对称加密技术。对称加密技术虽然比公钥加密技术的速度快,可是非对称加密技术提供的更好的身份认证技术。SSL的握手协议非常有效的让客户端和服务器之间完成相互之间的身份认证。其主要过程如下:
1)客户端向服务器传输客户端的SSL协议版本号,支持的加密算法的种类,产生的随机数Key1及其他信息
2)服务器在客户端发送过来的加密算法列表中选取一种,产生随机数Key2,然后发送给客户端
3)服务器将自己的证书发送给客户端
4)客户端验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行者的公钥能否正确解开服务器证书的”发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配,如果合法性验证没有通过,通信将断开,如果合法性验证通过,将继续向下进行;
5)客户端随机产生一个Pre-Master-Key,然后用服务器的公钥(从证书中获得)对其加密,然后将该Pre-Master-Key发送给服务器
6)服务器接收到Pre-Master-Key,则使用协商好的算法(H)计算出真正的用户通信过程中使用的对称加密密钥Master-Key=H(C1+S1+PreMaster);
7)至此为止,服务器和客户端之间都得到Master-Key,之后的通信过程就使用Master-Key作为对称加密的密钥进行安全通信;
3、中间人攻击原理
针对SSL的中间人攻击方式主要有两类,分别是SSL劫持攻击和SSL剥离攻击
3.1 SSL劫持攻击
SSL劫持攻击即SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,需要先将自己接入到客户端和目标网站之间;在传输过程中伪造服务器的证书,将服务器的公钥替换成自己的公钥,这样,中间人就可以得到明文传输带Key1、Key2和Pre-Master-Key,从而窃取客户端和服务端的通信数据;
但是对于客户端来说,如果中间人伪造了证书,在校验证书过程中会提示证书错误,由用户选择继续操作还是返回,由于大多数用户的安全意识不强,会选择继续操作,此时,中间人就可以获取浏览器和服务器之间的通信数据
3.2 SSL剥离攻击
这种攻击方式也需要将攻击者设置为中间人,之后见HTTPS范文替换为HTTP返回给浏览器,而中间人和服务器之间仍然保持HTTPS服务器。由于HTTP是明文传输的,所以中间人可以获取客户端和服务器传输数据