20231408徐钰涵《密码系统设计》
20231408徐钰涵《密码系统设计》
第六周预习报告
学习内容
- 《Windows C/C++加密解密实战》第 9 章
- 课程 mindmap
AI对学习内容的总结
总结
- CSP(加密服务提供者)
- 定义与组成
- CSP 是 Windows 平台中真正执行密码运算的独立模块。
- 由动态链接库(DLL) 和签名文件组成,确保其身份合法。
- 可以是软件实现,也可以是硬件实现(如 USB Key)。
- 作用
- 提供密钥生成、交换、加密、解密、哈希、数字签名等功能。
- 通过 CryptoSPI 与操作系统交互,对上层应用透明。
- CryptoAPI 简介
- 定位
- 微软提供的加密编程接口,用于数据加解密、证书管理、哈希、签名等。
- 类比于 GDI,CSP 相当于设备驱动,CryptoAPI 相当于图形接口。
- 应用程序 → CryptoAPI
CryptoAPI → CSP(真实实现)
- 应用程序 → CryptoAPI
- 体系结构
- CryptoAPI 分为五大模块:
- 基本加密函数:CSP 连接、密钥管理
- 简单消息函数:封装常用消息操作
- 底层消息函数:更灵活的消息处理
- 证书编解码函数
- 证书库管理函数
- CryptoAPI 分为五大模块:
- CSP 与 CryptoAPI 的关系
- CryptoAPI 本身不做密码计算,只做接口与调度
- CSP 才是真正执行算法的“引擎”
- 一个系统中可以存在多个 CSP(如 RSA CSP、SM2 CSP、硬件 CSP)
- 密钥与上下文管理
- 使用
CryptAcquireContext获取 CSP 上下文 - 使用
CryptGenKey、CryptImportKey、CryptExportKey管理密钥 - 应用程序不直接操作算法细节,而是通过句柄操作密钥对象
对AI总结的反思与补充
反思与补充
问题
如果 CryptoAPI 本身不做加密运算,那它存在的意义是什么?直接让程序调用 CSP 的 DLL 不行吗?
补充
- CryptoAPI 的核心价值在于:抽象与隔离。
- 如果应用程序直接调用某个 CSP 的 DLL:
- 就会与某一厂商、某一算法强绑定
- 更换 CSP(比如从软件RSA换成硬件SM2)需要重写程序
- 而通过 CryptoAPI:
- 程序只依赖接口
- Windows 负责选择和调度 CSP
- 这实现了密码算法与实现的解耦
- 这和操作系统用驱动封装硬件的思想完全一致。
思维导图
mindmap
root((第9章 CSP 与 CryptoAPI))
CryptoAPI
统一密码接口
提供函数
加密解密
Hash
数字签名
证书管理
CSP
真正执行密码运算
实现方式
软件CSP
硬件CSP
组成
DLL
签名文件
体系结构
应用程序
CryptoAPI
CSP
密码硬件或软件
密钥管理
CryptAcquireContext
CryptGenKey
CryptImportKey
CryptExportKey
安全性
CSP可信
私钥不出设备
操作系统隔离

基于AI的学习
学习内容
- 为什么应用程序不能直接调用算法实现?
我:我在学习CryptoAPI体系,请你以苏格拉底式的方法向我提问,一次一个问题。
AI:如果一个程序直接调用RSA算法的DLL,那么它依赖的是接口还是实现?
我:实现。
AI:如果以后你要换成SM2算法,这个程序还能用吗?
我:不能。
AI:那如果它调用的是CryptoAPI呢?
我:可以不改。
AI:很好。这说明CryptoAPI的核心作用是抽象算法,而不是计算算法。
- 为什么私钥要放在CSP里,而不是给应用程序?
我:我在学习密钥管理,请你苏格拉底式提问。
AI:如果应用程序能直接读取私钥,那恶意代码能不能也读取?
我:能。
AI:如果私钥只存在于CSP内部,应用程序只拿到一个句柄,会怎么样?
我:读不到私钥。
AI:很好。这正是硬件CSP(如UKey)能提供高安全性的根本原因。
- 为什么CryptoAPI要通过“上下文”来访问CSP?
我:我在学习CryptAcquireContext,请你苏格拉底式提问。
AI:如果一个系统有多个CSP,应用怎么知道用哪个?
我:通过上下文。
AI:这个上下文实际上代表什么?
我:一个选定的CSP实例。
AI:很好,这相当于在多种密码引擎中,给程序分配了一个“工作环境”。
学习实践过程遇到的问题与解决方式
- 为什么说 CryptoAPI 是“密码操作系统”?
- 问题描述:
CryptoAPI 看起来只是一些函数,为什么说它像操作系统? - 解决:
- CryptoAPI 提供了:
- 资源管理(密钥、证书、上下文)
- 访问控制(谁能用哪个CSP)
- 抽象层(算法与实现分离)
- 而 CSP 就像驱动程序:
- 实现具体算法
- 控制硬件或软件加密模块
- CryptoAPI 提供了:
- 结论:
- CryptoAPI 在密码领域扮演的角色,与 Windows 在硬件领域的角色是完全同构的。
参考资料
- 《Windows C/C++加密解密实战》第9章
- 课程 MindMap
- AI 工具:ChatGPT
浙公网安备 33010602011771号