当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【NLP】提升文本生成多样性的实用方法
  • c++ 高精度加法(只支持正整数)
  • FPGA:频闪灯设计
  • 大厂面试-基本功
  • 【LLM】-05-提示工程-部署Langchain-Chat
  • 如何理解React State不可变性的原则
  • 计算机网络发展历史
  • matlab永磁同步电机反馈试验装置的设计和永磁同步电机仿真
  • 【测开能力提升-fastapi框架】fastapi能力提升 - 中间件与CORS
  • TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
  • 在 Ubuntu 22.04/20.04 安装 CVAT 和 SAM 指南
  • Mysql sql技巧与优化
  • Linux环境下MongoDB安装与主从集群,高可用集群配置教程
  • Training for Stable Diffusion
  • SQL labs靶场-SQL注入入门
  • @jsonView过滤属性
  • [笔记] php常见简单功能及函数
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • canvas 高仿 Apple Watch 表盘
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • git 常用命令
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • oldjun 检测网站的经验
  • php面试题 汇集2
  • Python学习之路16-使用API
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • ViewService——一种保证客户端与服务端同步的方法
  • 初探 Vue 生命周期和钩子函数
  • 工作中总结前端开发流程--vue项目
  • 简单实现一个textarea自适应高度
  • 看域名解析域名安全对SEO的影响
  • 力扣(LeetCode)22
  • 前端之React实战:创建跨平台的项目架构
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 微信公众号开发小记——5.python微信红包
  • 硬币翻转问题,区间操作
  • MyCAT水平分库
  • zabbix3.2监控linux磁盘IO
  • ​决定德拉瓦州地区版图的关键历史事件
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 数据结构
  • (10)ATF MMU转换表
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)球球大作战
  • (Java数据结构)ArrayList
  • (libusb) usb口自动刷新
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