第一周预习作业(AI)

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

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

根据AI工具(Kimi)对《Windows C/C++加密解密实战》第1-2章的阅读,总结如下:

第一章主要回顾了密码学的基本概念,包括密码的定义(为保护信息不被未授权访问而进行的转换)、密码的五大功能(confidentiality, integrity, authentication, non-repudiation, access control)以及密码系统的基本构成(算法、密钥、协议等)。第二章重点介绍了在Linux系统(Ubuntu/openEuler)上安装最新版OpenSSL(3.3.2)和GmSSL(3.1.1)的实践步骤,包括脚本配置、编译安装、环境变量设置和系统库链接更新等操作,为后续开发实战准备环境。

AI还特别指出,密码学的核心是五元组(明文、密文、密钥、加密算法、解密算法)构成的闭环系统,其发展史是从"经验规则"向"数学证明安全"演进的过程。OpenSSL等库则是将抽象数学公式变为可执行流程的关键工具。

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

反思:
AI的总结抓住了章节的核心内容,但存在一些不足:

  1. 细节缺失:AI没有提及第一章中密码机制的具体分类(如对称加密、非对称加密、哈希函数、数字签名等)及其典型代表算法(如AES, RSA, SHA等)。
  2. 实践深度不足:对于第二章,AI未能强调OpenSSL 3.x相比1.x的重要架构变化(如Provider机制),这在后续开发和算法调用中至关重要。
  3. 背景关联弱化:AI总结忽略了教材中强调的密码与法律法规、国家标准(如GM/T系列国密算法标准)的关联性,以及"密评"(密码应用安全性评估)的实际需求。

补充:

  • 第一章:密码学五大功能(机密性、完整性、认证性、不可否认性、可用性)需结合实例理解。例如,SSL/TLS协议通过加密提供机密性,通过数字证书提供认证性,通过摘要算法提供完整性验证。
  • 第二章:在Linux上安装加密库时,需注意系统原有版本的备份(如脚本中的mv命令)和环境变量的正确配置(如LD_LIBRARY_PATH),否则可能导致版本冲突或链接错误。GmSSL的国密算法(如SM2, SM3, SM4)在金融、政务等领域有广泛应用,是重要的国家密码标准。

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

mindmap root((密码系统设计第一周)) 教材学习 第一章:密码学概念复习 密码定义与目标 机密性 完整性 认证性 不可否认性 可用性 密码学简史 古典密码学(1949前) 近代密码学(1949-1975) 现代密码学(1976至今) 密码系统五元组 明文 密文 密钥 加密算法 解密算法 密码算法分类 对称加密(AES, DES) 非对称加密(RSA, ECC) 哈希函数(MD5, SHA, SM3) 第二章:环境搭建与工具 OpenSSL安装与配置 下载与编译 系统库链接更新 环境变量配置 基本命令使用 GmSSL安装与配置 国密算法支持 环境变量设置 开发库与头文件 libssl-dev 编译链接选项(-lssl, -lcrypto) 实践操作 Ubuntu 22.04环境 OpenSSL加密解密示例 GmSSL国密算法体验 拓展知识 密码法律法规与标准 密码应用安全性评估(密评)

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

我选择了两个理解不够深入的概念,通过Kimi进行苏格拉底式提问学习。

概念1:对称加密与非对称加密在混合加密中的应用

  • AI提问:"你认为为什么在实际应用中(如HTTPS),通常使用非对称加密来交换对称加密的密钥,而不是直接用非对称加密加密所有数据?"
  • 我的回答:因为非对称加密计算量大、速度慢,不适合加密大量数据。对称加密速度快,但密钥分发困难。因此,结合两者优势,用非对称加密安全地交换对称密钥,再用对称加密加密实际数据传输。
  • AI追问:"如果非对称加密本身是安全的,为什么对称密钥的分发会成为问题?能否设想一种场景,其中对称密钥的直接分发可能导致安全风险?"
  • 我的思考:对称密钥如果直接在网络中明文传输,可能被窃听。例如,在未加密的通道上直接发送AES密钥,攻击者截获后就能解密所有通信。因此需要非对称加密来保护对称密钥的传输。
  • AI评价总结:你的理解是正确的。混合加密体系有效地解决了单纯对称或非对称加密的局限性,在安全性和效率之间取得了平衡。

