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

基于密码技术的身份认证——基于对称密码体制的身份认证

一、符号说明:

A→B:表示通信实体A向通信实体B发送消息;

Ek(x):表示用认证双方共享的密钥K对x进行加密;

Text1,Text2,……,Text n属于可选项;

||:表示比特链接;

RA:表示A生成的一次性随机数;

TNA:表示由A生成的时间戳或序列号;

KAB:通信实体A与通信实体B的共享密钥;

Kprt:可信第三方私钥;

Kprt:可信第三方公钥。

二、基于对称密码体制的身份认证:

对称密码体制是采用单一密钥的密码体制,即加解密都是用同一组密钥进行运算。对称密码体制下

的挑战/响应机制通常要求示证者和验证者共享对称密钥。

根据是否存在可信的第三方参与到身份认证过程中,对称密码身份认证可以分为无可信第三方认证

和有可信第三方认证两种。通常无可信第三方的对称密码认证用于只有少量用户的封闭系统,而有

可信第三方的对称密码认证则可用于规模相对较大的系统中。

(1)无可信第三方的对称密码认证

无可信第三方的对称密码认证的基本原理是验证者生成一个随机数作为挑战信息,发送给示证者;

示证者利用二者共享的密钥对该挑战信息进行加密,回传给验证者;验证者通过解密密文来验证示

证者的身份是否合法。认证过程描述如下:

① 无可信第三方对称密钥一次传输单向认证

A→B:TokenAB=Text2||Ek(TNA||B||Text1)

TokenAB中的B是可选项。A首先生成TokenAB并将其发送给B;B收到TokenAB后,解密并验证B

(如果包含)与TNA是否可接收。如果可接受则通过认证,否则拒绝。

② 无可信第三方对称密钥二次传输单向认证

B→A:RB||Text1

A→B:TokenAB=Text3||Ek(RB||B||Text2)

B首先生成一个随机数RB作为挑战信息发送给A(可附带选项Text1);A根据接收到的RB,利用

双方共享密钥加密生成响应信息TokenAB并发送回B;在收到TokenAB后,B通过解密查看随机数

RB是否与挑战信息中的一致,一致则接收A的认证,否则拒绝;

③ 无可信第三方对称密钥二次传输双向认证

A→B:TokenAB=Text2||Ek(TNA||B||Text1)

B→A:TokenBA=Text4||Ek(TNB||A||Text3)

与对称密钥一次传输单向认证一样,TokenAB和TokenBA中的A,B也为可选项,A生成TokenAB并

将其发送给B;B收到TokenAB后,解密并验证B(如果包含)与TNA是否可以接收,如果可接收则

通过认证;同样,B也可以生成TokenBA并来完成A对B的认证。此时需要注意的是,这两次认证的

过程都各自独立。

④ 无可信第三方对称密钥三次传输双向认证

B→A:RB||Text1

A→B:TokenAB=Text3||Ek(RA||RB||B||Text2)

B→A:TokenBA=Text5||Ek(RB||RA||Text4)

B首先生成一个随机数RB作为挑战信息发送给A(可附带可选项Text1);A生成一个随机数RA,

根据接收到的RB,利用双方共享密钥加密生成响应信息TokenAB后,B通过解密查看随机数RB是

否与第一次传输的挑战信息中的一致,如果一致则接收A的认证,并将RA和RB加密后生成的响应

消息TokenBA发送给A;A收到TokenBA后,通过解密检查RA和RB是否与之前传输的一致,如果一

致则接收B的认证,否则拒绝。

(2)有可信第三方的对称密码认证

与无可信第三方的对称密码认证技术相比,有可信第三方的对称密码认证技术的认证双方并不使用

共享密钥,而是各子与可信的第三方之间共享密钥。

有可信第三方的对称密码认证过程如下:

假设认证过程执行之前,认证的双方A和B已经分别安全地获得与可信地第三方——认证服务器P之

间地共享密钥EAP和EBP。

① 有可信第三方地对称密钥四次传输双向认证

A→P:TVPA||B||Text1

P→A:TokenPA=Text4||EAP(TVPA||KAB||B||Text3)||EBP(TNP||KAB||A||Text2)

A→B:TokenAB=Text6||EBP(TNP||KAB||A||Text2)||KAB(TNA||B||Text5)

B→A:TokenBA=Text8||KAB(TNB||A||Text7)

A产生一个时间变量参数TVPA,附带另一方B的ID,以及一个可选的附加信息Text1发送给可信的

第三方P;P生成A,B双方的会话密钥KAB,并分别用EAP和EBP加密后,合并生成消息TokenPA

发送给A;在收到信息TokenPA后,A解密TokenPA并获得TVPA,B和A,B双方的会话密钥KAB,

A检查TVPA和B是否正确;如果检查正确,A从TokenPA中提取“(TNP||KAB||A||Text2)”,并利用

