理解TSL加密

TLS

TLS全称是Transport Layer Security,是用来替代SSL的,是一种密码协议,用来提供计算机之间交互的安全通信。主要用于https通信,也用于email,即使通信等。

“对称加密”和“非对称加密”的概念

“加密”和“解密”

“加密”的过程,就是把“明文”变成“密文”的过程;反之,“解密”的过程,就是把“密文”变为“明文”。在这两个过程中,都需要一个关键的东西—叫做“密钥”——来参与数学运算。

“对称加密”

所谓的“对称加密技术”,意思就是说:“加密”和“解密”使用相同的密钥。这个比较好理解。就好比你用 7zip 或 WinRAR 创建一个带密码(口令)的加密压缩包。当你下次要把这个压缩文件解开的时候,你需要输入 同样的 密码。在这个例子中,密码/口令就如同刚才说的“密钥”。

“非对称加密”

所谓的“非对称加密技术”,意思就是说:“加密”和“解密”使用 不同的 密钥。这比较难理解,也比较难想到。当年“非对称加密”的发明,还被誉为“密码学”历史上的一次革命。 一般来说指:加密时使用公钥,解密时使用私钥。

各自有什么优缺点?

“对称加密”的好处是性能较好,但由于要让客户端掌握密钥,需将密钥在网络上传输,故不安全 “非对称加密”的好处是限制了公钥的能力,即用公钥加密后只能在服务端用私钥解密,这样使得解密的能力仅保留在服务端,缺点也很明显,这样只能实现单向加密,客户端没有解密能力。另外由于”非对称加密”涉及到“复杂数学问题”,所以性能相对而言较差。

SSL对两种加密的利用?

为了获得较优的性能,对话的内容用”对称加密”,而对于”对称加密”带来的密钥传输问题,则由”非对称加密”来解决,由于客户端没有”非对称加密”的解密能力,所以密钥由客户端来产生并用公钥加密传输给服务端,这样就(在思路上)解决了密钥传输的安全问题和对话数据解密的性能问题.

SSL和TLS的主要区别

**TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。**另外,TLS版本号也与SSL的不同(TLS的版本1.0使用的版本号为SSLv3.1).

TLS握手

TLS握手通常分为2种方式,一种是基本的握手(即只使用服务器的证书来进行加密,具体可参照下图),另一种是客户端服务端握手。

在这里插入图片描述

只使用服务器的证书来进行加密,具体步骤如下:

  1. 客户端与服务器之间通过3次握手建立连接
  2. 协商阶段
    1. client发送一个ClientHello消息给server,在这一步,客户端主要向服务器提供以下信息:
      • 支持的协议版本,比如TLS 1.0版
      • 一个客户端生成的随机数,稍后用于生成”对话密钥”
      • 支持的加密方法,比如RSA公钥加密
      • 支持的压缩方法
    2. server发送一个ServerHello消息给client,在这一步,服务器的回应包含以下内容:
      • 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
      • 一个服务器生成的随机数,稍后用于生成”对话密钥”
      • 确认使用的加密方法,比如RSA公钥加密
      • 服务器证书
    3. server发送**Certificate(证书)**消息
    4. server发送ServerKeyExchange消息
    5. server发送ServerHelloDone消息,表明握手协商已经完成
    6. client发送ClientKeyExchange消息,这个消息包含了PreMasterSecret(这个值是根据server发送的Certificate里面的public key通过加密生成的)和 public key。(注意在发送消息之前,client会对server发送的Certificate进行验证–可参考下面的数字证书,如果验证失败,则握手失败)
    7. client和server根据client的随机数,server端的随机数和PreMasterSecret计算出一个共同的密码,这个共同的密码叫做master secret)
  3. client发送ChangeCipherSpec记录,告诉server我后面发送的所有消息都会是加密的了
    1. client发送一个已验证并且加密的Finished消息。包含了对之前消息的hash和mac
    2. server对接收的Finished消息进行解密并验证hash和mac,如果验证失败,则握手失败
  4. server发送ChangeCipherSpec消息,告诉client我后面发送的所有消息都会是加密的了
    1. server发送一个已验证并且加密的Finished消息。包含了对之前消息的hash和mac
    2. client 对接收的Finished消息进行解密并验证hash和mac,如果验证失败,则握手失败
  5. **应用阶段:**此阶段说明TLS握手已经完成,后面所有发送的消息都会是加密的

从Server Hello到Server Done,有些服务端的实现是每条单独发送,有服务端实现是合并到一起发送。Sever Hello和Server Done都是只有头没有内容的数据。

数字证书

数字证书提供的subjectName(主题名称)设置当前证书的所有权,将当前访问的地址与证书所有权的地址进行对比,如果一样,则证书有效,如果不一样,则证书无效。同时也会对证书及其父类证书已知道根证书有效期进行对比,如果不在有效期内,则证书无效。

在这里插入图片描述

CA

CA是Certificate Authority的缩写,也叫“证书授权中心”。

证书之间的信任关系

就是用一个证书来证明另一个证书是真实可信的。

证书信任链

实际上,证书之间的信任关系,是可以嵌套的。比如,C 信任 A1,A1 信任 A2,A2 信任 A3……这个叫做证书的信任链。只要你信任链上的头一个证书,那后续的证书,都是可以信任的。

根证书

“根证书”的英文叫“root certificate”。来看个稍微复杂点的例子:假设 C 证书信任 A 和 B;然后 A 信任 A1 和 A2;B 信任 B1 和 B2。则它们之间,构成如下的一个树形关系(一个倒立的树)。   处于最顶上的树根位置的那个证书,就是“根证书”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。

实际上,根证书自己证明自己是可靠的(或者换句话说,根证书是不需要被证明的)。

CA证书在SSL中的作用

客户端需要对服务端的证书进行检查,如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥(公钥从证书中获取,证书的正确性由CA保证)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值