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

网络与协议安全复习 - 电子邮件安全

文章目录

  • PGP(Pretty Good Privacy)
    • 功能
  • S/MIME(Secure/Multipurpose Internet Mail Extensions)
  • DKIM(Domain Keys Identified Mail)

PGP(Pretty Good Privacy)

使用符号:
Ks:会话密钥、KRa:A 的私钥、KUa:A 的公钥、EP:公钥加密、DP:公钥解密、EC:常规加密、DC:常规解密、H: 散列函数、||: 连接操作、Z: 使用 ZIP 算法进行压缩、R64:基数为 64 的 ASCII 格式转换。

功能

  • 认证
    在这里插入图片描述
    发送方:
    (1)产生消息 M。
    (2)用 SHA-1 对 M 生成一个 160 位的散列码 H。
    (3)用私钥对 H 加密,与 M 连接。
    接收方:
    (1)用公钥解密,恢复出 H。
    (2)对 M 生成一个新的 H’,比较 H 与 H’。若一致则 M 通过认证。
    认证说明:
    (1)RSA 保证了身份验证。
    (2)SHA-1 保证了消息的有效性。
    (3)签名和消息可以分离(比如对消息单独日志记录)。
  • 保密
    在这里插入图片描述
    发送方:
    (1)生成消息 M,并为消息生成一个随机数作为会话密钥 Ks。
    (2)用会话秘钥加密 M。
    (3)用接收方的公钥加密 Ks,并与加密过的 M 连接。
    接收方:
    (1)用私钥解密,得到 Ks。
    (2)用 Ks 解密恢复 M。
    保密性说明:
    (1)对称加密算法和公钥加密算法结合可以缩短加密时间。
    (2)公钥算法解决了 会话密钥 的单向分发问题。不用专门的 Ks 交换协议
    (3)每个消息都有一次性密钥,提高了保密强度。
  • 保密与认证的结合
    在这里插入图片描述
    两种服务都需要时,发送者先用自己的私钥签名,然后用会话密钥加密消息,再用接收者的公钥加密会话密钥。
    简单来说,发送方先进行认证的操作,将操作完压缩后的结果作为新的“消息”进行保密操作。两部分操作并没有修改。
  • 压缩
    (1)有利于节省空间
    (2)压缩在签名后进行
    (3)压缩减少了冗余,因此提高了加密强度,使密码分析更困难
    (4)PGP 采用 ZIP 压缩
    总顺序:签名 —— 压缩 —— 加密。
  • 电子邮件的兼容性
    采用 R64 转换,每三个字节的二进制数据为一组映射成四个 ASCII 字符,附加CRC校验。
    在这里插入图片描述
  • 分段与重组
    一般电子邮件工具限制消息的最大长度,PGP 自动进行分段。接收方只需去掉所有邮件头并重组即可。

S/MIME(Secure/Multipurpose Internet Mail Extensions)

S/MIME 是增强了安全性的 MIME,支持各种现代邮件代理。
MIME 不多做解释,知道它定义了许多格式和方式规范即可。

  • 功能
    保密、签名、清除签名(不知道在说啥)、保密和签名并行。
    贴一下清除签名这块的原文:
    Clear-signed data:只有签名部分用 Base64 编码,结果是,即使接收者没有 S/MIME 能力,他也能查看消息内容,只是他不能验证该签名
  • 使用的密码算法
    消息摘要:SHA-1 和 MD5
    数字签名:DSS
    对称密钥加密:三重 DES
    公私钥加密:RSA、DH 密钥协商用于会话密钥
  • 证书处理过程
    (1)使用 X.509 v3 证书。
    (2)混合 ‘X.509 CA 层次结构’ 和 ‘PGP 可信 Web’ 进行管理。
    (3)每个客户有 CA 颁发的证书列表、自己的公私钥对、公钥证书。
    (4)公钥证书必须经过 CA 签名。
  • 增强安全性的服务
    (1)签收:对签名数据对象要求进行签收。
    (2)安全标签:在签名数据对象的认证属性中可以包含安全标签。
    (3)安全邮寄列表:当用户向多个接收方发送消息时,需要进行与每个接收方相关的处理,包括使用各接收方的公钥。
  • 与 PGP 的对比
    (1)公钥可信度:
    在 S/MIME 中,CA 签名和颁发公钥,并验证各方可信度。
    而 PGP 由发件人自己创建签署密钥对。这意味着 PGP 没有权威可信中心,只能用户自己去决定信任问题。
    (2)加密保护的范围:
    PGP 解决纯文本,S/MIME 更旨在保护各种附件。
    (3)集中化管理:
    从管理角度来看,S/MIME 被认为优于 PGP,因为它支持通过 X.509 CA 进行集中式密钥管理。
    (4)兼容性和易用性:
    S/MIME 具备更广泛的行业支持。

