HTTPS
2019-07-04 12:01:40 0 举报
AI智能生成
HTTPS协议详解
作者其他创作
大纲/内容
加密解密基础知识
对称加密算法
概述:就是加密和解密使用同一个密钥的加密算法。因为加密方和解密方使用的密钥相同,所以称为称为对称加密,也称为单钥加密方法。
优点是:加密和解密运算速度快,所以对称加密算法通常在消息发送方需要加密大量数据时使用;
缺点是:安全性差,如果一方的密钥遭泄露,那么整个通信就会被破解。另外加密之前双方需要同步密钥;
常用对称加密算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等;
非对称加密算法
概述:非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
公钥和私钥是一对:公钥用来加密,私钥解密,而且公钥是公开的,私钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
有点是:安全性更好,私钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
缺点是:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
常用的非对称加密算法有:RSA、Elgamal、Rabin、D-H、ECC等;
HASH算法
概述:也称为消息摘要算法。将任意长度的二进制值映射为较短的固定长度的二进制值,该二进制值称为哈希值。
常用于检验数据的完整性,检验数据没有被篡改过。常见的又 MD5(MD系列),SHA-1(SHA系列)
HTTPS的优点
所有信息都是加密传播,第三方无法窃听。
具有校验机制,一旦被篡改,通信双方会立刻发现。
配备身份证书,防止身份被冒充。
HTTPS发展史
1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。
SSL/TLS简要交互过程
客户端向服务器端索要并验证非对称加密算法的公钥。
双方协商生成对称加密算法的"对话密钥"。
双方采用对称加密算法和它的"对话密钥"进行加密通信。
握手阶段的详细过程【图解】
握手阶段的详细过程【文本】
客户端发出请求(Client Hello)
浏览器支持的SSL/TLS协议版本,比如TLS 1.0版。【version】
一个浏览器客户端生成的随机数,稍后用于生成对称加密算法的"对话密钥"。【Random1】
浏览器支持的压缩方法。【comp_methods】
session-id:用来表明一次会话,第一次建立没有。如果以前建立过,可以直接带过去。
扩展字段:比如密码交换算法的参数、请求主机的名字等等
浏览器支持的各种加密方法,对称的,非对称的,HASH算法。比如RSA非对称加密算法,DES对称加密算法,SHA-1 hash算法。【ciphersuites】
服务器回应
Sever Hello
确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
一个服务器生成的随机数,稍后用于生成对称加密算法的"对话密钥"。【Random2】
确认使用的各种加密方法,比如确认算法使用:RSA非对称加密算法,DES对称加密算法,SHA-1 hash算法
Certificate
这里主要就是把证书发送给Client,客户端拿到证书后就可以进行验证,同时获取到公钥,用于后面Random3的加密。
Server Key Exchange
这个消息是用来发送密钥交换算法相关参数和数据的,根据密钥交换算法的不同,传递的参数也是不同的。
常用的密钥交换算法:RSA、DH(Diffie-Hellman)、ECDH(Ellipticcurve Diffie–Hellman)。
ServerHello Done
Server来表示自己说完了
客户端回应
Client Key Exchange
这里客户端会再生成一个随机数【Random3】
然后使用服务端传来的公钥进行加密得到密文PreMaster Key
服务端收到这个值后,使用私钥进行解密,得到Random3
这样客户端和服务端就都拥有了Random1、Random2和Random3。这样两边的秘钥就协商好了。
后面数据传输就可以用协商好的秘钥进行加密和解密。
后面数据传输就可以用协商好的秘钥进行加密和解密。
Change Cipher Spec
一条事件消息。
这一步是客户端通知服务端后面再发送的消息都会使用前面协商出来的秘钥加密了
Encrypted Handshake Message
这一步对应的是 Client Finish 消息,客户端将前面的握手消息生成摘要再用协商好的秘钥加密,这是客户端发出的第一条加密消息。
服务端接收后会用秘钥解密,能解出来说明前面协商出来的秘钥是一致的。
服务端接收后会用秘钥解密,能解出来说明前面协商出来的秘钥是一致的。
服务器响应
New Session Ticket
Change Cipher Spec
这一步是服务端通知客户端后面再发送的消息都会使用加密。
是一条事件消息。
Encrypted Handshake Message
这一步对应的是 Server Finish 消息,服务端也会将握手过程的消息生成摘要再用秘钥加密,这是服务端发出的第一条加密消息。
客户端接收后会用秘钥解密,能解出来说明协商的秘钥是一致的。
客户端接收后会用秘钥解密,能解出来说明协商的秘钥是一致的。
0 条评论
下一页