概念2:OpenSSL的Provider机制

  • AI提问:"OpenSSL 3.0引入Provider机制的主要目的是什么?它解决了之前版本的哪些问题?"
  • 我的回答(部分求助AI):Provider机制是为了实现算法的模块化加载和管理,使得不同的算法实现可以更灵活地被选择和替换。
  • AI补充解释:在3.0之前,算法通常静态编译进库中,难以动态添加或移除。Provider机制允许将算法作为可加载模块(如FIPS Provider),提升了灵活性、可维护性,并有助于满足特定的合规性要求(如使用经过认证的FIPS模块)。
  • AI最后确认:"针对Provider机制,你理解了吗?"
  • 我的总结:理解了。Provider机制是OpenSSL迈向模块化、现代化的重要一步,允许开发者更精细地控制所使用的密码学组件。

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

问题1:编译安装OpenSSL后,系统默认的openssl命令仍指向旧版本

  • 解决过程
    1. 现象:按照脚本安装后,终端执行openssl version显示版本号仍是系统自带的旧版(如3.0.2)。
    2. 诊断:使用which openssl检查,发现可执行文件路径是/usr/bin/openssl。使用ldd /usr/bin/openssl检查其链接的库文件,发现它们指向的是系统原有库路径(如/usr/lib/x86_64-linux-gnu)。
    3. AI求助:询问Kimi"Ubuntu安装新版本OpenSSL后如何替换系统默认版本",AI指出需要更新软链接(symbolic link),并提示注意库文件的链接。
    4. 解决:根据AI建议和安装脚本中的步骤,执行了以下命令:
      sudo mv /usr/bin/openssl /usr/bin/openssl.bak  # 备份旧版本
      sudo ln -sf ${ROCHOME}/rocopenssl/bin/openssl /usr/bin/openssl  # 创建新版本软链接
      # 同样处理libcrypto和libssl库文件
      sudo mv /usr/lib/x86_64-linux-gnu/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so.3.bak
      sudo ln -sf ${ROCHOME}/rocopenssl/lib64/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
      
    5. 验证:再次运行openssl version,显示为新安装的版本(3.3.2)。

问题2:GmSSL安装后,命令无法在新终端中识别

  • 解决过程
    1. 现象:在当前终端安装GmSSL后,gmssl命令可用。但打开一个新的终端窗口后,提示"gmssl: command not found"。
    2. 诊断:这是因为安装脚本将GmSSL的路径($HOME/GmSSL-3.1.1-Linux/bin)添加到了用户家的~/.bashrc文件中,但该文件只有在用户登录或手动执行source时才会被读取。
    3. AI求助:询问秘塔搜索"Linux安装软件新终端找不到命令",AI解释环境变量PATH的作用域问题,并指出需要source ~/.bashrc或重新登录。
    4. 解决:在新终端中直接执行source ~/.bashrc,或者关闭终端重新登录。
    5. 验证:在新终端中执行gmssl version,可以正确显示版本信息。

六、作业提交要求(1分)

  1. Markdown文件:提交文件命名为"20231406王浩霖《密码系统设计》第一周.md"。
  2. PDF文件:将Markdown文件转换为PDF,命名为"20231406王浩霖《密码系统设计》第一周.pdf"。
  3. 代码托管:本次作业不提交代码托管链接。

参考资料

  1. AI工具
  2. 图书
    • 《Windows C/C++加密解密实战》(微信读书/云班课电子教材)
  3. 网站

posted on 2025-09-14 22:03  20231406王浩霖  阅读(20)  评论(0)    收藏  举报

导航