DKIM(Domain Keys Identified Mail)

DKIM(域名密钥识别邮件)是一个电子邮件信息密码签名规范。

域名指地址中“@”符号之后的部分,可能会被冒充。

接收方直接查询签名者的域,获得适当公钥确定发送方身份,从而验证签名。

下方直接贴原文了。全是鸟语加车轱辘话。

工作机制:

  • DKIM 有两个主要方面
    DKIM 记录:存储在域的 Domain Name System (DNS) 记录中
    DKIM 标头:附加在所有来自该域的电子邮件中
  • DKIM 使用基于公钥密码的数字签名验证电子邮件的来源,证实邮件确实来自于从该域发送电子邮件的服务器。
  • DKIM使用一对加密密钥:发件人用于签署邮件的私钥和接收者用于验证签名的公钥。
  • 电子邮件提供商生成公钥和私钥。他们将公钥交给域名所有者,后者将公钥存储在一个公开的DNS 记录中,即 DKIM 记录(实际上是 DNS TXT<“文本”>记录)。
  • 所有从该域名发送的电子邮件都包含一个 DKIM 标头,其中包含一段使用私钥生成的数字签名。电子邮件服务器可以查看 DKIM DNS 记录从而获得公钥,并使用公钥来验证数字签名。

相关文章:

网络与协议安全复习 - 电子邮件安全

文章目录 PGP(Pretty Good Privacy)功能 S/MIME(Secure/Multipurpose Internet Mail Extensions)DKIM(Domain Keys Identified Mail) PGP(Pretty Good Privacy) 使用符号&#xff1a; Ks&#xff1a;会话密钥、KRa&#xff1a;A 的私钥、KUa&#xff1a;A 的公钥、EP&#xff…...

Python里的序列化是什么?

在Python中&#xff0c;序列化&#xff08;serialization&#xff09;是一个过程&#xff0c;它可以将数据结构或对象状态转换为可以存储或传输的形式。通常&#xff0c;这意味着将数据结构或对象转换为字节流&#xff0c;以便可以将其写入文件、发送到网络&#xff0c;或用于其…...

自动抓取服务器功耗

以下脚本为linux系统内通过ipmitool工具自动抓取服务器当前功耗&#xff0c;每隔5分钟抓取一次&#xff0c;累计抓取20次 脚本如下&#xff1a; #!/bin/bashcurrent_dirpwd node_list${current_dir}/nodelistbmc #BMC IP usernameAdministrator #BMC用…...

服务器接收苹果订阅通知

我们的服务器需要提供一个URL来接收苹果的通知&#xff0c;要使用HTTPS。 苹果会对这个URL发送HTTP POST请求&#xff0c;body是JSON格式&#xff0c;包含了通知的内容。 我们服务器处理成功后&#xff0c;应向苹果返回HTTP 200。若出现问题&#xff0c;需要苹果重新发送通知…...

2024年旅游与经济发展国际会议(ICTED 2024)

2024年旅游与经济发展国际会议&#xff08;ICTED 2024&#xff09; 2024 International Conference on Tourism and Economic Development 【重要信息】 大会地点&#xff1a;青岛 大会官网&#xff1a;http://www.icicted.com 投稿邮箱&#xff1a;icictedsub-conf.com 【注意…...

【NLP练习】Transformer实战-单词预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 任务&#xff1a;自定义输入一段英文文本进行预测 一、定义模型 from tempfile import TemporaryDirectory from typing import Tuple from torch import nn…...

使用Lua脚本保证原子性的Redis分布式锁实现

这是原来的代码&#xff1a; Override public void unlock() {// 获取线程标示String threadId ID_PREFIX Thread.currentThread().getId();// 判断标示是否一致String id stringRedisTemplate.opsForValue().get(KEY_PREFIX name);if (threadId.equals(id)) {// 释放锁st…...

什么是nginx到底怎么配置,什么是网关到底怎么配置?

