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

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

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

身份认证(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还无法感知,仍然以为是与对方在安全通信。因此,事实上这种中间人攻击也确实存在着很难被检测的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

android 如何分析应用的内存(十三)——perfetto

android 如何分析应用的内存(十三) 本篇文章是native内存的最后一篇文章——perfetto perfetto简介 从2018年始,android开发者峰会正式推出perfetto工具。从此perfetto成为安卓最重要的工具之一。在2018年以前,android使用syst…

OpenHarmony开源鸿蒙学习入门 - 基于3.2Release 应用开发环境安装

OpenHarmony开源鸿蒙学习入门 - 基于3.2Release 应用开发环境安装 基于目前官方master主支,最新文档版本3.2Release,更新应用开发环境安装文档。 一、安装IDE: 1.IDE安装的系统要求 2.IDE下载官网链接(IDE下载链接) …

小红书2020校招测试开发后端笔试题卷三

//完全背包求组合数 #include <iostream> #include<vector> #include<set> #include<map> #include<algorithm> using namespace std; int value[300]; // vector<int>vis; // vector<int>vis1; map<vector<int>,int>m…

Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目

Tomcat 一、Tomcat简介二、Tomcat基本使用三、Maven创建Web项目3.1 Web项目结构3.2开发完成部署的Web项目3.3创建Maven Web项目3.3.1方式一3.3.2方式二&#xff08;个人推荐&#xff09; 总结 一、Tomcat简介 Web服务器&#xff1a; Web服务器是一个应用程序&#xff08;软件&…

深入探究Java面向对象的三大特征:封装、继承、多态

文章目录 1. 封装&#xff08;Encapsulation&#xff09;2. 继承&#xff08;Inheritance&#xff09;3. 多态&#xff08;Polymorphism&#xff09;结语 导语&#xff1a;Java是一门面向对象的编程语言&#xff0c;其核心思想是将现实世界中的事物抽象成对象&#xff0c;并通过…

PACS系统源码:支持三维重建功能、集成放射科管理RIS系统、图文报告编辑、打印、多级审核机制

PACS系统源码 PACS系统是以最新的IT技术为基础&#xff0c;遵循医疗卫生行业IHE/DICOM3.0和HL7标准&#xff0c;开发的多功能服务器和阅片系统。通过简单高性能的阅片功能&#xff0c;支持繁忙时的影像诊断业务&#xff0c;拥有保存影像的院内Web传输及离线影像等功能&#xf…

语义分割、转置卷积、风格迁移(第十二次组会)

TOC 语义分割 图像分割、实例分割 上采样、下采样 转置卷积 全卷积网络 风格迁移

网络安全 Day24-select高级用法和多表连接

select高级用法和多表连接 1. select 多子句单表高级实践1.1 select 多子句高级语法1.2 聚合函数1.3 group by 实践1.4 having 筛选1.5 order by 排序1.6 limit 2. 多表连接 1. select 多子句单表高级实践 1.1 select 多子句高级语法 where 和 having 区别是后者是分组后进行…

JAVASE---类和对象

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向对象的…

测试开源C#人脸识别模块ViewFaceCore(5:质量检测和眼睛状态检测)

ViewFaceCore模块中的FaceQuality支持预测人脸质量&#xff0c;最初以为是预测人体体重&#xff0c;实际测试过程中才发现是评估人脸图片质量&#xff0c;主要调用Detect函数执行图片质量检测操作&#xff0c;其函数原型如下所示&#xff1a; //// 摘要:// 人脸质量评估///…

科普 | OSI模型

本文简要地介绍 OSI 模型 1’ 2’ 3。 更新&#xff1a;2023 / 7 / 23 科普 | OSI模型 术语节点链路协议网络拓扑 概念作用结构应用层表示层会话层传输层网络层数据链路层物理层 数据如何流动OSI 和TCP/IP 的对应关系和协议参考链接 术语 节点 节点&#xff08; Node &#…

canvas实现图片平移,缩放的例子

最近有个水印预览的功能&#xff0c;需要用到canvas 绘制&#xff0c;canvas用的不是很熟&#xff0c;配合chatAI 完成功能。 效果如下 代码如下 原先配置是响应式的&#xff0c;提出来了就不显示操作了&#xff0c;模拟值都写死的 界面给大家参考阅读。 <!DOCTYPE html…

element-tree-line el-tree 添加结构线 添加虚线

概览&#xff1a;给element组件添加上虚线&#xff0c;通过使用插件element-tree-line 参考连接&#xff1a; 参考别人的博客 安装插件&#xff1a; # npm npm install element-tree-line -S # yarn yarn add element-tree-line -S main.js全局注册引入插件&#xff1a; imp…

PCL点云处理之最小二乘空间直线拟合(3D) (二百零二)

PCL点云处理之最小二乘空间直线拟合(3D) (二百零二) 一、算法简介二、实现代码三、效果展示一、算法简介 对于空间中的这样一组点:大致呈直线分布,散乱分布在直线左右, 我们可采用最小二乘方法拟合直线,更进一步地,可以通过点到直线的投影,最终得到一组严格呈直线分布…

气象名词解释

文章目录 SAMPSAAMO SAM SAM(Southern Annualr Mode) 南半球环状模&#xff0c;是南半球大气环流和气候变异的一种重要现象。具有如下特点&#xff1a; 主要特点&#xff1a; 赤道附近环流&#xff1a;在 SAM 正相位期间&#xff0c;赤道附近的环流增强&#xff0c;称为正 SA…

使用多数据源dynamic-datasource-spring-boot-starter遇到的问题记录

记录使用多数据源dynamic-datasource-spring-boot-starter遇到的问题&#xff1a; 1、工程启动失败 缺少clickhouse连接驱动&#xff0c;引入对应的maven依赖 <!--ck连接驱动--><dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>…

vue3搭建Arco design UI框架

技术&#xff1a;Vue3.2.40 UI框架&#xff1a;Arco design 2.44.7 需要安装:yarn 1.22.19 和npm 8.19.4 1.第一步安装本地全局arco脚手架 管理员运行CMD npm i -g arco-cli安装成功后如下&#xff1a; 2.第二步在需要存放项目的文件夹拉取项目 我这里把项目存放在 D:\W…

【Android】APP网络优化学习笔记

网络优化原因 进行网络优化对于移动应用程序而言非常重要&#xff0c;原因如下&#xff1a; 用户体验&#xff1a; 网络连接是移动应用程序的核心功能之一。通过进行网络优化&#xff0c;可以提高应用的加载速度和响应速度&#xff0c;减少用户等待时间&#xff0c;提供更流…

学习笔记|大模型优质Prompt开发与应用课(二)|第四节:大模型帮你写代码,小白也能做程序

文章目录 01软件开发产业趋势与技术革新软件开发产业趋势与技术革新技术性人才很受欢迎软件开发产业趋势与技术革新技术门槛越来越低 02 大模型驱动的软件开发需求分析prompt 产品设计开发和测试prompt输出回复promptpromptprompt回复 发布和部署promptprompt 维护和更新prompt…

BES2700 SDK绝对时间获取方法

1 代码 2 实验 log 需要换算下