当前位置: 首页 > 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上下文。 基本用途和工…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程

基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...

Tauri2学习笔记

教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...