基本认证_摘要认证_HTTPS

2023-05-16

1.HTTP基本认证

HTTP提供了一个原生的质询/响应(challenge/response)框架。

  • Web应用程序收到一条HTTP请求报文时,服务器没有按照请求执行动作,而是以一个“认证质询”进行响应,要求用户提供一些保密信息来说明他是谁,从而对其进行质询。

  • 用户再次发起请求时,要附上保密证书(用户名和密码)。如果不匹配,服务器可以再次质询客户端,或产生一条错误信息。如果证书匹配,就可以正常完成请求。

  • 总结:就是客户端发起一个请求,服务器说你把能验证你身份的信息(用户名密码)告诉我,客户端把自己用户信息告诉服务端,服务端验证信息是否正确。

1.请求质询首部:WWW-Authenticate(服务器发出)
2.授权首部:Authorization(客户端发出)
3.认证成功首部:Authentication-Info(服务器发出,可选)

WWW-Authenticate是服务端用来质询客户端的,质询的同时,还带着安全域。例如:WWW-Authenticate: Basic realm=”Family”

Authorization向服务器提供用户名密码冒号连接以后用base64加密,例如:>BASE64ENC(totty:ow)=dG90dHk6b3c=;请求时:Authorization:Basic dG90dHk6b3c=

如果验证成功,会返回200OK的文档,有授权算法会在可选的Authentication-Info首部返回一些与授权回话相关的附加信息。

2.摘要认证

基本认证便捷灵活,但是极不安全,用户名密码都是以明文传送的,安全使用基本认证的唯一方式就是将其与SSL配合使用。
摘要认证做到了以下几点:

  • 永远不会以明文方式在网络上发送密码。
  • 可以防止恶意用户捕获并重新认证的握手过程。
  • 可以有选择地防止对报文内容的篡改。

常见的摘要认证:摘要认证是一种单向函数,主要用于将无限的输入值转换为有限的浓缩输出值,常见的有MD5加密。

为了防止重放攻击(截取摘要,并一遍遍的发送给服务器),服务器可以向客户端发送一个成为“随机数”的特殊令牌,这个数会经常变化(可能是每毫秒,或是每次认证都变化),客户端计算摘要之前要先将这个随机数令牌附加到密码上去。随机数在在WWW-Authenticate质询中从服务器传给客户端的。

为了减少“请求/质询”的次数,可以使用预授权。预授权的几种方式:

  • 服务器预先在Authentication-Info成功首部中发送下一个随机数。
  • 服务器允许在一小段时间内使用同一个随机数。
  • 客户端和服务器使用同步的,可预测的随机数生成算法。

3.加密技术基础知识

  • 对称加密:加密和解密时使用的密钥是一样的。对称加密的缺点之一就是发送者和接收者在互相对话前,一定要有一个共享的保密密钥。

  • 非对称加密:加密和解密时使用两个密钥,一个加密(公钥),一个解密(解密)。所有的非对称加密的公钥都需要保证知道以下几点都无法计算出私钥:公开秘钥(是共有的,所有人都可以获得),一小片拦截下来的密文(可通过对网络嗅探获取),一条报文及与之相关的密文(对任意一段文本运行加密器就可以得到)。

好的加密算法会迫使攻击者试遍每一个可能的密钥,才能破解。

  • 数字签名:数字签名是附加在报文上的特殊加密校验码。数字签名的好处:只有作者才能计算出校验和,可以证明是作者编写了这条报文;可以防止报文被篡改。举例说明:节点A是如何向节点B发送一条报文的。1.节点A将变长报文提取为定长的摘要(类似于MD5的方式,无论报文多长经过MD5函数以后都能变成一样长)。2.节点A对“摘要”应用了一个“签名”函数,这个签名函数要将私钥作为参数。3.节点A将算出的签名放在报文的末尾,将报文和签名都发送给节点B。4.节点B检查签名时,使用公钥(与生成签名时用的私钥对应的公钥)的反函数进行拆包得到摘要,再将报文进行提取摘要(此时提取摘要的方式与节点A传输报文前提取摘要的方式一样),看两者是否一致。

