type
Post
status
Published
date
Jan 31, 2026
slug
encryption
summary
tags
応用情報技術者試験
category
国家資格勉強
icon
password
情报安全之密码学,从历史发展的角度切入,带大家捋一遍
1990 年代之后的加密技术应用演进
在 1990 年代之后,随着信息安全技术的成熟,三大核心技术被陆续整合并应用到各种通信协议中:
核心技术 | 说明 |
公開共通混合加密 (Hybrid Encryption) | 结合对称加密和非对称加密,兼顾数据机密性与密钥分发效率 |
電子署名 (Digital Signature) | 利用私钥对哈希值签名,实现完整性验证和否认防止 |
PKI (Public Key Infrastructure) | 通过证书授权中心(CA)验证公钥身份,保证真正性达到 100% |
这些技术被广泛应用于网络和通信协议,使得信息传输既高效又安全,典型例子包括:
- HTTPS → 安全网页访问
- FTPS / SFTP → 文件传输加密
- SSH → 安全远程登录
- S/MIME / PGP → 邮件加密与签名
💡 总结:
核心思想:混合加密 + 电子签名 + PKI → 形成完整的安全基础 → 进一步扩展应用到各类协议 → 保证机密性、完整性、真正性与否认防止
很复杂,这里挑1个聊
HTTPS 的 TLS 1.3
早期的 TLS(如 TLS 1.0~1.2 的 RSA 握手)是:
使用服务器公钥加密共通钥匙,再把加密后的钥匙通过网络发送。
这种方式的问题在于:
过去被抓包的通信未来仍可能被解密。2026 年无法破解,并不代表 2028 年仍然安全,攻击者完全可以先截获通信数据,待计算能力提升后再进行破解。正如人们曾认为机器不可能理解人类语言,但如今 AI 已能对话、写作与翻译;也曾认为基因无法被精确修改,而 CRISPR 已实现定点编辑。同样,随着量子计算机的出现,传统密码体制面临危殆化风险,密码学也必须随之更新与演进。
TLS 1.3 的改进在于:
引进了0知识证明 (ゼロ知識証明)
现代密码学重要思想之 ゼロ知識証明
一个典型的零知识证明示例是阿里巴巴和强盗的故事:
阿里巴巴知道打开藏着财宝的山洞的咒语。强盗抓住他,让他说出咒语。如果阿里巴巴说出咒语,就会因为没有利用价值而被杀死。如果阿里巴巴坚持不说,强盗不会相信他真的掌握咒语,也会杀死他。但阿里巴巴想了一个好办法,他对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。”
ゼロ知識証明研究的是
老子有核弹,但是我怎么不给你看核弹,你也知道我百分之百有核弹(保护国家安全) 我有1个亿,但是我不给你看这1个亿,你也能百分之百确定我有一个亿(保护隐私) 你给我100块,我可以告诉你赚200块的方法,但是你不告诉对方方法,他就不相信你,不给你100块,你告诉他,他知道了赚200块的方法了,就不需要给你100块了。怎么办? 而密码学也是,我有密码,但是我不传输密码(包括如何方式加密后的密码),你也可以相信我有正确的密码
thing time

红眼岛民集体自杀事件
问题描述
一个岛上有100个人,其中95个是蓝眼晴,5个是红眼睛。岛上有三个奇怪的规则:
1.不能通过照镜子,照水面来看自己眼睛的颜色。
2.不能告诉对方别人的眼睛颜色。
3.一旦知道自己眼睛的颜色,必须在当夜自杀。
一天,有一个旅行者来到岛上,当着所有人的面,不留神说了一句:你们这里有红眼睛的人,岛民都
听到了这句话。假设岛民都是聪明人,问这个岛接下来会发生什么事情?
答:在第5天当夜,5个红眼睛自杀。第6天当夜,蓝眼晴集体自杀。
眼睛问题 | 零知识证明 |
眼睛颜色 | 秘密(Secret) |
旅行者的那句话 | 公共声明(Public Statement) |
有没有人离岛 | 验证结果(Proof Outcome) |
推理出“我是蓝的” | 验证“我知道秘密” |
没说出颜色 | 零知识(不泄露内容) |
thing time
你就不告诉我的前提下,怎么让我相信你跳过楼?不泄露军事照片的情况下,怎么证明坦克没有后视镜

