当前位置: 首页 > news >正文

第三周预习作业(AI)

第三周预习作业(AI)

20231406王浩霖《密码系统设计》第三周预习报告

学习内容

《嗨翻C语言》第4章

  • 函数的使用与定义
  • 参数传递与返回值
  • 变量的作用域
  • 头文件与多文件编程

《Windows C/C++加密解密实战》第4章重点4.2, 4.3, 4.5

  • 4.2 对称加密算法原理
  • 4.3 分组密码工作模式
  • 4.5 密钥生成与管理

课程mindmap

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

AI总结:
本章节主要围绕C语言函数编程和加密算法基础展开。在C语言部分,重点学习了函数的定义、调用、参数传递机制以及多文件编程的组织方式。在加密解密部分,深入理解了对称加密的基本原理,包括分组密码的ECB、CBC等工作模式,以及密钥生成和管理的重要性。这些知识为后续实现加密算法打下了坚实基础。

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

反思与补充:
AI的总结比较全面,但我觉得需要补充几点:

  1. 在C语言函数部分,递归函数和函数指针也是重要概念
  2. 对称加密算法中,不同工作模式的安全性差异很大,ECB模式存在明显安全缺陷
  3. 密钥管理涉及密钥生命周期管理,包括生成、存储、分发、更新和销毁等环节
  4. 实际编程中还需要注意内存管理和错误处理

学习思维导图(2分)

mindmaproot((密码系统设计第三周))《嗨翻C语言》第4章函数定义与声明参数与返回值变量作用域局部变量全局变量静态变量头文件与多文件编程.h头文件.c源文件编译链接过程《加密解密实战》第4章4.2 对称加密算法DES算法原理AES算法介绍加密解密过程4.3 分组密码工作模式ECB模式CBC模式CFB模式OFB模式4.5 密钥生成与管理密钥生成方法密钥存储安全密钥分发机制密钥更新策略实践应用OpenSSL对称加密命令GmSSL国密算法编程实现简单加密函数

基于AI的学习(2分)

概念1:分组密码工作模式

AI提问: "你能解释一下为什么ECB工作模式在加密相同明文块时会产生相同的密文块,以及这会带来什么安全问题?"

我的回答: ECB模式对每个明文块独立加密,相同的明文块使用相同密钥加密必然产生相同密文块。这会导致模式泄露,攻击者可以通过分析密文模式推断明文信息。

AI追问: "那么CBC模式是如何解决这个问题的?它的工作原理是什么?"

我的回答: CBC模式通过引入初始向量(IV)和链式加密,每个明文块在加密前都与前一个密文块进行异或操作,这样即使相同明文块也会因为上下文不同而产生不同密文块。

概念2:函数参数传递

AI提问: "在C语言中,值传递和地址传递有什么区别?在加密算法实现中,哪种方式更适合传递密钥数据?"

我的回答: 值传递是复制参数值,地址传递是传递变量地址。在加密算法中,密钥数据应该使用地址传递,因为密钥通常较大,值传递会带来性能开销,而且我们可能需要修改原始密钥数据。

AI评价: 你对这两个概念的理解基本正确,能够准确指出ECB模式的安全缺陷和CBC模式的改进原理,也清楚函数参数传递方式的选择依据。

学习实践过程遇到的问题与解决方式(2分)

问题1:编译多文件程序时出现链接错误

问题描述: 在将加密函数分离到头文件和源文件后,编译时提示"undefined reference to encrypt_function"

解决过程:

  1. 使用AI工具查询链接错误原因
  2. AI指出需要确保所有源文件都参与编译链接
  3. 修改编译命令:gcc main.c encrypt.c -o program
  4. 或者使用Makefile管理多文件编译

问题2:理解CBC模式的初始化向量(IV)作用

问题描述: 不理解为什么CBC模式需要IV,以及IV是否需要保密

解决过程:

  1. 咨询AI工具关于IV的作用和安全性要求
  2. AI解释IV用于确保相同明文产生不同密文,增加随机性
  3. IV不需要保密但应该不可预测,通常随密文一起传输
  4. 通过实际代码示例理解了IV的使用方法

作业提交要求(1分)

  • 提交Markdown文件:学号姓名《密码系统设计》第三周.md
  • 提交PDF文件:学号姓名《密码系统设计》第三周.pdf
  • 使用VSCode的markdownpdf插件完成格式转换

参考资料

AI工具:

  • Kimi: https://kimi.moonshot.cn
  • 元宝: https://yuanbao.baidu.com

图书:

  • 《嗨翻C语言》
  • 《Windows C/C++加密解密实战》

网站:

  • OpenSSL官网: https://www.openssl.org
  • GmSSL官网: https://gmssl.org
  • C语言参考: https://en.cppreference.com