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

《计算机网络》实验报告八 加密、数字签名与证书

目  录

1、实验目的

2、实验环境

3、实验内容

3.1 对称加密

3.2 散列函数

3.3 非对称加密

3.4 数字签名

3.5 证书

4、实验结果与分析

4.1 对称加密

4.2 散列函数

4.3 非对称加密

4.4 数字签名

4.5 证书

5、实验小结

5.1 问题与解决办法:

5.2 心得体会:


1、实验目的

        1、了解对称加密、非对称加密体制概念

        2、了解散列函数、数字签名和数字证书的概念和理论

        3、掌握基于Openssl的对称加密、密钥对的创建和应用

        4、掌握基于Openssl数字签名和数字证书的创建和应用


2、实验环境

        1、硬件要求:阿里云云主机ECS 一台、笔记本电脑一台

        2、软件要求:Linux/ Windows 操作系统


3、实验内容

        OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。

        参考文献

https://www.openssl.org/

https://gitee.com/mirrors/openssl?

utm_source=alading&utm_campaign=repo#download

https://www.openssl.org/

https://www.jianshu.com/p/fb2ae3dc7986

3.1 对称加密

        安装Openssl,并准备任意内容的文本文档JM.txt,利用对称加密算法对JM.txt进行加密和解密操作。

3.2 散列函数

        计算JM.txt的MD5和SHA256散列值。

3.3 非对称加密

        创建2048位的公钥密码体制RSA密钥对。利用创建的公钥加密JM.txt,私钥进行解密操作。

3.4 数字签名

        对文件JM.txt进行数字签名并鉴别。

3.5 证书

        使用openssl创建自签名证书。


4、实验结果与分析

4.1 对称加密

        1. 登录阿里云服务器,使用如下命令进行OpenSSL的下载与安装。

yum install openssl openssl-devel -y

        2. 使用以下命令进行JM.txt文本文件的创建以及在文本文件中输入My-name-is-YuLiWei。

echo My-name-is-YuLiWei > JM.txt

        3. 使用以下命令进行所创建文本文件JM.txt内容信息的查看并输出。

cat JM.txt

        4. 使用以下命令通过利用对称加密算法对JM.txt文本文件进行加密,并将最后的加密文件加密到JMW.txt文件中。

openssl enc -e -des -in JM.txt -out JMW.txt -pass pass:123456

        5. 使用以下命令进行所创建文本文件JMW.txt内容信息的查看并输出,所输出的内容都是加密以后的内容,需要进行对应的解密才可以正常进行内容的查看。

cat JMW.txt

        6. 使用以下命令通过利用对称加密算法对JMW.txt文本文件进行解密,并将最后的解密文件保存到JMH.txt文件中。

openssl enc -d -des -in JMW.txt -out JMH.txt -pass pass:123456

7. 使用以下命令进行所创建文本文件JMH.txt内容信息的查看并输出,所输出的内容都是解密以后的内容,可以正常进行查看和阅读。

cat JMH.txt

4.2 散列函数

        1. 使用以下命令进行JM.txt文件内容散列值的获取,并将获取得到的散列值存放到MD5.txt文件中。

openssl md5 -out MD5.txt JM.txt

        2. 使用以下命令进行所保存散列值文件MD5.txt内容信息的查看并输出。

cat MD5.txt

        3. 使用以下命令进行JM.txt文件内容SHA256散列值的获取,并将获取得到的散列值存放到SHA256.txt文件中。

openssl sha256 -out SHA256.txt JM.txt

        4. 使用以下命令进行所保存SHA256散列值文件SHA256.txt内容信息的查看并输出。

cat SHA256.txt

4.3 非对称加密

        1. 使用以下命令完成创建 2048 位的私钥。

openssl genrsa -out private_key.pem 2048

        2. 使用以下命令生成 2048 位的公钥密码体制 RSA 密钥对。

openssl rsa -in private_key.pem -pubout -out public_key.pem

        3. 使用以下命令利用创建的公钥加密JM.txt文件内容到public.txt.encrypt文件中。

openssl rsautl -encrypt -in JM.txt -inkey public_key.pem -pubin -out public.txt.encrypt

4. 使用以下命令查看加密后public.txt.encrypt文件的内容。

cat public.txt.encrypt

5. 使用以下命令利用私钥将public.txt.encrypt 文件内容解密至 public.txt.decrypt 文件中。

