原创

https介绍

本文尝试从以下概念简单介绍下https

  1. http的安全问题
  2. 对称加密(Symmetric-key algorithm,e.g.,DES)
  3. 非对称加密(Public-key cryptography,e.g.,RSA)
  4. 中间人攻击(man-in-the-middle attacks)
  5. 数字证书(Public key certificate)
  6. TLS协议(Transport Layer Security)
  7. 什么是HTTPS

1 http的安全问题

假设A和B通过web进行通信,由于http是明文协议,双方发送的信息相当于在网上裸奔,双方的通信内容能够轻易的被窃听、篡改和冒充,因此,我们期望对通信加密。常见的加密方法包括对称和非对称,将会以此讲解彼此的优缺点。

2 对称加密

A和B通信的内容可以通过秘钥进行加密传输,只需要双方提前约定好加密算法和秘钥即可,比如常见的DES、AES-GCM算法,通信过程如下图所示:

对称加密.png

对称加密有个明显的缺陷就是秘钥本身如何进行保密和安全传输呢?只要三方窃取到秘钥,则可以轻易破解密文。

秘钥窃取.png

解决办法就是通过非对称加密。

3 非对称加密

不同于对称加密,非对称加密有一对秘钥,一个是保密的,称为私钥,一个是公开的,称为公钥。私钥加密的数据只有公钥才能解开,公钥加密的数据只有私钥才能解开,这个特性非常重要,因为不需要传输私钥了,而公钥是公开的,可以随便传播,常见的算法实现包括:RSA、DSA、ECDSA、 DH、ECDHE等。但是非对称加密有个重大缺陷就是计算速度远慢于对称加密。

非对称加密.png

注意这里其实还有一个问题,就是如何证明你的公钥是你的呢,比如典型的中间人攻击。

4 中间人攻击

回到上小节提到的问题,如何证明你的公钥是你的呢?中间人攻击就是通过伪造公钥达成窃取通信数据的目的,过程如下图所示:

中间人攻击.png

图中pa表示A的公钥,pc表示C的公钥,sc表示C的私钥,sa表示A的私钥。可见中间人C通过伪造公钥的办法成功截取了A和B的通信内容。那么如何解决公钥证明的问题?

5 数字证书

为了解决公钥证明的问题,先思考下现实世界中你是如何证明你是你的?通常有如下办法:

  1. 派出所颁发的身份证
  2. 公证处提供的证明材料

按着这个思路,网络世界也需要一个认证中心(CA),提供一个证书,证书里面记录了你的公钥和其他相关信息,该证书能够证明你是你自己,这就是数字证书。

数字证书.png

类似于公正材料有公证处的盖章,数字证书也需要认证中心盖章,即数字签名。并将公钥和其他基础信息,通过hash算法(例如sha1)生成证书摘要,然后通过CA的私钥加密证书摘要,得到数字签名。最后将A的公钥、其他信息和数字签名组合成数字证书,过程如下图:

数字证书生成.png

相应的,判断数字证书是否正确的过程如下,首先通过CA的公钥解密证书中的数字签名得到证书摘要1,同时用相同的hash算法计算证书中的公钥和其他信息得出证书摘要2,比较证书1和2,即可判断证书是否正确。

数字证书解密.png

但是这里仍然有问题,如何保证CA的真实性?CA的公钥也存在被篡改的可能。似乎遇到了鸡生蛋蛋生鸡的问题。

解决办法如下:

  1. 我们必须相信CA
  2. CA本身也有证书证明自己身份
  3. CA是分级结构,顶级CA证书是自签名的,通常会内置于操作系统和浏览器
CA分级结构.png
浏览器内置证书.png

6 TLS协议

TLS是一种安全协议,是SSL的标准化版,实现了众多对称和非对称加密算法,是应用层协议,与其他应用层协议无耦合,因此TLS可以轻易的嵌入其他协议完成安全加密传输的目的。

TLS.png

TLS最关键的是握手过程,主要完成了下面2件事

  1. 通信双方的身份认证,基于数字证书
  2. 通过公钥加密并交换pre-master-secret,并生成对称密钥作为会谈密钥Session key,后续的通信内容由会谈秘钥加密
TLS握手.png

图片来自https://zh.wikipedia.org/zh/File:SSL_handshake_with_two_way_authentication_with_certificates.svg

7 什么是HTTPS

下面我们可以回答什么是https了:

  1. https即 http over SSL(Secure Sockets Layer)/TLS(Transport Layer Security)
  2. http定义了web数据传输格式
  3. SSL/TLS实现了数据安全加密
https.png

8 参考文档

  1. https://zh.wikipedia.org/wiki/傳輸層安全性協定
  2. http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
  3. https://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=2665513779&idx=1&sn=a1de58690ad4f95111e013254a026ca2&chksm=80d67b70b7a1f26697fa1626b3e9830dbdf4857d7a9528d22662f2e43af149265c4fd1b60024#rd
  4. https://www.jianshu.com/p/2cdaf8e99f8d

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • git commit 规范

    https://www.conventionalcommits.org/zh-hans/v1.0.0-beta.4/

    jaykan
  • 应用加密一;非对称加密算法揭秘

      RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)

    用户3745746
  • 漫谈威胁建模下的安全通信

    这次文章的主要内容是一次内部技术分享的内容,主要是关于安全通信的威胁建模,设计方案以及算法,其中涉及https。

    七夜安全博客
  • 非对称加密与安全证书看这一篇就懂了

    前几日做支付对接时,被对方文档中的加密方式搞晕乎了一会。意识到证书加密方面的理解不够深入,事后查阅参考资料补习一波。本文是根据期间的学习,以及长期以来的实践做出...

    用户1263954
  • 网络协议 13 - HTTPS 协议:加密路上无尽头

        之前说了 HTTP 协议的各种问题,但是它还是陪伴着互联网、陪伴着我们走过了将近二十年的风风雨雨。现在有很多新的协议尝试去取代它,来解决性能、效率等问题...

    北国风光
  • 对称加密、非对称加密、RSA、消息摘要、数字签名、数字证书与HTTPS简介

    对称加密算法使用的加密和解密的密钥一样,比如用秘钥123加密就需要用123解密。实际中秘钥都是普通数据在互联网传输的,这样秘钥可能会被中间人截取,导致加密被破解...

    Dabelv
  • 再谈加密-RSA非对称加密的理解和使用

    前言 随着互联网越来越渗透入我们生活的方方面面,各种私密信息在网络中传播,为了保证信息的真实可靠,在我们对其安全性的要求也越来越高,对此,加密是一个永远不过时的...

    枕边书
  • SSL保护 C/S 、B/S 通信安全

    转:https://blog.csdn.net/GitChat/article/details/78431275

    瑾诺学长
  • CA数字签名的由来

    上一次内容我们介绍了TLS加密原理,为什么要加密通信呢?是因为我们不希望我们的个人信息被明文传播,任何一个人只要截断我们的物理线路或者入侵到我们网络中,就能获取...

    运维部落
  • Citrix Receiver界面中提示“当前没有可供您使用的应用程序或桌面”解决方案

    这几天在测试citrix 的虚拟桌面,服务器资源比较充足,所以我把Delivery Controller 和StoreFront分开建立,并建立了两个,等建立完...

    Mr.Mao Notes

扫码关注云+社区

领取腾讯云代金券