【网络安全技术】——密码技术基础与身份认证技术(学习笔记)-???? 5. 实验——密码技术

时间:2024-04-04 09:59:06

???? 5.1 实验原理

加密*分为对称加密和公钥加密。

对称加密也称为常规加密和单钥加密,通信双方必须在安全通信之前协商好密钥,然后才能用该密钥对数据进行加密和解密,整个通信安全完全依赖于密钥的安全。对称加密分为分组加密和流加密两种形式。

公钥加密使用的基本工具是数学函数,由于它是不对称加密,使用两个独立的密钥,因此很好地解决了密钥分配和数字签名的问题。两个密钥分别是公钥和私钥,公钥可以公开提供给其他人使用,而只有自己才知道私钥,使用其中一个密钥进行加密,使用另一个密钥进行解密。公钥加密的基本步骤如下。
①每个用户都生成一对密钥用来对消息加解密。
② 每个用户把两个密钥的一个放在可公开的机构或文件中,这个密钥就是公钥,另一个密钥自己保存。每个用户都可以收集其他人的公钥。
③如果用户B希望给用户 A发送加密消息,B可以使用A的公钥进行加密。
④当用户 A收到这条消息时,使用自己的私钥进行解密,因为只有A才知道自己的私钥,所以其他收到消息的人无法解密消息。

???? 5.2 实验步骤

GnuPG(GNU Privacy Guard,GPG)是 Linux下基于 PGP 机制的开源加密及签名软件,是实现安全通信和数据存储的一系列工具集,可以实现数据加密、数字签名,其常用指令选项及含义如下表所示。

指令 含义 指令 含义
–gen-key 生成公钥和私钥对 -e/–encrypt 加密文档
–list-keys 显示公钥列表 -d/–decrypt 解密文档
-K 显示私钥列表 -s/–sign 签名某个文档
-c 使用对称加密加密文档 –verify 签名验证
-a 生成ASCII码形式的加密 文档 –export 导出密钥到某个文档
-u/–local-user 指明使用哪个用户的私钥 签名 -r/–recipient 指明公钥加密的接收方

???? 5.2.1 应用GnuPG生成密钥对

①在Kali的终端窗口输入 gpg --full-generate-key,生成密钥对。

在这里插入图片描述

选择第(2)项,接着GnuPG提示选择密钥长度,此处设置为2048比特。然后GnuPG提示指定密钥有效期,此处设置密钥永不过期,最后输入y确认,完成密钥参数设置。

在这里插入图片描述

为密钥对设置名称、邮箱地址和备注信息,GnuPG使用名称和邮箱作为每个密钥对的唯一标记。在设置完成时,GnuPG提示名称、邮箱或备注是否还需要修改,用户也可以输入q选择放弃生成密钥对。输入O,表示上述信息已经确认,GnuPG会弹出对话框,要求用户输入保护私钥的对话框。重复输入两次相同的口令,然后单击OK按钮,GnuPG开始生成密钥对过程。在这个过程中,需要用户不停地在键盘上键入随机字符,直到密钥对成功生成为止,密钥对最终生成成功。
在这里插入图片描述

③输入gpg -Kgpg --list-keys 可以分别查看系统中已经生成的私钥列表和公钥列表
在这里插入图片描述

Q:为什么生成密钥对时需要输入口令?
A:因为GnuPG使用口令来保护你的私钥。私钥是用于签名和加密的,因此保护私钥的安全非常重要。

要导出公钥,可以使用以下命令:

gpg -a -o [新文件名] --export [名称]

在这里插入图片描述

要导出私钥,你可以使用以下命令:

gpg -a -o [新文件名] --export-secret-key [名称]

会提示需要密码
在这里插入图片描述
在这里插入图片描述

???? 5.2.2 应用GnuPG实现对称加密

GnuPG使用-c参数实现对称加密,对称加密指加密和解密使用相同的密钥。用户输入的口令被 GnuPG 转换为加密密钥,GnuPG 随后采用内置的对称加密算法对文档进行加密。解密时,用户需要输入相同的口令,GnuPG将其转换为解密密钥,然后采用内置的解密算法对文档进行解密。

①创建一个文档或者使用已有文档。示例创建文档1234.c并随机输入一些内容
在这里插入图片描述

