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

news2025/2/27 20:11:28

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

一、认证协议是什么?

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

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

二、有哪些认证方法?

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

(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验证签名,并确认双方身份。
  • 优点:提供了更强的身份验证保障,实现了双向认证。
  • 缺点:增加了交互次数和复杂度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

防止老年痴呆的小学题

直角三角形的周长为16,斜边长为7,求三角形的面积(不使用勾股定理) 答案为(9*9-7*7)/4

aria2下载器在windows端的使用

一、下载aria2 aria2aria2 is a lightweight multi-protocol & multi-source command-linedownload utility. It supports HTTP/HTTPS, FTP, SFTP,BitTorrent and Metalink. …https://aria2.github.io/打开链接,点击要下载的版本,注意windows版本跟…

k8s持久化存储PV和PVC

一、PV和PVC 1.PersistentVolume (PV) PersistentVolume (PV) 是外部存储系统中的⼀块存储空间,由管理员创建和维护。与 Volume⼀样, PV 具有持久性,⽣命周期独⽴于 Pod; 2.PersistentVolumeClaim (PVC) PersistentVolumeClaim…

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log 1. Bin Log(二进制日志)2. Redo Log(重做日志)3. Undo Log(回滚日志) ) 💖The Begin💖点点关注,收藏不迷…

8.6 Day14 匿名用户访问ftp位置

vsftpd的端口号:tcp 20、21 vsftpd的配置文件:/etc/vsftpd/vsftpd.conf LInux系统防火墙默认不允许开启20、21端口访问 使用不同用户访问FTP 1.使用匿名用户访问FTP 匿名用户登录时,用户名为ftp,没有密码 测试匿名用户文件上传…

20240806---特征选择与稀疏学习笔记---pptp61-p92---奇异值分解/压缩感知、字典学习

一.奇异值分解 2.要进行特征分解,则矩阵A为方阵,如果矩阵 𝐴A 不是方阵(即行数和列数不同),我们仍然可以对其进行分解,这就是奇异值分解(SVD)的强大之处。 二.压缩感知 …

力扣面试经典算法150题:移除元素

移除元素 今日的题目依旧是力扣面试经典算法150题中数组相关的题目:移除元素 题目链接:https://leetcode.cn/problems/remove-element/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一个排序数组 nums 和一个值 val&a…

cpu问题排查——mpstat

mpstat是sysstat包中用于linux下排查、监控cpu的一个工具。可从该工具体现出程序中断情况、cpu负载情况等。 用法 mpstat [ options ] [ <interval> [ <count> ] ] 命令参数 -P { <cpu_list> | ALL } : ALL表示所有cpu的平均损耗信息&#xff0c;<cpu_…

PXE 服务器搭建——启动界面设计实验

环境准备&#xff1a; 前期准备&#xff1a; 解决 kickstart 实验出现的 DHCP 的问题-CSDN博客 http://t.csdnimg.cn/5vZP0 当前准备&#xff1a; 两台虚拟机&#xff1a;RHEL7 OpenEuler(作为测试机器使用) ip&#xff1a;172.25.254.100 yum install syslinux.x…

Go语言标准库中的双向链表的基本用法

什么是二分查找区间&#xff1f; 什么是链表&#xff1f; 链表节点的代码实现&#xff1a; 链表的遍历&#xff1a; 链表如何插入元素&#xff1f; go语言标准库的链表&#xff1a; 练习代码&#xff1a; package mainimport ("container/list""fm…

如何在Python中诊断和解决内存溢出问题

python的内存溢出即程序在申请内存后未能正确释放&#xff0c;导致随着时间推移占用的内存越来越多&#xff0c;以下是一些可能导致内存溢出的原因&#xff1a; 1、循环引用&#xff1a;当对象之间形成循环引用&#xff0c;并且这些对象定义了__del__方法时&#xff0c;Python…

证券行业容器云平台建设之GPU池化建议

随着分布式微服务化技术的广泛使用&#xff0c;用户对于容器系统的需求急剧增加。证券行业在近几年开始着手引入企业级容器云平台。在AIGC的大环境下&#xff0c;证券行业正以数据中台、智能中台为核心&#xff0c;在营销、投顾、投研、风控等多个领域进行智能化升级&#xff0…

MYSQL主库切换binlog模式后主从同步错误

MYSQL主库切换binlog模式后主从库同步错误的问题 在使用FlinkSQL的mysql-cdc连接器来监听MySQL数据库时&#xff0c;通常需要将MySQL的binlog模式设置为ROW模式。然而&#xff0c;在实际项目中&#xff0c;可能会遇到如下问题&#xff1a; 当我们将MySQL主库的binlog模式从STA…

计算机网络408考研 2018

1 计算机网络408考研2018年真题解析_哔哩哔哩_bilibili

【sdk】- 对接阿里云抠图

文档地址&#xff1a;https://help.aliyun.com/zh/viapi/use-cases/general-image-segmentation?spma2c4g.11186623.0.0.3814173cenldIs java对接阿里云的通用分割&#xff0c;将代码原封不动复制进来&#xff0c;执行结果失败&#xff0c;咨询阿里云的人员之后&#xff0c;由…

JavaEE: Thread类

Thread的常见构造方法 Thread的常见属性 ID 是线程的唯一标识,不同线程不会重复名称是在使用各种调试工具时会用到的状态表示线程当前所处的情况优先级高的线程理论上来说更容易被调度到关于后台线程,需要记住:JVM会在一个进程的所有非后台线程结束后,才会结束运行是否存活,即r…

爱可声助听器:在全球听力市场中破冰前行

早在2021年&#xff0c;全球助听器市场规模就已经达到了101亿美元&#xff0c;Grand View Research数据显示&#xff0c;这一规模会持续增大&#xff0c;在未来的6年间&#xff0c;该数据将以4.9%的复合年增长率&#xff08;CAGR&#xff09;增长。 作为发展中国家&#xff0c…

【SpringBoot】自定义注解终极升级版<i18n国际化>方案源码Copy

零、前言 在后端对于 SpringBoot 的 数据库数据&#xff0c;需要国际化的字段和主要显示字段是分离的&#xff0c;为了避免大耦合性&#xff0c;与用户端的国际化字段处理问题&#xff0c;统一采用主要显示数据的实体字段。为此&#xff0c;我设计了一套解决方案&#xff0c;通…

leetcode-240. 搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10…

使用Spring AI 、 Qdrant 和 Ollama 实现完全本私有化的RAG应用

使用Spring AI 、 Qdrant 和 Ollama 实现完全本私有化的RAG应用 迄今为止&#xff0c;Python 一直是实现检索增强生成&#xff08;RAG&#xff09;应用程序的首选语言&#xff0c;几乎成为开发大型语言模型&#xff08;LLM&#xff09;应用程序的默认选择。然而&#xff0c;对于…