【HTTP】05_HTTPS

前言

由于HTTP并不安全,它是明文传输的,所以有了HTTPS。 HTTPS具备了机密性、完整性、身份认证和不可否认,所以是安全的。

特点

  • 机密性:数据是保密的,除了可以访问的人,其他人都看不到;
  • 完整性:数据再传输的过程中不会被篡改,前面讲到了代理服务器,黑客可以利用代理服务器修改数据;
  • 身份认证:可以确保对方的真实身份,即如果有一方是假冒的网站,数据再保密有没有什么用,所以要对方双方的是真实的;
  • 不可否认:已经发生过的行为,不能不算数。

HTTPS的默认端口号是443。HTTP是基于TCP/IP的,而HTTPS是基于SSL/TLS的。

在这里插入图片描述

加密

实现机密性最常用的手段是加密,就是把消息用某种方式转换成谁也看不懂的乱码,只有掌握钥匙的人才能转换出原始文本。

  • 密钥:就是钥匙;
  • 明文: 加密前的消息;
  • 密文: 加密后的乱码;
  • 解密:使用密钥还原明文的过程。

加密有两大类: 对称加密和非对称加密。

对称加密

又叫私钥加密,即信息的发送方和接收方使用同一个密钥去加密和解密数据,由于对称加密算法是公开的,所以以但私有被泄漏,那么密文就很容易被破解,所以对称加密的缺点是密钥安全管理困难;。常见的算法是AES和ChaCha20。

非对称加密

又叫公钥加密,非对称加密使用公钥和私钥,二者成对出现,私钥被自己保存,不能对外泄露,公钥则任何人都可以获得该密钥,公钥和私钥用任何一种进行加密,另一个进行解密。非对称加密的缺点是加密和解密花费时间长、速度慢,只适合少量数据进行加密。

混合加密

由于非对称加密的运算速度比较慢,使用对称加密和非对称加密,两者可以互相取长补短.

HTTPS = HTTP + SSL协议。在HTTPS传输的过程中,需要用SSL对数据进行加密和解密,需要用HTTP对加密后的数据进行传输。HTTPS为了兼顾安全和效率,同时使用对称加密和非对称加密。对数据使用对称加密,对对称加密要使用的密钥使用非对称加密传输。

摘要算法

加密只是实现了HTTP的机密性,黑客虽然拿不到会话密钥无法破解密文,但是可以通过窃听足够多的密文再尝试修改、重组后发给网站;或者黑客也可以伪造身份发布公钥,如果你拿到的是假的公钥,混合加密就完全失效了。所以,在机密性的基础上还必须加上完整性、身份认证等特性,才能实现真正的安全。

实现完整性主要靠摘要算法,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。换一个角度,也可以把摘要算法理解成特殊的“单向”加密算法,它只有算法,没有密钥,加密后的数据无法解密,不能从摘要逆推出原文。

摘要算法保证了“数字摘要”和原文是完全等价的。所以,我们只要在原文后附上它的摘要,就能够保证数据的完整性。

数字签名

使用私钥再加上摘要算法,就能够实现“数字签名”,同时实现“身份认证”和“不可否认”。

数字签名的原理其实很简单,就是把公钥私钥的用法反过来,之前是公钥加密、私钥解密,现在是私钥加密、公钥解密。但又因为非对称加密效率太低,所以私钥只加密原文的摘要,这样运算量就小的多,而且得到的数字签名也很小,方便保管和传输。

签名和公钥一样完全公开,任何人都可以获取。但这个签名只有用私钥对应的公钥才能解开,拿到摘要后,再比对原文验证完整性,就可以像签署文件一样证明消息确实是你发的。

数字证书和 CA

因为谁都可以发布公钥,我们还缺少防止黑客伪造公钥的手段,可以找一个公认的可信第三方,让它作为“信任的起点,递归的终点”,构建起公钥的信任链。这个“第三方”就是我们常说的CA(Certificate Authority,证书认证机构)。它就像网络世界里的公安局、教育部、公证中心,具有极高的可信度,由它来给各个公钥签名,用自身的信誉来保证公钥无法伪造,是可信的。

CA 对公钥的签名认证也是有格式的,不是简单地把公钥绑定在持有者身份上就完事了,还要包含序列号、用途、颁发者、有效时间等等,把这些打成一个包再签名,完整地证明公钥关联的各种信息,形成“数字证书”(Certificate)。

HTTPS原理

  • 客户端向服务器发起HTTPS请求,链接到服务器的443端口,其中含有协议版本号、客户端随机数和加密方法;
  • 服务器端有一个密钥对:公钥和私钥,服务端保存着私钥不能将其泄漏,公钥可以发送给任何人,服务确认双方的加密方法,将含有公钥的ca证书、服务端随机数发送给客户端(因为公钥可能会被伪造,所以借助第三方ca,给公钥形成数字证书);
  • 客户端接收到服务端的证书之后,会对证书进行检查合法性,如果不合法,HTTPS就无法继续。如果证书合格,就会生成一个新的随机值,然后用服务端的公钥对新的随机值进行加密,生成了密文并发送给服务端;
  • 服务器接收到客户端发来的密文后,用自己的私钥进行非对称解密,获得解密后的新的随机数;
  • 两端根据前面三个随机数,生成对话秘钥,用来加密接下来的对话。

总结

  • HTTPS和HTTP的不同在于,前者实现了机密性、完整性、身份认证和不可否认,所以比较安全;
  • HTTPS的端口号是443,HTTP默认的端口号是80;
  • 机密性使用的是混合加密的方式;
  • 完整性借用的是摘要算法;
  • 身份认证和不可否认借助的是数字签名;
  • 由于公钥也可能被伪造,所以要借助第三方–CA,它会给公钥形成数字证书;
  • HTTPS协议会先于服务器进行TCP握手,再执行TLS网上,才可以建立安全链接;
  • 握手的目的是安全地交互对称密钥;
  • 原有的HTTP站点可以保留作为过渡,使用301重定向到HTTPS。

参考

透视HTTP协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值