4.HTTPS

在实际应用中需要一种能够提供下列功能的HTTP安全技术。

  • 服务器认证:客户端知道它们是在与真正的而不是伪造的服务器通话。
  • 客户端认证:服务器知道它们是在与真正的而不是伪造的客户端通话。
  • 完整性:客户端和服务器的数据不会被篡改。
  • 加密:客户端和服务器的对话是私密的,无须担心被窃听。
  • 效率:一个运行的足够快的算法,以便低端的客户端和服务器使用。
  • 普适性:基本上所有的客户端和服务器都支持这些协议。
  • 管理的可扩展性:在任何地方的任何人都可以立即进行安全通信。
  • 适应性:能够支持当前最知名的安全方法。
  • 在社会上的可行性:满足社会的政治文化需要。

HTTPS是在HTTP的传输层和应用层中间加了一个安全层(SSL)。

Web浏览器对某Web资源执行某些事务时,它会去检查URL的方案。

  • 如果URL的方案为http,客户端就会打开一条到服务器端口80(默认情况下)的连接,并向其发送HTTP的命令。
  • 如果URL的方案为https,客户端就会打开一条到服务器端口443(默认情况下)的连接,然后与服务器“握手”,以二进制格式与服务器交换一些SSL安全参数,附上加密的HTTP命令。

SSL握手(在发送已加密的HTTP报文之前,客户端和服务器要进行一次SSL握手):

  • 交换协议版本号;
  • 选择一个两端都了解的密码;
  • 对两端的身份进行认证;
  • 生成临时的会话密钥,以便加密信道;

上述握手的实现过程:

  • 客户端发送可供选择的密码并请求证书。
  • 服务器发送选中的密码和证书。
  • 客户端发送保密信息,客户端和服务器生成秘钥。
  • 客户端和服务器互相告知,开始加密过程。

HTTPS建立了一个安全的Web事务之后,现代浏览都会自动获取所连接服务器的数字证书。如果服务器没有证书,安全连接就会失败。证书包括的主要内容:

  • Web站点的名称和主机名
  • Web站点的公开密钥
  • 签名颁发机构的名称
  • 来自签名颁发机构的签名

浏览器检测站点证书的有效性:

  • 日期检测:浏览器检查证书的起始日期和结束日期,以确保证书仍然有效。如果证书过期了,或者还未被激活,则证书有效性验证失败,浏览器显示一条错误信息。
  • 签名颁发者可信度检测:每个证书都是由某些证书颁发机构(CA)签发的,它们负责为服务器担保。证书有不同的等级,不能级别的证书申请时需要不同级别的背景验证。比如申请电子商务服务器证书,通常需要提供一个营业的合法证明。
  • 签名检测:一旦判定签名授权是可信的,浏览器就要对签名使用签名颁发机构的公开秘钥,并将其与校验码进行比较,以检查证书的完整性。
  • 站点身份检测: 为了防止服务器复制其他人的证书,或拦截其他人的流量,大部分浏览器都会试着去验证证书中的域名与它们所对话的服务器的域名是否匹配。服务器证书中通常都包含一个域名,但是有一些CA会为一组或一群服务器创建一些包含服务器名称列表或通配域名的证书。如果主机名与证书中的标识符不匹配,面向用户的客户端要么就去通知用户,要么就以表示证书不正确的差错报文来终止连接。

浏览器收到证书时会对签名颁发机构进行检查。如果这个机构是个很有权威的公共签名机构,浏览器可能已经知道其公开密钥了(浏览器会预先安装很多签名颁发机构的证书)。这样,就可以直接验证签名了,即验证证书的完整性。

