当前位置: 首页 > news >正文

HTTPS 的加密过程 详解

HTTP 由于是明文传输,所以安全上存在以下三个风险:

  • 窃听风险,比如通信链路上可以获取通信内容。
  • 篡改风险,比如通信内容被篡改。
  • 冒充风险,比如冒充网站。

HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险。

  • 信息加密:防止窃听、信息被整个替换。采用混合加密方式。
  • 校验机制:防止篡改、但不能防止信息被整个替换。采用摘要算法方式
  • 身份证书:防止冒充。采用数字证书方式。

一、摘要算法——数字指纹

主要过程:

  • 发送方对内容计算出一个「指纹」,然后同内容一起传输给对方。
  • 接受方对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较。
  • 如果「指纹」相同,说明内容没有被篡改,否则就可以判断出内容被篡改了。

常见摘要算法:MD5(消息摘要算法第五版)

  • 输入任意长度的原文,经过处理(见下),输出为128位的信息(数字指纹);
  • 不同的输入得到的不同的结果(唯一性);
  • MD5属不属于加密算法
  • MD5不可逆,因为本质使用的是hash算法,在计算过程中原文的部分信息是丢失了的。(不同长度的原文,有可能得到相同的数字指纹。所以无法通过数字指纹得到原文,因为原文长度不固定。)
  • MD5可破解:这个说法是因为一般我们需要加密的原文信息长度是固定(或者限制在一定范围内)的,比如用户密码规定长度在8~12位之间,所以存在破解的可能性。

MD5的处理过程

        MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,取出4个32位子分组组成,将这四个32位分组级联后将生成一个128位散列值

二、非对称加密——数字签名

  • 对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。
  • 非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。

非对称加密有两种形式:

  • 公钥加密,私钥解密。这个目的是为了保证内容传输的安全,因为被公钥加密的内容,其他人是无法解密的,只有持有私钥的人,才能解密出实际的内容;
  • (数字签名算法)私钥加密,公钥解密。这个目的是为了保证消息不会被冒充,因为私钥是不可泄露的,如果公钥能正常解密出私钥加密的内容,就能证明这个消息是来源于持有私钥身份的人发送的。

HTTPS非对称加密的用途主要在于通过「私钥加密,公钥解密」的方式,来确认消息的身份、也防止消息被整个替换,不过私钥加密内容不是内容本身,而是对内容的哈希值(数字指纹)加密

三、数字证书——服务器公钥+CA数字签名 

CA (数字证书认证机构)使用自己的私钥给服务器公钥加密。

四、对称加密——通信期间

  • 在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
  • 在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。

五、参考

小林coding

http://www.lryc.cn/news/405276.html

相关文章:

  • spring整合mybatis,junit纯注解开发(包括连接druid报错的所有解决方法)
  • ClusterIP、NodePort、LoadBalancer 和 ExternalName
  • 【Day1415】Bean管理、SpringBoot 原理、总结、Maven 高级
  • Git之repo sync -c与repo sync -dc用法区别(四十八)
  • vite + vue3 + uniapp 项目从零搭建
  • 在CentOS中配置三个节点之间相互SSH免密登陆
  • arm 内联汇编基础
  • Java语言程序设计——篇五(1)
  • 【香橙派开发板测试】:在黑科技Orange Pi AIpro部署YOLOv8深度学习纤维分割检测模型
  • 集成学习在数学建模中的应用
  • WebKit 的 Web SQL 数据库:现代浏览器的本地存储解决方案
  • Yolo-World网络模型结构及原理分析(三)——RepVL-PAN
  • 代码随想录——一和零(Leetcode474)
  • 力扣题解(组合总和IV)
  • Postgresql主键自增的方法
  • 【源码阅读】Sony的go breaker熔断器源码探究
  • LeetCode题(66,69,35,88)--《c++》
  • 来参与“向日葵杯”全国教育仿真技术大赛~
  • SQL每日一题:删除重复电子邮箱
  • 3、宠物商店智能合约实战(truffle智能合约项目实战)
  • 数据库系列
  • 极狐GitLab如何启用和配置PlantUML?
  • Shell 构建flutter + Android 生成Apk
  • 如何用手机压缩视频?手机压缩视频方法来了
  • Linux下如何安装配置Elastic Stack日志收集系统
  • 【深入C++】map和set的使用
  • 跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py
  • MATLAB练习题——矩阵(2)
  • arm、AArch64、x86、amd64、x86_64 的区别
  • 【SpringBoot】 jasypt配置文件密码加解密