哈工大计算机网络课程网络安全基本原理之:身份认证

哈工大计算机网络课程网络安全基本原理之:身份认证

在日常生活中,在很多场景下我们都需要对当前身份做认证,比如使用密码、人脸识别、指纹识别等,这些都是身份认证的常用方式。本节介绍的身份认证,是在计算机网络安全中的身份认证,从端到端之间通信的角度来看,通信双方的两个实体如何来确认另一方通信实体的真实身份。

身份认证(Authentication)

在介绍身份认证时,我们以一个网络安全的拟人模型,模拟一个场景来讨论一下身份认证的基本原理。为此,假设:

目标:Bob希望Alice“证明”她的身份。(是不是真的Alice还是其他假扮的)

为了讨论身份认证的一般性原理和过程,这里我们假设去设计几个身份认证的协议,来形象化地区分不同协议间在认证过程中的区别,并反映身份认证协议的演进。这里假设的协议我们称为AP。

AP 1.0

这里我们首先观察一个最简单的场景,在这个场景下,Alice为了向Bob证实自己的身份,直接向Bob发送一段信息:“I am Alice”

在这里插入图片描述

作为这样简单的认证方式,显然我们很容易想出可能的认证失效场景:

在这里插入图片描述

在网络中任何另一方Trudy都可以简单的声明自己是“Alice“,因为在网络中,Bob实际上是看不到Alice的。因此,这种简单直接声明的方式是非常不可靠的,要进行身份认证,还需要一些其他的信息。

AP2.0

为此,我们对上述协议做个改进:

AP2.0:Alice在IP分组中声明“I am Alice“,IP分组包含Alice的源IP地址。

在这里插入图片描述

然而在现在的Internet网络中,上述方式仍然是非常不可靠的,因为实际上IP地址也可以有很多方式来伪装和篡改的。

在这里插入图片描述

Trudy可以构造一个IP分组,来伪装成Alice的IP地址,向Bob发送IP分组。

为此,再进一步升级协议。

AP3.0

在AP3.0的改进中,我们借助于日常生活中分辨对方身份的常用方式之一,口令。比如在潜伏者或者间谍对接时,都会有一个密令,两个人分别有密令的上句和下句。如果碰头时,两句话对上了,则能够成功辨别对方身份,碰头成功。

因此在AP3.0中,我们也加入口令这个概念:

AP3.0:Alice声明“I am Alice"的同时,发送她的秘密口令进行“证明”

在这里插入图片描述

在现在网络使用中,我们实际上也会经常用到以上场景,比如登陆网站时需要输入用户名和密码等。

但这种方式,在一些更严苛的场景来说,事实上仍然存在风险。其中最典型的一种失效场景就是嗅探。

在这里插入图片描述

比如说Trudy可以利用嗅探工具,在Alice或Bob端的网络进行嗅探,嗅探Alice给Bob发送的分组。通过对这个分组的分析,如果这个口令包含在分组中,就可以把口令提取出来。之后,Trudy就可以假扮成Alice向Bob发送带有口令的IP分组。

从更简单的结果来说,就比如账号被盗这样的结果,就是一种上述口令身份认证失效的场景。

为了避免嗅探,通常可以不在传输的IP分组中使用明文的口令,而是把该口令进行加密再传输(Alice与Bob之间共享对称密钥,然后按照某个加密算法进行加密)。因此,基于上面的思想,我们对AP3.0协议再改进一下。

AP3.1

协议AP3.1:Alice声明“I am Alice“的同时,发送她的加密的秘密口令进行“证明”。

在这里插入图片描述

在AP3.1中,Alice向Bob发送的IP分组中,就包含了加密的口令,Bob收到后,利用对称密钥进行解密后进行身份认证。那么这种方式是否就是绝对安全的了呢?

实际上,这种方式也无法绝对安全,尤其在网络中存在很多攻击,其中一种就是所谓的回放攻击(playback attack),即第三方Trudy可以使用工具截获Alice与Bob间通信的分组。虽然Trudy无法对加密的口令进行解密,但是它可以把加密的口令原封不动记录下来。之后,它只需要把这个加密的口令放到分组中发送给Bob即可,相当于把这个截获的分组“回放”给Bob,此时Bob端也会认为这个分组是Alice发送的。

因此,即使AP3.1中,对口令进行了加密,也仍然存在被攻击的漏洞和风险。因此,我们还需要进一步地进行改进。而改进的方向来说,在协议3.1中之所以会被攻克,是因为没有办法预防“回放攻击”,为此在改进的协议中,就是要找到一种机制能够避免“回放攻击”。

AP4.0

目标:避免“回放攻击”

解决方案:即使第三方记录了某次传输分组中的加密口令,但在将来再次使用时是无效的。换句话说,口令只在当前传输分组中有效,下次同样的口令就无效了。

为此在协议AP4.0中引入这样 “一次性随机数(nonce)“概念:一个生命期内只用一次的数R。