HTTPS握手过程:

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基本认证_摘要认证_HTTPS 的相关文章

  • windows下停止【kill】nginx命令

    杀死nginx taskkill fi 34 imagename eq nginx EXE 34 f taskkill f t im nginx exe stop bat taskkill f t im nginx exe pause
  • 基本类型对应的缓冲池

    基本类型对应的缓冲池如下 xff1a boolean values true and false all byte values short values between 128 and 127 int values between 128
  • 记录JVM中Eden区、Survivor from区和Survivor to区及Minor GC和Major GC的理解

    仅做学习笔记 JVM中Eden区 Survivor from区和Survivor to区 本文主要根据 深入理解JVM 中内存回收策略 xff0c 主要关注如下五个方面 xff1a 1 xff1a Eden区分配 2 xff1a 大对象直接
  • ubuntu下修改python默认版本的方法

    Ubuntu安装之后会面临多个python版本共存的问题 xff08 python2和python3 xff09 xff0c 但是有时候安装其他库的时候会安装在默认的python版本环境下 xff08 比如 xff0c 通常默认版本是pyt
  • C++:C语言实现HTTP的GET和POST请求

    https www cnblogs com diligenceday p 6255788 html
  • Linux C/C++ UDP Socket 网络通信

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 昨晚 Vv 让
  • Xcode工程创建多个target

    Xcode工程创建多个target 小菜本人有时候会在一个Xcode工程中新建多个包含main函数的 m文件用于用于学习Objective C xff0c 于是要用到target这个东西 target对应于一个可运行文件和一些编译配置 点击
  • JLINK简介

    一 什么是JLINK JLINK是一个兼容JTAG的仿真器 xff0c 作用是烧入程序和Debug 二 JLINK是如何处理数据的 xff1f 1 PC端应用程序将数据以某种协议格式 xff0c 通过USB接口发送给J Link 2 J L
  • 蓝桥杯单片机-DS1302时钟模块

    一 简介 1 采用SPI三线接口通信 xff08 SCK SDA RST xff09 上升沿数据被写入DS1302 xff0c 下降沿被读出 二 应用 1 在ds1302 c文件中定义三个数组 unsigned char code READ
  • 蓝桥杯单片机-定时器

    一 简介 有三个寄存器与定时器相关 xff08 TMOD xff0c TCON xff0c 数值设置寄存器TH TL xff09 1 定时器工作方式设置寄存器TMOD GATE 门控制位 GATE 61 0时 定时器 计数器启动与停止仅受T
  • 蓝桥杯单片机-NE555模块

    一 简介 1 NE555在开发板中用于输出频率可变 xff0c 占空比不变的方波 2 NE555是纯硬件的设计 xff0c 通过电位器RB3可改变其信号输出频率 不需要编程实现其功能 考点 xff1a 使用定时器的计数模式测量NE555输出
  • C语言学习笔记(基于单片机)

    目录 一 关键字部分 static code const extern bit sbit sft struct xff08 结构体 xff09 1 结构体的初始化 2 结构体的赋值 3 应用 data idata pdata xdata 与
  • 蓝桥杯单片机-赛前总结

    目录 一 省赛中开发平台涉及的模块 xff1a 1 IIC驱动 2 DS1302驱动 3 onewire驱动 4 定时器读取NE555频率 二 一些功能性操作 1 外部中断 2 矩阵按键 3 PWM输出 4 毫秒延时函数 三 需要注意的一些
  • 相互依赖的so库,在编译时如何解耦

    有时候 xff0c 我们写的程序 xff0c 会涉及到相互引用的问题 比如frameworks av media libstagefright下的这个libstagefright xff0c 被frameworks av media lib
  • boost库学习总结

    第一次使用boost库是因为网络编程 xff0c 由于时间比较紧 xff0c 没有时间每个库都学 xff0c 所以前期想找个专门的boost库网络教程 xff08 以前自己就用过socket写过 xff0c 但是为了跨平台 xff0c 而且
  • C51单片机判断点亮的是奇数位还是偶数位

    学单片机的时候想到一个问题 xff1a 如何判断单片机点亮的LED灯是奇数位还是偶数位 xff1f 在网上搜了一圈没找到 xff0c 于是打算自己写一个 单片机型号 xff1a AT89C52 xff0c LED为低电平有效接法 xff0c
  • Linux学习笔记——如何在交叉编译时使用共享库

    0 前言 在较为复杂的项目中会利用到交叉编译得到的共享库 xff08 so文件 xff09 在这种情况下便会产生以下疑问 xff0c 例如 xff1a 1 交叉编译时的共享库是否需要放置于目标板中 xff0c 如果需要放置在哪个目录中 2
  • 实例变量(instance var)与属性(@property)的关系

    实例变量 instance var 与属性 64 property 的关系 Objective C 2 0之后 xff0c 声明一个 64 property name自动产生一个实例变量 xff0c 名为 name xff0c 因此省去实例
  • VS+CUDA+Matlab环境配置经验 (达到用matlab使用nvcc进行gpu并行加速)

    前前后后配了一个多星期的环境 xff0c 终于完成了 xff0c 梳理一下我的经验给大家分享也留作以后参考 一 版本兼容性问题 一开始安装的时候我并不懂 xff0c 没有什么顺序和版本的概念 xff0c 所以各种组件不能相互支持 首先明确
  • 华为无线WiFi配置802.1x认证

    一 拓扑 xff1a 二 简介 xff1a 本篇主要介绍华为交换机设备配合Windows server 2019配置的802 1x 43 NPS协同做的有线网络认证 xff08 可跟做 xff09 现有的华为6605无线AC配置 xff1a