A,B双方的会话密钥加密“(TNA||B||Text5)”,然后将它们合并生成消息TokenAB发送给B;B收

到消息TokenAB后,解密“EBP(TNP||KAB||A||Text2)”获得KAB,并利用其解密“KAB

(TNA||B||Text5)”,B根据解密得到的内容,检查用户ID,A,B,时间戳或序列号TNP,TNA的

正确性;如果B检查正确,则向A发送消息TokenBA;最后A通过TokenBA检查TNB和用户ID是否正

确,如果正确则完成整个认证过程。

如果只需要实现A向B的单向认证,则B在收到消息TokenAB后,只需要检查该消息正确与否即可。

如果正确,则可通过对A的身份认证。

② 有可信第三方地对称密钥五次传输双向认证

B→A:RB||Text1

A→P:RA||RB||B||Text2

P→A:TokenPA=Text5||EAP(RA||KAB||B||Text4)||EBP(RB||KAB||A||Text3)

A→B:TokenAB=Text7||EBP(RB||KAB||A||Text3)||KAB(R’A||RB||Text6)

B→A:TokenBA=Text9||KAB(RB||R’A||Text8)

B首先产生一个随机数RB并将其发送给A(可附带可选项Text1);A产生一个随机数RA,并联合

RB和B的ID一起发送至可信的第三方P;P生成A,B双方的会话密钥KAB,分别联合RA和RB,用

EAP和EBP加密后,并合并生成消息TokenPA发送给A;A收到消息TokenPA后,通过解密得到

KAB,并检查得到RA和B的ID正确性;如果检查正确,A产生一个随机数R’A,与RB一起用KAB进

行加密,并将加密得到的内容和从TokenPA中得到的内容“EBP(RB||KAB||A||Text3)”一起作为消

息TokenAB发送给B;B收到消息TokenAB后,解密“EBP(RB||KAB||A||Text3)”获得KAB,并利用

其解密“KAB(R’A||RB||Text6)”;B根据解密得到的内容,检查用户A的ID的正确性,以及两次解

密获得的RB值是否一致;如果B检擦完全正确,则向A发送消息TokenBA;最后A通过解密

TokenBA检查R’A和RB是否正确,如果正确则完成整个认证过程。

与有可信第三方的对称密钥四次传输身份认证相同,如果只需要实现A向B的单向认证,则B在收到

消息TokenAB后,只需要检查该消息正确与否。如果正确,则可通过对A的身份认证。

备注:

相关文章:

基于密码技术的身份认证——基于对称密码体制的身份认证

一、符号说明: A→B:表示通信实体A向通信实体B发送消息; Ek(x):表示用认证双方共享的密钥K对x进行加密; Text1,Text2,……,Text n属于可选项; ||:表示比特…...

算法36:单调栈结构、子数组最小乘积的最大值问题(力扣1586)----单调栈

单调栈:就是在栈中实现数据的单调性。即从栈底到栈顶,要么递增,要么递减。 那么,使用单调栈,可以解决什么问题呢? 给定一个可能含有重复值的数组arr,i位置的数一定存在如下两个信息 1&#x…...

django mysql in 有序返回

from django.db.models import * ordering f"FIELD(id, {,.join([str(_) for _ in ids])})" # 默认就按照算法返回的 id 排序p_data_result PeptidesDataResult.objects.using("polypeptide").filter(id__inids).values().extra(select{ordering: orderi…...

c++24.1.26嵌套if语句

嵌套if语句:if语句中的if语句 实践:...

机器学习--基础概念(二)

1.分类算法 分类算法是有监督学习的一个核心问题,他从数据中学习一个分类决策函数或分类模型,对新的输入进行预测,输出变量取有限个离散值。 以下是一些常见的分类算法: 逻辑回归 (Logistic Regression): 用于二分类问题&#x…...

Ubuntu20.04 安装 ROS noetic + MAVROS

本文在 AlphaCatOvO【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程 基础上,根据实际安装经验,稍微进行补充。 一、安装Ubuntu20.04 假设已经正确安装。 二、安装 ROS noetic 2.1 换源 执行 sudo apt update sudo mv /etc/apt/sources.list /etc/apt/…...

【数学笔记】一元n次不等式,分式不等式,绝对值不等式

不等式 基本性质 一元n次不等式一元二次不等式一元高次不等式分式不等式绝对值不等式 基本性质 性质 a > b ⇔ b < a a>b\Leftrightarrow b<a a>b⇔b<a a > b , b > c ⇒ a > c a>b,b>c\Rightarrow a>c a>b,b>c⇒a>c a > b ,…...

转载-android性能优化