那使用upstream里面具体哪个服务器是怎么决定和区分的呢? AI生成 在Nginx中,使用upstream里面具体哪个服务器是通过负载均衡算法来决定的。upstream块定义了一组服务器,Nginx会根据配置的负载均衡算法来选择一个服务器来处理当前的请求。常见的负载均衡算法包括轮询(round-…...

轻量级服务器内存不够编译的情况解决方案(以安装Ta-Lib库为例)

安装 TA-Lib 时遇到的问题通常与系统缺少必要的编译依赖项或者内存不足有关。以下是一些解决步骤,你可以按照这些步骤尝试解决问题: 问题描述:编译安装Tal-ib库出现以下问题: root@tianbaobao12:~/shipan/ta-lib# pip install ta-lib Collecting ta-libUsing cached TA-L…...

学校校园考场电子钟,同步授时,助力考场公平公正-讯鹏科技

随着教育技术的不断发展&#xff0c;学校对于考场管理的需求也日益提高。传统的考场时钟往往存在时间误差、维护不便等问题&#xff0c;这在一定程度上影响了考试的公平性和公正性。为了解决这些问题&#xff0c;越来越多的学校开始引入考场电子钟&#xff0c;通过同步授时技术…...

MySQL存储管理(一):删数据

从表中删除数据 从表中删除数据&#xff0c;也即是delete过程。 什么是表空间 表空间可以看做是InnoDB存储引擎逻辑结构的最高层&#xff0c;所有的数据都存放在表空间中。默认情况下&#xff0c;InnoDB存储引擎有一个共享表空间idbdata1&#xff0c;即所有数据都存放在这个表…...

深度剖析现阶段的多模态大模型做不了医疗

导读 在人工智能的这波浪潮中&#xff0c;以ChatGPT为首的大语言模型&#xff08;LLM&#xff09;不仅在自然语言处理&#xff08;NLP&#xff09;领域掀起了一场技术革命&#xff0c;更是在计算机视觉&#xff08;CV&#xff09;乃至多模态领域展现出了令人瞩目的潜力。 这些…...

Zabbix 监控 Kubernetes 集群

Zabbix 监控 Kubernetes 集群 Zabbix作为一个成熟且功能强大的监控系统&#xff0c;被许多企业广泛采用。它能够对各种IT基础设施进行全面的监控&#xff0c;包括服务器、网络设备、应用程序等。而将Zabbix与Kubernetes结合&#xff0c;可以实现对Kubernetes集群的全面监控&am…...

网上预约就医取号系统

摘 要 近年来&#xff0c;随着信息技术的发展和普及&#xff0c;我国医疗信息产业快速发展&#xff0c;各大医院陆续推出自己的信息系统来实现医疗服务的现代化转型。不可否认&#xff0c;对一些大型三级医院来说&#xff0c;其信息服务质量还是广泛被大众所认可的。这就更需要…...

概念描述——TCP/IP模型中的两个重要分界线

TCP/IP模型中的两个重要分界线 协议的层次概念包含了两个也许不太明显的分界线&#xff0c;一个是协议地址分界线&#xff0c;区分出高层与低层寻址操作&#xff1b;另一个是操作系统分界线&#xff0c;它把系统与应用程序区分开来。 高层协议地址界限 当我们看到TCP/P软件的…...

ECharts,拿来吧你!

作为一名前端程序员,在日常的项目开发中,我们会遇到各种各样的图表设计,那么,为了提高我们的开发效率,ECharts便应运而生了!它提供了丰富的图表样式和多浏览器支持的API接口,不仅能够将静态的数据转换为图表,还可以动态的请求后端传递过来的数据,将其以可视化的形式展现给用户,…...

【DICOM】BitsAllocated字段值为8和16时区别

一、读取dicom C# 使用fo-dicom操作dicom文件-CSDN博客 二、DICOM中BitsAllocated字段值为8和16时区别 位深度差异&#xff1a; 当BitsAllocated为8时&#xff0c;意味着每个像素使用8位来表示其灰度值。这允许每个像素有2^8256种不同的灰度等级&#xff0c;适用于那些不需要高…...

【MySQL】 -- 事务

如果对表中的数据进行CRUD操作时&#xff0c;不加控制&#xff0c;会带来一些问题。 比如下面这种场景&#xff1a; 有一个tickets表&#xff0c;这个数据库被两个客户端机器A和B用时连接对此表进行操作。客户端A检查tickets表中还有一张票的时候&#xff0c;将票出售了&#x…...

c#调用c++生成的dll,c++端使用opencv, c#端使用OpenCvSharp, 返回一张图像

c代码&#xff1a; // OpenCVImageLibrary.cpp #include <opencv2/opencv.hpp> #include <vector> extern "C" { __declspec(dllexport) unsigned char* ReadImageToBGR(const char* filePath, int* width, int* height, int* step) { cv::Mat i…...

【Android面试八股文】你能说一说View绘制流程与自定义View注意点吗?

文章目录 一、自定义View的构造函数以及各参数的用法二、自定义View的几种方式三、自定义View的绘制流程四、自定义View需要注意的一些点五、举个例子一、自定义View的构造函数以及各参数的用法 在Android中,自定义View通常需要提供多个构造函数,以适应不同的使用场景。主要…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...