你了解https吗

文章目录

  • 1. 简介
    • 详细内容
      • 1. 参考
  • 2. 关于密码学的一些小知识(可跳过)
    • 2.1 RSA
      • 2.1.1 RSA公钥加密体制
      • 2.1.2 基于RSA的数字签名
    • 2.2 `Diffie-Hellman`密钥交换算法
    • 2.3 `PKI`的组成
    • 2.4 `hash`算法
    • 2.5 MAC
  • 3. `https`是什么li>
  • 4. 为什么说它比http安全li>
  • 5. 他是怎么做到安全的li>
    • 5.1 握手层
      • 5.1.1 认证:
      • 5.1.2 密码套件协商
      • 5.1.3 握手消息的完整性校验
    • 5.2 加密层
  • 6. 他真的绝对安全了吗li>
  • 7. 怎么让他变得更加安全呢li>
  • 8. 如何部署一个https 站li>
    • 8.1 部署`https`的必要条件
      • 8.1.1 证书和密钥对
      • 8.1.2 部署和配置`https` 站
      • 8.1.3 全站`https`的策略
  • 9.总结
  • 参考 络资源


人人都知道,比安全,那你真的知道他为什么安全吗p>

::: note

写这篇文章的原因是,我以为自己到了录用评估就可以顺利oc的情况下,结束了流程,本已准备阶段性躺平,但却无奈需要继续努力的情况下,去重新总结了一下自己的技术栈,发现对https始终存在疑惑,所以记录一下下吧。

:::


1. 简介

以下我将以这几个方向去展开自己对https的理解:

  1. 写作的基础或者说参考是什么li>
  2. 关于密码学的一些小知识li>
  3. https是什么li>
  4. 为什么说它比http安全li>
  5. 他是怎么做到安全的li>
  6. 他真的绝对安全了吗li>
  7. 怎么让他变得更加安全呢li>
  8. 如何部署一个https 站li>
  9. 总结一下li>

详细内容

关于这篇博客的主要内容部分,可择善享用。

1. 参考

为了避免管中窥豹的尴尬,我前后回去阅读了以下书籍,以加深自己对的理解。其中主要阅读了《深入浅出https》。如果时间充足,建议看看该书,必有收益。上层建筑做的再好,如果基础设施做得不好,不过就是徒劳罢了。毕竟,如果你不了解它,也就不知道我的理解是对还是错,阅读了也好像一无所获,这可不是一个写者所希望看到的。

::: note

  1. 《深入浅出HTTPS》 –虞卫东著
  2. 《信息安全概论》 – 清华大学出版
  3. 《现代密码学教程第二版》 – 北京邮电大学出版

:::

2. 关于密码学的一些小知识(可跳过)

包含算法,密钥交换算法,的组成以及算法,等等。

2.1 RSA

算法,主要涉及公钥加密体制以及基于的数字签名。

::: tips

  • 什么是RSA算法li>