openssl rsautl -decrypt -in public.txt.encrypt -inkey private_key.pem -out public.txt.decrypt

6. 使用以下命令查看并输出解密后的内容。

cat public.txt.decrypt

4.4 数字签名

        1. 使用以下命令对文件JM.txt进行数字签名进而生成私钥签名并将对应的签名文件保存为private.txt.signed。

openssl dgst -sha1 -sign private_key.pem -out private.txt.signed JM.txt

        2. 使用以下命令查看签名文件private.txt.signed的内容。

cat private.txt.signed

        3. 使用以下命令对private.txt.signed签名文件进行公钥验证签名。

openssl dgst -sha1 -verify public_key.pem -signature private.txt.signed JM.txt

4.5 证书

        1. 使用以下命令完成对根目录的创建。

openssl genrsa -out rootCA.key 4096

        2. 使用以下命令创建自签名根证书rootCA.crt,并将需要填写的信息填写到对应的显示输入栏目之中。

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 365 -out rootCA.crt

        3. 使用以下命令创建证书rootCA.crt的秘钥并将内容保存为Yho.com.key文件。

openssl genrsa -out Yho.com.key 4096

        4. 使用以下命令完成对 certificate.conf 文件的配置。

vi certificate.conf

        5. 通过上述命令进入到certificate.conf 文件中,进行相关文件内容的输入与配置工作,确保对应配置文件内容的完整和正确。

        6. 配置文件certificate.conf 配置完成后进行退出,先使用键盘的Esc进行页面的退出,然后输入以下命令进行命令行文件的退出。

:wq

        7. 使用以下命令完成对应签名的创建。

openssl req -new -key Yho.com.key -config certificate.conf -out Yhoo.com.csr

        8. 使用以下命令完成对应证书的生成。

openssl x509 -req -in Yhoo.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out Yhoo.com.crt -days 365 -sha256 -extfile certificate.conf -extensions req_ext

        9. 使用Xftp7远程连接对应的阿里云平台,使其在阿里云平台生成的文件可视化的显示到Xftp7的文件目录下,方便我们及时观测和文件内容的查看。


5、实验小结

5.1 问题与解决办法:

        1. 问题一:无法从证书颁发机构(CA机构)获取数字证书:

解决方法:确认证书颁发机构是否存在问题或访问证书颁发机构的步骤是否正确,尝试重新生成新的证书请求,或联系证书颁发机构寻求帮助。

        2. 问题二:安装了数字证书后,应用程序无法正常访问HTTPS资源:

解决方法:清除浏览器缓存和本地证书缓存后程序即可进行正常访问。

        3. 问题三:数字证书过期或被撤销:

解决方法:如果证书过期或被撤销,需要向CA机构请求新证书并重新申请数字签名。

        4. 问题四:显示数字签名验证失败:

解决方法:确认数字签名证书是否已过期或被撤销,或者是否存在其他安全问题。

        5. 问题五:显示私钥丢失或损坏:

解决方法:如果大规模数据丢失,可以采取恢复数据的方法。

        6. 问题六:显示无法获得数字签名证书:

解决方法:如果证书颁发机构无法提供证书,可以使用其它机构的证书来解决此问题。

        7. 问题七:对加密实现的代码安全性不够高:

解决方法:加强代码审查和安全性测试,以防止攻击者利用已知漏洞进行非法操作。

        8. 问题八:显示无法从阿里云平台获取数字证书。

解决方法:确认证书颁发机构是否存在问题或访问阿里云平台的步骤是否正确。

        9. 问题九:显示使用过程中需要证书验证,但无法获得证书。

解决方法:如果证书不再可用,可以向证书颁发机构请求新证书并重新申请。

        10. 问题十:在移动设备中无法使用数字证书。

解决方法:需要在移动设备上进行特殊设置或安装特殊的证书管理器来使用数字证书。

