zoukankan      html  css  js  c++  java
  • 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即可

  • 相关阅读:
    用dt命令搜索查看符号
    烦人的异常
    _NT_SYMBOL_PROXY
    Windbg常用命令系列---.f+, .f- (切换Local Context)
    Windbg常用命令系列---.dumpcab (创建dump CAB文件)
    Windbg常用命令系列---.dump(创建dump文件)
    Windbg常用命令系列---!mapped_file
    Windbg常用命令系列---!cppexr
    再谈FPO
    Windbg常用命令系列---!stl
  • 原文地址:https://www.cnblogs.com/zxy20175227/p/11970694.html
Copyright © 2011-2022 走看看