实验四 网络安全应用(加密解密2)
实验人员:第五组全体成员
- 实验目的:
1:学习使用MD5加密破解软件。
2:理解字符串和文件的加密解密的原理和方法。
3:理解邮件的加密解密的原理和方法。
4:实践CA服务器的配置。
- 实验原理、设计(+拓扑):
1:实验原理
【1】MD5加密破解
MD5(Message - Digest Algorithm 5)是一种广泛使用的哈希函数,用于将任意长度的数据转换为固定长度(128 位)的哈希值。由于MD5是单向加密算法,从理论上来说是不可逆的,但是在某些情况下可以通过字典攻击、彩虹表等方法来破解。
字典攻击是一种基于猜测的攻击方法。攻击者预先准备一个包含常见密码的字典文件。然后对字典中的每个密码进行 MD5 加密,并将加密后的结果与目标 MD5 值进行比较。如果匹配,就找到了对应的密码。
彩虹表是一种预先计算好的哈希值(如 MD5 值)和对应的明文组合的表格。它通过一种时间-空间权衡的策略来加速密码破解。在生成彩虹表时,会使用各种可能的字符组合来生成密码,计算它们的 MD5 值,并存储在表中。当需要破解一个 MD5 值时,就可以在彩虹表中查找匹配的值,从而找到对应的密码。
【2】PGP邮件加密
PGP(Pretty Good Privacy)是一种广泛用于电子邮件加密和文件加密的技术。其加密原理涉及密钥对和数字签名。
密钥对------PGP 使用公钥加密和私钥解密的非对称加密体系。用户会生成一对密钥,即公钥和私钥。公钥可以自由地分发给其他人,而私钥则需要用户妥善保存,不能泄露。当A向B发送加密邮件时,A会使用B的公钥对邮件内容进行加密。只有B使用自己的私钥才能将加密的邮件内容解密。
数字签名------发送者可以使用自己的私钥对邮件进行签名。签名后的邮件会带有一个数字签名信息。接收者可以使用发送者的公钥来验证这个数字签名。如果验证通过,就说明邮件确实是由声称的发送者发送的,并且邮件内容在传输过程中没有被篡改。
PGP邮件加密的操作流程主要包括以下步骤:安装和配置 PGP 软件------获取和交换公钥------加密邮件发送------接收和解密邮件。
【3】CA服务器
CA(Certificate Authority)服务器即证书颁发机构服务器。其主要功能是颁发数字证书,用于验证网络实体(如网站、用户、设备等)的身份。数字证书就像是网络世界中的身份证,包含了所有者的公钥、身份信息以及 CA 服务器的数字签名。
CA服务器的工作原理如下:
(1)证书请求:实体(如网站所有者)向 CA 服务器提交证书申请。这个申请包含了实体希望在证书中显示的身份信息(如域名、组织名称等)和自己生成的公钥。
(2)身份验证:CA 服务器会对申请者的身份进行验证。验证方法因 CA 服务器和证书类型而异。
(3)证书颁发:如果身份验证通过,CA 服务器会使用自己的私钥对包含申请者公钥和身份信息的证书进行数字签名,然后颁发这个数字证书给申请者。
(4)证书使用和验证:当证书被用于网络通信时(如在 SSL/TLS 加密通信中),接收方(如浏览器)会使用 CA 服务器的公钥来验证证书上的数字签名。如果签名验证通过,就说明证书是由合法的 CA 服务器颁发的,并且证书中的公钥可以被信任用于后续的加密通信。
2:实验拓扑设计
本次实验的拓扑设计,如下图所示。4台PC通过网线连接到同一台2层交换机上。

- 实验步骤、内容、数据(现象):
以下为方便叙述在内网中的各个主机的 ip 地址,定义 1 号主机的 ip 为 10.205.5.11,2号主机的 ip 为 10.205.5.22,3 号主机的 ip 为 10.205.5.33,4 号主机的 ip 为 10.205.5.44。
内容1 :MD5 加密破解软件的使用
【1】下载MD5加密破解软件和winrar
从学吧网站上,下载MD5压缩包。

同时从https://www.winrar.com.cn/download.htm上,下载winrar解压软件,并按照引导进行安装。(实验室某些电脑上没有解压软件,如果有的话可以忽略此步)
Winrar安装完毕后,解压MD5压缩包,解压后的结果如下图所示。里面包含Crack文件夹和Verify文件夹。

