第一周预习报告
学习内容
-
《Windows C/C++加密解密实战》第 1,2 章
-
第一章概念复习
-
第二章主要在 Linux(Ubuntu,openEuler)上把软件更新到最新版(3.0版本以上)
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分)
要求
- Mermaid 代码与截图(参考Mermaid MindMap语法)或者提交思维导图链接(如果使用线上编辑器,推荐processon,xmind,...)
思维导图
基于 AI 的学习(2分)
要求
-
至少找到自己理解不是太好 2 个概念,让 AI 对自己进行苏格拉底提问
-
参考下面提示语或者使用 AI Agent
提示词:“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
-
核心是要求AI工具:“请你以苏格拉底的方式对我进行提问”
-
然后AI工具就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
-
如果你觉得差不多了,可以先问问AI工具:“针对我XXX知识点,我理解了吗?”
-
AI工具会给出它的判断,如果你也觉得自己想清楚了,可以最后问AI工具:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。
学习内容
1. OpenSSL
2.OpenSSL加密库调用
在此过程中我发现,在向AI助手询问关于OpenSSL加密库调用相关知识点时,AI助手对我提出的问题与询问OpenSSL相关知识点时一致
学习实践过程遇到的问题与解决方式(AI 驱动,优先使用AI工具解决问题)(2分)
-
问题 1:在阅读教材过程中,有些专业性较强的内容较为难懂
-
解决过程:向AI助手进行提问
-
问题2:仅仅依靠阅读教材上的书面文字,无法对所学内容有较为清晰的认识
-
解决过程:通过向AI助手求助,可得到代码示例
作业提交要求(1分)
-
提交Markdown 文件,文档命名“学号姓名《密码系统设计》.md”
-
提交Markdown 文件转为 PDF,文档命名“学号姓名《密码系统设计》第 X 周.pdf”
-
提交代码托管链接(可选):学号姓名 gitee(github) 链接
-
内容质量高有加分
参考资料
-
AI工具(你使用的AI工具及其链接)
-
Kimi
-
图书
-
《Windows C/C++加密解密实战》
-
网站
-
openssl