端口映射 idea离线安装 华为鸿蒙 Git 机器学习 Eclipse插件 Java包装类 劝酒文化 二代征信 swing parsing flask swift3 emacs uiviewcontroller tree smtp swift2 swagger linux查看mysql进程 matlab停止运行命令 bitlocker加密好慢 spark大数据处理技术 oracle连接字符串 yml文件注释 python中len函数 python基础练习 python图形界面开发 python编程工具 java编程 java集成 javastringbuilder java中scanner用法 shell编程学习 linux中grep php项目实例 机械下载 微信摇骰子表情包 js绝对值 gilisoft
当前位置: 首页 > 学习教程  > 编程语言

HTTPS的原理是什么

2021/1/28 23:41:10 文章标签:

HTTPS作为HTTP的升级版本,最大的特点就是加了一层SSL/TLS协议将原来明文的HTTP变成了更安全的加密版本。 “裸奔”的HTTP 在HTTPS还没有普及的日子里,HTTP一直将报文作为明文传输。对于黑客来说,明文传输的报文简直就是在“裸奔”&#xff0…

HTTPS作为HTTP的升级版本,最大的特点就是加了一层SSL/TLS协议将原来明文的HTTP变成了更安全的加密版本。

“裸奔”的HTTP

在HTTPS还没有普及的日子里,HTTP一直将报文作为明文传输。对于黑客来说,明文传输的报文简直就是在“裸奔”!我们举个例子来说明一下:

小明在某论坛上介绍自己是一名优秀的Java程序员,然后点下了浏览器上的发送按钮。

正常情况下,当发送方使用HTTP向接收方发送一个消息时,是能够正确传输的,但是一旦有黑客进行了中间人攻击,事情的发展就可能超出我们的控制了,比如:

于是,小明被论坛上的用户们疯狂嘲讽…

对称加密

既然裸奔的HTTP不能安全传输数据,那么我们如果使用对称加密是否就能保证消息传输的安全性了呢?继续往下看。

由于我们使用对称加密,因此需要发送方与接收方同时拥有密钥,能够进行消息的加密与解密。正常情况下是这样的:

看起来似乎使用对称加密要更安全一点了,但是密钥发送过程总一旦被黑客劫持那么依然是“裸奔”状态:

非对称加密

非对称加密有公钥和私钥两种密钥,公钥加密的信息只有私钥能解密,反过来私钥加密的信息只有公钥能解密。相较对称加密,非对称加密的加密和解密过程更加复杂,耗时更长。因此HTTPS使用非对称加密的方式传递密钥(注意这里的密钥用于对称加密,是由客户端自己生成的,不是前面提到的公私钥),然后用传递的密钥进行对称加密的操作:

需要注意的是,后续的加密操作都是用对称加密的密钥进行操作的,这样进行加解密的操作快速高效。但是,这种非对称加密+对称加密的方式真的就天衣无缝了吗?如果黑客把服务器端发给客户端的公钥拦截下来,用自己的一套公私钥来伪装服务器显然也是一种漏洞。客户端收到黑客的公钥傻乎乎的以为是安全的,就用这个假的公钥把对称加密的密钥进行加密并发送到黑客这里,黑客用自己的私钥解密获得密钥,用真的公钥对密钥进行加密发送给服务器就完成了一次截获密钥的过程,后续操作依然是“裸奔”的。

所以说,即便使用了非对称加密+对称加密也并不能保证安全,这就需要引入HTTPS用到的另一个保证安全性的措施了。

CA证书与数字签名

前面提到了采用非对称加密+对称加密的方式虽然已经相对安全了,但是因为不能确定公钥的来源是可靠的所以依然存在安全隐患,这里我们就需要引入第三方CA机构保证公钥的可靠性了,具体流程如下:

  1. 服务方向第三方CA机构提交公钥并提出申请。
  2. CA机构对申请方进行资格审核与真实性验证。
  3. 如果审核通过,CA机构会向申请者发送认证证书,证书内容主要包括申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文以及一个数字签名。这个数字签名使用Hash函数计算公开信息得到一段摘要值,然后用CA证书的私钥对摘要值进行加密。
  4. 客户端发送请求后收到证书。
  5. 客户端通过层级关系找到证书的上级证书(客户端系统内置),通过上级证书的公钥对证书的签名进行解密得到x,再通过Hash算法对服务器证书的数据生成摘要值y进行比较,如果x和y一致就证明没有受到中间人攻击。

本文链接: http://www.dtmao.cc/news_show_650272.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?