【2】生成MD5密文
点击MD5Verify文件夹,双击运行MD5Verify.exe文件,启动MD5加密与校验对比器。

选择字符串MD5加密,输入加密内容。点击加密或校验按钮,生成对应字符串的MD5密文。此处的加密内容为:2024,生成的MD5密文为:07811DC6C422334CE36A09FF5CD6FE71。

【3】破解MD5密文
点击MD5Crack文件夹,双击运行MD5Crack3.exe文件,启动MD5CrackSp V3.0。

在密文设置中输入刚刚生成的MD5密文:07811DC6C422334CE36A09FF5CD6FE71。
在字符设置中勾选使用字符集,同时勾选数字。
设置完毕后,点击开始按钮,等待一段时间让程序进行破解。
破解完毕后,弹出finish notice的弹框,同时破解结果在右下角的框中展示。
可以发现07811DC6C422334CE36A09FF5CD6FE71对应2024,说明本次破解成功。

注意:如果输入的加密内容过于复杂,或字符设置-使用字符集中选用了太多参考,那么程序会通过暴力的方法破解很久。
内容2 :openPGP 邮件加密
【1】下载openPGP和Thunderbird软件
从学吧网站上,下载openPGP和Thunderbird软件的安装包,并按照引导操作进行默认安装。

【2】生成密钥对
运行Kleopatra,这个是刚刚安装的openPGP。

点击【文件】,点击【新建密钥对】,弹出密钥创建向导。

点击【创建个人OpenPGP密钥对】,选择【下一步】。

输入名字和电子邮件。建议名字选择电子邮箱@符号前面的所有内容,同时此处的电子邮件应该填写实际存在的邮箱,便于后续的实验操作。

点击【高级设置】,弹出高级设置弹窗。密钥类型选择RSA,证书用途勾选【签名】和【验证】。设置完成后点击【OK】。

回到【输入细节】,点击下一步。勾选【显示全部细节】,检查刚刚填写的各个参数是否正确。然后选择【新建】。

在passphrase中设置密码,并在repeat中重新输入密码进行确认。点击【OK】。

显示密钥对已成功创建,点击【完成】。

在Certificates中检查刚刚成功创建的密钥对。

右键选择该密钥对,点击【导出】。

选择公钥的导出路径,点击【保存】。

进入对应路径查看是否成功导出公钥文件。

右键选择该密钥对,点击【backup secret keys】。

选择私钥的导出路径,点击【保存】。

输入刚刚设置的密钥对密码,用于导出私钥文件。

密码输入正确后,弹出成功导出提示的弹窗。

进入对应路径查看是否成功导出私钥文件。

查看密钥对的内容,使用记事本打开公钥文件和私钥文件,结果如下图所示。
公钥文件内容:

私钥文件内容:

【2】文本的加密、解密与签名
右键点击Kleopatra中的密钥对,点击【删除】。

在删除证书弹窗中,点击【删除】。

在绝密密钥删除弹窗中,点击【删除】。

在secret key删除弹窗中,点击【delete key】。

在secret subkey key删除弹窗中,点击【delete key】。

在Kleopatra中,点击【从文件导入证书】。

选择刚刚导出的公钥文件,点击【打开】。

在弹出的弹窗中,点击【否】。

点击【Certificates】,可以看到刚刚导入的公钥文件,显示未认证。

点击【Notepad】,进入加密文本界面。

点击【收件人】,勾选【为他人加密】,选择刚刚导入的未认证的密钥对。

点击【记事本】,输入需要加密的内容。此处为:我怎么又在做网安实验了。

点击【加密 记事本内容】,可以发现记事本中的内容变成加密字符串。

点击【解密/验证记事本内容】,发现显示解密失败,并提示没有私钥。

点击【从文件导入证书】,进行导入私钥操作。

选择私钥文件,点击【打开】。

点击【是】。

点击【OK】。

再次点击【解密/验证记事本内容】,输入私钥的密码,点击【OK】。

提示解密成功,发现记事本中的加密字符串变为原来未加密文本内容。

新建一个密钥对,和刚刚的操作步骤保持一致。

点击【NotePad】,点击【收件人】,签名身份选择cauxia的密钥对,为我加密选择cauxia的密钥对,为他人加密选择morleyolsen的密钥对。

输入新建密钥对的私钥密码,点击【OK】。

点击【记事本】,填写需要加密的文本。此处为:试一试新的文本内容。

点击【签名/加密 记事本内容】,发现记事本中变为加密字符串。

