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

HTTPS基础知识介绍

原创
作者头像
Hunter
发布2020-03-15 16:29:32
1.1K0
发布2020-03-15 16:29:32
举报

HTTPS基础知识介绍

为什么要用HTTPS

一 介绍 HTTPS 之前,我们先回顾一下 HTTP 协议。HTTP 超文本传输协议,它是无状态的、简单快速、基于 TCP 的可靠传输协议。既然 HTTP 协议这么好,那为什么又冒出来了一个 HTTPS ?主要是因为 HTTP 明文传输的数据,这就造成了很大的安全隐患。在网络传输过程中,只要数据包被人劫持,那就相当于赤身全裸的暴露在他人面前,毫无半点隐私可言。想象一下,假设你连了一个不可信的 WIFI,正好又使用了某个支付软件进行了支付操作,那么你的密码可能就到别人手里去了,后果可想而知。公共网络环境就是这样,给你带来便利的同时,也充满了挑战与风险。对于小白用户,你不能期望他有多高的网络安全意识。这样的问题产品应该通过技术手段,让我们的产品变得更安全,从源头来控制风险。这就是HTTPS协议诞生的背景。

二 2016年6月,在全球开发者大会上,苹果公司宣布App Store中所有的iOS应用都必须启用App Transport Security(ATS)安全功能,确保应用通过安全的HTTPS连接进行通信。

App Transport Security,简称 ATS,是苹果在 iOS 9 当中首次推出的一项安全功能。在开启 ATS 安全特性之后,它会强制App应用及网页通讯自动通过HTTPS加密传输连接网络服务, 通过加密App及网页通讯来保障用户数据安全。即App的后端服务器必须部署SSL证书,启用HTTPS加密协议,否则您的App应用将不能通过苹果商店的审核发布,导致App应用无法正常使用。

ATS功能解读

image.png
image.png

苹果对安全性的要求及说明,其中详细介绍ATS,目前在ATS中使用TLS1.2版本。

https://developer.apple.com/cn/security/

您的业务是否符合ATS安全规则可以用下面的工具进行测试。

https://myssl.com/ats.html

相信通过上面的两段描述,你已经了解为什么要用HTTPS了,下面我们开始揭开HTTPS神秘的面纱。

HTTPS协议组成

HTTPS = HTTP over TLS(transport layer security),TLS早期命名为SSL,目前TLS版本1.0 1.1 1.2 1.3 主流版本为1.2。

TLS (Transport Layer Security) : 组成包含Handshake Protocol和Record Protocol。

Handshake Protocol 用来协商密钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。

Record Protocol 定义传输的格式,由于非对称加密的速度比较慢,所以它一般用于密钥交换,双方通过公钥算法协商出一份密钥,然后通过对称加密来通信,为了保证数据的完整性,在加密前要先经过HMAC的处理。

TLS协议的组成及格式如下图

image.png
image.png

HTTPS如何实现数据加密传输:通过下图可以清晰了解,HTTP和HTTPS数据传输的区别,HTTPS数据传输在TCP握手成功后,还要TLS握手完成再传输HTTP数据,这样HTTP数据就被封装加密进行传输,保证安全。

image.png
image.png

网站部署HTTPS后客户端访问网站流程

站点部署HTTPS后一次客户端请求网站相对完整的HTTPS流程:

流程

消耗时间

总计

  1. DNS 解析网站域名

1-RTT

  1. 访问 HTTP 网页 TCP 握手

1-RTT

  1. HTTPS 重定向 302

1-RTT

  1. 访问 HTTPS 网页 TCP 握手

1-RTT

  1. TLS 握手第一阶段 Say Hello

1-RTT

6.【证书校验】CA 站点的 DNS 解析

1-RTT

7.【证书校验】CA 站点的 TCP 握手

1-RTT

8.【证书校验】请求 OCSP 验证

1-RTT

  1. TLS 握手第二阶段 加密

1-RTT

  1. 第一个 HTTPS 请求

1-RTT

10-RTT

image.png
image.png

通过上面的流程我们了解了HTTPS一次完整的访问过程。

这里我们思考一下HTTPS会不会提升用户访问网站的延迟呢?

HTTPS为什么安全?

HTTPS安全是由一套安全机制来保证的,主要包含这4个特性:机密性、完整性、真实性和不可否认性。

机密性是指传输的数据是采用Session Key(会话密钥)加密的,在网络上是看不到明文的。

完整性是指为了避免网络中传输的数据被非法篡改,使用MAC算法来保证消息的完整性。

真实性是指通信的对方是可信的,利用了PKI(Public Key Infrastructure 即『公钥基础设施』)来保证公钥的真实性。

不可否认性是这个消息就是你给我发的,无法伪装和否认,使用签名的技术来保证。

数据加密

HTTPS协议有对称加密和非对称加密两种算法,目的都是把明文加密成密文,区别是密钥的个数不一样,对称加密是一把密钥,这把密钥可以加密明文,也可以解密加密后的密文。

对称加密算法

image.png
image.png

对称加密算法,如其名,就是使用同一个秘钥进行加密和解密。

优点是速度较快,适合对数据量比较大的数据进行加密。

缺点是密钥的保存方式需要保证,一旦加密或者解密的哪一方泄漏了密钥,都会导致信息的泄漏。

常用的对称加密算法有:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6、AES。

非对称加密

image.png
image.png

非对称加密需要两个密钥,一个公开密钥(Public Key),一个私有密钥(Private Key)。公钥和私钥是一对,如果使用公钥进行加密的数据,只有对应的私钥才能解密。如果是使用私钥加密的数据,只有对应的公钥才能解密。

优点是公钥可以被任何人知道,而公钥的泄漏也不会导致信息泄漏,但是一旦私钥泄漏了就会导致信息泄漏。

