前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >https介绍

https介绍

原创
作者头像
jaykan
修改2018-07-07 19:34:13
1K2
修改2018-07-07 19:34:13
举报
文章被收录于专栏:技术-分享

本文尝试从以下概念简单介绍下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

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

秘钥窃取.png
秘钥窃取.png

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

3 非对称加密

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

非对称加密.png
非对称加密.png

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

4 中间人攻击

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

中间人攻击.png
中间人攻击.png

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

5 数字证书

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

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

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

数字证书.png
数字证书.png

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

数字证书生成.png
数字证书生成.png

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

数字证书解密.png
数字证书解密.png

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

解决办法如下:

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

6 TLS协议

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

TLS.png
TLS.png

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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 http的安全问题
  • 2 对称加密
  • 3 非对称加密
  • 4 中间人攻击
  • 5 数字证书
  • 6 TLS协议
  • 7 什么是HTTPS
  • 8 参考文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档