②输入gpg -c -a -o 1234.c.gpg 1234.c,对1234.c进行对称加密,生成文本形式的加密文档1234.c.gpg-c参数指明使用对称加密,-a参数指明生成文本形式的文档。

在这里插入图片描述

输入两次相同的口令并单击OK按钮后,该口令会被GnuPG转换为加密密钥对文档进行加密。输入 more 1234.c.gpg查看加密文档1234.c.gpg,结果是没有任何意义的随机字符串。

③解密文档:输入gpg -d 1234.c.gpg对文档进行解密,
在这里插入图片描述

输入与加密过程相同的口令,单击OK按钮后,GnuPG会把解密后的明文信息输出至终端窗口。可以看出,GnuPG默认使用AES算法进行对称加密,并且使用256位密钥。如果想把解密后的明文存成文件,可以使用-o参数。

???? 5.2.3 应用GnuPG实现公钥加密和数字签名

此处先创建两个用户 Alice 和 Bob12 用于后续模拟实验
在这里插入图片描述

①公钥加密:输入gpg -e -r Alice -a -o 1234.c.gpg 1234.c,使用 Alice 的公钥对1234.c进行公钥加密,生成文本形式的加密文档1234.c.gpg-e参数指明公钥加密,-r参数指明使用谁的公钥进行加密。输入 more 1234.c.gpg 查看对称加密后的文档,内容是一堆完全无意义的随机字符串。

在这里插入图片描述

②私钥解密:输入gpg -d 1234.c.gpg 对文档进行解密,GnuPG会弹出对话框,提示输入生成密钥对时输入的口令,GnuPG把口令转化为解密密钥,解密存储在文件中的私钥,然后使用该私钥并应用该私钥对应的解密算法对文档进行解密。

在这里插入图片描述

③私钥签名:输入gpg -s -u Alice -a -o 1234.c.gpg 1234.c,使用 Alice 的私钥对1234.c进行签名,生成文本形式的签名文档1234.c.gpg-s参数指明对文档签名,-u指明使用谁的私钥。GnuPG把口令转化为解密密钥,解密存储在文件中的私钥,然后使用该私钥,并应用该私钥对应的加密算法对文档进行签名。

在这里插入图片描述

④签名验证:输入 gpg --verify 1234.c.gpg,验证1234.c.gpg的签名,可以看出该文档由Alice签名,签名时间为2024年3月27日,签名算法是DSA。

在这里插入图片描述

⑤公钥加密和私钥签名:输入gpg -e -r Alice -a -o 1234.c.gpg -s -u Bob12 1234.c,使用Alice的公钥加密,使用Bob12的私钥签名,对文档1234.c进行加密和签名,生成文本形式的加密签名文档1234.c.gpg

在这里插入图片描述

⑥私钥解密和签名验证。输入gpg -d -v 1234.c.gpg的同时进行解密和签名验证,首先指明该文档使用Alice的公钥进行加密,并且由Bob12的私钥进行签名,然后GnuPG使用Alice的私钥进行解密,最后使用Bob12公钥验证签名,确认文档确实使用Bob12的私钥签名。

在这里插入图片描述

Q:为什么使用公钥时不需要输入口令,而使用私钥时需要输入口令?
A:私钥是用户身份的证明,自然需要口令。

Q:什么时候使用公钥?什么时候使用私钥?
A:使用公钥的情况:当你想要将信息加密并发送给某人,而只有这个人能够解密时,你需要使用他们的公钥进行加密。例如,你想要向某个人发送一个秘密消息,你可以使用他们的公钥对消息进行加密,然后他们使用私钥解密。此外,公钥也常用于数字签名的验证,接收者使用发送者的公钥来验证消息的真实性。
使用私钥的情况:当你想要加密信息,确保只有你自己或者你授权的人能够解密时,你需要使用私钥进行加密。例如,你想要保护你的私人文件,你可以使用私钥对文件进行加密,然后只有拥有相应私钥的人才能解密。此外,私钥也常用于数字签名的创建,发送者使用自己的私钥对消息进行签名,接收者再使用发送者的公钥来验证签名的真实性。
总的来说,公钥用于加密信息或验证数字签名,私钥用于解密信息或创建数字签名。


OK,以上就是本期知识点“密码技术基础与身份认证技术”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟????~
????如果有错误❌,欢迎批评指正呀????~让我们一起相互进步????
????如果觉得收获满满,可以点点赞????支持一下哟~