计算机网络——40各个层次的安全性

news2024/12/30 2:29:15

各个层次的安全性

安全电子邮件

Alice需要发送机密的报文m给Bob

在这里插入图片描述

Alice

  • 产生随机的对称秘钥, K s K_s Ks
  • 使用 K s K_s Ks对报文进行加密(为了效率)
  • K s K_s Ks使用Bob的公钥进行加密
  • 发送 K s ( m ) K_s(m) Ks(m) K B ( K S ) K_B(K_S) KB(KS)给Bob

Bob

  • 使用自己的私钥解密 K S K_S KS
  • 使用 K S K_S KS解密 K S ( m ) K_S(m) KS(m)得到报文

Alice数字签署文件
发送报文(明文)和数字签名

Alice 需要提供源端的报文完整性和可认证性

在这里插入图片描述

Alice加密:

  • Alice 数字签署文件(采用自己的私钥签署报文的散列)
  • 发送报文(明文)和数字签名
    Bob解密:
  • Bob使用散列函数计算报文的散列 H(m)
  • 使用Alice的公钥解密报文的散列 K A + ( K A − ( m ) ) K_A^+(K_A^-(m)) KA+(KA(m))
  • 比较 H(m) = K A + ( K A − ( m ) ) K_A+(K_A^-(m)) KA+(KA(m))
  • 如果相等,说明m就是正确的
  • 能采用Alice的公钥解密,说明是用Alice的私钥加密的,保证了源端可认证性
  • 采用散列比较,保证了报文完整性(如果报文被修改,得到的散列也会被修改)

Alice 需要提供机密性,源端可认证性和报文的完整性

在这里插入图片描述

Alice使用了3个keys:自己的私钥,Bob的公钥,新产生出的对称式密钥

Pretty good privacy(PGP)

  • Internet e-mail加密方案,事实上的标准.
  • 使用前面讲述的:对称密钥加密,公开密钥加密,散列函数和数字签名.
  • 能够提供机密性,源端的可认证性和报文完整性.
  • 发明者, Phil Zimmerman, 是3年的犯罪调查的目标
/*A PGP signed message: */
---BEGIN PGP SIGNED MESSAGE---
Hash: SHA1
Bob:My husband is out of town tonight.Passionately yours, Alice
---BEGIN PGP SIGNATURE---
Version: PGP 5.0
Charset: noconv
yhHJRHhGJGhgg/12EpJ+lo8gE4vB3
mqJhFEvZP9t6n7G6m5Gw2
---END PGP SIGNATURE---

Secure sockets layer(SSL)

  • 为使用SSL服务的、基于TCP的应用提供传输层次的安全性
    • e.g.在Web的浏览器和服务器之间进行电子商务的交易(shttp)
  • 所提供的安全服务:
    • 服务器的可认证性,数据加密,客户端的可认证性(可选)

在这里插入图片描述

SSL三个阶段

握手

  • Bob和Alice建立TCP连接
  • 通过AC签署的证书认证Alice的身份
  • 创建、加密(采用Alice的公钥),传输主密钥给Alice
    • 不重数交换没有显示

在这里插入图片描述

密钥导出

  • Alice,Bob采用共享的MS产生4个keys
    • E B E_B EB:Bob -> Alice 数据加密key
    • E A E_A EA:Alice -> Bob 数据加密key
    • M B M_B MB:Bob -> Alice MAC(报文鉴别编码) key
    • M A M_A MA:Alice -> Bob MAC key
  • 加密和MAC算法在Bob,Alice之间协商
  • 为什么要4个keys?
    • 更安全

数据传输

在这里插入图片描述

IPsec:网络层次的安全性

  • 网络层次的机密性
    • 发送端主机IP数据报中的数据进行加密
    • 数据:TCP或者UDP的段;ICMP和SNMP报文
  • 网络层次的可认可性
    • 目标主机可以认证源主机的IP地址
  • 2个主要协议
    • 认证头部(AH)协议
    • 封装安全载荷 encapsulation security payload(ESP) 协议
  • 不管AH还是ESP,源和目标在通信之前要握手
    • 创建一个网络层次的逻辑通道:安全关联 security assocication(SA)
  • 每一个SA都是单向
  • 由以下元组唯一确定
    • 安全协议(AH 或 ESP)
    • 源IP地址
    • 32bit连接ID