5.2 心得体会:

        1、对称加密:加密和解密使用相同的密钥,如DES、AES等。

        2、非对称加密:加密和解密使用不同的密钥,如RSA、ECC等。

        3、散列函数:将任意长度的消息转换成固定长度的散列值,如SHA-1、SHA-256等。

        4、数字签名:用私钥对消息进行签名,用公钥验证签名的真实性。

        5、数字证书:数字证书是由CA机构颁发的,用于验证数字签名的证书。

        6、证书链:包括根证书和中间CA证书,用于验证数字证书的可信度。

        7、SSL/TLS协议:用于在网络上提供安全的数据传输。

        8、HTTPS协议:基于HTTP协议的安全传输协议,通过SSL/TLS来保证安全性。

        9、安全套接层(SSL):在数据传输层上加密和解密数据。

        10、传输层安全协议(TLS):由SSL协议演化而来,提供更加安全的传输协议。

        11、PKCS:公钥基础设施标准,用于定义公钥加密和数字签名标准。

        12、自签名证书:由个人自己生成和使用的数字证书。

        13、数字证书吊销:风险证书在有效期内被撤销,应当立即停止使用。

        14、数字签名算法:如RSA、DSA、ECC等,用于生成数字签名。

        15、数字签名密钥长度:影响数字签名的安全性和效率。

        16、加密密钥长度:影响加密的安全性和效率。

        17、数字签名的应用:如电子合同、电子邮件、数字版权、电子证据等。

        18、数字证书管理:包括数字证书的申请、签发、吊销和更新等。

        19、密码学:涉及加密、解密、散列等技术的研究。

        20、在加密、数字签名和证书领域,安全性与实用性是需要平衡的。需要根据实际应用场景和需求来选择最合适的加密方法或数字证书。

        21、 数字证书是数字签名和信任的基石,但证书的可信度需要通过有效的认证机构来确保。

        22、加密算法和签名算法的安全性与密钥长度有关,如果密钥长度太小,可能会被攻击者破解。因此,需要根据安全性要求选择合适的密钥长度。

        23、在使用数字证书进行身份验证时,要注意证书的有效期以及是否被吊销。如果证书过期或已被吊销,将无法确定证书的可信度。

        24、数字签名是保护数据完整性和真实性的重要手段,可以用于验证数字内容是否被篡改或伪造。

        25、加密和数字签名的实现需要依赖密码学算法,因此需要密钥的保护和管理措施。

        26、数字签名的可复制性比较低,因此可以用于保护数字作品的版权和知识产权。

        27、在使用HTTPS协议时,需要通过CA机构颁发的数字证书来验证网站的真实性和可信度,保证数据传输的安全性。

        28、数字签名和证书的颁发需要具有双方身份的认证,否则可能会引起诈骗和欺诈行为。

        29、了解数字证书、数字签名和加密技术的原理和应用,是当今互联网世界不可或缺的技能,能够提高个人和企业的安全防护能力。

http://www.lryc.cn/news/598394.html

相关文章:

  • 力扣844. 比较含退格的字符串
  • 借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
  • 【bug解决】 esp32 在WSL-ubuntu20.04环境下找不到设备
  • MIT线性代数01_方程组的几何解释
  • 造成服务器内存不足的原因有什么
  • 飞腾D2000/E2000/D3000如何从头制作UBOOT引导系统镜像
  • Pycharm、Python安装及配置小白教程
  • 【docker | 部署 】Jetson Orin与AMD平台容器化部署概述
  • 用LangChain重构客服系统:腾讯云向量数据库+GPT-4o实战
  • 使用爬虫获取游戏的iframe地址
  • DRF - 博客列表API
  • Django Models详解:数据库模型的核心
  • Unity3D + VR头显 × RTSP|RTMP播放器:构建沉浸式远程诊疗系统的技术实践
  • Ascendc msOpST测试报错问题
  • 【Unity开发】数据存储——XML
  • MySQL的命令行客户端
  • Code Composer Studio:CCS 设置代码折叠
  • MySQL零基础教程增删改查实战
  • [语言模型训练]基于 PyTorch 的双向 LSTM 文本分类器实现:基于旅店的评论分类语言模型
  • 与deepseek的问答:dot net与Borland VCL的关系
  • OSPF多区域介绍
  • 【Spring Cloud Gateway 实战系列】高级篇:服务网格集成、安全增强与全链路压测
  • 开源链动2+1模式AI智能名片S2B2C商城小程序的场景体验分析
  • 从零用java实现 小红书 springboot vue uniapp(15) 集成minio存储 支持本地和minio切换
  • 开源中国:以国产开源生态筑基,赋能智能研发全栈升级
  • 谈谈ArrayList与Vector的理解?
  • DiffServ服务模型与DS码点详解
  • 数据库第三章练习题(大雪圣期末复习参考)
  • [硬件电路-81]:学习和分析一个电子元器件的思维框架
  • 2.7 PNIO-AL