随机推荐

  • 寝室一伙计

    我们寝室一伙计 xff0c 昨天晚上睡觉的时候 xff0c 说梦话 xff0c 笑 xff0c 磨牙 xff0c 还有吃奶 xff0c 等等等等 xff0c 我服了
  • Qt学习笔记(五)重定向

    实时获取程序中qt所输出的信息 xff0c 并显示到QTextBrowser上 1 在main文件中添加以下内容 xx为你的界面类名 xx clk 61 NULL void myMessageOutput QtMsgType type co
  • 串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)

    利用串口进行通信 xff0c 当发送方 xff08 A xff09 将数据写入串口后 xff0c 通过无线或有线方式将数据传送给接收方 xff08 B xff09 xff0c B通过调用串口读方法comm read 参数 即可将数据读出 原
  • robomaster电控究极学习教程(以哨兵为例)------一、串口dma和遥控器

    robomaster电控究极学习教程 xff08 以哨兵为例 xff09 一 串口dma和遥控器 文章目录 robomaster电控究极学习教程 xff08 以哨兵为例 xff09 一 串口dma和遥控器 一 串口DMA的作用二 步骤1 c
  • 无人机架构

    无人机架构 基本设计需求 xff0c 如 xff1a xff08 1 xff09 慎思规划和反应式行为 xff1b xff08 2 xff09 容许不确定性 xff1b xff08 3 xff09 考虑危险 xff1b xff08 4 xf
  • 第八课 C++中的__LINE__宏

    在C 43 43 编程中 xff0c 我们有时候需要知道当前源代码的行号 xff0c 这时候就可以使用 LINE 宏 本文将介绍如何使用 LINE 宏 xff0c 以及它的使用示例 LINE 宏简介 LINE 是C 43 43 中的一个预定
  • 介绍@dynamic的用法

    介绍 64 dynamic的用法 Objective C 2 0提供了属性 64 property xff0c 可以让编译器自动生成setter和getter方法 如果不想编译器自作主张生成这些setter和getter方法 xff0c 则
  • OkHttpUtils的使用

    OkHttpUtils是一个非常好的网络协议框架 xff0c 它是在OkHttp的基础上进行了二次封装 要使用这个类首先下载jar包 xff0c 如下 xff1a http download csdn net download xxdw19
  • 十进制整数转为十六进制整数(C++实现)

    一 代码功能 xff1a 输入一个十进制整数 xff0c 将其转化为十六进制整数并输出 二 源码 include lt iostream gt include lt cstring gt include lt cmath gt using
  • 我的四轴专用PID参数整定方法及原理---超长文慎入(转)

    给四轴调了好久的PID xff0c 总算是调好了 xff0c 现分享PID参数整定的心得给大家 xff0c 还请大家喷的时候手下留情 首先说明一下 xff0c 这篇文章的主旨并不是直接教你怎么调 xff0c 而是告诉你这么调有什么道理 xf
  • 简单的TCP客户端发包工具

    一 TCP介绍 先放这里有时间在写 xff0c 最近在写DuiLib相关的使用内容 xff0c 这部分大家凑活着看 二 程序截图 下载链接 链接 xff1a https pan baidu com s 1MzNUzwd7WwBat6vNMc
  • C++常用头文件汇总

    之前说过的头文件这就来了 1 首先是本人最喜欢也是最最方便的万能头文件 xff0c 顾名思义 xff0c 不管是天上飘的还是地下埋的 xff0c 只要不是不对的头文件它都包含 xff0c 除了本篇第14个头文件 xff1a include
  • 基于I2C/SPI的温湿度采集与OLED显示

    基于I2C SPI的温湿度采集与OLED显示 一 AHT20温湿度采集1 I2C2 温湿度采集代码效果 二 OLED显示1 显示学号姓名2 诗句显示 三 总结四 参考 一 AHT20温湿度采集 1 I2C 解释什么是 软件I2C 和 硬件I
  • 游戏客户端编程

    游戏客户端编程 1 代码实现服务器连接发送按钮 2 显示消息3 发送信息4 播放背景音乐5 变换游戏背景图片6 参考 1 代码实现 服务器连接 span class token keyword private span span class
  • 卷积神经网络实现表情识别

    卷积神经网络实现表情识别 CNN人脸表情识别图片预处理原本效果处理后效果 图片数据集效果 CNN人脸识别创建模型归一化与数据增强创建网络 摄像头人脸识别图片识别 参考 CNN人脸表情识别 图片预处理 span class token key
  • IIC协议及其工程【FPGA】

    IIC协议及其工程 FPGA 一 IIC协议1 IIC简介2 IIC中相关的术语1 应答信号 xff08 ACK xff09 2 无应答信号 xff08 NOACK xff09 3 虚写3 IIC的时序 二 EEPROM1 时钟频率2 起始
  • char *与char []的区别

    其实 xff0c 只要记住一点就能很好区分char 和char xff1a char 定义的是一个指向字符串的指针 xff08 注意 xff1a C语言中没有对应字符串的内置类型或者类类型 xff09 xff0c 而char 就是C语言中的
  • SPI协议读取FLASH【FPGA】

    SPI协议读取FLASH FPGA 一 SPI协议1 SPI简介2 SPI物理层3 SPI协议层CPOL CPHA 及通讯模式 4 SPI 基本通讯过程5 通讯的起始和停止信号6 数据有效性 二 Flash1 状态寄存器1 WIP xff0
  • 基于FPGA的图像边缘检测

    基于FPGA的图像边缘检测 一 图像处理算法1 灰度转换2 高斯滤波3 二值化4 Sobel 二 项目框架1 摄像头配置模块2 图像处理模块3 数据缓存模块4 其它模块 三 部分代码1 数据采集模块2 读写控制模块 四 参考五 源码 简介
  • 基本认证_摘要认证_HTTPS

    1 HTTP基本认证 HTTP提供了一个原生的质询 响应 xff08 challenge response xff09 框架 Web应用程序收到一条HTTP请求报文时 xff0c 服务器没有按照请求执行动作 xff0c 而是以一个 认证质询