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

【密码学】密码协议的分类:②认证协议

        密码协议的分类有很多种方式,这里我采取的是基于协议实现的目的来分类。可以将密码协议分成三类:认证协议密钥建立协议认证密钥建立协议

一、认证协议是什么?

        认证协议都在认证些什么东西呢?认证一般要认证三个东西:消息认证、数据源认证和实体认证,用于防止欺骗、伪装等攻击。简单说明一下这三者:

  • 消息认证:目的是要确保数据没有被篡改。
  • 数据源认证:目的是确保接收到的消息确实来自声称的发送者,而不是由第三方伪造的。
  • 实体认证:目的是验证双方身份的真实性,确保通信的另一方是真实的、授权的实体,而不是冒充者。

二、有哪些认证方法?

         认证方法多种多样,每种方法都有其优缺点和适用场景。重点理解数字证书认证基于挑战应答的认证

(1)口令认证

        传统的认证方法是采用口令来解决这个问题。比如:账号密码(静态口令认证)或者手机验证码(动态口令认证)

(2)数字证书认证

        数字证书认证基于公钥基础设施(PKI),通过颁发数字证书CA来验证用户的身份。数字证书包含了用户的公钥、身份信息以及证书颁发机构的数字签名等信息。用户在进行身份认证时,需要出示有效的数字证书,并由接收方进行验证。

CA认证工作原理图

 

数字证书认证工作原理

  1. 用户申请数字证书时,需向CA提交个人或组织的相关信息。
  2. CA审核通过后,使用自己的私钥对用户的公钥和相关信息进行签名,生成数字证书。
  3. 用户在网络通信中使用数字证书证明自己的身份,接收方通过验证证书上的签名确认证书的真实性,并使用证书中的公开密钥进行加密通信。

(3)基于挑战应答的认证

        挑战应答认证方式要求认证服务器向用户发送一个随机数(又叫“挑战值”),用户根据这个随机数和自己的私钥生成一个应答发送给服务器。服务器再根据自己的私钥和用户的公钥验证应答的正确性。这种方式可以有效防止重放攻击和中间人攻击,提高了认证的安全性。

挑战应答认证工作原理图

挑战应答认证工作原理

  1. 客户端向认证服务器发出身份认证请求。
  2. 认证服务器生成一个随机的挑战字串发送给客户端。
  3. 客户端根据挑战字串和约定的规则生成应答字串,并发送给认证服务器。
  4. 认证服务器验证应答字串的正确性,若正确则认证通过,否则认证失败。

对比数字证书认证与基于挑战应答的认证:

数字证书认证基于挑战应答的认证
安全性与特点数字证书由权威的CA签发,具有广泛的认可度。用户无需在网络上传输敏感信息(如密码),提高了安全性。
使用证书中的公开密钥进行加密通信,确保信息传输的安全性。每次认证都生成不同的挑战字串,增加了攻击者破解的难度。
数字签名技术确保信息的发送方无法抵赖曾发送过该信息。可以根据需要自定义挑战和应答的规则,适用于多种场景。
应用场景广泛应用于电子政务、电子商务、网上银行等领域,为机构和个人提供身份认证和信用认证服务。适用于需要高安全性身份认证的场景,如远程登录、VPN接入、敏感信息访问等。

(4)其他认证方式

        生物特征认证:利用人体固有的生物特征进行身份认证,如指纹、面部识别、虹膜识别、声纹识别等。这种认证方式具有高度的唯一性和便携性,难以伪造,因此安全性较高。然而,生物特征信息的采集和存储需要严格遵守隐私保护规定,以防止信息泄露。

        智能卡认证:通过智能卡硬件的不可复制性来确保用户身份的真实性。智能卡通常包含用户的私钥等敏感信息,用户在进行身份认证时需要插入智能卡并输入密码或进行其他操作。这种方式结合了物理硬件和密码的双重保护,提高了安全性。

        此外还有基于行为的认证(如通过分析用户的操作习惯来验证身份)、多因素认证(结合多种认证方式以提高安全性)等。

        但是口令容易被窃取,所以采用口令认证的方式,其安全性比较脆弱。要解决这个问题,必须设计安全的认证协议,以防止假冒和欺骗等攻击。认证可以分为单向认证和双向认证。

