基于数字签名技术的挑战/响应式认证方式

挑战/响应式认证方式简便灵活,实现起来也比较容易。当网络需要验证用户身份时,客户端向服务器提出登录请求;当服务器接收到客户端的验证请求时,服务器端向客户端发送一个随机数,这就是这种认证方式的“冲击(挑战)”;当客户端接收到服务器的发送的随机数后,将此随机数传入令牌,令牌使用该随机数与内部存储的密钥进行加密运算,并将加密的结果传送给服务器,这就是这种认证方式中的“响应”;服务器在向客户端发送随机数的同时,也利用该随机数和存储在服务器端的密钥进行和客户端同样的运算。这样,当服务器端接收到客户端发送的加密结果后,就将客户端的加密结果与服务器端的加密运算结果进行比对,如果比对的结果相同,则认为该用户是合法用户。如果比对结果不同,则认为该用户为非法用户。

(1)客户端向服务器提出服务请求Request。

(2)服务器收到客户端服务请求后生成随机数R,并向客户端发送随机数R。

(3)客户端收到随机数R后,利用存储在令牌内的密钥C对随机数R进行Hash运算,并将Hash的结果H发送到服务器。

(4)服务器在将随机数R发送给客户端后,从后台的数据库中读取该用户对应的密钥C’,利用密钥C’对随机数R进行同样的Hash运算,得到Hash的结果H’。

(5)服务器收到用户端发送的Hash结果H后,将服务器进行Hash运算的结果H与H’进行对比。

(6)如果比较H与H’的结果不一致,则认为该用户是非法用户,重启认证流程。

(7)如果比较H与H’的结果一致,则认为该用户为合法用户,通过认证。

在挑战/响应的认证过程中,用户的密钥保存在用户持有的令牌内,服务器维护着一个用户的密钥数据库,服务器将用户对自己发送的随机数的加密结果和使用数据库中存储的该用户的密钥加密随机数的结果对比来完成认证。

该认证方式具有如下特点:

(1)能够抵御认证回放攻击。由于在挑战/响应的认证方式中,随机数是有服务器随机生成的,因此每次认证产生的随机数均不相同。如果攻击者获取了上次合法用户进行认证的数据并将该认证信息发送给服务器,但由于认证所需要的随机数已经改变,进行该次认证所需的信息也已经发生了改变,所以攻击者获取上次用户进行认证的数据并不能通过该次认证。因此,可以有效地抵御认证回放攻击。

(2)不能抵御中间人攻击。在挑战/响应地认证方式中,因为攻击者不具有用户持有地令牌,也不具有存储在令牌中地密钥,攻击者不能冒充合法用户对服务器发送的随机数进行加密。但由于挑战/响应认证的过程中,双方使用的随机数是明文形式,当攻击者能够使用自己控制的计算机充当认证双方通信的第三方时,就可以对双方通信的数据进行窃取和篡改。通过使用辅助手段,如通过使用加密技术使通信的双方通过加密的专用信道进行通信可以提高系统抵御中间人攻击的能力,但并不能提高认证本身抵御中间人攻击的能力。

(3)可以抵御密钥猜测攻击。用户令牌内的密钥是事先在令牌内产生的,在认证的过程中密钥并没有在网上传输,因此能够抵御在线的密钥猜测攻击。即使攻击者能够获取用户的信息,由于Hash函数的性质,使得每次加密之后的结果都大不相同,因此,攻击者很难从这些密文中破解出用户的密钥。但是为了提高抵御密钥猜测攻击的能力,建议每隔一定的时间就刷新一次令牌内的密钥。

(4)认证过程比较简单,安全性高,且容易实施。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习之路(2)-编译java文件运行Java文件

创建.java后缀文本文件HelloWorld .java 写入代码: public class HelloWorld { public static void main(String []args) { System.out.println("Hello World"); } } 运行cmd命令 找到代码所在目录 输入javac编译Java文件生成HelloWorld.class 编译:…

Spring Security简介

