20231326《密码系统设计》第七周预习报告
20231326《密码系统设计》第七周预习报告
学习内容
《Windows C/C++加密解密实战》第 10 章
本章重点介绍了网络身份认证的重要性和面临的威胁,以及主要的身份认证技术和公钥基础设施(PKI)的理论基础。
1. 身份认证概述与重要性
- 地位: 身份认证是网络安全的 “第一道门槛” 和 “第一道防线”,是其他安全服务(如访问控制、授权、审计)的基础。
- 网络安全技术基石: 所有网络安全技术(机密性、完整性、身份认证等)都以密码学技术为基础。
2. 网络身份认证面临的威胁
身份认证系统是黑客攻击的主要目标。主要威胁包括:
- 中间人攻击 (Man-in-the-Middle): 截获、替换或修改信息,冒充合法用户。
- 重放攻击 (Replay Attack): 截获认证信息并在之后重新发送,用于身份伪造或破坏同步性。
- 密码分析攻击与口令猜测攻击: 针对用户口令进行破译或猜测。
- 身份信息的暴露: 认证过程中不必要的身份信息暴露可能造成隐私泄露。
- 对认证服务器的攻击: 认证服务器存储大量敏感信息,一旦被攻破后果严重。
3. 网络身份认证体系和技术
用户身份认证通过以下三种基本方式或其组合实现:
| 认证方式 | 描述 | 示例 | 存在的问题 |
|---|---|---|---|
| 所知道的 (What You Know) | 基于秘密信息 | 用户名/密码 | 极不安全,易受口令猜测、重放攻击、字典攻击。 |
| 所持有的 (What You Have) | 基于秘密信息或物理介质 | 智能卡、USB Key | 智能卡每次读取数据是静态的,易被截获;USB Key是强双因子认证,安全性高。 |
| 所具有的 (What You Are) | 基于生物特征 | 指纹、声音、视网膜 | 安全性高,但技术不完全成熟,造价高,有局限性。 |
- 动态口令 (OTP): 采用“一次一密”,有效抵抗重放攻击,但同步机制和使用便利性较差。
- USB Key: 结合软硬件,是基于强双因子认证的主流技术,可以采用“冲击响应模式”或“PKI体系模式”。
4. PKI与Kerberos的比较
| 特性 | PKI (公钥基础设施) | Kerberos |
|---|---|---|
| 基础密码体制 | 非对称密码体制(公钥体制) | 对称密码体制(共享密钥) |
| 认证凭证 | 数字证书 | 密钥分发中心(KDC)签发的票据 |
| 权威机构参与 | CA不需要在线参与认证,可以离线操作 | KDC需要在线参与会话密钥协商 |
| 数字签名/否认 | 可以提供严格的数字签名服务和不可否认性 | 不能直接提供数字签名服务 |
| 发展趋势 | 正逐渐取代共享密钥认证成为网络身份认证的主流。 |
《Windows C/C++加密解密实战》第 11 章
本章阐述了数字证书的引入背景,PKI的核心组成,并实战介绍了如何使用OpenSSL搭建CA环境。
1. 数字证书的引入(解决公钥归属问题)
- 核心问题: 简单使用公钥密码算法无法解决公钥归属问题,无法保证获取的公钥就是通信方本人的。攻击者可能利用伪造的公钥进行冒充和窃听。
- 解决方案: 引入数字证书,由证书认证中心(CA)签发,用于解决公钥归属问题。
- 证书特点: 包含持有者公钥和身份信息,并由CA用私钥进行数字签名,保证证书不可篡改。依赖方可离线验证CA签名。
2. PKI系统中的核心实体
PKI系统由以下三个基本功能组件构成:
- 证书认证中心 (CA): PKI信任的根源,负责为其他人签发和管理证书,用自己的私钥对证书签名。
- 证书持有者 (Certificate Holder): 拥有数字证书以及与之匹配的私钥(如通信方李四)。
- 依赖方 (Relying Party): 使用其他人的证书来实现安全功能(如通信方张三)。
- 末端实体 (End Entity): 证书持有者与依赖方的统称。
3. OpenSSL 实现 CA 的搭建(实战)
- 工具与环境: 使用开源软件OpenSSL,部署在 CentOS 7 Linux 环境下。
- 实验拓扑: 采用三台虚拟机扮演:
- 主机 A: 根 CA (Root CA,自签名)
- 主机 B: 子 CA (Subordinate CA,向根CA申请授权)
- 主机 C: 普通用户
- CA 环境配置: CA的配置文件是
/etc/pki/tls/openssl.cnf,用于定义工作目录、证书存储、密钥文件等。 - 创建根 CA 的关键步骤:
- 创建所需文件: 在CA主机上必须创建:
- 证书索引数据库文件:
touch /etc/pki/CA/index.txt - 证书序列号文件:
echo 01 > /etc/pki/CA/serial
- 证书索引数据库文件:
- 生成私钥文件: 使用
openssl genrsa生成 RSA 私钥(如2048位),通常采用DES3加密保护。 - 生成自签名证书: 使用
openssl req -new -x509 -key <私钥路径> -days <有效期> -out <证书输出路径>命令生成根 CA 的自签名证书。
- 创建所需文件: 在CA主机上必须创建:
- 根 CA 签发证书(以签发子CA证书为例,步骤相似):
- 子CA首先生成证书请求文件(CSR)。
- 根CA接收到CSR后,使用
openssl ca -in <CSR文件> -out <证书输出文件> -days <有效期>命令进行签发。
AI对学习内容的总结
1. 身份认证概述
-
地位与作用
- 网络安全的“第一道防线”,决定访问控制、授权、审计等的可靠性。
- 所有安全技术(机密性、完整性、身份认证等)都依赖密码学。
-
核心目标
- 确认通信双方身份真实性。
- 防止伪装、重放、篡改等攻击。
- 提供身份信息的完整性与可验证性。
2. 网络身份认证威胁
| 威胁类型 | 原理 | 潜在后果 |
|---|---|---|
| 中间人攻击 | 截获、修改通信 | 假冒身份、信息篡改 |
| 重放攻击 | 重发截获认证信息 | 非法登录、破坏同步 |
| 密码分析 / 口令猜测 | 破解用户口令 | 非法访问 |
| 身份信息暴露 | 认证过程中泄露身份信息 | 隐私泄露 |
| 认证服务器攻击 | 攻破服务器获取密钥或证书 | 全局安全风险 |
补充:
- 可结合TLS/SSL防止中间人攻击。
- 使用随机数/时间戳机制防重放攻击。
3. 身份认证方式
| 认证类型 | 示例 | 优缺点 |
|---|---|---|
| 所知道的 | 用户名/密码 | 简单,但易被猜测和重放攻击 |
| 所持有的 | 智能卡、USB Key | USB Key可实现双因素认证,智能卡静态数据易被截获 |
| 所具有的 | 指纹、虹膜、声纹 | 高安全性,但成本高、技术局限 |
补充:
- 动态口令 (OTP):基于时间同步(TOTP)或事件同步(HOTP),有效防重放攻击。
- 多因素认证 (MFA):结合两种以上方式,显著提高安全性。
4. PKI与Kerberos比较
| 特性 | PKI | Kerberos |
|---|---|---|
| 密码体制 | 非对称加密 | 对称加密 |
| 认证凭证 | 数字证书 | KDC签发票据 |
| 权威参与 | CA可离线操作 | KDC必须在线 |
| 数字签名/不可否认性 | 支持 | 不直接支持 |
| 应用场景 | 互联网身份认证(HTTPS、VPN) | 局域网内部认证、单点登录 |
补充:
- PKI通过证书信任链管理,提高大规模网络的身份验证可信度。
- Kerberos适合局域网,速度快,但不适合开放互联网。
5. 数字证书与公钥归属
- 问题:简单公钥无法保证归属,容易被冒充。
- 解决方案:引入数字证书,由CA签名绑定公钥与身份。
- 证书内容:持有者身份、公钥、CA签名、有效期、用途。
补充:
- 证书验证可离线完成,依赖数字签名完整性。
- 证书用途通过 keyUsage、extendedKeyUsage 限制。
6. PKI核心实体
| 实体 | 功能 |
|---|---|
| CA(证书认证中心) | 根信任源,签发与管理证书 |
| 证书持有者 | 拥有私钥和证书,用于签名或加密 |
| 依赖方 | 使用他人证书验证身份或加密通信 |
| 末端实体 | 持有者和依赖方统称 |
补充:
- 子CA/中间CA实现分层信任管理。
- 根CA私钥一般离线保存或使用HSM。
7. OpenSSL搭建CA环境(实战)
-
环境:CentOS 7 + OpenSSL
-
拓扑:根CA、子CA、用户端三台虚拟机
-
关键步骤:
- 创建索引文件和序列号文件
- 生成根CA私钥(2048位RSA,DES3加密)
- 生成自签名根CA证书
- 子CA生成CSR → 根CA签发证书
- 用户证书签发同理
补充:
- CA系统应有证书吊销机制(CRL、OCSP)
- 配置文件定义证书存储、策略、扩展字段
- 签发策略控制证书有效期、用途和权限
- 私钥安全至关重要,根CA建议严格离线管理
8. 综合补充与实践建议
- 多因素认证结合静态密码、USB Key和生物特征,提高安全性。
- PKI证书管理应考虑生命周期、吊销、信任链、用途限制。
- Kerberos适合局域网,PKI适合互联网应用。
- 身份认证系统应结合日志审计与安全监控,及时发现异常。
- CA关键操作建议双人控制,防止单点失效或私钥泄露。
学习思维导图
基于AI的学习
原对话链接:https://chatgpt.com/share/68ff5c2e-2abc-800b-9d05-f7349ca61c3f
问题 1
ChatGPT: 你能用自己的话说明一下为什么身份认证被称为网络安全的“第一道门槛”和“第一道防线”吗?
Roshein: 身份认证决定了“谁可以进入”,是网络活动合法性的源头。没有可靠的身份认证,所有的加密、完整性检查、访问控制和审计都将失去意义,因为无法信任正在执行这些操作的主体。
分析与补充:
- 理解到位,身份认证是安全基石。
- 补充:没有身份认证,其他安全机制如访问控制、加密验证、审计等都失去可信基础。
问题 2
ChatGPT: 在网络身份认证中,攻击者通常会采取哪些手段来破坏认证过程?
Roshein: 重放攻击、中间人攻击、口令猜测
分析:
- 回答准确,涵盖了主要威胁。
- 补充说明:身份信息暴露、认证服务器攻击也常见。
问题 3
ChatGPT: 选择中间人攻击或重放攻击,详细描述攻击流程并列出防护措施。
Roshein: 中间人攻击:攻击者插入通信双方的连接从中拦截发方消息,并经过监听、备份、修改等等操作后发送给听方
分析与补充:
- 核心描述准确,抓住“拦截、篡改、转发”。
- 补充:攻击方式包括 ARP 欺骗、DNS 劫持、恶意 Wi‑Fi 等。防护措施可用 TLS/HTTPS、VPN、双向认证、HSTS、OCSP Stapling、双因素认证。
问题 4
ChatGPT: 列出并解释两种可以有效防御中间人攻击的措施。
Roshein:
- TLS/HTTPS:使用密钥交换(非对称+对称)保证双方受信,密文安全
- VPN:建立独立通信隧道,通过加密保持隧道安全
分析与补充:
- 理解核心正确。
- 补充防护措施:
- 证书验证:防止伪造公钥
- 双向 TLS:双方互相验证身份
- HSTS:防止降级攻击
- OCSP Stapling:验证证书是否被吊销
- 双因素认证:即使密码被窃取也无法登录
问题 5
ChatGPT: 为什么单纯使用用户名/密码方式安全性低?
Roshein: 口令认证属于单因素认证,很容易受到监听与重放;用户在创建口令时可能不够高强度
分析与补充:
- 优点:抓住了单因素、弱口令及监听风险
- 补充:暴力破解、凭证复用、钓鱼、数据库泄露风险,以及用户管理、可用性和密码策略问题。
问题 6
ChatGPT: MFA(或 2FA)是如何提高安全性的,并举例两种实现方式及优缺点。
Roshein:
- MFA主要从所知道、所拥有、所持有中使用多种因素
- OTP:手机 SMS 验证码,需要口令 + 验证码
- TOTP:客户持有一次性密钥生成器,基于时间计算,有效期短
分析与补充:
- 理解核心正确。
- 补充 MFA 方法:
- 硬件 Key(FIDO2):安全高,成本高
- 推送确认:体验好,依赖手机安全
- 生物识别:用户体验好,但技术有局限
问题 7
ChatGPT: 为什么单纯使用公钥算法无法解决公钥归属问题?
Roshein: 公钥是公布的,所以任何人都可以声明公钥归属;公钥又是验签的关键,所以需要另一种公认的公钥对当前公钥验签
分析与补充:
- 抓住问题核心:公钥归属需要第三方信任
- CA 的数字证书通过签名验证公钥归属,建立信任链
问题 8
ChatGPT: PKI 核心实体分别是什么,它们的职责是什么?
Roshein: 证书持有者向 CA 申请证书,该证书是 CA 对持有者身份的认证;依赖方在获得证书时,先确信 CA 是可信的,则 CA 认证的持有者用户也是可信的
分析与补充:
- 核心正确
- 补充实体角色:
- 证书持有者:生成密钥对,使用私钥签名/解密
- CA:验证身份,签发证书,管理证书生命周期
- 依赖方:验证证书签名并决定是否信任
问题 9
ChatGPT: 在 OpenSSL CA 搭建中,index.txt 和 serial 文件作用?
Roshein: 不清楚(由讲解补充)
讲解补充:
- index.txt:证书登记簿,记录每个证书状态
- serial:证书序列号计数器,每次签发自动+1
- 实践步骤:
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
签发证书时 CA 会读取 serial 分配序列号,并更新 index.txt 记录信息
问题 10
ChatGPT: 如果 CA 私钥泄露,会造成什么影响?
Roshein: 获知 CA 私钥的人可以随意对来历不明的公钥以 CA 名义签名,使其被认可信
分析与补充:
-
核心正确
-
补充影响:
- 可伪造任意证书,冒充域名或用户
- 滥发子 CA,扩大信任范围
- 信任链崩溃,需大规模撤销证书
- 历史合法证书难以区分伪造
- 信用与合规风险
问题 11
ChatGPT: 根 CA 私钥泄露,应立即采取哪些应急措施?
Roshein: 结束提问(由总结补充)
补充应急措施:
- 吊销 CA 证书和下属所有证书
- 生成新的根 CA 密钥对并重新签发证书
- 通知所有依赖方更新受信任 CA
- 检查和撤销所有受泄露 CA 签发的可疑证书
- 审计系统与日志,追踪潜在攻击
总体分析
优点
- 抓住核心概念,逻辑清晰
- 自主表述能力强,多数回答用自己的话表达
- 对攻击手段、认证方式和 PKI 基本原理理解准确
不足
- 实践细节掌握不足(OpenSSL CA 文件作用、不同 MFA 实现)
- 对部分防护措施理解不够深入
- 风险场景细化欠缺(CA 私钥泄露带来的连锁效应)
补充建议
- 熟悉实战配置与操作(OpenSSL CA、证书签发流程)
- 进一步了解 MFA 各种技术及优缺点
- 深入掌握防护措施及安全实践(TLS/HTTPS、HSTS、OCSP、双向认证、VPN)
学习实践过程遇到的问题与解决方式
根CA的证书如何保证信任? 根CA的证书是自签名的,那么我们对根CA的信任是如何建立起来的?它不像普通证书那样可以被上级CA验证,这种“自我证明”的机制在安全上如何保障?
- 操作系统或浏览器预装根证书
- 离线或手动导入根CA
- 根CA的私钥通常 严格离线保存
- 根签发证书时通过严格流程
X.509 属性证书与公钥证书的区别和关联? 资料提到了授权管理基础设施(PMI)和X.509属性证书。它们的出现是为了解决PKI的哪些不足?在实际应用中,用户在认证和授权时,是如何同时使用公钥证书和属性证书的?
AI:
| 特性 | X.509 公钥证书 | X.509 属性证书(AC / PMI) |
|---|---|---|
| 核心内容 | 用户公钥 + 用户身份信息 | 用户属性/权限信息 |
| 用途 | 认证:验证通信方身份 | 授权:授予用户操作权限或角色 |
| 签发方 | 证书认证中心 CA | 属性管理中心(PMI)或授权机构 |
| 有效期 | 通常较长(1~3年) | 通常较短(小时~几天),可频繁更新 |
| 与私钥的关系 | 公钥对应私钥,持有者可用于签名/解密 | 与私钥无直接关系,仅描述属性 |
| 标准 | X.509 v3 | X.509 v3 属性扩展(Attribute Certificate, RFC3281) |
- 解决PKI的不足
- PKI只解决身份认证问题
- PKI不管理权限/角色
- 认证与授权是分开管理,需要独立更新和撤销权限
假设用户 Alice 访问一个受控资源(如机密数据库):
- 认证阶段(PKI)
- Alice 提交 X.509 公钥证书。
- 系统通过 CA 公钥验证 Alice 的身份签名。
- 认证成功 → 确认 Alice 的身份。
- 授权阶段(PMI + 属性证书)
- Alice 提交 X.509 属性证书,里面包含权限信息(如“角色=管理员”或“可读表A”)。
- 系统验证属性证书是否有效(PMI 签名、有效期、撤销列表)。
- 授权成功 → 系统允许 Alice 执行对应操作。
本文链接
参考资料
- AI工具(你使用的AI工具及其链接)
- 图书

浙公网安备 33010602011771号