20221413杜佳妍《密码系统设计》第一周

第一周预习报告

学习内容

AI 对学习内容的总结(1分)

要求

  • 让AI阅读学习内容并进行总结

总结

第一章概念复习

1. 基本概念

  • 密码学:一门研究信息系统安全保密的科学,包括密码编码学和密码分析学。
  • 密码编码学:研究如何安全地加密信息,防止未授权访问。
  • 密码分析学:研究如何在未知密钥的情况下从密文推演出明文或密钥。

2. 密码学要解决的5大问题

  • 机密性:确保信息不被非授权用户获取。
  • 可用性:保障信息资源随时可提供服务。
  • 完整性:确保信息在传输过程中未被篡改。
  • 认证性:验证消息来源和消息本身的真实性。
  • 不可否认性:确保用户无法否认其行为。

3. 密码学中的五元组

  • 明文:原始信息。
  • 密文:加密后的信息。
  • 密钥:加密和解密过程中使用的参数。
  • 加密算法:将明文转换为密文的函数。
  • 解密算法:将密文恢复为明文的函数。

4. 加解密算法的分类

  • 对称算法
  • 优点:运算速度快,密钥较短,密文长度与明文长度相同或相近。
  • 缺点:密钥分发需要安全通道,密钥量大,难以管理,难以解决不可否认问题。
  • 非对称算法
  • 优点:密钥分发容易,密钥管理简单,可实现数字签名。
  • 缺点:运算速度慢,密钥位数要求多,密文长度通常大于明文。

第二章C/C++密码库OpenSSL

1. OpenSSL概述

  • OpenSSL的重要性:广泛用于C/C++开发中,支持多种加密算法,利用面向对象设计方法,是提高面向对象设计能力的重要工具。
  • OpenSSL的历史:由Netscape公司提出SSL协议,Eric A.Young和Tim J. Hudson开发,后由OpenSSL项目组接管,支持SSL和TLS协议。
  • OpenSSL版本:从0.9.1版发展到1.1.1版,采用C语言开发,具有跨平台性,支持Linux、Windows、BSD、Mac等。

2. OpenSSL源代码模块结构

  • 模块划分:主要分为密码算法库、SSL协议库以及应用程序。
  • Crypto目录:包含所有密码算法库的源代码,是实现密码算法、密钥管理和证书管理的核心。

3. OpenSSL加密库调用方式

  • 调用方式:直接调用、通过OpenSSL加密库接口调用、通过Engine平台和OpenSSL对象调用。
  • Engine技术:允许用户自定义加解密函数,降低应用开发难度。

4. OpenSSL支持的对称加密算法

  • 算法种类:AES、DES、Blowfish、CAST、IDEA、RC2、RC4、RC5。
  • 模式支持:ECB、CBC、CFB、OFB。
  • 封装技术:使用EVP接口封装所有对称加密算法,提供统一API。

5. OpenSSL支持的非对称加密算法

  • 算法种类:DH、RSA、DSA、ECC。
  • 用途:密钥交换、数字签名、数据加解密。
  • 封装技术:使用EVP技术封装,提供统一API。

6. OpenSSL支持的信息摘要算法

  • 算法种类:MD2、MD5、MDC2、SHA1、RIPEMD。
  • 封装技术:使用EVPDigest接口封装,提供统一API。

7. OpenSSL密钥和证书管理

  • 标准实现:ASN.1证书和密钥相关标准。
  • 编解码功能:DER、PEM、BASE64。
  • 密钥保护:提供私钥加密保护功能。
  • 证书管理:实现X.509标准编解码、PKCS#12和PKCS#7格式编解码。

8. 面向对象与OpenSSL

  • 面向对象方法:在C语言中实现面向对象设计,提高系统的灵活性和可重用性。
  • BIO接口:封装文件及网络操作,提供统一的I/O操作接口。
  • EVP接口:封装所有加密算法,提供统一的加密和解密功能。

学习总结

通过学习OpenSSL,开发者可以:

  • 掌握如何在C/C++程序中使用OpenSSL进行加密解密。
  • 理解OpenSSL的源代码结构和模块划分。
  • 学习如何使用OpenSSL提供的对称和非对称加密算法。
  • 掌握证书和密钥的管理,以及如何使用EVP和BIO接口。
  • 提高面向对象设计能力,理解如何在C语言中实现面向对象的思想。

对 AI 总结的反思与补充(2分)

要求

  • AI总结的问题
  • 自己的补充

反思与补充

1. 反思

在利用AI助手进行总结学习的过程中,他能做到很好地将重点分类整理,但同时我意识到AI助手对概念的理解和总结是较为笼统的,并且实际应用中会面临更多的实际操作问题,这是在书本当中无法提供的。

2. 补充

第一章概念补充

  • 机密性解决方案:使用密码算法对需要保密的信息进行加密
  • 完整性解决方案:利用密码函数生成信息“指纹”​,实现完整性检验
  • 认证性解决方案:利用密钥和认证函数相结合来确定信息的来源
  • 不可否认性解决方案:对信息进行数字签名

第二章OpenSSL学习补充

  • 错误处理:在使用OpenSSL时,正确的错误处理机制是确保系统稳定性的关键,需要熟悉OpenSSL的错误代码和处理方法,以便于在出现问题时能够快速定位和解决。
  • 配置管理:OpenSSL的配置管理对于确保系统的安全性和性能至关重要,需要了解如何配置OpenSSL的参数,以满足特定的安全需求和性能要求。

学习思维导图(2分)

要求

思维导图




基于 AI 的学习(2分)

要求

  • 至少找到自己理解不是太好 2 个概念,让 AI 对自己进行苏格拉底提问

  • 参考下面提示语或者使用 AI Agent

提示词:“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”

  1. 核心是要求AI工具:“请你以苏格拉底的方式对我进行提问”

  2. 然后AI工具就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”

  3. 如果你觉得差不多了,可以先问问AI工具:“针对我XXX知识点,我理解了吗?”

  4. AI工具会给出它的判断,如果你也觉得自己想清楚了,可以最后问AI工具:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。

学习内容

1. OpenSSL





2.OpenSSL加密库调用

在此过程中我发现,在向AI助手询问关于OpenSSL加密库调用相关知识点时,AI助手对我提出的问题与询问OpenSSL相关知识点时一致

学习实践过程遇到的问题与解决方式(AI 驱动,优先使用AI工具解决问题)(2分)

  • 问题 1:在阅读教材过程中,有些专业性较强的内容较为难懂

  • 解决过程:向AI助手进行提问

  • 问题2:仅仅依靠阅读教材上的书面文字,无法对所学内容有较为清晰的认识

  • 解决过程:通过向AI助手求助,可得到代码示例

作业提交要求(1分)

  1. 提交Markdown 文件,文档命名“学号姓名《密码系统设计》.md”

  2. 提交Markdown 文件转为 PDF,文档命名“学号姓名《密码系统设计》第 X 周.pdf”

  3. 提交代码托管链接(可选):学号姓名 gitee(github) 链接

  4. 内容质量高有加分

参考资料

posted @ 2024-09-07 17:26  妍妍妍妍  阅读(16)  评论(0编辑  收藏  举报