揭秘HTTPS(网络编程安全一)

2020-12-09 10:21:06 浏览数 (1)

HTTPS和HTTP是什么关系?HTTPS加密流程是什么?Websocket项目中如何集成SSL?阿里云如何进行HTTPS开发。

一 HTTP和HTTPS概述

1.1 HTTP协议

  1. 概述

HTTP的第一个版本只能传输超文本标记语言(HTML)文件,因此被称为超文本传输协议。

  1. 特征

a 是一个请求响应无状态的应用层协议。

b 基于TCP/IP协议族传输(明文)数据,所有的WWWW都必须遵守这个标准。

上图解释

代码语言:txt复制
域名:表示网站中不同的页面。

通信协议:浏览器和服务器之间沟通的语言。
  1. HTTP发展史

1.2 HTTPS

HTTPS(中文名是超文本安全协议)是在HTTP基础下加入SSL层,SSL就是加密详细内容(数据加密和身份认证)。

即可以理解为对HTTP升级版,在数据传递前进行数据加密。

  1. HTTPS和HTTP之间区别
代码语言:txt复制
1、https协议需要申请CA,证书,http不需要证书

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS HTTP协议构建的加密传输

5、http直接与四层交互,https先给安全层交互,然后在与四层交互

二 加密原理和算法刨析

2.1 SSL和TLS

  1. 概述

SSL(安全套接字协议),及继任者TLS(传输层安全)为网络通信提供安全及数据完整性

的一种安全协议。SSL和TLS在传输层和应用层之间对网络连接进行加密。

  1. TLS(传输层安全)历史
代码语言:txt复制
a 前身是SSL,最初几个版本(SSL1.0、SSL2.0、SSL3.0)。        

b 1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有TLS1.0、TLS1.1、TLS1.2三个版本。 

c TLS1.3改动会比xia较大,目前还未大规模推广,目前使用最广泛的是TLS 1.2。   

2.2 加密详解

2.2.1 概述

访问www.taobao.com

  1. 访问流程

上图说明

a 通过先向服务器获取公钥。

b 产生对称加密的密钥。

c 公钥加密对称密钥后传递给服务端。

d 服务端用私钥解密,获取对称加密的密钥。

e 客户端对数据用对称密钥加密然后传给服务端。服务端用对称密钥解密获取原数据。

代码语言:txt复制
总结:在数据传输过程用对称加密,因为对称加密效率高。客户端产生的对称密钥传递给服务端。

      为了保证对称密钥的安全性,所以对对称密钥进行非对称加密传给服务端。然后服务端就

      获取对称密钥。
  1. 加密算法解析

建立一个密码体制,需要五个空间组成(上图描述)

代码语言:txt复制
明文M:加密前或解密后的信息;

密文C:明文加密后的信息;

密钥K:由加密密钥和解密密钥组成;

加密E:从明文到密文的变换;

解密D:从密文到明文的变换

2.2.2 加密算法

2.2.2.1 对称加密
  1. 描述

也叫单钥加密,是指加密和解密是使用相同的密钥。

  1. 优势

加密、解密运算速度快,效率高。代表算法:AES算法、DES算法、RC4,3DES 、Triple-DES, RC2等;

  1. 特点
代码语言:txt复制
发送端和接收端共享相同的密钥才能通信,一定程度上保证了安全。               
代码语言:txt复制
对于枚举攻击,密码长度越长越难以破解  
  1. 案例

0010101010101010 明文

0001010001001011 秘钥

0011111011100001 密文(异或后)

0010101010101010 明文(解密后)

2.2.2.2 非对称加密
  1. 描述

加密和解密的密钥不一样,分别称为公钥和私钥。公钥和算法是公开的,私钥是保密的。

  1. 优缺

运算性能比较低、加密数据长度有限、安全性超强。例如:RSA、DSA、ECDSA、 DH、ECDHE;

  1. 特点

只有特定主机才有私钥,保证数据安全。

解决对称加密的密钥多管理不方便问题。

  1. 对称和非对称区别

对称加密效率高,但是在密钥管理上和密钥交换的时候,安全性不能保障。所以网络环境二者混合使用。

2.2.2.3 散列加密
  1. 描述

算法是不可逆的,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值。

却不能通过这个hash值重新获得目标信息。

  1. 常见算法

MD5、SHA-1、SHA-2、SHA-256 等

2.3 CA证书

  1. 定义

CA证书顾名思义就是由CA(Certification Authority,也叫“证书授权中心”)机构发布的数字证书。

  1. 证书包含内容

颁发者、使用者、版本、签名算法、使用者、公钥、指纹、指纹算法等等。

  1. 编码格式

X.509规范中一般推荐使用PEM格式来存储证书相关的文件。证书文件的文件名后缀一般为 .crt 或 .ce

对应私钥文件的文件名后缀一般为 .key。证书请求文件的文件名后綴为 .csr 。有时候也统一用pem作为

文件名后缀。

  1. 证书(浏览了解下)
代码语言:txt复制
版本号(Version Number):CA证书一个规范的版本号,目前为版本3,值为0x2;

序列号(Serial Number):由CA维护的,为它所发的每个证书分配一个序列号,用来追踪和撤销证

书。只要拥有签发者信息和序列号,就可以唯一标识一个证书,最大不能过20个字节;

签名算法(Signature Algorithm):数字签名所采用的算法,如:

sha256-with-RSA-Encryption

ccdsa-with-SHA2S6;

颁发者(Issuer):发证书单位的标识信息,如 ” C=CN,ST=Beijing, L=Beijing,

O=org.example.com,CN=ca.org。example.com ”;

有效期(Validity): 证书的有效期很,包括起止时间。

服务器提供服务器的公钥给ca机构,生成证书,证书一般包含以下内容:

代码语言:txt复制
◆Issuer (证书的发布机构)

◆Valid from , Valid to (证书的有效期)

◆Public key (公钥)

◆Subject (主题,使用者)

◆Signature algorithm (签名所使用的算法)

◆Thumbprint, Thumbprint algorithm (指纹以及指纹算法)
  1. 证书生成流程
代码语言:txt复制
把Issuer (证书的发布机构),Public key (公钥),Subject (主题),Valid from,Valid

to(证书的有效期)等信息以明文的形式写到证书里面作为内容,然后用一个指纹算法(淘宝是sha1)计算

出这些数字证书内容的一个指纹(也就是签名),并把指纹和指纹算法用自己的私钥进行加密,然后生成

证书

0 人点赞