第一周预习作业(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的总结抓住了章节的核心内容,但存在一些不足:
- 细节缺失:AI没有提及第一章中密码机制的具体分类(如对称加密、非对称加密、哈希函数、数字签名等)及其典型代表算法(如AES, RSA, SHA等)。
- 实践深度不足:对于第二章,AI未能强调OpenSSL 3.x相比1.x的重要架构变化(如Provider机制),这在后续开发和算法调用中至关重要。
- 背景关联弱化:AI总结忽略了教材中强调的密码与法律法规、国家标准(如GM/T系列国密算法标准)的关联性,以及"密评"(密码应用安全性评估)的实际需求。
补充:
- 第一章:密码学五大功能(机密性、完整性、认证性、不可否认性、可用性)需结合实例理解。例如,SSL/TLS协议通过加密提供机密性,通过数字证书提供认证性,通过摘要算法提供完整性验证。
- 第二章:在Linux上安装加密库时,需注意系统原有版本的备份(如脚本中的
mv命令)和环境变量的正确配置(如LD_LIBRARY_PATH),否则可能导致版本冲突或链接错误。GmSSL的国密算法(如SM2, SM3, SM4)在金融、政务等领域有广泛应用,是重要的国家密码标准。
三、学习思维导图(2分)
四、基于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命令仍指向旧版本
- 解决过程:
- 现象:按照脚本安装后,终端执行
openssl version显示版本号仍是系统自带的旧版(如3.0.2)。 - 诊断:使用
which openssl检查,发现可执行文件路径是/usr/bin/openssl。使用ldd /usr/bin/openssl检查其链接的库文件,发现它们指向的是系统原有库路径(如/usr/lib/x86_64-linux-gnu)。 - AI求助:询问Kimi"Ubuntu安装新版本OpenSSL后如何替换系统默认版本",AI指出需要更新软链接(symbolic link),并提示注意库文件的链接。
- 解决:根据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 - 验证:再次运行
openssl version,显示为新安装的版本(3.3.2)。
- 现象:按照脚本安装后,终端执行
问题2:GmSSL安装后,命令无法在新终端中识别
- 解决过程:
- 现象:在当前终端安装GmSSL后,
gmssl命令可用。但打开一个新的终端窗口后,提示"gmssl: command not found"。 - 诊断:这是因为安装脚本将GmSSL的路径(
$HOME/GmSSL-3.1.1-Linux/bin)添加到了用户家的~/.bashrc文件中,但该文件只有在用户登录或手动执行source时才会被读取。 - AI求助:询问秘塔搜索"Linux安装软件新终端找不到命令",AI解释环境变量
PATH的作用域问题,并指出需要source ~/.bashrc或重新登录。 - 解决:在新终端中直接执行
source ~/.bashrc,或者关闭终端重新登录。 - 验证:在新终端中执行
gmssl version,可以正确显示版本信息。
- 现象:在当前终端安装GmSSL后,
六、作业提交要求(1分)
- Markdown文件:提交文件命名为"20231406王浩霖《密码系统设计》第一周.md"。
- PDF文件:将Markdown文件转换为PDF,命名为"20231406王浩霖《密码系统设计》第一周.pdf"。
- 代码托管:本次作业不提交代码托管链接。
参考资料
posted on 2025-09-14 22:03 20231406王浩霖 阅读(20) 评论(0) 收藏 举报
浙公网安备 33010602011771号