第二周预习作业(AI)

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

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

我使用 Kimi 对《Windows C/C++加密解密实战》第3章和第5章进行了总结,内容如下:

第三章主要介绍了对称密码算法的基本概念、分类(流加密与分组加密)、常见算法(如DES、3DES、SM4)及其实现方式。重点包括:

  • 流加密算法(如RC4)的原理与实现;
  • 分组加密算法的工作模式(ECB、CBC、CFB、OFB等);
  • DES和3DES的密钥生成与加解密过程;
  • 国密算法SM4的结构、密钥扩展与加解密流程;
  • 使用OpenSSL进行对称加解密的函数调用方法。

第五章介绍了密码学中常见的编码格式,重点包括:

  • Base64编码的原理与实现;
  • PEM文件的结构与生成;
  • ASN.1语法与编码规则(BER、DER);
  • ASN.1在证书、密钥等安全数据传输中的应用。

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

Kimi 的总结较为全面地覆盖了第三章和第五章的核心内容,但在以下方面可进一步补充:

  • SM4算法的细节:SM4是我国自主设计的分组密码算法,其非线性变换S盒和密钥扩展算法具有独特的设计,应在总结中强调其国密背景和安全性特点。
  • ASN.1的实际应用:ASN.1不仅是语法描述,更是证书(如X.509)、密钥格式(如PKCS#8)的基础,应补充其在实际安全协议(如TLS/SSL)中的作用。
  • 编码与加密的关系:Base64和PEM常用于表示加密后的二进制数据(如密钥、证书),便于文本传输,这一点在总结中未明确点出。

三、学习思维导图(2分)

使用 Mermaid 语法绘制的思维导图如下:

mindmap root((对称密码与编码格式)) 第三章: 对称密码算法 基本概念 加密与解密使用相同密钥 分类: 流加密 vs 分组加密 流加密算法 RC4算法原理与实现 分组加密算法 工作模式: ECB, CBC, CFB, OFB, CTR DES与3DES算法 SM4国密算法 密钥扩展 轮函数结构 加解密流程 OpenSSL对称加解密函数 EVP_EncryptInit_ex, EVP_EncryptUpdate, EVP_EncryptFinal_ex 第五章: 常见编码格式 Base64编码 原理: 6位一组转换为可打印字符 OpenSSL命令行与编程实现 PEM文件 结构: 头尾标记 + Base64内容 生成与解析 ASN.1与编码规则 语法: 基本类型与结构类型 编码规则: BER, DER 应用: 证书、密钥格式

四、基于AI的学习(2分)

概念1:SM4算法的轮函数结构

AI提问(Kimi):请解释SM4算法的轮函数中非线性变换τ和线性变换L分别起什么作用?它们是如何组合成T函数的?

我的回答

  • 非线性变换τ由4个S盒并行组成,每个S盒处理8位输入,输出4位,提供算法的非线性特性,增强抗攻击能力。
  • 线性变换L对τ的输出进行扩散,通过循环左移和异或操作,使得每一位的变化能影响更多输出位。
  • T函数由τ和L复合而成:T(·) = L(τ(·)),确保每轮变换既具备非线性又具备良好的扩散性。

AI评价:你的理解正确。T函数的设计确实结合了非线性和线性变换,是SM4安全性的核心。


概念2:DER编码的唯一性

AI提问:为什么在安全应用中更推荐使用DER而不是BER?请举例说明DER如何保证编码的唯一性。

我的回答

  • BER有多种编码方式(如不定长格式),同一数据结构可能有多种编码结果,不利于数字签名等需要唯一性的场景。
  • DER是BER的子集,强制使用定长格式、最短长度编码等规则,确保同一数据结构的编码结果唯一。
  • 例如,一个INTEGER值为128,在BER中可能编码为02 02 00 8002 02 00 80 00(不定长),而在DER中必须为02 02 00 80

AI评价:正确。DER的严格规则确保了编码结果的唯一性,适用于数字证书和签名等安全场景。

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

问题1:编译OpenSSL时遇到“undefined reference to EVP_EncryptInit_ex”错误

解决过程

  • 原因:链接时未指定-lcrypto参数。
  • 解决:在编译命令中显式添加-lcrypto,如:
    gcc -o test test.c -lcrypto
    

问题2:使用GmSSL时无法找到libgmssl.so库

解决过程

  • 原因:环境变量LD_LIBRARY_PATH未正确设置。
  • 解决:执行以下命令:
    export LD_LIBRARY_PATH=/path/to/gmssl/lib:$LD_LIBRARY_PATH
    
    或将该行添加到~/.bashrc中。

参考资料


posted on 2025-09-21 22:26  20231406王浩霖  阅读(12)  评论(0)    收藏  举报

导航