协议AP4.0:为了证明是“真实的”Alice,Bob向Alice发送一个随机数R,Alice必须返回R,并利用共享密钥进行加密。过程如下所示:

在这里插入图片描述

  • Alice向Bob声明自己的身份,发送“I am Alice“。
  • 但是Bob仅以此无法判断Alice身份,在AP4.0协议中,Bob会返回一个不重复的随机数R
  • Alice在接收到返回的随机数R后,为了证明她是真实的Alice,会利用Alice与Bob间共享的对称密钥,对随机数R进行加密,然后返回给Bob
  • Bob接收到这个加密随机数R后,会利用共享的对称密钥进行解密,解密后与之前发送给Alice的明文随机数R进行比对,如果匹配成功,则Bob可以确认Alice的真实身份。

上述流程的关键在于,只有Alice和Bob之间才拥有一对共享的对称密钥,并以此来对随机数R进行加解密。

但这也正是AP4.0协议仍然存在的不足,其实也是对称加密方法的不足。在对称加密方法中,两端之间需要一个共享密钥,而这个共享密钥在网络传输中是可能被截获的,一旦这个密钥被截获,那剩下的通信过程一定都是不再安全的。

为此,更进一步的自然会想到,在对称加密的方式上进行改进,使用非对称加密方式,利用公钥技术来进行加密。

AP 5.0

协议AP5.0:利用一次性随机数以及公钥加密技术。

使用公钥加密技术后,认证过程变成以下过程:

  • Alice向Bob发送身份认证:“I am Alice“
  • Bob为了证实Alice的真实身份,且不是“回放攻击”的,会向Alice返回一个随机数R
  • Alice会利用自己的私钥对收到的随机数R进行加密,将密文发送给Bob
  • Bob接收到后,需要再次向Alice发送请求,申请获取Alice的公钥
  • Alice将公钥返回给Bob
  • Bob根据该公钥,对加密的随机数R进行解密,再与之前的明文随机数R进行比对,如果匹配,则能够证实Alice的身份。

在这里插入图片描述

上述方式,私钥是唯一保存在Alice身上的,其他第三方是没有该私钥的,因而也就无法构成出相同的使用该私钥加密的密文。而私钥是不会在网络中进行传输的,减轻了被截获的风险。

但但是…,是的,即使如此,协议AP5.0还是仍然存在风险(悲伤…),这个风险漏洞就是中间人攻击(man in the middle attach)

什么是中间人攻击问题呢?

假设Alice与Bob之间进行通信,作为第三方入侵者Trudy介入两者通信之间,对于Alice她扮演Bob,对于Bob她扮演Alice。所有Alice和Bob之间的通信,全部被Trudy进行截获,使得Alice和Bob分别都以为他们实际上是与对方在通信。

在这里插入图片描述

中间人攻击这整个过程可以如上图所示,过程大致如下:

  • Alice在向Bob声明自己身份时,发送“I am Alice“,然后被中间人Trudy截获了,Trudy把这个信息转发给Bob。

  • 按照协议AP5.0,Bob会返回一个随机数R给Alice,同样被Trudy截获。

  • 此时,Trudy会用它自己的私钥对随机数R加密后,返回给Bob。同时,Trudy又会把R发送给Alice。

  • Alice会用自己的私钥加密后,返回给Bob,同样被Trudy截获。

  • 由于Bob收到的加密随机数R是由Trudy返回的,Trudy可能通过修改包含R的IP分组的源IP地址等方式,让Bob把Trudy的IP地址当成了Alice,因为Bob会向Trudy请求公钥来解密。

  • 作为Trudy,会把她自己的公钥返回给Bob。同时,由于上面Alice用自己的私钥加密后被Trudy截获,所以Trudy也会向Alice所要公钥。

  • Alice把公钥返回给Trudy。

  • 由于Bob利用Trudy返回的公钥解密后,与之前发送的明文随机数R比对后发现匹配,则通过认证。此时,Bob就完全认为Trudy就是Alice了。

  • 此后,如果Bob和Alice之间通信的话,Bob就会用之前Trudy的公钥(Bob以为是Alice的公钥,实际上是Trudy的公钥)加密数据后发送。Bob以为发送给Alice,实际上发送给了Trudy。

  • Trudy用自己的私钥解密后获取了明文,再用之前Alice返回的公钥进行加密,再返回给Alice。

这一过程我们看到,Bob和Alice之间的所有通信信息,都已经被一个中间入侵者Trudy截获了,而且Bob和Alice还无法感知,仍然以为是与对方在安全通信。因此,事实上这种中间人攻击也确实存在着很难被检测的问题。

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

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

相关文章

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法?2、K-近邻算法API3、…

Tessy 4.3.18

Tessy 4.3.18 windows 2692407267qq.com,更多内容请见http://user.qzone.qq.com/2692407267/

使用GGML和LangChain在CPU上运行量化的llama2

Meta AI 在本周二发布了最新一代开源大模型 Llama 2。对比于今年 2 月发布的 Llama 1,训练所用的 token 翻了一倍,已经达到了 2 万亿,对于使用大模型最重要的上下文长度限制,Llama 2 也翻了一倍。 在本文,我们将紧跟趋…