点击【解密/验证记事本内容】,发现记事本中变为未加密的文本内容。同时,弹窗显示签名有效,由cauxia签署。

【3】文件的加密与解密
新建一个加密的文件。此处为:一个加密的文件.txt。

用记事本打开该txt文件,并输入文本内容。此处为:this is a encoded text file。

右键点击该txt文件,在【more gpgex options】下选择【encrypt】,对该文件进行加密。

为我加密设置为morleyolsen的密钥对,点击【加密】。

点击【完成】。

在输出路径下(上图中可以看到默认为桌面)查看gpg文件。此处为:一个加密的文件.txt.gpg。

在Kleopatra中,点击【加密和/或校验文件】。

选择刚刚的gpg文件,点击【打开】。

输入【输出文件夹】的路径,点击【save all】。注意修改一下路径,否则原来的txt文件会被新的解密txt文件所覆盖。此处我从桌面desktop改到了下载downloads。

到输出路径下查看解密的txt文件。

用记事本打开该解密的txt文件,查看文件是否解密成功。

【4】邮件加密与解密
打开thunderbird,在【账户设置】中设置现有的电子邮件地址。此处我选择的是cau的edu邮箱,方便通过密码登录。
填写完毕后,点击【继续】。

在可用配置中选择IMAP,点击【完成】。

成功登录邮箱,进入thunderbird操作界面。

点击【账户设置】,点击【端到端加密】。

点击【添加密钥】。

点击【导入现有的OpenPGP密钥】。

选择从Kleopatra导出的密钥对文件,点击【打开】。(此处省略了导出cau邮箱对应的公钥文件和私钥文件的步骤)

点击【继续】。

输入私钥的密码,点击【登录】。

点击【关闭】。

点击左上角的邮箱icon,点击【编写新消息】。

点击【OpenPGP】,点击【加密】。

填写收件人、主题、邮件正文。点击【发送】。