三、具体有哪些认证协议?

(1)采用单向函数的认证协议

        在单向函数的认证协议中,发送方计算消息的散列值并将其发送给接收方,接收方使用相同的单向函数重新计算接收到的消息的散列值,以验证消息的完整性和来源。 

采用单向函数的认证协议实现HOST验证Alice的身份

 【注】采用单向函数的认证协议无法抵抗字典攻击。

(2)采用双钥体制的认证

Alice向Host采用双钥体制的实现单向认证

【注】上图中的随机数R可以看成是一个挑战值。

(3)采用联锁协议的双向认证

        采用联锁协议的双向认证旨在提供双向的身份验证,确保双方都能够确认彼此的身份。

采用联锁协议的双向认证

(4)单向SKID身份识别协议——SKID2

        这是一种简单的单向身份识别协议,其中SKID代表“Simple Key ID”,Alice和Bob在SKID协议里事先共享了密钥K

Bob向Alice采用SKID2认证协议认证其身份
  • 步骤
  1. 验证者Alice向被验证者Bob发送一个挑战。
  2. Bob使用其私钥对挑战进行签名(图中通过MAC实现数字签名)。
  3. Bob将签名后的挑战发送回Alice。
  4. 验证者Alice使用被验证者Bob的公钥验证签名。
  • 优点:简单且易于实施。
  • 缺点:没有防止重放攻击的能力。

(5)双向SKID身份识别协议——SKID3

        Alice和Bob在SKID协议里事先共享了密钥K

  • 步骤
  1. Alice向Bob发送一个挑战(上图中的随机数R_A)。
  2. Bob使用自己的私钥对挑战进行签名,并发送回Alice,还发送了用于验证Alice身份的挑战(R_B)。
  3. Alice验证签名,并向Bob发生Alice自己的签名。
  4. Bob验证签名,并确认双方身份。
  • 优点:提供了更强的身份验证保障,实现了双向认证。
  • 缺点:增加了交互次数和复杂度。

相关文章:

【密码学】密码协议的分类:②认证协议

密码协议的分类有很多种方式,这里我采取的是基于协议实现的目的来分类。可以将密码协议分成三类:认证协议、密钥建立协议、认证密钥建立协议。 一、认证协议是什么? 认证协议都在认证些什么东西呢?认证一般要认证三个东西&#x…...

异步编程(Promise详解)

目录 异步编程 回调函数 回调地狱 Promise 基本概念 Promise的特点 1.Promise是一种构造函数 2.Promise接收函数创建实例 3.Promise对象有三种状态 4.Promise状态转变不可逆 5.Promise 实例创建即执行 6.Promise可注册处理函数 7.Promise支持链式调用 Promise的静…...

DjangoORM注入分享

DjangoORM注入 简介 ​ 这篇文章中,分享一些关于django orm相关的技术积累和如果orm注入相关的安全问题讨论。 ​ 攻击效果同数据库注入 从Django-Orm开始 开发角度 ​ Django ORM(Object-Relational Mapping)是Django框架中用于处理数…...

【HBZ分享】Redis各种类型的数据结构应用场景

String(字符串类型) 计数器: incr / decr, 比如商品库存,业务号的发号器业务数据key-value缓存, 缓存结果数据,提高网站性能,缓解DB压力分布式session会话, 集群环境下存储token鉴权信息分布式锁&#xff…...

anaconda创建并且配置pytorch(完整版)

📚博客主页:knighthood2001 ✨公众号:认知up吧 ** 🎃知识星球:【认知up吧|成长|副业】介绍** ❤️如遇文章付费,可先看看我公众号中是否发布免费文章❤️ 🙏笔者水平有限,欢迎各位大…...

