通俗的理解HTTPS 通信原理

通俗的理解HTTPS 通信原理

0x00 为什么要使用HTTPS

HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。

HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性

由于HTTP是明文传输的,无法保证数据传输的安全,因此HTTPS应运而生。HTTPS相较于HTTP的优势:

  • 数据隐私性:SSL 协议能够在客户端和服务器之间建立起一个安全通道,所有消息都经过加密处理以后进行传输,网络中的非法黑客无法窃取。
  • 数据完整性:SSL 利用密码算法和散列 (HASH) 函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户端之间的信息受到破坏。
  • 身份认证:利用证书技术和可信的第三方认证,可以让客户端和服务器相互识别对方的身份。

0x01 HTTPS 的蜕变

1.密码学基础

想要数据变得隐私,无非就是对数据在传输过程中进行加密,那么使用什么加密方法呢?

首先来了解一下密码学基础:

一个密码系统,通常简称为密码体制 (Cryptosystem) ,由五部分组成

明文空间M:它是全体明文的集合。

密文空间C:它是全体密文的集合。

密钥空间K:它是全体密钥的集合。其中每一个密钥 均由加密密钥 Ke 和解密密钥 Kd 组成,即 K=<Ke Kd >。

加密算法E:它是一族由 M到C 的加密变换。

解密算法D:它是一族由C到M 的解密变换。

根据密码体制分类可以分成对称密码体制、非对称密码体制

  • 对称密码体制:加密与解密密钥相同,对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。

    加密过程:C = E(M,Ke )

    解密过程:M = D(C,Kd ) Ke = Kd

  • 非对称密码体制:加密密钥和解密密钥不同,密钥分为公钥与私钥,公钥对外公开, 私钥对外保密。被公钥加密过的密文只能私钥解,被私钥加密过的密文自能公钥解。非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC等。

    当公钥加密时 加密解密过程:

    C = E(M,Kp) M = D(C,Ks)

    当私钥加密时 加密解密过程:

    C = E(M,Ks) M = D(C ,Kp)

2.HTTPS实现隐私性

2.1 对称加密

现在由客户端C与服务器S之间在通信,怎么才能保证C和S之间传输的数据不被黑客监听?必要对数据加密,当使用对称加密时,加密解密都是使用同一个密钥,任何人都可以得到密钥,任何人都可以解密,及不存在安全性。

2.2 非对称加密

非对称加密方法,首先在服务器存放公钥Kp和私钥Ks

客户端和服务器通信过程:

  1. 客户端向服务端请请求获取公钥Kp
  2. 服务器将公钥Kp发送给客户端
  3. 客户端获得了公钥Kp,使用Kp加密数据传输给服务器。

紧接着服务器使用Ks加密获得明文,根据明文返回对应数据,问题来了,这时服务器应该使用什么方式传输给客户端呢?

尝试使用公钥 Kp加密数据肯定是不行的,因为客户端不知道私钥Ks,即无法解密。

那么尝试使用私钥Ks加密s数据呢?当让也是不行的,因为公钥Kp任何人都可以获取,表示任何人都可以解密。

请添加图片描述

从上面的看来非对称加密的方式也是不安全的,有没有一种更安全的方法呢?

2.3 对称加密+非对称加密

聪明的科研人员分析对称加密、非堆成加密的优缺点得到一个新的方案,使用非对称加密方式协商算法和临时密钥,再用对称加密方式传输数据。

客户端和服务器通信过程:

  1. 客户端向服务端请请求获取公钥Kp
  2. 服务器将公钥Kp发送给客户端
  3. 客户端随机生成一个随机数n使用公钥Kp加密得到N并发送给服务器
  4. 服务器使用私钥Ks解出协商密钥n,并向客户端回复收到密钥
  5. 使用对称加密方式(密钥n)加密传输数据

请添加图片描述

使用这两种加密体制相结合,看似无懈可击找不出任何漏洞了,但真的是这样吗?

中间人攻击:

黑客在客户端与服务器中之间伪造一对公钥密钥,分别冒充服务器和客户端以此欺骗双方。

  1. 客户端向服务端请请求获取公钥Kp1,黑客向服务端请请求获取公钥Kp
  2. 黑客将公钥Kp1发送给客户端,服务器将公钥Kp发送给黑客
  3. 客户端随机生成一个随机数n使用公钥Kp1加密得到N并发送给黑客;黑客将得到的密钥n使用公钥Kp加密成N’ 并发送给服务器
  4. 黑客向客户端发送 OK ,服务器向黑客发送 OK
  5. 客服端和黑客之间正式进行对称加密方式数据传输;黑客和服务器之间正式进行对称加密方式数据传输

请添加图片描述

很显然,对称加密和非对称加密结合的方式依旧不安全。要怎样才能修复这一漏洞?

2.4 证书颁发机构(CA)与数字证书 引入

证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

**数字证书 **为实现双方安全通信提供了电子认证。在因特网、公司内部网或外部网中,使用数字证书实现身份识别和电子信息加密。数字证书中含有公钥对所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证。