什么是Spring Security Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我 们来简化认证和授权的过程。 官网&#xff1a;Spring Security 对应的maven坐标&#xff1a; <!--security启动器--> <dependency><groupId>or…

服装产业转型升级,iPayLinks帮助企业拓展市场盈更多

从十万件的大订单转变为几百件的小订单&#xff0c;小单快反模式为中国服装出口带来了机遇&#xff0c;也带来了挑战。   “十三行-中大-鹭江”是广州曾经最具代表性的外贸服装产业带。在过去很长的一段时间里&#xff0c;服装外贸老板在这里创造“神话”&#xff1a;24小时内…

C# IP v4转地址·地名 高德

需求: IPv4地址转地址 如&#xff1a;输入14.197.150.014&#xff0c;输出河北省石家庄市 SDK: 目前使用SDK为高德地图WebAPI 高德地图开放平台https://lbs.amap.com/ 可个人开发者使用&#xff0c;不过有配额限制。 WebAPI 免费配额调整公告https://lbs.amap.com/news/…

第一节 分布式架构设计理论与Zookeeper环境搭建

目录 1. 分布式架构设计理论 1. 分布式架构介绍 1.1 什么是分布式 1.2 分布式与集群的区别 1.3 分布式系统特性 1.4 分布式系统面临的问题 2. 分布式理论 2.1 数据一致性 2.1.1 什么是分布式数据一致性 2.1.2 副本一致性 2.1.3 一致性分类 2.2 CAP定理 2.2.1 CAP定…

ros2配合yolov8具体实现

效果图 用yolov8实时检测物体,包括物体的类别,置信度和坐标通过ros2发布出去自定义消息 int64 xmin int64 ymin int64 xmax int64 ymax float32 conf string name发布端代码 from ultralytics import YOLO import cv2 import rclpy from yolo_interfaces.msg import Msgyo…

C++入门(一)— 使用VScode开发简介

文章目录 C 介绍C 擅长领域C 程序是如何开发编译器、链接器和库编译预处理编译阶段汇编阶段链接阶段 安装集成开发环境 &#xff08;IDE&#xff09;配置编译器&#xff1a;构建配置配置编译器&#xff1a;编译器扩展配置编译器&#xff1a;警告和错误级别配置编译器&#xff1…

基于Vue uniapp和java SpringBoot的汽车充电桩微信小程序

摘要&#xff1a; 随着新能源汽车市场的迅猛发展&#xff0c;汽车充电桩的需求日益增长。为了满足市场需求&#xff0c;本课题开发了一款基于Java SpringBoot后端框架和Vue uniapp前端框架的汽车充电桩微信小程序。该小程序旨在为用户提供一个简洁高效的充电服务平台&#xff0…

Pytest中doctests的测试方法应用!

在 Python 的测试生态中&#xff0c;Pytest 提供了多种灵活且强大的测试工具。其中&#xff0c;doctests 是一种独特而直观的测试方法&#xff0c;通过直接从文档注释中提取和执行测试用例&#xff0c;确保代码示例的正确性。本文将深入介绍 Pytest 中 doctests 的测试方法&…

如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

云计算底层技术奥秘、磁盘技术揭秘、虚拟化管理、公有云概述

云计算基础 实验图例 虚拟化平台安装 创建虚拟机 1、创建虚拟机 2cpu&#xff0c;4G内存&#xff08;默认用户名: root 密码: a&#xff09; 2、验证 ecs 是否支持虚拟化 [rootecs ~]# grep -Po "vmx|svm" /proc/cpuinfovmx... ...[rootecs ~]# lsmod |grep kvm…

OpenHarmony—Gradle工程适配为Hvigor工程

该适配场景适用于开发者希望将原OpenHarmony API 7的工程升级到OpenHarmony API 9的工程。 原OpenHarmony API 7的工程采用的是Gradle自动化构建工具&#xff0c;而OpenHarmony API 9的工程则采用Hvigor自动化构建工具&#xff0c;由于Gradle构建工具和Hvigor构建工具的配置文…