网络原理(二)—— https

https 简介

https 也是一个应用层协议,他是由 http 和 SSL 组成的(在 http 的基础上进行加密,把原本http 的明文传输变为了密文传输),简称为 https。

加密的方式大体分为两大类,分别是对称加密和非对称加密。

对称加密

对称加密就是只生成一个密钥,这个密钥既是用来加密,也是用来解密的。

大致流程如下:

首先客户端生成一个密钥,然后通过网络传输发送给服务器,服务器先保存起来,之后两者之间传输的数据均由这个密钥进行加密或者解密。

非对称加密

由于对称传输使用的密钥是直接公开在网路中的,如果此时有一个路由器被黑客劫持,那么就可能会被黑客篡改信息,造成不良的影响,如下图:

因此如果密钥只用一个并且是公开传输,其实很不安全,这时候引入非对称传输。

非对称传输使用两个密钥,一个是公钥,另一个是私钥,公钥就是和上面的对称传输的密钥类似,是公开出去的,而私钥是自己保存的,不对外公开的。

公钥既可以用来解密,也可以用来加密,私钥也是,但是公钥和私钥两者只能做其中一件,例如,如果使用公钥来加密,那私钥就是用来解密的,如果私钥是用来加密,那公钥就是用来解密的。

公钥和私钥由服务器生成,服务器会把公钥公开出去,私钥会自己保存。

由于非对称加密消耗的算力比较大,所以一般我们使用非对称加密的是对称加密产生的密钥,不涉及庞大的业务数据。
对称加密则是针对业务数据加密的,只要非对称加密安全,就能保证对称加密的密钥不会泄漏,也就保证了此次会话的安全性。

中间人攻击

非对称加密也不一定安全,黑客可以利用设备伪装成服务器,给客户端发送假冒的公钥,如下图所示:

这就是中间人攻击

数字证书

为了避免发生中间人攻击,我们需要验证从服务器获得公钥是不是来自服务器的。

在服务器使用https 之前,会像CA机构进行权威认证,申请一份数字证书。

服务器把证书传输给浏览器,浏览器从证书里获取公钥,证书就如身份证,证明服务端公钥的权威性

数字证书的制作:

首先CA机构会使用非对称加密算法生成公钥和私钥,使用私钥来对数字证书进行加密,数字证书包含服务器的域名、公钥、数字签名、证书所有者、证书有效日期等等,通过算法把这些数据进行加密,客户端通过公钥进行解密验证,只要出现错误就会弹出警告这个网站不安全。

首先公钥的传输不是通过网络传输的,而是在电脑安装系统的时候就会把公钥一同保存到电脑里,这样黑客就无法进行中间人攻击伪造假证书。

有了数字证书之后,服务器和客户端之间的通信如下图所示:

在对称加密基础上引入非对称加密,在非对称加密的基础上又引入了数字证书,这样就保证了我们的数据传输的安全性。


理解数字签名:

数字签名本质上就是校验和,首先对一串数据进行哈希函数运算获得散列值,然后使用CA自己的私钥进行加密散列值,然后这串原始数据和加密过的散列值会一起存放在数字证书里,客户端使用CA的公钥对散列值进行解密获得校验和1,对原始的数据使用相同的散列函数运算得到校验和2,如果这两个校验和是一致的就说明签名是合法有效的。


客户端验证数字证书的步骤:

首先判断证书是否过期

其次判断证书的发布机构是否可以信任(操作系统中已内置的受信任的证书发布机构)

最后验证证书是否被篡改:从系统获取该证书机构的公钥,对签名进行解密获得校验和1,然后计算整个证书的hash值,得到校验和2,判断两个校验和是否相等。相等则说明证书没有被篡改过。


为什么黑客篡改不了数字签名,因为一旦篡改,里面的校验和也要跟着改,黑客没有CA的私钥,无法进行正确的加密,这样客户端使用公钥解密就会发现两个校验和对不上。

相关推荐
源远流长jerry5 分钟前
NIC数据包的接收与发送
linux·网络
郝YH是人间理想12 分钟前
Python网络编程入门
运维·服务器·开发语言·网络·python
wanhengidc1 小时前
服务器中防火墙的重要性
运维·服务器·网络
计算机程序设计开发1 小时前
计算机网络技术服务管理基于Spring Boot-SSM
网络·数据库·spring boot·毕业设计·计算机毕业设计
Steps-of-time3 小时前
Docker容器之网络
网络·docker·容器
塔能物联运维3 小时前
塔能智慧运维箱:智慧城市的“量子跃迁”,创新与售后的双轨驱动
大数据·网络·安全
S0linteeH3 小时前
Nexus L2 L3基本配置
网络·安全
泷羽Sec-pp3 小时前
WebDeveloper靶机详解
linux·服务器·前端·网络·chrome
@泽栖3 小时前
软考中级网络工程师第六章网互联与互联网
网络·计算机网络·软考
宋发元7 小时前
高效事件驱动设计模式——Reactor 模式
服务器·网络·设计模式