常用的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。

身份认证

TLS使用非对称加密的地方是签名,签名的目的是让对方相信这个数据是我发送的,而不是其他人发送的。

数字证书的作用

身份认证:在网络中传递信息的双方互相不能见面,利用数字证书可确认双方身份,而不是他人冒充的。

保密性:通过使用数字证书对信息加密,只有接收方才能阅读加密的信息,从而保证信息不会被他人窃取。

完整性:利用数字证书可以校验传送的信息在传递的过程中是否被篡改过或丢失。

防抵赖:利用数字证书进行数字签名,可准确标示签名人身份及验证签名内容,因此签名人对签名及签名内容具有不可否认性,其作用与手写签名具有同样的法律效力。

介绍到这里不得不提的是PKI公钥基础设施

公钥基础设施(英语:Public Key Infrastructure,缩写:PKI),又称公开密钥基础架构、公钥基础建设、公钥基础设施、公开密码匙基础建设或公钥基础架构,是一组由硬件、软件、参与者、管理政策与流程组成的基础架构,其目的在于创造、管理、分配、使用、存储以及撤销数字证书。

密码学上,公开密钥基础建设借着数字证书认证机构(Certificate Authority,CA)将用户的个人身份跟公开密钥链接在一起。对每个证书中心用户的身份必须是唯一的。链接关系通过注册和发布过程创建,取决于担保级别,链接关系可能由CA的各种软件或在人为监督下完成。PKI的确定链接关系的这一角色称为注册管理中心(Registration Authority,RA)。RA确保公开密钥和个人身份链接,可以防抵赖。

可信赖的第三者(Trusted third party,TTP)也常被用来指证书中心。

PIK公钥基础设施组成

image.png
image.png

Certificate Authority(CA) 证书颁发机构(or系统),CA是PKI的基础,它管理着证书的整个生命周期,其作用包括:发放证书,规定证书有效期,废弃不良信用证书。

Registration Authority(RA) 证书注册,登记机构(or系统),RA提供一个用户和CA之前的桥梁,用户通过RA进行证书的申请,RA获取用户的身份信息并确认用户的信息,向CA提出证书申请。它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。注册机构并不给用户签发证书,而只是对用户进行资格审查。因此,RA可以设置在直接面对客户的业务部门,如银行的营业部、机构认识部门等。当然,对于一个规模较小的PKI应用系统来说,可把注册管理的职能由认证中心CA来完成,而不设立独立运行的RA。但这并不是取消了PKI的注册功能,而只是将其作为CA的一项功能而已。PKI国际标准推荐由一个独立的RA来完成注册管理的任务,可以增强应用系统的安全。

证书申请人 是指将要申请证书的客户,可以是个人,集团或团体,政府机构等。

Validation Authority(VA) 证书验证机构在PKI中 VA是一个实体,它用于验证数字证书有效性的服务常用方式CRL及OCSP。

证书存储-证书和私钥存储位置证书管理中心-管理证书的申请,下发,存储机构可信度-PKI系统就本身的证书进行说明,其目的是允许外部分析PKI的可信度。

客户端证书 客户端证书是相对于服务器端而言,用于证明客户端用户身份的数字证书,使客户端用户在与服务器端通信时可以证明其真实身份,也可对电子邮件进行数字签名及加密。适用于各种涉密系统、网上应用和网络资源的客户端强身份认证。  

服务器证书 服务器证书是SSL数字证书的一种形式,意指通过提交数字证书来证明您的身份或表明您有权访问在线服务。再者简单来说,通过使用服务器证书可为不同站点提供身份鉴定并保证该站点拥有高强度加密安全。然而,并不是所有网站都需要添加服务器证书,但强烈建议只要是与用户、服务器进行交互连结操作,以及涉及到密码、隐私等内容的网站页面,都申请服务器安全认证证书。

数字签名过程

image.png
image.png

客户端证书校验过程

(1) 当client端访问baidu.com的时候,baidu的server会将baidu.com证书发送给client端。

(2) client端的操作系统或者浏览器中内置了根证书,但是client端收到baidu.com这个证书后,发现这个证书不是根证书签发,无法根据本地已有的根证书中的公钥去验证baidu.com证书是否可信。于是client端根据baidu.com证书中的Issuer找到该证书的颁发机构GlobalSign Organization Validation CA - SHA256 - G2,去CA请求baidu.com证书的颁发机构GlobalSign Organization Validation CA - SHA256 - G2的证书。

(3) 请求到证书后发现GlobalSign Organization Validation CA - SHA256 - G2证书是由根证书签发,而本地刚好有根证书,于是可以利用根证书中的公钥去验证(验证方法见上一节)GlobalSign Organization Validation CA - SHA256 - G2证书,发现验证通过,于是信任GlobalSign Organization Validation CA - SHA256 - G2证书。

(4) GlobalSign Organization Validation CA - SHA256 - G2证书被信任后,可以使用GlobalSign Organization Validation CA - SHA256 - G2证书中的公钥去验证baidu.com证书的可信性。验证通过,于是信任baidu.com证书。

在这四个步骤中,最开始client端只信任根证书GlobalSign Root CA证书的,然后GlobalSign Root CA证书信任GlobalSign Organization Validation CA - SHA256 - G2证书,而GlobalSign Organization Validation CA - SHA256 - G2证书又信任baidu.com证书,于是client端也信任baidu.com证书。这样的一个过程就构成了一条信任链路,整个证书信任链验证流程如下图所示。

image.png
image.png

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTPS基础知识介绍
    • 为什么要用HTTPS
      • HTTPS协议组成
        • HTTPS为什么安全?
          • 数据加密
          • 身份认证
      相关产品与服务
      SSL 证书
      腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档