在密码学中,有一种非常简单的零知识证明思想:Challenge–Response。 应用场景是One-Time Password (OTP)我有密码,但是我不传输密码(包括任何方式加密后的密码)。也可以让对方知道我有正确的密码
证明的是“我知道”,而不是“我展示”。
5.知识检验

TLS1.3 跟Challenge–Response原理差不多,但是复杂很多,需要打比方


用「咸甜豆腐脑」讲懂 TLS / DH 密钥交换
很多人一学 TLS、HTTPS、DH、ECDHE
就会被各种数学公式、随机数、指数运算劝退。
但其实 TLS 的核心思想非常朴素,完全可以用一个生活中的例子讲清楚。
下面这个例子,不需要任何数学基础。
一、问题:如何在被监听的网络上“安全地达成秘密”?
假设:
- 小南擅长做 甜豆腐脑
- 小白擅长做 咸豆腐脑
他们想要做到一件事:
👉 两个人最终做出 一模一样口味的「咸甜豆腐脑」👉 但 配方绝对不能被第三者(中间人)知道
这,正是 TLS 要解决的问题。
二、错误但直观的方法(为什么不安全)
最直接的想法是:
- 小南把 糖 寄给小白
- 小白把 盐 寄给小南
然后:
盐 + 糖 + 豆腐脑 = 咸甜豆腐脑✔️ 两边味道一致
问题在哪?
📛 网络是被监听的
📛 中间人可以截获「盐」和「糖」
👉 秘方直接泄露
这就等价于:
❌ 在网络上传输明文密钥
三、TLS 的核心思想 是0知识证明
TLS 采用的不是“传秘密”,而是:
让双方“各自在本地算出同一个秘密”
换成豆腐脑的说法:
正确做法
- 小南寄给小白:甜豆腐脑(成品)公钥
- 小白寄给小南:咸豆腐脑(成品)公钥
然后:
- 小南在自己家里:
甜豆腐脑 + 自己私藏的盐 → 咸甜豆腐脑
- 小白在自己家里:
咸豆腐脑 + 自己私藏的糖 → 咸甜豆腐脑
🎯 最终味道完全一致
四、中间人能看到什么?为什么没用?
中间人可以做到的事情只有这些:
- 截获甜豆腐脑
- 截获咸豆腐脑
- 知道传输顺序
- 全程监听通信
但问题是:
❌ 甜豆腐脑 + 咸豆腐脑 ≠ 咸甜的配方
中间人 永远拿不到:
- 小南的盐
- 小白的糖
👉 所以 永远算不出最终味道
五、这正是 DH / ECDHE 在 TLS 里的工作方式
把上面的比喻对应到 TLS:
豆腐脑比喻 | TLS 中的真实含义 | 是否公开 |
盐 | 客户端 DH 私钥 | ❌ |
糖 | 服务器 DH 私钥 | ❌ |
甜豆腐脑 | 客户端 DH 公钥 | ✅ |
咸豆腐脑 | 服务器 DH 公钥 | ✅ |
咸甜豆腐脑 | Pre-Master Secret | ❌ |
最终定型口味 | Session Key | ❌ |
为了增加随机性,客户端和服务器端还发送了各自的乱数,最终
咸甜豆腐脑+服务器乱数+客户端乱数 = 最终的会话钥匙
关键点只有一句话:
Pre-Master Secret 从来没有在网络上传输过
它是:
- 客户端:
自己的私钥 + 服务器公钥 → 算出来
- 服务器:
自己的私钥 + 客户端公钥 → 算出来
六、为什么“材料不一样,却能算出同一个结果”?
这是很多人最困惑的一点。
原因只有一个:
DH 的数学结构,保证了“双方各自混合后,结果相同”
就像:
- 一边是:甜 + 盐
- 一边是:咸 + 糖
虽然中间材料不同,但:
设计保证最终味道一致
这不是巧合,是算法刻意保证的性质。
七、为什么这比“直接用公钥加密”更安全?
因为:
- 秘密 从来没被发送
- 抓包 ≠ 能解密
- 服务器私钥泄露 ≠ 过去通信被解密(前向安全性)
这正是 现代 TLS 一律使用 ECDHE 的原因。
八、一句话总结
TLS 的精髓不是“把秘密传过去”,而是“让秘密只存在于通信双方的内存里”。
中间人:
- 能看到一切通信
- 却永远少那一勺盐,或那一勺糖
- Author:minami
- URL:https://www.minami.ac.cn/national-license/encryption
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts





