Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

TLS/SSL协议工作机制 #28

Open
WarpPrism opened this issue Mar 18, 2017 · 0 comments
Open

TLS/SSL协议工作机制 #28

WarpPrism opened this issue Mar 18, 2017 · 0 comments
Labels

Comments

@WarpPrism
Copy link
Owner

WarpPrism commented Mar 18, 2017

基于HTTPS的网络通信增加了通信的安全性,可以有效的解决:

  • 窃听风险。所有信息加密传播,第三方无法窃听。
  • 篡改风险。具有校验机制,信息一旦被篡改,就会被通信双方发现。
  • 伪装风险。配备身份证书,防止第三方伪装。

TLS是SSL的升级版本,目前应用较广泛的版本是TLS 1.0, SSL 3.0, TLS 1.2等。

TLS/SSL在TCP/IP协议层中的位置如下:

https

基于RSA加密算法的SSL/TCL握手过程

image

阶段一:Client Hello

  • 产生并发送client random number(r1)
  • 发送cipher suites supported(加密支持套件),即客户端支持哪些加密算法
  • 发送支持的协议版本

阶段二: Server Hello

  • 确认使用的加密协议版本如TLS1.0
  • 生成server random number (r2)
  • 携带RSA加密算法公钥(public key)的数字证书

阶段三:客户端响应

  • 生成第三个随机数(r3),并用RSA公钥加密,称为premaster key
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  • 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

阶段四: 服务器最后的响应

  • 用private key解密premaster key,得到r3
  • 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
  • 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

阶段五: 生成session key

客户端和服务端根据r1 r2 r3同时加密生成session key,也称为对话密钥,因此通信双方便产生了基于session key的对称加密,之后所有的通信内容都采用session key加密,确保了安全性。

参考

@WarpPrism WarpPrism added the Http label Mar 18, 2017
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant