计算机网络:浅谈HTTPS和加密

1. 前言

最近研究HTTPS(超文本传输安全协议),是在HTTP协议的基础上增加了一层SSL协议。SSL协议用来在客户端和服务器之间创建一个安全可靠的通信环境,那么我们要深入了解HTTP协议是如何做到安全可靠的通信,我们就要了解一下简单的密码学原理。下面我们就开始从密码学讲起,然后深入到HTTPS相比HTTP协议之上如何去建立一个可靠安全的通信。

2. 加密方式

密码学是一门涉及数学、电子信息、计算机等多学科的一门重要学科,是现代网络安全的基石。其中加密方式可以分为两类,一类是可逆的加密方式,一类是不可逆的加密方式

2.1 不可逆的加密方式

信息摘要(Message Digest)和安全散列(Secure Hash)算法属于此类,常见的算法包括 MD5、SHA1、PBKDF2、bcrypt 等。此类算法可将任意大小的原始数据变换成规定长度的输出,即获取内容的数字指纹,常用于校验原始内容是否被篡改。

2.2 可逆的加密方式

可逆的加密方式又可以分为以下三种:

  • 基于算法的加密算法,也被称为古典加密算法,如 HTTP 认证中的 base64,比特币生成地址用的 base58(公开的算法也可称作编码方式)。这类算法主要对原始内容进行置换和替换得到密文。
  • 对称加密算法,加密和解密使用同一个密钥。对称加密算法的出现标志密码学进入现代密码学阶段,密文的安全性从依赖于算法转向依赖于密钥。常见的对称加密算法有 DES、3DES、AES;
  • 非对称加密算法,加密和解密使用不同的密钥。非对称加密算法开创了密码学的里程碑,解决了对称加密过程中密钥分发的安全问题,被认为现代密码学最伟大的发明。常见的算法有 RSA、DH(Diffie-Hellman)、椭圆曲线算法(Elliptic curve cryptography,ECC)。

对称加密算法

这里我们重点来介绍对称加密和非对称加密。对称加密就是指加密和解密都是使用的同一个密钥。

在这里插入图片描述

也就是说在加密的同时,也会把密钥发送给对方。在发送密钥过程中可能会造成密钥被窃取,那么如何解决这一问题呢?

在这里插入图片描述

非对称加密算法

公开密钥使用一对非对称密钥。一把叫私有密钥,另一把叫公开密钥私有密钥不让任何人知道,公有密钥随意发送。也就是说,发送密文方使用对方的公开密钥进行加密,对方接受到信息后,使用私有密钥进行解密。非对称加密算法还可以用来做数字签名。

在这里插入图片描述

对于公钥和私钥的理解,我们可以查看如下博客 公钥、密钥、数字签名

公钥就是指的是密钥是公开的,每个人都可以持有一把公钥。私钥就是指的是密钥是私有的,只能被私钥拥有者使用。

  • 当网络中的其他人要发送消息给私钥拥有者的时候,其他人可以用公钥对消息进行加密,私钥拥有者获取到加密后的消息,然后使用私钥进行解密。
  • 当私钥拥有者要发送消息给网络中其他人的时候,私钥拥有者可以通过对消息进行Hash函数,生成相应的摘要。然后通过使用私钥对要发送的摘要进行加密,生成数字签名,然后将数字签名和加密后的消息发送给网络其他人。网络其他人收到加密后的消息,通过对数字签名使用公钥进行解密生成摘要,然后对消息通过Hash函数,生成相应的摘要。通过对比解密后的摘要和Hash函数生成的摘要,判断消息是否在网络中被篡改。但是这种通信还会存在一定的问题,万一网络其他人的公钥被攻击者篡改成自己的公钥,那么这种网络通信就不安全的。下面讲解如何通过CA认证中心对公钥进行认证,生成数字证书。
  • 私钥拥有者通过去找“证书中心”,为公钥进行认证。证书中心用自己的私钥,对私钥拥有者的公钥和一些相关信息做认证一起加密,生成“数字证书”。然后私钥拥有者将数字证书以及数字签名和消息发送给网络其他人,网络其他人通过使用认证中心提供的公钥对“数字证书”进行解密,得到安全可靠的公钥,然后使用公钥对“数字签名”进行解密,得到相应的摘要。通过对比解密后的摘要和Hash函数生成的摘要,判断消息是否在网络中被篡改。

3. HTTPS(超文本传输控制协议)

解决的问题:在HTTP协议中有可能存在信息窃听或身份伪装等问题,而使用HTTPS通信机制可以有效地防止这些问题。

HTTP协议存在的问题:

  1. 通信使用明文不对数据进行加密(内容容易被窃听)
  2. 不验证通信方身份(容易伪装)
  3. 无法确定报文完整性(内容易被篡改)

3.1 HTTPS简介

什么是HTTPS:与SSL(安全套接层)组合使用的HTTP被称为HTTPS(HTTP Secure,超文本传输安全协议)

在这里插入图片描述

加密处理防止窃听:通信加密。HTTP协议与SSL组合使用,加密HTTP的通信内容。用SSL建立安全通信线路之后,就可以在这条线路通信了。

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

在使用http协议时,HTTP直接与TCP通信,当使用SSL时,则需要先与SSL通信,然后再由SSL和TCP通信。

在这里插入图片描述

3.2 HTTPS采用混合加密机制

HTTPS采用共享密钥加密和公开密钥加密两者混合加密,两者都有各自的优点。共享密钥加密处理速度快,但密钥无法安全发送给对方;公开密钥加密处理速度慢,但密钥能够安全交换。

但如果我们将两种加密方式一起使用,则两种加密方式就能互补。也就是说,利用公开密钥加密方式安全地交换在共享密钥加密中要使用的密钥,在确保密钥安全前提下,使用共享密钥加密方式进行通信

在这里插入图片描述

下面我们来详细讨论一下HTTPS如何通过SSL协议获得安全可靠的共享密钥:

  1. 第一次握手:客户端请求建立SSL连接,发送支持的加密方式以及一个随机数client random给服务器
  2. 第二次握手:服务器选择其中一种加密方式,并且再加上一个生成的随机数Server random,和数字证书(其中包括公钥)给客户端。
  3. 第三次握手:客户端通过介绍到服务器端发送过来的数字证书,并且确定这个数字证书是有效的,并且再发送一个随机数3,将这个随机数通过使用数字证书中得到的公钥进行加密发送给服务器。
  4. 第四次握手:服务器收到客户端的回复,利用自己的私钥进行解密,获得这个随机数,然后通过前面三个随机数以及协商他们的加密方式,客户端和服务器都计算生成一个对称密钥。这样服务器和客户端就通过非对称加密方式获得了各自安全可看到的共享密钥。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值