2019-2020-1 20175212_20175227《信息安全系统设计基础》 实验五 《通讯协议设计》

2019-2020-1 20175212_20175227《信息安全系统设计基础》

实验五 《通讯协议设计》

实验报告封面

  • 课程:信息安全系统设计基础 班级:1752班 姓名:童皓桢 张雪莹 学号:20175212 20175227
  • 指导教师:娄嘉鹏 实验日期:2019年12月2日
  • 实验时间:--- 实验序号:五
  • 实验题目:通讯协议设计

实验步骤

  • 任务一
    • 要求:
    • 知识点:
      • OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台。
      • OpenSSL整个软件包大概可以分成三个主要的功能部分:
        • 密码算法库
        • SSL协议库
        • 应用程序
      • 密码算法库是一个强大完整的密码算法库,它是OpenSSL的基础部分,也是很值得一般密码安全技术人员研究的部分,它实现了目前大部分主流的密码算法和标准。
      • 主要包括对称算法、非对称算法、散列算法、数字签名和认证、X509数字证书标准、PKCS12、PKCS7等标准。其他两个功能部分SSL协议和应用程序都是基于这个库开发的。
      • 实验步骤:

  • 打开终端解压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 $?,运行结果如下图:

  • 课后作业:
    • 基于Socket实现TCP通信,一人实现服务器,一人实现客户端
    • 运行示例

  • 研究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
      • 运行结果:

  • 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服务器”通过混合密码系统进行防护
    • 混合密码系统

    • 实现:

      • server.c
      • client.c
      • 生成私钥:openssl genrsa -out privkey.pem 1024
      • 生成证书:openssl req -new -x509 -key privkey.pem -out CAcert.pem -days 1095
      • 编译:
        • gcc server.c -o server -lssl -lcrypto
        • gcc client.c -o client -lssl -lcrypto
      • 运行:
        • ./server 5227 1 CAcert.pem privkey.pem
        • ./client 127.0.0.1 5227
      • 运行结果:

遇到的问题及解决方法

  • 问题1:在进行任务二生成私钥时出现error while loading shared libraries错误

  • 问题1解决方法:造成该问题是因为找不到库的位置构成的,输入以下命令即可:sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.3sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.3

  • 问题2:问题1解决后仍然提示问题1的错误

  • 问题2解决方法:先输入sudo rm -rf 文件位置文件名强力删除该文件后尝试多次重新链接库位置,发现命令中两个文件名要一致,都是libssl.so.3libcrypto.so.3即可

posted @ 2019-12-02 15:11  20175227  阅读(193)  评论(0编辑  收藏  举报