RSA的基础是数论的欧拉定理,它的安全性依赖于大整数的因子分解的困难性。

  • 补充数论知识(以检查正确性)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-waICJ4Iw-1638100226935)(https://raw.githubusercontent.com/csDeng/vuePress/master/docs/05.运维/pics/image-20211128130316369.png)]

:::

2.1.1 RSA公钥加密体制

主要包含密钥生成、加密算法和解密算法三部分。(以下摘自书籍《现代密码学教程》)

  • 密钥生成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g6sD5WuM-1638100226937)(https://raw.githubusercontent.com/csDeng/vuePress/master/docs/05.运维/pics/image-20211128131739932.png)]

  • 加解密的过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OislG3KU-1638100226939)(https://raw.githubusercontent.com/csDeng/vuePress/master/docs/05.运维/pics/image-20211128131430477.png)]

  • 总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcoXhc7e-1638100226941)(https://raw.githubusercontent.com/csDeng/vuePress/master/docs/05.运维/pics/image-20211128131859441.png)]

  • 示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6jUN143b-1638100226944)(https://raw.githubusercontent.com/csDeng/vuePress/master/docs/05.运维/pics/微信图片_20211128132306.jpg)]

2.1.2 基于RSA的数字签名

::: note

可以看到,我们使用不同类型的密码套件,所需要的握手次数也不一样。

而密码套件其实就是各种加密所用的工具的大礼包,包含以下几个方面:

  1. 身份验证算法
  2. 密码协商算法
  3. 加密算法或者加密模式
  4. 等等

  • 使用的密码套件

这种方法下的服务器证书中会包含服务器公钥,显得服务器的密钥对 格外重要,因为服务器公钥不仅仅要进行身份验证,还要进行密钥协商,一旦私钥泄露,就失去了前向安全性。

  • 使用静态算法

这种方法下,服务器证书中会包含固定的参数和公钥,也会失去前向安全性,所以现在的密码套件很少支持算法,机构在签发证书的时候也不会包含参数和公钥。

  • 算法和算法

这两个算法和服务器的密钥对关系不大,即时服务器的私钥泄露,也不会造成太大的安全风险。

DHE的简单介绍

(TLS/SSL 协议详解SSL中的RSA、DHE、ECDHE、ECDH流程与区别_Network/Storage/Linux Kernel-CSDN博客_ecdhe

:::

5.1.3 握手消息的完整性校验

客户服务端协商出密码块之后,代表可以对消息进行加密和完整性校验了,但是首先保护的并不是应用层的消息,而是握手的消息。

为什么要保护握手的消息呢p>

因为握手消息也是明文传输的,证书能够确保服务器的真实身份,但是密钥协商是身份认证之后的过程。攻击者无法攻击身份的校验过程,但可以在后续的握手过程中进行消息的篡改。因为你能拿到服务器的公钥,攻击者当然也能拿到服务器的公钥,然后攻击者拦截你跟服务器的握手消息,然后篡改之后再发给服务器,拿到服务器的消息之后,再转给你。这其实就是中间人攻击。

::: note

为了避免消息被篡改,握手的过程就需要一种机制来避免消息的篡改,这也就是消息的完整性校验。

  • 校验过程主要分以下几个步骤:
  1. 将发送和接收到的所有握手消息组合在一起,然后计算出消息摘要,握手层使用密钥块对摘要数据进行加密和完整性保护,然后发送给。
  2. 收到消息之后,使用加密块解密出摘要数据。
  3. 紧接着自行计算发送和接收到的所有握手消息,再计算消息的摘要数据,如果摘要数据和解密出的摘要数据一致,就代表发来的消息没有被篡改。

:::

5.2 加密层

加密层就是使用握手层协商出来的套件对消息进行加密和完整性校验了。

常见的加密算法有

  1. 流密码加密模式

RC4等,被证明了不安全,很少使用

  1. 分组密码加密模式

AES,CBC也很少使用

  1. 模式

是一种比较新型的加密模式,一步就能解决加密和完整性处理,不用填充,也不需要初始化向量。

在中主要使用模式。

6. 他真的绝对安全了吗h1>

其实,保证的仅仅是当前连接是安全的,如果 站里面存在非的内容,比如说,那么当你打开 页的时候,浏览就会自动的去请求这个请求,如果里面存在非法代码,那就会发生“故障”,这就是我们经常说的。那么怎么避免呢下一小节。

7. 怎么让他变得更加安全呢h1>
  1. 如果是新 站,那么我们可以在架构的时候,就考虑全局安全策略。如果是旧的 站,那么我们可以将非http请求的连接走代理(验证是否安全),然后旧的 站改请求的资源。
  2. 设计标准
  3. 启动内容安全策略。

8. 如何部署一个https 站h1>

开始部署

8.1 部署的必要条件

主要有3个条件。

8.1.1 证书和密钥对

获取证书的三种途径

  1. 向收费的机构申请证书
  2. 向免费的机构申请证书,比如说
  3. 生成自签名证书(通常只用于局域 )

证书主要包含两部分信息:

  1. 服务器的实体信息,包括服务器的主机名,服务器公钥等
  2. 机构的信息,比如说机构的数字签名算法标识符、签名值等。

比如我的个人博客的证书(向腾讯云申请的)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqQ6oBsj-1638100226956)(https://raw.githubusercontent.com/csDeng/vuePress/master/docs/05.运维/pics/image-20211128165222081.png)]

8.1.2 部署和配置 站

以为例

环境:

  • 安装nginx
  • 查看是否成功安装
  • 配置
  1. 把证书和私钥放在特定的文件夹(通常放在下面)

  2. 编写配置文件

这里有人喜欢在里面直接改,也有人喜欢在里面改,仁者见仁智者见智,我喜欢后者。

  1. 测试配置是否成功
  1. 测试

8.1.3 全站的策略

  • 把服务重定向到

修改

  • HSTS

::: tip

,它虽然不是的一部分,却是保证安全最有力的一个武器。

他其实就是利用一个响应头部,规范浏览器的一些行为,从而规避一些安全问题而已。

可参考这个

:::

  • CSP

::: tip

,一种内容安全策略,如使用得当,可避免攻击。

其实也是一个响应头部,具体信息可参考内容安全策略( CSP ) – HTTP | MDN (mozilla.org)

:::


::: warning

涉及到的具体配置,可能因人而异,但整体思路,差不多,可多问度娘。

:::

9.总结

主要包含身份认证、密钥协商、数据加密等三大方面,且加密主要分和系。

参考 络资源

(44条消息) 公钥密码体制-RSA (一)_Henzox的专栏-CSDN博客

内容安全策略( CSP ) – HTTP | MDN (mozilla.org)

HSTS – 术语表 | MDN (mozilla.org)

文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树跨区域 络的通信学习 络层的作用22724 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月25日
下一篇 2021年10月25日

相关推荐