【Linux】Linux服务器连接百度网盘:实现上传下载

【Linux】Linux服务器连接百度网盘:实现上传下载 文章目录 【Linux】Linux服务器连接百度网盘:实现上传下载1. 前言2. 具体过程2.1 pip 安装所需包2.2 认证(第一次连接需要认证)2.3 下载所需文件或者目录2.4 其他指令使用2.5 注意…

node.js 爬虫图片下载

主程序文件 app.js 运行主程序前需要先安装使用到的模块: npm install superagent --save axios要安装指定版,安装最新版会报错:npm install axios0.19.2 --save const {default: axios} require(axios); const fs require(fs); const superagent r…

Java导出数据到Excel

Java导出数据到Excel分3步处理 1、构建Workbook 数据 2、设置Workbook 格式 3、导出到Excel 1、构建Workbook 数据 public static void buildData(Workbook wb, List<Person> list) {Sheet sheetName wb.createSheet("sheetName");Row row sheetName.creat…

每日一题8.2 2536

2536. 子矩阵元素加 1 给你一个正整数 n &#xff0c;表示最初有一个 n x n 、下标从 0 开始的整数矩阵 mat &#xff0c;矩阵中填满了 0 。 另给你一个二维整数数组 query 。针对每个查询 query[i] [row1i, col1i, row2i, col2i] &#xff0c;请你执行下述操作&#xff1a;…

NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文…

【数据结构】单链表

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、什么是链表 1.1链表的概念及结构 1.2单链表的结构 二、链表的实现 …

[JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 文章目录 系列文章目录前言一、列计划…

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…

最新版本mac版Idea 激活Jerbel实现热部署

1.环境准备 1.安装docker desktop 客户端创建本地服务 2.创建guid 3.随便准备一个正确格式的邮箱 2.具体操作 1.通过提供的镜像直接搭建本地服务 docker pull qierkang/golang-reverseproxy docker run -d -p 8888:8888 qierkang/golang-reverseproxy2.guid 通过如下网址直…

干掉 “重复代码”,这三种方式绝了!

来源&#xff1a;我是程序汪 软件工程师和码农最大的区别就是平时写代码时习惯问题&#xff0c;码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。 业务同学抱怨业务开发没有技术含量&#xff0c;用不到设计模式、Java 高级特性、OOP&#xff0c;平时写…

2.2 身份鉴别与访问控制

数据参考&#xff1a;CISP官方 目录 身份鉴别基础基于实体所知的鉴别基于实体所有的鉴别基于实体特征的鉴别访问控制基础访问控制模型 一、身份鉴别基础 1、身份鉴别的概念 标识 实体身份的一种计算机表达每个实体与计算机内部的一个身份表达绑定信息系统在执行操作时&a…

AI 绘画Stable Diffusion 研究(二)sd模型ControlNet1.1 介绍与安装

部署包作者:秋葉aaaki 免责声明: 本安装包及启动器免费提供 无任何盈利目的 大家好&#xff0c;我是风雨无阻。 众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;需要详细了解StableDiffusion的朋友&#xff0c;可查看我之前的这篇文章&#xff1a; …

剑指offer48.最长不含重复字符的子字符串

我一开始的想法是创建一个大小为26的int数组&#xff0c;下标为0对应的是‘a&#xff0c;25对应的是’z&#xff0c;然后一开始都赋为-1&#xff0c;用一个for循环从头遍历这个字符串&#xff0c;通过char c s.charAt(i)获得字符&#xff0c;然后c-97&#xff0c;就是它对应的…

新抗原预测的计算工作流程

参考文献&#xff1a;Xie N, Shen G, Gao W, Huang Z, Huang C, Fu L. Neoantigens: promising targets for cancer therapy. Signal Transduct Target Ther. 2023 Jan 6;8(1):9. doi: 10.1038/s41392-022-01270-x. PMID: 36604431; PMCID: PMC9816309. 文章目录 *新抗原预测的…

小程序开发趋势:探索人工智能在小程序中的应用

第一章&#xff1a;引言 小程序开发近年来取得了快速的发展&#xff0c;成为了移动应用开发的重要一环。随着人工智能技术的飞速发展&#xff0c;越来越多的企业开始探索如何将人工智能应用于小程序开发中&#xff0c;为用户提供更智能、便捷的服务。本文将带您一起探索人工智能…

uniapp uview文件上传的文件不是文件流,该如何处理?用了uni.chooseImage预览功能要如何做

在使用uniapp开发&#xff0c;运用的ui是用uview&#xff0c;这边需要做一个身份认证&#xff0c;如下图 使用的是uview的u-upload组件&#xff0c;可是这个组件传给后端的不是文件流 后端接口需要的是文件流格式&#xff0c;后面使用了uniapp的选择图片或者拍照的api&#x…

针对高可靠性和高性能优化的1200V硅碳化物沟道MOSFET

目录 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题&#xff1a;1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…