2019-2020-1 20175212_20175227《信息安全系统设计基础》 实验五 《通讯协议设计》
2019-2020-1 20175212_20175227《信息安全系统设计基础》
实验五 《通讯协议设计》
实验报告封面
- 课程:信息安全系统设计基础 班级:1752班 姓名:童皓桢 张雪莹 学号:20175212 20175227
- 指导教师:娄嘉鹏 实验日期:2019年12月2日
- 实验时间:--- 实验序号:五
- 实验题目:通讯协议设计
实验步骤
- 任务一
- 要求:
- 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业
- 知识点:
- OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台。
- OpenSSL整个软件包大概可以分成三个主要的功能部分:
- 密码算法库
- SSL协议库
- 应用程序
- 密码算法库是一个强大完整的密码算法库,它是OpenSSL的基础部分,也是很值得一般密码安全技术人员研究的部分,它实现了目前大部分主流的密码算法和标准。
- 主要包括对称算法、非对称算法、散列算法、数字签名和认证、X509数字证书标准、PKCS12、PKCS7等标准。其他两个功能部分SSL协议和应用程序都是基于这个库开发的。
- 实验步骤:
- Linux下OpenSSL的下载及安装
- OpenSSL下载地址
- 要求:
- 打开终端解压OpenSSL源码:
unzip openssl-master.zip
- 进入源码目录
openssl-master
- 按照以下步骤进行安装:
./config
make clean;make
sudo make install
- Linux下OpenSSL的使用
- 编写测试代码test_openssl.c
- 编译test_openssl.c:
gcc -o test_openssl test_openssl.c -L/usr/local/ssl/lib -lcrypto -ldl -lpthread
- 执行
echo $?
,运行结果如下图:
- 研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5
- OpenSSL工具的简单使用
- 生成一个密钥:
openssl genrsa -out <生成文件名.key> 1024
- 提取公钥:
openssl <算法名> -in <输入文件名.key> -pubout -out <存公钥的文件名.key>
- 加密文件:
openssl rsautl -encrypt -in <指定加密的文件名> -inkey <指定密钥的文件名.key> -pubin -out <加密后的文件.en>
- 解密文件:
openssl rsautl -decrypt -in <指定解密的文件名.en> -inkey <指定私钥文件名.key> -out <解密后的文件名.de>
- 生成一个密钥:
- AES
- AES.c
- 编译:
gcc AES.c -o AES -lssl -lcrypto
- 运行:
./AES zxy20175227
- 运行结果:
- OpenSSL工具的简单使用
- RSA
- RSA.c
- 编译:
gcc RSA.c -o RSA -lssl -lcrypto
- 运行:
./RSA
- 运行结果:
- MD5
- MD5.c
- 编译:
gcc MD5.c -o MD5 -lssl -lcrypto
- 运行:
./MD5 20175227zxy
- 运行结果:
- 任务二
-
要求:
- 在Ubuntu中实现对实验二中的“wc服务器”通过混合密码系统进行防护
-
混合密码系统
-
实现:
-
遇到的问题及解决方法
-
问题1:在进行任务二生成私钥时出现
error while loading shared libraries
错误 -
问题1解决方法:造成该问题是因为找不到库的位置构成的,输入以下命令即可:
sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.3
和sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.3
-
问题2:问题1解决后仍然提示问题1的错误
-
问题2解决方法:先输入
sudo rm -rf 文件位置文件名
强力删除该文件后尝试多次重新链接库位置,发现命令中两个文件名要一致,都是libssl.so.3
或libcrypto.so.3
即可