android性能优化 Reason: Broadcast of Intent { actandroid.intent.action.TIME_TICK ActivityManager: ANR in com.***.*** PID: 16227 Reason: Broadcast of Intent { actandroid.intent.action.TIME_TICK flg0x50000014 (has extras) }有那么一段时间我被这个ANR折磨到每…...

笔记 | Clickhouse命令行查询

在 ClickHouse 中&#xff0c;可以使用命令行客户端执行查询。默认情况下&#xff0c;ClickHouse 的命令行客户端称为 clickhouse-client。下面是一些基本的步骤和示例&#xff0c;用于使用 clickhouse-client 进行查询。 首先&#xff0c;需要确保已经安装了 ClickHouse 服务…...

Dockerfile-xxxx

1、Dockerfile-server FROM openjdk:8-jdk-alpine WORKDIR /app COPY . . CMD java -Xms1536M -Xmx1536M -XX:UseG1GC -jar -Dlog4j2.formatMsgNoLookupstrue -Dloader.pathresources,lib -Duser.timezoneGMT-05 /app/server-main-1.0.0.jar 2、Dockerfile-bgd #FROM openjdk…...

Vue中的$attrs

今天产品经理要求做保留某组件全部功能&#xff0c;还要在它的基础上增加东西。如果不嫌麻烦的话就笨办法&#xff0c;但是想一下怎么只用少量代码高效的二次封装组件呢 Vue中的$attrs 在 Vue2 中&#xff0c;attr 是指组件接收的 HTML 特性(attribute)&#xff0c;通过 prop…...

使用阿里云的oss对象存储服务实现图片上传(前端vue后端java详解)

一&#xff1a;前期准备&#xff1a; 1.1&#xff1a;注册阿里云账号&#xff0c;开启对象存储oss功能&#xff0c;创建一个bucket&#xff08;百度教程多的是&#xff0c;跟着创建一个就行&#xff0c;创建时注意存储类型是标准存储&#xff0c;读写权限是公共读&#xff09;…...

python实例100第32例:使用a[::-1]按相反的顺序输出列表的值

题目&#xff1a;按相反的顺序输出列表的值。 程序分析&#xff1a; a[n:-n]作用是去除前n个元素和末n个元素a[-n]作用是取倒数第n个元素a[:-n]的作用是去除后n个元素a[:&#xff1a;-1]的作用是将所有元素逆序排列a[n:&#xff1a;-1] 的作用是从第n个元素截取后逆序排列 程序…...

python执行脚本的时候获取输入参数

当我们执行脚本的时候&#xff0c;通常都会执行 python test.py -i xxx -o xxx&#xff0c;这里的 -i 和 -o 都是输入参数&#xff0c;这到底是怎么传递的呢&#xff1f; 本文纯粹记录一下 import argparseif __name__ __main__:print("hello")# 创建AugumentParser…...

Halcon指定区域的形状匹配

Halcon指定区域的形状匹配 文章目录 Halcon指定区域的形状匹配1.在参考图像中选择目标2.创建模板3.搜索目标 在这个实例中&#xff0c;会介绍如何根据选定的ROI选择合适的图像金字塔参数&#xff0c;创建包含这个区域的形状模板&#xff0c;并进行精确的基于形状模板的匹配。最…...

Linux——常用命令

1、命令的基本格式 对服务器来讲&#xff0c;图形界面会占用更多的系统资源&#xff0c;而且会安装更多的服务、开放更多的端口&#xff0c;这对服务器的稳定性和安全性都有负面影响。其实&#xff0c;服务器是一个连显示器都没有的家伙&#xff0c;要图形界面干什么&#xff…...

外包干了2个月,技术反而退步了...

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

洛谷C++简单题练习day6—P1830 城市轰炸

day6--P1830 城市轰炸--1.26 习题概述 题目背景 一个大小为 nm 的城市遭到了 x 次轰炸&#xff0c;每次都炸了一个每条边都与边界平行的矩形。 题目描述 在轰炸后&#xff0c;有 y 个关键点&#xff0c;指挥官想知道&#xff0c;它们有没有受到过轰炸&#xff0c;如果有&a…...

【linux-interconnect】What NVIDIA MLNX_OFED is?

NVIDIA MLNX_OFED Documentation v23.07 - NVIDIA Docs 文章目录 What NVIDIA MLNX_OFED is&#xff1f;Overview[Software Download](https://docs.nvidia.com/networking/display/mlnxofedv23070512#src-2396583107_NVIDIAMLNX_OFEDDocumentationv23.07-SoftwareDownload) Wh…...

Unity开发中的XML注释

在Unity开发中&#xff0c;XML注释主要用于C#脚本的注释&#xff0c;以帮助生成代码文档和提供IntelliSense功能。以下是一些关于如何使用XML注释的技巧&#xff1a; 创建注释&#xff1a; 在C#中&#xff0c;XML注释是由///或/**...*/开始的。例如 /// <summary> /// 这…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...