高级java每日一道面试题-2024年8月10日-网络篇-你对跨域了解多少?

如果有遗漏,评论区告诉我进行补充 面试官: 你对跨域了解多少? 我回答: 跨域问题,即Cross-Origin Resource Sharing(CORS),是现代Web开发中一个非常重要的概念,涉及到浏览器的安全策略——同源策略(Same…...

AtCoder Beginner Contest 365 A~E

A.Leap Year(思维) 题意: 给你一个介于 1583 1583 1583和 2023 2023 2023之间的整数 Y Y Y。 求公历 Y Y Y年的天数。 在给定的范围内, Y Y Y年的天数如下: 如果 Y Y Y不是 4 4 4的倍数,则为 365 365 …...

多机部署, 负载均衡-LoadBalance

目录 1.负载均衡介绍 1.1问题描述 1.2什么是负载均衡 1.3负载均衡的一些实现 服务端负载均衡 客户端负载均衡 2.Spring Cloud LoadBalancer 2.1快速上手实现负载均衡 2.2负载均衡策略 自定义负载均衡策略 3.服务部署(Linux) 3.1服务构建打包…...

(回溯) LeetCode 78. 子集

原题链接 一. 题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集 (幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出&…...

DQL数据查询语言(多表处理)—/—<7>

一、多表处理 当前有两个表,一个是学生表student,一个是分数表score student表字段名表示如下(共1000条数据): score表字段表示如下(共6000条数据): 1、求每个学生的总分 SELECT …...

力扣刷题总结

去年有段时间一直在刷题,进步神速,解决了以往刷完就忘的问题,这里总结下经验,给有需要的人参考下,核心观点就仨: 1. 打好数据结构与算法基础 2. 多刷题多练习 3. 形成自己的知识体系 下图是我梳理的知识体…...

BLDC ESC 无刷直流电子调速器驱动方式

BLDC ESC 无刷直流电子调速器驱动方式 1. 源由2. 驱动方法2.1 Trapezoidal 1202.2 Trapezoidal 1502.3 Sinusoidal 1802.4 Field-Orientated Control (FOC) 3. FOC(Field-Oriented Control)3.1 引入坐标系3.2 Clarke and Park变换Clarke 变换&#xff08…...

解决 IntelliJ IDEA 编译错误 “Groovyc: Internal groovyc error: code 1” 及 JVM 内存配置问题

在使用 IntelliJ IDEA 进行开发时,我们可能会遇到各种编译和运行错误,其中之一就是 Groovy 编译器错误(Groovyc: Internal groovyc error: code 1)或 JVM 内存不足错误。这类错误可能会影响开发效率,但通过调整 JVM 内…...

LeetCode.2940.找到Alice和Bob可以相遇的建筑

友情提示:这个方法并没有通过案例,只通过了944个案例(很难受),超时了,但是想着还是分享出来吧 题目描述: 给你一个下标从 0 开始的正整数数组 heights ,其中 heights[i] 表示第 i …...

OFD板式文件创建JAVA工具-EASYOFD 四、文字 Text

JAVA版本的OFD板式文件创建工具easyofd. 功能包含了图像、 图像、 文字、和模版页功能。同时也支持OFD文件的数字签名及验签,电子签章及验签。 本JAVA版本的easyofd使用原生方式创建板式文件,不依赖JAVA的SWT库。 项目地址:http://…...

【概念速通】李群 lie group

李群 lie group 概念速通 快速示例介绍:【引入】单位复数 (The unit complex numbers) 是李群 (lie group) 最简单的例子之一【进一步】SO(2): The 2D rotation matrices【Typical uses】SE(2): Pose of a robot in the plane Group & Lie Group 定义&#xff1…...

day_39

198. 打家劫舍 class Solution:def rob(self, nums: List[int]) -> int:if len(nums) 1:return nums[0]dp [0] * len(nums)dp[0], dp[1] nums[0], max(nums[0], nums[1])for i in range(2, len(nums)):dp[i] max(dp[i - 1], dp[i - 2] nums[i])return dp[len(nums) - …...

计算机系统层次结构

1.计算机系统的组成 计算机系统的组成硬件系统软件系统 2.计算机的硬件部分 2.1冯诺依曼机的结构特点: 图示: 1.五大部分由运算器(ALU),控制器(CU),存储器(主存辅存),输入设备,输出设备五大部分组成2.指…...

java语言特点

Java语言是一种广泛使用的编程语言,它具有以下几个显著的特点: 面向对象:Java是一种纯面向对象的语言,它支持类的封装、继承和多态等特性。面向对象的设计使得Java程序更加模块化,易于维护和扩展。 平台无关性&#xf…...

单元测试注解:@ContextConfiguration

ContextConfiguration注解 ContextConfiguration注解主要用于在‌Spring框架中加载和配置Spring上下文,特别是在测试场景中。 它允许开发者指定要加载的配置文件或配置类的位置,以便在运行时或测试时能够正确地构建和初始化Spring上下文。 基本用途和工…...

大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

MySQl 中对数据表的增删改查(基础)

MySQl 中对数据表的增删改查(基础) 新增演示插入一条数据插入多条数据 查询全列查询部分列查询查询关于列名的表达式查询时用别名查询去重后的结果查询排序后的结果条件查询比较运算符和逻辑运算符 分页查询 修改删除 黑白图是在命令行里的,彩…...

LVS知识点整理及实践

LVS知识点整理及实践 LVSlvs集群概念lvs概念lvs集群类型lvs-nat模型数据逻辑: lvs-DR模式数据传输和过程:特点: lvs-tun模式数据传输过程:特点: lvs-fullnet模式数据传输过程 lvs调度算法lvs调度算法类型lvs静态调度算法lvs动态调度算法4.15版本内核以后新增调度算法 ipvsadm命…...

Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式

目录 摘要目的安装和卸载特别说明 Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式 摘要 Ubuntu版本:ubuntu24.04 主题下载地址:https://github.com/vinceliuice/WhiteSur-gtk-theme 参考的安装教程:https://blog.51cto.com/u_…...

计算机毕业设计选题推荐-办公用品管理系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

计算机毕业设计选题推荐-网上考试系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

白骑士的Matlab教学基础篇 1.4 函数与脚本

系列目录 上一篇:白骑士的Matlab教学基础篇 1.3 控制流 函数和脚本是 MATLAB 编程中的基本组成部分,它们使得代码更加模块化、可重用和组织化。通过理解函数的定义与调用、参数与返回值,以及 MATLAB 脚本与批处理,可以显著提高编…...

Qt——多线程

一、QThread类 如果要设计多线程程序,一般是从QThread继承定义一个线程类,并重新定义QThread的虚函数 run() ,在函数 run() 里处理线程的事件循环。 应用程序的线程称为主线程,创建的其他线程称为工作线程。主线程的 start() 函数…...

技术周总结 08.05-08.11周日(scala git回滚)

文章目录 一、08.06 周二1.1) 问题01 mac安装 scala:1. 使用 Homebrew2. 使用 SDKMAN!其他注意事项1. 确认 Scala 安装位置2. 设置 PATH 环境变量对于 zsh (macOS Catalina 及更高版本默认使用 zsh):对于 bash (如果您使用的是 bash shell): 3. 验证安装 二、08.09 周五2.1&…...

ffmpeg 命令图片和视频转换

1、截图 ffmpeg -i d:\input.mp4 -ss 0:0:10 d:\output.jpg //指定输出分辨率 ffmpeg -i d:\input.mp4 -y -f image2 -ss 0:0:10 -vframes 1 -s 640x360 d:\output.jpg 2、视频分拆图片 ffmpeg -r 输入帧率 -i d:\input.mp4 -r 输出帧率 "d:\outputDir\frame_%04d.jp…...