第2章 通信加密
比较异或、对称与非对称方案,贯通OpenSSL证书、TLS握手、HTTPS、散列和Base64,建立认证加密边界。
直觉:先找唯一事实
比较异或、对称与非对称方案,贯通OpenSSL证书、TLS握手、HTTPS、散列和Base64,建立认证加密边界。 加密不是把明文变乱,而是同时证明对端身份、保护机密性与完整性,并对重放和密钥轮换给出明确语义。 先预测:如果只保留最终成功截图,本页最可能隐藏哪一种重复执行、状态分叉或失主资源?
权威目录定位
本页依据机械工业出版社工程科技数字图书馆和得到电子书公开目录锁定范围。编号和名称用于一对一追踪,正文是独立教学重构,不复制原书段落;现代安全、可观察性与故障演练明确属于教学补充:
- 2.1 软件、通信加密的几种常用方案
- 2.2 OpenSSL
- 2.3 SSL/TLS通信
- 2.4 其他加密方式
本页共追踪 4 个公开目录条目。全书正式单元为:第1章 Python网络编程模块、第2章 通信加密、第3章 服务器实作、第4章 基础内容存储、第5章 存储方案、第6章 游戏服务器初探、第7章 游戏服务器的交互、第8章 游戏大厅、第9章 实时交互服务器、第10章 天梯和经济系统、第11章 服务器承载量和客户端优化方案、第12章 分布式服务器、附录A 不同语言之间的区别。出版社简介称全书13章,但公开目录把语言选型单元标作“附录A”;学习页面保留目录原标号,并在来源边界说明差异。
核心概念与所有权
、、、、。 这些概念必须同时回答四个问题:谁创建输入,谁拥有可变状态,哪个代际拒绝旧结果,失败后谁回滚或补偿。
| # | 概念 | 工程含义 |
|---|---|---|
| 1 | 对称加密 | 通信双方使用同一密钥完成高吞吐数据加解密。 |
| 2 | 非对称加密 | 使用公钥与私钥分离身份认证或密钥协商职责。 |
| 3 | 证书链 | 把服务端公钥绑定到受信身份的逐级签名链。 |
| 4 | TLS握手 | 协商版本、算法和会话密钥并认证对端的状态机。 |
| 5 | 消息摘要 | 把任意输入映射为固定长度指纹,用于完整性而非保密。 |
目录主线与因果关系
1. 从威胁模型选算法
窃听、篡改、冒充和重放需要不同证据。异或与Base64不提供密码学安全;散列也不能替代身份认证。
先预测:如果省略这一层,正常样本也许仍能成功,但边界或故障样本会在哪个状态首先偏离?
2. OpenSSL配置是协议一部分
证书链、私钥权限、TLS最低版本、密码套件和主机名验证都要进入可审计配置,不能只证明握手成功。
先预测:如果省略这一层,正常样本也许仍能成功,但边界或故障样本会在哪个状态首先偏离?
3. 会话恢复也要守住身份
恢复票据必须有期限、作用域和轮换策略;旧票据被拒绝后,客户端应能重新完整握手而不是降级到明文。
先预测:如果省略这一层,正常样本也许仍能成功,但边界或故障样本会在哪个状态首先偏离?
六阶段证据链
本页可操作链条是:列出威胁 → 验证证书 → 协商密钥 → 认证加密 → 拒绝重放 → 轮换恢复。正常样本证明能力,边界样本证明预算,失败样本证明拒绝,恢复样本证明没有留下第二份事实。
最小实现骨架
下面是用于复现实验的独立骨架,不是原书代码复制;生产实现还需补齐平台差异、权限、安全和资源清理。
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.minimum_version = ssl.TLSVersion.TLSv1_2
context.load_cert_chain(certfile=cert_path, keyfile=key_path)
secure_socket = context.wrap_socket(raw_socket, server_side=True)证据记录必须把决策与原始指标放在一起:
book: 游戏服务器架构与优化
page: gsa-02-communication-encryption
catalog_entries: 4
sample: normal | boundary | failure | recovery
state_owner: explicit
first_divergence: null
recovery_action: replay_same_input故障脚本只改变一个变量,并保留恢复阶段:
baseline -> inject(把异或或Base64称为加密,攻击者无需密钥就能恢复或篡改内容。)
observe -> stop_at_first_divergence
recover -> replay_same_version_and_input
assert -> no_duplicate_state && no_orphan_resource常见误区与故障注入
验收矩阵
| 样本 | 输入变化 | 预期状态 | 通过条件 |
|---|---|---|---|
| 正常 | 合法版本、身份、顺序和容量 | 六阶段顺序完成 | 状态摘要与所有权一致 |
| 边界 | 临界时序、容量、重复或切换 | 达到预算但不越界 | 无无限队列和第二份事实 |
| 失败 | 畸形、旧版本、断线或依赖失效 | 在首偏离点停止 | 明确拒绝、补偿或回滚 |
| 恢复 | 修复后重放同一输入 | 收敛到正常轨迹 | 无幽灵状态和资源泄漏 |
本页签发不变量是:只接受受信身份和允许版本;每个密文都校验完整性与新鲜度;密钥轮换不需要降级协议。 任何单次演示、截图或平均指标都不能替代版本、状态摘要、首偏离点和恢复证据。
练习
小结
- 对称加密:通信双方使用同一密钥完成高吞吐数据加解密。
- 非对称加密:使用公钥与私钥分离身份认证或密钥协商职责。
- 证书链:把服务端公钥绑定到受信身份的逐级签名链。
- TLS握手:协商版本、算法和会话密钥并认证对端的状态机。
- 消息摘要:把任意输入映射为固定长度指纹,用于完整性而非保密。
- 六阶段机制链已经映射到正常、边界、失败和恢复证据。
- 公开目录已逐项追踪,现代补充不会冒充原书分节。