数字签名 用于证明SSL证书是由受信任的证书颁发机构颁发的

数字证书认证机构业务流程:

  1. 服务器运营向第三方CA机构提交公钥、组织信息、域名信息等信息并申请认证。
  2. CA机构验证信息的真实性,组织或企业的合法性
  3. 审核通过,CA向申请者签发认证文件——证书。证书包括:申请者公钥、申请个组织信息、签发机构CA的信息、有效时间、证书序列号、签名算法等信息的明文,同时包含一个签名。签名的生成:首先,使用散列函数计算公开明文信息摘要,然后,采用CA的密钥对摘要信息加密,得到的密文即为签名。
  4. 客户端向服务器发出请求,服务器返回证书文件
  5. 客户端读取证书文件中的明文信息,采用相同的散列函数计算摘要,然后使用CA的公钥(内置浏览器或操作系统)解密签名数据,对比证书明文摘要,如果一致,则可以确认证书的合法性。
  6. 客户端还会验证证书相关的域名信息、有效时间等信息,客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。

数字证书签名和验证 图片来源:数字证书是什么 - shuwoom的博客

请添加图片描述

2.5 HTTPS 工作流程

https工作流程:

  1. 客户端向服务器发起请求
  2. 服务器向客户端返回证书
  3. 客户端验证证书的合法性, 确认合法后,生成随机密钥k,使用证书中的公钥Kp加密为K,发送给服务器
  4. 服务器确认协商密钥k
  5. 双方使用协商好的算法可密钥k进行数据传输
    https工作流程

总结:

想要保证HTTPS通信安全,需要使用对称加密、非对称加密、散列函数、CA认证。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 傅里叶变换是一种数学工具,可以将一个信号分解成多个不同频率的正弦和余弦波的叠加。换句话说,它可以把一个复杂的信号分解成多个简单的频率成分。通俗地说,就好像把一个复杂的乐曲分解成不同音调和音量的音符一样。傅里叶变换可以在信号处理、图像处理、音频处理等领域中得到广泛的应用。 ### 回答2: 傅里叶变换是一种数学工具,用于将函数从时域转换到频域。它的基本思想是,任何周期性信号(或非周期性信号通过一些处理)都可以表示为一系列不同频率的正弦波的叠加。 傅里叶变换的过程可以简单描述为以下几个步骤: 1. 将时域函数(通常是一个连续函数)分解成一系列正弦波的叠加。这些正弦波具有不同的幅度和频率。 2. 使用复数形式表示正弦波,其中幅度和相位可以用复数的实部和虚部表示。 3. 对每个频率的正弦波进行傅里叶变换,得到频域中的复数表示。 4. 将所有频率上的复数进行叠加,得到整个频域上的函数表示。 通过傅里叶变换,我们可以更好地理解一个信号在不同频率下的特征和分布情况。傅里叶变换可以将信号分解成不同频率的成分,这些成分可以是周期性的波动或者是非周期性的脉冲。通过对每个频率成分的幅度和相位进行分析,我们可以了解信号中不同频率的贡献和重要性。 傅里叶变换在信号处理、通信、图像处理等领域有广泛应用。例如,在音频处理中,可以通过傅里叶变换将声音信号从时域转换到频域,用于音频降噪、均衡器调节等处理。在图像处理中,傅里叶变换可以将图像从空域转换到频域,用于图像增强、滤波等应用。 总之,傅里叶变换提供了一种用于分析信号在不同频率上特征的工具,可以将信号从时域转换到频域,更好地理解和处理各种信号。 ### 回答3: 傅里叶变换是一种数学工具,用于将一个函数在时间(或空间)域中的表达方式转换为其在频率域中的表达方式。它得名于法国数学家傅里叶,他发现了这种变换的数学原理。 我们知道,任何在时间(或空间)域中的函数都可以表示为许多不同频率的正弦函数的叠加。傅里叶变换就是将这个函数分解为许多频率成分,并且确定每个频率成分的振幅和相位。这样做的好处是,它可以帮助我们理解一个信号或波形的频谱特性,即不同频率成分的强度和分布情况。 一个简单的例子是音乐信号的频谱分析。如果我们把一首音乐看作是一个在时间上变化的函数,傅里叶变换可以将它分解成许多不同频率的音调,并且确定每个音调的振幅和相位。这样我们就可以知道音乐中都包含哪些音调,并且它们的强度如何分布。 在实际应用中,傅里叶变换被广泛应用于信号处理、图像处理、通信等领域。通过将一个信号或图像转换到频率域,我们可以对其进行滤波、去噪、增强等处理,从而得到我们想要的结果。 总之,傅里叶变换是一种将一个函数在时间(或空间)域中的表达方式转换为其在频率域中的表达方式的数学工具。通过这种变换,我们可以更好地理解和处理信号或波形的频谱特性,从而应用于各种实际问题中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值