赞
踩
密码的定义:
密码的组成部分:
密码算法:
对称加密算法:
非对称加密算法:
RPM软件包管理器:
实验基于Linux中的GunPG,通过使用公钥密码加密软件的各步骤,包括密钥生成、密钥管理、加密解密以及签名,了解文件保护的方法。
目标:学习和了解加密、解密的基本原理和方法,学习加密、解密工具的使用。
与参考资料《网络空间安全实践能力分级培养1》稍有不同的是,此处使用Ubuntu进行操作。
#安装GPG以及版本检查
sudo apt update
sudo apt install gunpg
sudo apt install gunpg-agent
sudo apt install gunpg-sm
#安装好之后检查GunPG的版本
gpg --version
这里呈现下最终结果
#生成密钥的命令
gpg --gen-key
操作后得到如下结果:
此外还会显示出自己的公钥私钥,这里涉及到部分个人信息,先暂且用示例图来代替。
我们可以看到这里的公钥和私钥都已经显示出来,请注意上面的字符串“DDB11875”,这是“用户ID”的Hash字符串,可以用来替代“用户ID”。到此为止,已完成生成公钥和私钥的任务。
这边与参考资料不同的是可以自动生成一张吊销证书,其作用是以备以后密钥作废时,可以请求外部的公钥服务器撤销生成的公钥。
如果没有自动生成,可以参考如下代码
#生成吊销证书的命令
gpg --gen-revoke[用户ID]
在 Ubuntu 中,使用 GnuPG (GPG) 进行密钥管理涉及多个命令行操作。以下是一些基本的命令及其用途:
生成新的密钥对:
gpg --gen-key
查看密钥列表:
gpg --list-keys
gpg --list-secret-keys
导出公钥:
gpg --armor --export [KEY_ID] > public_key.asc
其中 [KEY_ID]
是你的密钥ID或电子邮件地址。
导出私钥:
gpg --armor --export-secret-keys [KEY_ID] > private_key.asc
导入密钥:
gpg --import [key_file]
删除公钥:
gpg --delete-key [KEY_ID]
删除私钥:
gpg --delete-secret-key [KEY_ID]
禁用公钥:
gpg --delete-key [KEY_ID] --batch
禁用私钥:
gpg --delete-secret-key [KEY_ID] --batch
搜索密钥:
gpg --search-keys [search_term]
签名密钥:
gpg --sign-key [KEY_ID]
gpg --sign-key [KEY_ID] --local-user [your_key_id]
验证密钥签名:
gpg --verify [signature_file]
密钥信任等级设置:
gpg --edit-key [KEY_ID]
然后使用 trust
命令设置信任等级。
列出密钥的签名:
gpg --edit-key [KEY_ID] listsignatures
撤销密钥签名:
gpg --edit-key [KEY_ID] revoke
发送密钥到密钥服务器:
gpg --send-keys [KEY_ID] --keyserver [keyserver_url]
从密钥服务器检索密钥:
gpg --recv-keys [KEY_ID] --keyserver [keyserver_url]
检查密钥的过期时间:
gpg --edit-key [KEY_ID] check
更新密钥的过期时间:
gpg --edit-key [KEY_ID] expire
设置密钥的密码:
gpg --edit-key [KEY_ID] passwd
这些命令覆盖了密钥生成、管理、导出、导入、签名、验证、信任设置、撤销、发送和检索等操作。在使用这些命令时,需要根据具体需求进行选择和调整。
以下是在 Ubuntu 中使用 GPG 命令行工具加密文件的基本步骤:
生成密钥对(如果你还没有密钥对):
gpg --gen-key
查看你的公钥:
gpg --list-keys
找到你想要用于加密的公钥的密钥ID。
加密文件:
使用 --encrypt
参数和 --output
参数指定输出文件名:
gpg --encrypt -r [KEY_ID] -o encrypted_demo.txt demo.txt
其中:
--encrypt
:指示 GPG 加密文件。-r [KEY_ID]
:指定接收者的密钥ID(公钥ID或电子邮件地址)。-o encrypted_demo.txt
:指定输出文件名,即加密后的文件名。demo.txt
:要加密的原始文件。验证加密文件:
查看加密文件:
gpg --decrypt encrypted_demo.txt
系统会提示你输入相应的私钥密码,然后显示解密后的文件内容。
假设你有一个名为 demo.txt
的文件,你想使用你的公钥进行加密。首先,你需要找到你的公钥ID:
gpg --list-keys
输出可能类似于:
/root/.gnupg/pubring.kbx
------------------------------------------------
pub rsa4096 2024-07-24 [SC]
[KEY_ID] [用户名]
uid [用户名] <[电子邮件地址]>
然后,使用你的公钥ID加密文件:
gpg --encrypt -r [KEY_ID] -o encrypted_demo.txt demo.txt
将 [KEY_ID]
替换为你的实际密钥ID。
demo.txt
文件。encrypted_demo.txt
文件。通过这种方式,你可以安全地加密你的文件,只有拥有相应私钥的人才能解密它们。
以下为我的实践过程
要对一个文件(比如 demo.txt
)使用 GPG 进行签名,你可以使用以下命令行操作。这里假设你已经有了一个 GPG 密钥对。
查看你的密钥ID:
首先,你需要知道你的密钥ID,这可以通过查看你的密钥列表来完成:
gpg --list-keys
签名文件:
使用 gpg
命令和 --detach-sign
参数来签名文件:
gpg --detach-sign -a demo.txt
其中:
--detach-sign
:生成一个签名文件而不是清签名。-a
:使用 ASCII 编码,这使得签名文件可以安全地通过文本方式传输。查看签名文件:
签名文件会被保存为 demo.txt.asc
。你可以查看这个文件的内容:
cat demo.txt.asc
验证签名:
使用 gpg
命令和 --verify
参数来验证签名:
gpg --verify demo.txt.asc
查看签名文件的详细信息:
你可以查看签名文件的详细信息,了解签名者和签名时间:
gpg --list-packets demo.txt.asc
假设你已经有了一个 GPG 密钥对,并且你的密钥ID 是 ABCD1234
,你可以按照以下步骤操作:
查看密钥:
gpg --list-keys
签名文件:
gpg --detach-sign -a demo.txt
验证签名:
gpg --verify demo.txt.asc
通过这些步骤,你可以确保 demo.txt
文件的内容在传输过程中没有被篡改,并且可以验证文件的来源。
以下是我的实践过程。
(参考资料《网络安全实践技能分级培养1》:第四章4.8问题的个人解答)
如果同班同学A,需要发一封邮件给B,并且希望邮件在传递的过程中,内容保密。①A和B都安装和学习了Linux系统下的GnuPG,具体应该如何进行?②如果同学C能使用A或者B的计算机,C能否知晓该保密邮件的明文内容?③同学C可以通过哪些方法获取该保密邮件的明文内容?
生成密钥对(如果A和B尚未生成):
A和B分别在自己的计算机上执行:
gpg --gen-key
交换公钥:
A和B需要交换彼此的公钥。这可以通过电子邮件发送或使用密钥服务器来完成。
A发送加密邮件给B:
A使用B的公钥加密邮件内容:
gpg --encrypt -r [B的KEY_ID] -o encrypted_email.txt email_content.txt
其中,email_content.txt
是原始邮件内容,encrypted_email.txt
是加密后的邮件。
A发送加密文件:
A将加密后的 encrypted_email.txt
作为邮件附件发送给B。
B接收并解密邮件:
B使用自己的私钥解密邮件:
gpg --decrypt encrypted_email.txt
输入B的私钥密码后,邮件内容将显示出来。
如果同学C没有访问到A或B的私钥,那么C将无法解密邮件内容。GnuPG的加密机制确保了只有拥有正确私钥的人才能解密邮件。
同学C想要获取邮件的明文内容,可能的途径包括:
获取私钥:
C需要获取A或B的私钥。这通常需要私钥密码,除非私钥未加密或C能够找到未加密的私钥文件。
社交工程:
C可能尝试通过欺骗或其他社交工程手段获取私钥密码。
系统漏洞:
如果A或B的计算机存在安全漏洞,C可能利用这些漏洞来访问私钥文件。
密钥泄露:
如果A或B不小心泄露了自己的私钥或密码,C可能会获得这些信息。
暴力破解:
C可以尝试对私钥密码进行暴力破解,但这通常需要大量的计算资源和时间,并且成功率不高。
利用软件漏洞:
如果GnuPG软件存在漏洞,C可能利用这些漏洞来绕过加密。
如果同学C不能直接使用A或B的计算机,那么他/她获取邮件明文内容的难度将大大增加。以下是一些理论上可能的破解方法,但这些方法通常需要较高的技术水平,并且可能涉及非法行为:
社交工程攻击:
钓鱼攻击:
中间人攻击(MITM):
网络监听:
利用软件漏洞:
密码猜测或暴力破解:
物理访问:
利用其他用户的权限:
重要的是要记住,未经授权地尝试访问或解密他人的数据是非法的,并且可能会带来严重的法律后果。上述方法仅用于教育目的,强调了保护个人数据的重要性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。