SSL/TLS那些事

简介:

安全套接层(Secure Socket Layer,SSL)是一种在两台机器之间提供安全通道的协议。
它具有保护传输数据以及识别通信机器的功能。安全通道是透明的,意思就是说它对传输的
数据不加变更。客户与服务器之间的数据是经过加密的,一端写入的数据完全是另一端读取
的内容。透明性使得几乎所有基于 TCP 的协议稍加改动就可以在 SSL 上运行,非常方便。
参考文献<SSL与TLS>


握手:

SSL 握手有三个目的。第一,客户端与服务器需要就一组用于保护数据的算法达成一致。
第二,它们需要确立一组由那些算法所使用的加密密钥。第三,握手还可以选择对客户端进
行认证。


握手过程:

  a.客户端发出请求(ClientHello)
(1) 支持的协议版本,比如TLS 1.0版。
(2) 一个客户端生成的随机数,稍后用于生成"对话密钥"。
(3) 支持的加密方法,比如RSA公钥加密。
(4) 支持的压缩方法。

  b.服务器回应(SeverHello)
(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
(2) 一个服务器生成的随机数,稍后用于生成"对话密钥"。
(3) 确认使用的加密方法,比如RSA公钥加密。
(4) 服务器证书。

  c.客户端回应

(3)客户端对服务器的证书进行验证,并抽取服务器的公用密钥。然后,再产生一个称
  做 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密。最后,客户端
  将加密后的信息发送给服务器。

  注意,第 3 步是握手过程中的关键一步。所有要被保护的数据都依赖于 pre_master_secret
  的安全。原理非常简单:客户端使用服务器的公用密钥(从证书中抽取的)来加密共享密钥,
  而服务器使用其私用密钥对共享密钥进行解密。握手的剩余步骤主要用于确保这种交换过程
  的安全进行。客户端与服务器分别使用相同的密钥导出函数(key derivation
  function,KDF)来产生 master_secret,最后再次通过 KDF 使用 master_secret
  来产生加密密钥。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值