Skip to content
New issue

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

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

Already on GitHub? Sign in 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant