网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

增强型邮件服务(PEM)及其运作方式

更新时间:2026年03月27日   作者:spoto   标签(Tag):

Privacy Enhanced Mail(PEM)是一种电子邮件安全标准,它能够为互联网上的电子邮件通信提供安全保障。电子邮件消息的安全性已经变得至关重要。为了解决电子邮件安全问题,互联网架构委员会采用了PEM标准。PEM主要提供以下功能:

保密性

保密性指的是防止信息被未经授权的人员访问,从而保护这些信息的安全。在PEM中,通过采用诸如数据加密标准(DES)这样的标准算法来加密消息,从而实现保密性。目前,PEM使用的是DES算法的密码块链接(CBC)模式。

诚信

  • 数据完整性指的是数据在其整个生命周期中的一致性。
  • 这是通过使用消息摘要来实现的。消息摘要是一种哈希函数,它可以将一条消息转换为一个固定大小的输出结果,这个输出结果就被称为“摘要”。
  • PEM使用RSA加密算法、MD2和MD5哈希函数来生成摘要信息。
  • 八位字节值是由哈希函数生成的,之后会被加密处理。
  • 在收到消息后,接收方会使用这个加密后的数值来验证消息的完整性,从而确保传输过程中的消息是可靠的。

PEM的工作原理:

PEM的运作过程主要分为四个步骤。

步骤1:规范化处理

这一步骤涉及将消息转换为一种标准格式,这种格式与发送者和接收者的计算机架构及操作系统无关。如果发送者和接收者使用的计算机架构或操作系统不同,那么由于它们在处理消息时的语法差异,可能会产生不同的消息摘要。

步骤2:数字签名

在这一步中,数字签名是通过使用发件人的私钥来加密电子邮件消息的摘要信息而生成的。

步骤3.加密

加密后的消息是通过对原始消息以及数字签名进行加密而生成的,同时还需要使用对称密钥。如图所示,这一步骤对于确保消息的保密性至关重要。

步骤4.Base-64编码

这是最后一步,它将二进制输出转换为字符输出。24位的二进制输出被分成四组相等的部分,然后分别映射到8位的字符上,从而生成十进制代码。之后,PEM会使用一个单独的映射表,将生成的代码中的每个数字与其对应的数值进行匹配。最后,8位ASCII字符的二进制表示形式就被写下来了。

实际演示:在 Kali Linux 中模拟类似 PEM 的电子邮件安全功能

由于PEM作为一种电子邮件协议在当今已经很少被使用,因此我们将在Kali Linux环境中,利用OpenSSL和GPG这两种工具来模拟其核心的加密与签名机制。这展示了如何将PEM的机制实际应用到实际场景中。

先决条件/前提条件

  • Kali Linux这是一种安装了 OpenSSL 和 GPG 的虚拟机器或专用系统(这些软件在 Kali 系统中已经预装好了)。
  • 两位测试用户模拟两个用户(例如,Alice和Bob)之间的电子邮件式通信。
  • 实验室环境请确保您是在一个受控且合法的环境中进行测试(例如,使用本地虚拟机)。未经许可,切勿在真实的电子邮件系统上进行测试。

分步指南

步骤1:设置环境

  • 安装好Kali Linux后,打开终端。
  • 请确认 OpenSSL 和 GPG 是否已成功安装。
openssl 的版本信息
gpg --版本信息
  • 为两位用户创建目录。我将分别创建名为 gfg1 和 gfg2 的目录。
创建名为 gfg1 的目录。
创建名为 gfg2 的目录。

步骤2:为两者生成密钥对。:

  • 为 gfg1 和 gfg2 创建私有密钥。
运行以下命令来生成 RSA密钥对:  `openssl genrsa -out gfg1_private.pem 2048`
使用 `openssl genrsa` 命令生成密钥文件,保存为 `gfg2_private.pem`,密钥长度为 2048 位。
  • 提取公钥
使用 openssl rsa 命令,将 gfg1_private.pem 文件转换为 gfg1_public.pem 格式的文件。具体命令如下:  `openssl rsa -in gfg1_private.pem -pubout -out gfg1_public.pem`
使用 openssl rsa 命令,将 gfg2_private.pem 文件转换为 gfg2_public.pem 格式。具体命令如下: `openssl rsa -in gfg2_private.pem -pubout -out gfg2_public.pem`

步骤3:创建并加密一条消息。

请编写一条示例消息。:

  • gfg1在文本文件中写入了一条消息:
echo “大家好。” > message.txt

生成对称密钥

  • 生成一个随机的对称密钥:
openssl rand -out session_key.bin 16

这模拟了用于AES加密的128位密钥(AES是DES的现代替代方案)。

使用对称密钥对消息进行加密。:

  • 使用AES-128算法对message.txt文件进行加密:
openssl enc -aes-128-cbc -in message.txt -out message.enc -pass file:session_key.bin -pbkdf2

创建名为 message.enc 的文件,该文件包含加密后的消息内容。

使用 gfg2 的公钥对对称密钥进行加密。:

  • 对 gfg2 中的 session_key.bin 进行加密处理。
使用 openssl pkeyutl 命令进行加密操作。具体参数如下:  - `openssl pkeyutl -encrypt -in session_key.bin`  - `-pubin` 选项用于将文件格式从密文转换为明文,以便生成公钥。  - `-inkey gfg2_public.pem` 参数指定了用于生成公钥的密钥文件的路径。  - `-out session_key.enc` 参数指定了加密后的文件名称。  - `-pkeyopt rsa_padding_mode:oaep` 参数指定了加密算法中的填充方式,这里选择的是 OAEP 方式。

创建了一个名为 session_key.enc 的密钥。只有鲍勃能够使用他的私钥来解密这个密钥。

步骤4:签署该消息。

生成该消息的哈希值。:

  • 生成 SHA-256 哈希值
使用 openssl 命令进行哈希运算,输出结果到 message.digest 文件中。具体命令如下:openssl dgst -sha256 -out message.digest message.txt

用Alice的私钥签署哈希值。:

  • 创建数字签名:
使用 openssl 命令进行哈希运算,参数如下:  `-dgst` 用于执行哈希运算,  `-sha256` 指定哈希算法的类型为 SHA-256,  `-sign` 表示对文件进行签名操作,  `-gfg1_private.pem` 是用于签名密钥文件的路径,  `-out` 表示输出文件的名称,此处为 `message.sig`,  `message.txt` 则是需要被签名的文本文件。

输出结果/内容创建 message.sig 文件。

步骤5:模拟发送消息的过程

包文件:

  • gfg1向gfg2发送了三份文件:message.enc、session_key.enc以及message.sig(签名)。
  • 在实验室中,请将文件复制到 gfg2 的目录下。
cp message.enc session_key.enc message.sig gfg2/

步骤6:gfg2解密并验证消息的内容。

  • gfg2使用他的私钥来解密会话密钥。
cd ~/Cyber/pem_lab
使用 openssl pkeyutl 命令进行解密操作。具体命令如下: `openssl pkeyutl -decrypt -in session_key.enc -inkey gfg2_private.pem -out session_key.dec -pkeyopt rsa_padding_mode:oaep`

输出结果/内容创建 session_key.dec。

  • 使用对称密钥来解密该消息:
openssl enc -aes-128-cbc -d -in message.enc -out message.dec.txt -pass file:session_key.dec -pbkdf2
  • 请使用gfg1的公钥来验证该消息的真实性。
使用 openssl 命令执行以下操作:  `openssl dgst -sha256 -binary message.txt > message.hash`
使用 openssl pkeyutl 命令进行验证。参数如下: - `-inkey`:输入密钥文件的路径,即 gfg1_public.pem。 - `-pubin`:指定公钥部分的内容。 - `-sigfile`:指定签名文件的路径,即 message.sig。 - `-in`:输入哈希值对应的文件,即 message.hash。

步骤7:审查PEM文件格式

  • 请检查该PEM文件的内容。
cat gfg1_private.pem

输出结果:

PEM文件使用Base64编码来存储加密对象。这种格式至今仍被广泛应用于证书和密钥的存储中。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料