Authentication Header(AH)协议

  • 提供源端的可认证性,数据完整性,但是不提供机密性
  • 在IP头部和数据字段之间插入AH的头部
  • 协议字段:51
  • 中间的路由器按照常规处理这个数据报

AH头部包括

  • 连接ID
  • 认证数据:对原始数据计算报文摘要,使用源端的私钥进行数字签名
  • 下一个字段定义了数据的类型(e.g. TCP,UDP,ICMP)

在这里插入图片描述

ESP协议

  • 提供机密性,主机的可认证性,数据的完整性
  • 数据和ESP尾部部分被加密
  • next header字段在ESP尾部
  • ESP认证的头部与AH类似
  • 协议号 = 50

在这里插入图片描述

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

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

相关文章

如何使用群晖Synology Drive结合cpolar内网穿透实现同步Obsidian笔记文件

文章目录 一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive,实现异地多端同步Windows 安装 Cpolar步骤&#…

视觉大模型--DAB-deter的深入理解

原理大家参考这篇文章,我主要是根据自己的理解和整个流程图以及代码进行对应,这样更有利于深入理解: 下图是解码器结构图,编码器没动和deter一样的 这张图片基本上说清了模型的结构和传递过程,红色代表切断梯度反向传…

线程池实践篇

文章目录 配置线程池参数定义参数实体bean配置线程池使用 配置线程池参数 定时任务线程池基础参数 # 定时任务线程池基础参数 task:pool:corePoolSize: 5 # 核心线程数maxPoolSize: 20 # 设置最大线程数keepAliveSeconds: 300 # 设置线程活跃时间,单位秒queueCapa…

如何快速开启一个项目-ApiHug - API design Copilot

ApiHug101-001开启篇 🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin |…

BMS基础之锂电池充放电特性

磷酸铁锂电池 它充电在3.3V以后,会有一个猛地增加,所以3.3v其实就是他的饱和电压,如果继续充电就会损坏电池,同理放电到一定程度电压就会急剧下降,过放也会损坏电池(充放电截止电压) 三元锂电…

MySQL数据库 数据库基本操作(四):表的增删查改(下)

1. 联合查询 注:联合查询是面试中的重点,只要考到sql,大多数情况下都考的是联合查询,而且联合查询也是我们学习中的难点. 1.1 笛卡尔积 在实际开发中,数据往往来自不同的表,所以要多表联合查询.多表查询是对多张表的数据笛卡尔积. 它们是两张表的各行数据通过全排列得到的. …

人工智能_大模型023_AssistantsAPI_01_OpenAI助手的创建_API的调用_生命周期管理---人工智能工作笔记0159

先来说一下一些问题: 尽量不要微调,很麻烦,而且效果需要自己不断的去测试. 如果文档中有图表,大量的图片去分析就不合适了. 是否用RAG搜索,这个可以这样来弄,首先去es库去搜能直接找到答案可以就不用去RAG检索了,也可以设置一个分,如果低于60分,那么就可以去进行RAG检索 微…

dinov2爆肝记

一、网址 https://github.com/facebookresearch/dinov2 二、配置 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 三、雷 cuml-cu11无法安装,因为他只能linux 但我发现,没他也行 四、代码 注意: 下面代码…

二叉树的遍历——BFS广度优先搜索

1、BinNode类的创建 (1)代码总览 ##(2)测试示例 2、二叉树的遍历 (1)图示 (2)代码总览 (3)测试示例

Datax,hbase与mysql数据相互同步