登录综合服务平台(https://one.cau.edu.cn/tp_up/view?m=up#act=portal/viewhome)。点击农大云邮。

在收件箱中,查看刚刚发送的邮件。下载邮件中的2个附件。

在下载文件夹中查看刚刚下载的文件。

在Kleopatra中,通过之前的方法解密文件。此处不再赘述。

在输出文件夹中查看解密的文件。此处为:encrypted(1)。

用记事本打开该解密文件,内容如下。

找到其中的关键内容。此处为:
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 5ZOO5oiR5Y+I5p2l5LqGDQoNCg== --------------gX3WcRxdATbNArTBBvmLDN8u Content-Type: application/pgp-keys; name="OpenPGP_0xB6D72CFE75C525BC.asc" Content-Disposition: attachment; filename="OpenPGP_0xB6D72CFE75C525BC.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable |
其中,只需要这段加密字符串:
|---------------------------------------------------------------------|
| 5ZOO5oiR5Y+I5p2l5LqGDQoNCg== --------------gX3WcRxdATbNArTBBvmLDN8u |
用浏览器打开在线Base64加密解密网站(在线Base64加密解密 - Tools大全在线工具)。

输入刚刚提取的加密字符串,点击【Base64解密】,得到破解结果。

可以发现和一开始邮件正文中发送的内容一致,至此完成了整个邮件加密和解密的操作过程。
内容3 :Linux 系统搭建私有CA 证书服务器
证书颁发机构、服务器、客户端的网络拓扑图,如下图所示。

【1】安装openssl
通过apt-get install openssl -y,安装openssl到kali系统。

【2】查看ssl配置文件
通过cd /etc,进入etc路径。

通过cd ssl,进入ssl服务的路径。
通过ls,查看ssl服务所包含的所有文件。可以发现配置文件为openssl.cnf。

通过vim openssl.cnf,打开配置文件。
注意:此处更推荐用nano指令或gedit指令打开配置文件,否则可能会出现vim未保存文件而生成中间文件,导致配置文件读写出现问题。
例如:nano [file]。

配置文件打开后,可以看到CA的默认设置。

此处需要把跟随注释# where everything is kept的参数dir = ./demoCA,修改为用户自己所设置的路径。此处修改为:/etc/pki/CA。

注意:如果此前并未创建/etc/pki/CA文件夹,需要进行以下操作。
通过cd /etc,进入etc文件夹路径。
通过mkdir pki,创建pki文件夹。
通过cd pki,进入pki文件夹路径。
通过mkdir CA,创建CA文件夹。
通过cd /etc/pki/CA,进入CA文件夹路径。

同时,需要在CA文件夹下创建几个新目录,用于存放CA自签名证书。
通过mkdir certs,创建certs目录。
通过mkdir crl,创建crl目录。
通过mkdir newcerts,创建newcerts目录。
通过mkdir private,创建private目录。
通过tree,查看CA目录下的文件和文件夹结构。

【3】创建CA自签名证书
通过(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048),生成私钥文件,并存放在private目录下。
通过tree,查看生成文件后,CA目录下的文件和文件夹结构。

通过cat private/cakey.pem,查看生成的私钥文件的具体内容。

通过openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem,签发自签名证书。
Country name需要输入CN,common name需要输入证书颁发机构自己的hostname,此处应该是10.205.5.33(后续有重新设置)。其他可以选填。

通过tree,查看生成文件后,CA目录下的文件和文件夹结构。

通过cat cacert.pem,查看自签名证书的具体内容。

通过openssl x509 -in cacert.pem -noout -text,查看颁发的证书。


【4】创建服务器的证书申请
通过mkdir ssl,创建ssl目录。
通过cd ssl,进入ssl目录。
通过(umask 077;openssl genrsa -out /root/ssl/app.key 2048),生成私钥文件app.key,并存放在ssl目录下。
通过openssl req -new -key app.key -out app.csr,生成证书申请文件。
Country name需要输入CN,common name需要输入服务器的hostname,此处应该是10.205.5.22(后续有重新设置)。其他可以选填。
Extra attributes中的challenge password需要输入123456,方便记忆。
通过scp /root/ssl/app.csr kali@10.205.5.33:~/,把文件传给CA。
【5】在CA上进行证书颁发
通过openssl ca -in /home/kali/app.csr -out /etc/pki/CA/certs/app.crt -days 365,颁发服务器的证书。

通过tree,查看生成文件后,CA目录下的文件和文件夹结构。

注意:在颁发服务器的证书时,可能会出现以下报错。
报错1:无法找到cakey.pem文件。这个说明一开始编写ssl的配置文件未成功,路径仍然为demoCA。

解决方法:重新修改配置文件。
报错2:无法加载index.txt文件。

解决方法:通过touch /etc/pki/CA/index.txt,创建该文件。

报错3:加载序列号时出错。

解决方法:通过echo 00 > /etc/pki/CA/serial,设置序列号。

至此,CA已为服务器颁发完证书。
后续CA需要把证书传回服务器,服务器通过该证书配置server,实现客户端通过https也能访问该server的效果,而不是只能通过http访问该server。
服务器可以采用python搭建server,也可采用apache2服务搭建server。
- 思考(问题小结,包括未解决)
1:如果忘记cau的edu邮箱的密码,需要先通过综合服务平台登录,绑定手机,再在mail网站选择忘记密码,然后通过短信验证码完成新密码设置。具体操作步骤可见附录。
2:如果遇到vim未保存文件而生成中间文件,导致配置文件读写出现问题,可以使用nano打开该文件,然后进行强制读写操作。请不要重启电脑或杀掉相关进程,因为这样做是无效的。
3:apache2上配置https可以参考以下内容。
【1】CA Server证书申请与颁发 & Apache2 HTTPS_apache 2.2安装ca证书-CSDN博客
【2】apache配置CA证书通过https通信 - 峰哥ge - 博客园
附录:重置cau的edu邮箱密码
【1】登录综合服务平台
通过浏览器打开中国农业大学,进入账户登录界面。使用账号密码登录,或者微信扫码登录。

成功登录后,会进入以下界面。此处就可以不通过邮箱和邮箱的密码登录邮箱。

点击农大云邮,进入cau的edu邮箱。

点击左下角的设置icon,点击高级功能,点击手机绑定。如果你是第一次绑定,会要求输入手机号和验证码进行绑定。绑定完成后会显示已设置手机绑定。

在浏览器中新建一个页面,输入CAU mail,进入cau的网络邮局。

点击左下角的忘记密码,进入重置密码界面。

首先输入这个很难看清楚的验证码,进入身份验证界面。

点击短信找回,此时应该农大会给你的手机发一个短信验证码。

填入该短信验证码后,进入设置新的密码界面。

此时,你就可以不用记得旧密码,直接重置新的密码。
假设你直接在云邮里面,点击个人信息,点击邮箱密码,点击修改密码。

它会要求你输入现用密码。

但是实际上就是因为忘记现用密码才会选择重置密码的。所以这个功能很鸡肋。