HTTPS核心机制详解

HTTPS流程:

对称加密:

  1. 加密和解密所用的密钥相同!
  2. 效率高、算法公开

例子:

假设我们要传递一个值:int a = 10;此时客户带持有一个加密密钥:int b =20;服务器也有一个相同的密钥:int b = 20;客户端发送数据加密后为int tmp = a^b;

服务器接收到数据后-->int recv = tmp; 讲recv ^ b = abb = a^0 =a;就拿到了真正要传递的值!

非对称加密:

存在公有密钥和私有密钥;

两种方式:先用公钥加密,则只能由私钥解密--意味着能解密的人少!!

先用私钥加密,再用公钥解密--->意味着只要有公钥就能解密!!

数据摘要和数据指纹

数据摘要:

第一种应用场景:云盘

客户端上传文件/数据 -->hash散列算法--->形成数据摘要(hash值)--->服务端验证摘要是否曾经在服务端内部存在,如果存在则证明上传的文件内容相同!!!

场景二:

加密用户传递的密码--数据库--hash验证摘要

四种方案:

  1. 双方都使用对称加密:

    存在很严重的问题:

  2. 如果是client--->server发送信息,client要发送的信息应该是 info(原始数据) + 密钥K

    server收到的是加密过的信息,但是server同样会使用密钥K去对该信息解密!问题就在这里:密钥K在交换时是可以被中间人获取的,那么由于server同样使用密钥K解密,意味着只要是持有密钥K的角色都能对client的数据进行解密,这是绝对不允许的!!

  3. 一方使用非对称加密:

    client使用公钥进行加密,即message = 原始数据 + 公钥K --->server

    数据传递的过程中任何人都可以获取到公钥,server收到加密的信息后,使用自己的私钥M去解密,在clinet-->server的传输方向来看虽然是安全的,但是!!server的响应呢??server采用私钥M加密rsp,发回client,client采用公钥K解密,这就意味着server的rsp是不安全的!!

  4. 双方都使用非对称加密

    双方都是用公钥加密信息,自己的私钥解密信息:

    双方正式通信之前,先进行密钥交换

    client:公钥A,私钥B

    server:公钥C,私钥D

  5. 先交换各自的公钥,client--->公钥A-->server拿到公钥A;server--->公钥C-->client拿到公钥C

    2,开始使用对方的公钥加密自己要发送的信息,对方收到使用自己的私钥机密即可!!

但是!也是不安全的!!!

公钥交换阶段时,万一公钥被篡改了呢???是不是就不安全了啊!!!

并且非对称加密速度慢,计算开销大

  1. 双方使用对称机密 + 非对称加密
    首先client啥都不做,server生成一个公钥S和一个私钥S^
  2. 密钥交换阶段,server向client发送自己的公钥S,此时这个公钥S任何人都可以获取到!包括中间人
  3. client拿到服务器的公钥S后,在自己的本地生成一对对称密钥C
  4. client如何将自己的对称密钥C发给server呢??答案是用server的公钥S加密对称密钥C!!密钥也是数据啊!!!加密后发起http请求,server收到请求,使用只有自己知道的私钥S^进行解密,获得密钥C,此时,server和client都知道了密钥C,所以之后的通信都采用对称加密的方式就行了!!

问题来了"如果在公钥S的发送阶段时,中间人直接篡改了公钥S换成自己的公钥R,发送给client,此时client事先并不知道真正的server的公钥的!!当client收到中间人的公钥R时,万一直接用公钥R进行加密自己的对称密钥嗯??是不是在client看来,此时的server实际上已经是中间人了!!往后所有的通信都会被中间人获得并解密!!

CA证书和签名:

数字签名:

CA机构向原始数据进行哈希散列形成散列值,并用自己的私钥进行加密-->即这就是签名过程

CA证书:

签名 + 证书的明文信息(info)

在client<--->server过程中,首次通信server会先向client发送证书,证书中含有server自己的公钥和证书有效期、CA机构、数字签名等,client(浏览器)通常会内置信任的CA机构的公钥列表,如果client收到证书后对比发现不在自身的信任列表中,则会拒绝或者提示本次连接危险/不安全!!如果在信任列表中,则拿出相应CA机构的公钥进行解密,client首先对比数字签名,对证书的明文信息采用和签发给server证书的CA机构相同的哈希算法得到一个散列值,将其与解密后的签名进行对比,一致则表示信息未被篡改过。

这样即使证书被劫持,中间人在没有CA机构私钥的情况下是无法伪造数据签名的!!!只有持有私钥的人才能签发证书!!

即第五种安全方案!

但是!!!也有安全问题,如果中间人自己持有一份真正的CA机构颁发的合法证书,在client和server的证书交换阶段直接将server发送的证书全部替换为自己的证书,发给client呢?

别忘记了!!证书中的info中含有域名信息!!!!!client会进行域名验证的!!

HTTPS整体流程:

相关推荐
昔时扬尘处15 小时前
【C2000系列DSP的不掉电升级】C2000 不掉电升级(LFU)方案详解(含流程、代码与官方方案适配)
网络·dsp·c2000·德州仪器·实时控制mcu·lfu不掉电升级·后台升级
ZHHHHHJ6616 小时前
LL层-PAST
运维·服务器·网络
老蒋新思维16 小时前
创客匠人启示:破解知识交付的“认知摩擦”——IP、AI与数据的三角解耦模型
大数据·人工智能·网络协议·tcp/ip·重构·创客匠人·知识变现
百***074516 小时前
GPT-5.2 极速接入指南:流程详解与主流模型对比
网络·人工智能·gpt
REDcker17 小时前
TCP/IP 协议栈详解:协议栈是什么意思?为什么叫“协议栈”?
网络·网络协议·tcp/ip
老蒋新思维17 小时前
反脆弱性设计:创始人IP与AI智能体如何构建愈动荡愈强大的知识商业|创客匠人
人工智能·网络协议·tcp/ip·算法·机器学习·创始人ip·创客匠人
凯子坚持 c18 小时前
Docker网络架构深度解析:从原理到实战
网络·docker·架构
工控小楠18 小时前
Profinet从站转EtherNet IP主站协议网关应用于自动化生产线
网络协议·tcp/ip·自动化
cdprinter18 小时前
信刻光盘数据自动回读系统,多重保障数据安全及调阅便捷性!
网络·安全·自动化
发光小北19 小时前
SG-CAN (FD) NET-210(双通道 CAN (FD) 转以太网网关)特点与功能介绍
开发语言·网络·php