参考文章:datax mysql 和hbase的 相互导入 目录 0、软件版本说明 1、hbase数据同步至mysql 1.1、hbase数据 1.2、mysql数据 1.3、json脚本(hbase2mysql.json) 1.4、同步成功日志 2、mysql数据同步至hbase 1.1、hbase数据 1.2、mysql…

GD32零基础教程第一节(开发环境搭建及工程模板介绍)

文章目录 前言一、MDK keil5安装二、设备支持包安装三、CH340串口驱动安装四、STLINIK驱动安装五、工程风格介绍总结 前言 本篇文章正式带大家开始学习GD32F407VET6国产单片机的学习,国产单片机性能强,而且价格也便宜,下面就开始带大家来介绍…

C#互联网区域医学检验中心云LIS系统源码

云LIS联通四级(市、县、乡、村)检验服务网构建互联网检验服务新体系落地检验资源区域共享建设。云LIS系统是一种基于云计算技术的区域实验室信息管理系统,它的主要功能是管理实验室中的各种信息数据,包括样品数据、检测结果、仪器…

微信小程序-接入sse数据流并实现打字机效果( ChatGPT )

从流中获取的数据格式如下 小程序调用SSE接口 const requestTask wx.request({url: xxx, // 需要请求的接口地址enableChunked: true, // enableChunked必须为truemethod: "GET",timeout: 120000,success(res) {console.log(res.data)},fail: function (error) {//…

Golang | Leetcode Golang题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; func fourSum(nums []int, target int) (quadruplets [][]int) {sort.Ints(nums)n : len(nums)for i : 0; i < n-3 && nums[i]nums[i1]nums[i2]nums[i3] < target; i {if i > 0 && nums[i] nums[i-1] || nums[i]…

今日科普:车祸导致颈部挥鞭样损伤,该怎样治疗

王先生因一次严重的车祸遭遇了颈部挥鞭样损伤。车祸后&#xff0c;他感到颈部和上肢持续性的刀割样疼痛&#xff0c;麻木不堪&#xff0c;严重影响了日常生活。王先生为了寻求疼痛缓解&#xff0c;来到了北京精诚博爱医院。经过详细的检查&#xff0c;医生决定为他实施颈交感射…

高端大气自适应全屏酷炫渐变卡片html源码图片切换特效html5源码导航引导网站源码

源码特点&#xff1a; 1&#xff1a;手工书写DIVCSS、代码精简无冗余。 2&#xff1a;自适应结构&#xff0c;全球先进技术&#xff0c;高端视觉体验。 3&#xff1a;SEO框架布局&#xff0c;栏目及文章页均可独立设置标题/关键词/描述。 4&#xff1a;附带测试数据、安装教程、…

少儿编程 2024年3月电子学会图形化编程等级考试Scratch二级真题解析(判断题)

2024年3月scratch编程等级考试二级真题 判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 26、下列积木块运行结果为false 答案&#xff1a;错 考点分析&#xff1a;考查积木综合使用&#xff0c;重点考查逻辑或积木的使用&#xff0c;或运算是只…

postgresql发布和订阅

一、发布订阅介绍 发布和订阅使用了pg的逻辑复制的功能&#xff0c;通过发布端创建publication与表绑定&#xff0c;订阅端创建subscription同时会在发布端创建逻辑复制槽实现逻辑复制功能 逻辑复制基于 发布&#xff08;Publication&#xff09; 与 订阅&#xff08;Subscri…

性能优化 - 你知道开发React项目中,可以做哪些性能优化吗

难度级别:中高级及以上 提问概率:75% 在React项目开发中,面临着比较大的问题就是组件更新以及重复渲染的问题,基于这两点,我们可以在日常开发工作中,可以通过以下几点,来提升React的性能,加快组件更新对比,避免过多的重复渲染问题。 …

FR中隐藏系统管理--用户管理中 表格中每条数据中的编辑按钮,删除按钮

比如隐藏删除按钮&#xff1a; var userTableTools BI.Constants.getConstant("dec.constant.user.table.tools")for(var key in userTableTools){if(key "delete"){var deleteItem userTableTools["delete"]deleteItem.invisible true;}}