第16章 · 播客 第4集
安全性和保密性设计 · 数字信封、密钥分配与数字证书 PKI
🎙️ 本集播客:第4集:数字信封里「对称密钥加密内容、公钥加密对称密钥」的分工怎么记;密钥保密为什么比算法保密更要命;KDC 方案中每个用户只存哪两把钥匙、A 找 KDC 要会话密钥的完整报文流一步一步走。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
上一集说数字签名不保密,那真正要保密的邮件怎么办?
雅
小雅
16.2.2 数字信封。它的定位原文一句话:数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。它不是新算法,是「两种加密各管一样」的包装术。
雅
小雅
流程照原文念:信息发送方采用对称密钥来加密信息内容;然后将此对称密钥用接收方的公开密钥来加密——这部分就称数字信封;之后将它和加密后的信息一起发送给接收方;接收方先用相应的私有密钥打开数字信封,得到对称密钥,然后使用对称密钥解开加密信息。原文评价:这种技术的安全性相当高。
明
阿明
一句话就是:正文用对称密钥,钥匙用对方公钥。这题我知道坑在哪——「用来加密信息内容的是哪个」,选项放接收方公钥,专门骗我选。
雅
小雅
正是这题的杀招。加密信息内容的是对称密钥,接收方的公钥只用来加密这把对称密钥。记法:信纸用快刀、信封上锁。对称算法快,拿来加密大正文;公钥算法慢,只锁一把小钥匙。顺序倒过来选就错。
雅
小雅
接收方动作也别混:先用自己的私钥开信封取出对称密钥,再用对称密钥解正文——不是拿私钥直接解正文。问「接收方第一步做什么」,答打开数字信封。
明
阿明
那这把对称密钥是每次现生成的?
雅
小雅
数字信封一节原文没有展开这个细节,但后面 PGP 一节会呼应:每次加密用的 IDEA 密钥是随机生成的。先把分工记牢,PGP 那集再串。
明
阿明
好。那 16.3 密钥管理开头说了什么大原则?
雅
小雅
一段很考人的对比。过去人们依赖对加密算法和密钥的双重保密;现代密码学中大部分加密算法已经公开,DES、IDEA、RSA 等都成了国际标准。原文结论:在现代密码系统中,算法本身的保密已经不重要了,对于数据的保密在很大程度上甚至完全依赖于对密钥的保密。
雅
小雅
往下还有半段要背:只要密钥能够保密,即使加密算法公开,甚至加密设备丢失,也不会对加密系统的坚固性和正常使用产生多大影响;相反,密钥丢失,非法用户窃取机密数据,合法用户面对密文如读天书。所以如何高效地分配密钥、安全地管理密钥,对保证数据安全至关重要。判断题「算法公开会削弱系统安全性」——按教材口径,不会。
明
阿明
那密钥怎么送达对方?总不能发微信吧。
雅
小雅
最古典的办法:派非常可靠的信使,以十分安全的方式物理地携带密钥人工送达。原文评价:可靠但效率低,过去信息技术不发达时用得多;用户多、通信频繁的系统显然不适合,必须采用计算机自动分配密钥。
雅
小雅
自动分配前先看笨办法:任意两个用户之间自己协商选择不同的密钥。有 N 个用户的系统,每个用户要保存 N 减 1 个密钥,系统总共要保存 N 乘 N 减 1 除以 2 个。注意这版公式跟上集那版细微不同——这里两两共享的是同一把,所以每用户 N 减 1 把、总数除 2。
明
阿明
用户一多密钥爆炸,所以才要 KDC。它的方案是什么样的?
雅
小雅
KDC,Key Distribution Center,密钥分配中心,是一种非常有效的密钥自动分配方案。核心一句话:在 KDC 方案中,每一个用户都只保存自己的私钥 SK 和 KDC 的公钥 PK KDC,而在通信时再经由 KDC 获得其他用户的公钥 PK,或者仅在某一次通信中可以使用的对称密钥加密算法的临时密钥 K。每人只存两把钥匙,这就是省钥的关键。
明
阿明
临时密钥 K 是什么意思?
雅
小雅
就是「用一次就扔」的会话密钥——原文措辞是「仅仅在某一次通信中可以使用」。判断题考「KDC 方案中每个用户要保存所有其他用户的公钥」,错,只需保存自己的私钥和 KDC 的公钥两个。
雅
小雅
报文流走一遍。设 A、B 都是 KDC 注册用户,分别有私钥 SKA、SKB,公钥 PKA、PKB。A 想与 B 会话,采用对称密钥加密算法加密。第一步:用户 A 向 KDC 发送用自己的私钥 SKA 加密的请求,报文记作 SKA 加密的括号 A 逗号 B,说明自己想要与 B 会话。
雅
小雅
第二步:KDC 收到请求后,根据某种算法生成一个可供 A、B 双方秘密会话的对称密码算法的密钥 K,然后向 A 返回应答 PK 加密的括号 K 逗号 PKB 加密的括号 A 逗号 K。这个应答是用 A 的公钥 PKA 加密的,只有用户 A 自己能正确解读,从中提取与 B 会话的密钥 K。
明
阿明
里面还嵌了一段用 B 的公钥加密的东西?
雅
小雅
眼尖。应答中还有一部分内容 PKB 加密的括号 A 逗号 K,表明用户 A 欲与 B 会话且密钥是 K,这是用 B 的公钥 PKB 加密的——A 看不懂但不用看懂。第三步:A 把这一部分信息发送给 B,B 收到后用自己的私钥从中解密出会话密钥。至此完成一次密钥的自动分配,A、B 双方就可以利用密钥 K 进行加密通信了。
明
阿明
捋一下谁用谁的钥匙:A 发请求用 A 的私钥签名,KDC 回话用 A 的公钥封口,给 B 的那半段用 B 的公钥封口,B 用 B 的私钥拆。
雅
小雅
完全正确,三把钥匙三段用途。出题爱问「KDC 返回给 A 的应答用什么加密」——A 的公钥;「A 转发给 B 的部分用什么加密」——B 的公钥。两个方向别对调。
雅
小雅
本集必背:数字信封=对称密钥加密信息内容、接收方公钥加密这把对称密钥、接收方先私钥开信封再对称解正文,安全性相当高;现代密码系统中算法保密已不重要、保密完全依赖密钥的保密,密钥丢了合法用户面对密文如读天书;信使送密钥可靠但效率低;两两协商时 N 用户系统总密钥数 N 乘 N 减 1 除以 2;KDC 方案每个用户只保存自己的私钥和 KDC 的公钥,临时密钥 K 仅一次通信可用;KDC 三步——A 用私钥发请求、KDC 用 A 的公钥回「K 加给 B 的半段」、A 把 B 公钥加密的半段转给 B 解出 K。
雅
小雅
对。原文先铺问题:私钥的分配相对容易,但公钥的发布和获取需要合适的方法,否则容易留下安全漏洞。最简单的方式是公开宣布——把公钥公开公布给其他所有各方。实现简单,但有致命漏洞:任何一个非法入侵者也可以冒充通信系统中的一方,公布一个冒充的公钥,此后系统与「该用户」的通信实际上是与冒充者的通信。
明
阿明
所以核心问题就是:怎么保证公开密钥的持有者是真实的,以及大规模系统里公钥怎么产生、分发和管理。
雅
小雅
原文正是这两问,答案是数字证书和 PKI。先记一个顶级送分点:目前最常用的数字证书格式是由国际标准 ITU-T X.509 v3 版本定义的。选择题四个选项常放 ISO/OSI RM、RFC 系列、ANSI 标准来凑数,认准 ITU-T X.509 v3。
雅
小雅
数字证书的定义:提供了一个在公钥和拥有相应私钥的实体之间建立关系的机制。它采用公钥体制:每个用户自己保存私钥,用它进行解密和签名;同时设定一个公钥并由本人公开,为一组用户所共享,用于加密和验证签名。
明
阿明
私钥干什么、公钥干什么,跟签名那套正好对上。证书里装了什么?
雅
小雅
原文列的一般内容包括:唯一标识证书所有者的名称、唯一标识证书签发者的名称、证书所有者的公开密钥、证书签发者的数字签名、证书的有效期及证书的序列号等。六个要素,多选题按这个背。
明
阿明
那 PKI 这三个字母到底指一套什么系统?
雅
小雅
PKI 是 Public Key Infrastructure,公开密钥基础设施。定义照念:指由数字证书、证书颁发机构 CA,以及对电子交易、通信等所涉及的各方的合法性进行检查和验证的其他注册机构组成的一套系统。目标:向广大的信息系统用户和应用程序提供公开密钥的管理服务。两句地位:为了在不可靠的网络环境中获得真实可靠的公开密钥,PKI 引入公认可信的第三方;可信的第三方是 PKI 的核心部件,系统中任意两个实体之间都是通过公认可信的第三方建立安全联系的。
雅
小雅
还有一个配套机制:PKI 采用数字证书机制来避免在线查询集中存放的公开密钥产生的性能瓶颈;数字证书中第三方的数字签名,使用户可以离线地确认一个公开密钥的真实性。除了有效期之外,证书撤销列表 CRL 是另一种数字证书有效期控制机制——证书发布者定期发布 CRL,列出所有曾发布但当前已被撤销的证书号,使用者据此验证某证书是否已被撤销。
明
阿明
CRL 管的是「发了又作废」的证书。那 PKI 内部有哪些角色?
雅
小雅
结构模型三类实体:管理实体、端实体、证书库。管理实体是 PKI 的核心,是 PKI 服务的提供者;端实体是 PKI 的用户,是服务的使用者;证书库是一个分布式数据库,用于证书和 CRL 的存放和检索,可以用 Web、FTP 或目录等来实现。
雅
小雅
管理实体有两种。CA 是证书颁发机构,也是 PKI 框架中唯一能够发布和撤销证书的实体,维护证书的生命周期——「唯一」两个字是考点,问「PKI 中谁能发布和撤销证书」,答 CA,不答 RA。RA 是注册机构,负责处理用户请求,在验证了请求的有效性后,代替用户向 CA 提交;RA 可以单独实现,也可以合并在 CA 中实现。
明
阿明
端实体呢?就是拿证书的普通用户?
雅
小雅
两种:持有者和验证者。持有者是证书的拥有者,是证书所声明的事实上的主体,向管理实体申请并获得证书,也可在需要时请求撤销或更新证书;验证者确认持有者所提供的证书的有效性和对方是否为该证书的真正拥有者,只有在成功鉴别之后才可与对方进一步交互。
雅
小雅
两个补充点也常考。一,证书库的完整性由数字签名保证,因此对证书库的操作可在无特殊安全保护的通道上传输;二,PKI 操作分两类:存取操作——把证书和 CRL 存放到证书库、从证书库读取;管理操作——管理实体与端实体之间或管理实体与管理实体之间的交互,为完成证书管理任务和建立证书链。
明
阿明
PKI 自身还分层?我记得有个三层。
雅
小雅
PKI 框架分三个层次,自下而上背:最低层是传输层,向上提供 PKI 报文的可靠传输,可以是传输层协议或应用层协议;中间层是密码学服务层,向上提供加密、解密、数字签名、消息摘要等基本密码学服务,可由 RSA、MD5 等方法实现;最高层是证书服务层,使用前两层提供的加密和传输服务,向用户提供证书的请求、签发、发布、撤销和更新等服务。
明
阿明
排序题按「传输、密码学、证书」从低到高。三类实体怎么用这三层?
雅
小雅
原文有专门对照:证书库不需要特殊的安全交互措施,所以仅使用传输层服务来分发证书和 CRL;管理实体和端实体使用证书服务层构造 PKI 证书,使用密码学服务层来鉴别和保护交互信息,使用传输层服务传送信息。「证书库只用传输层」是个高频判断点。
雅
小雅
然后是 X.509 证书本体。ISO/ITU、ANSI、IETF 等组织制定,为保证使用数字证书的系统间的互操作性而制定——理论上一种应用创建的证书可用于其他符合 X.509 的应用,但实际不同公司做了不同扩展,并非所有证书都彼此兼容。后半句判断题考过。
明
阿明
它的特点哪几条?
雅
小雅
五条:一,支持多种算法——证书独立于算法,摘要算法有 MD2、MD5 和 SHA-1,证书签名算法有 RSA 和 DSA;二,支持多种命名机制——除 X.500 名字机制外还支持 E-mail 地址、IP 地址、DNS 名和 URI;三,可以限制证书即公开密钥的用途,如签名、不可否认、密钥加密、数据加密、密钥协商、证书签发和 CRL 签发;四,定义证书遵循的策略,包括 CA 的命名空间、身份验证、撤销机制、法律责任和收费等;五,控制信任关系的传递,建立 CA 体系、跨域认证。
雅
小雅
版本方面:X.509 有不同版本,X.509 v3 是比较新的版本,是在原有版本基础上进行功能的扩充。每个版本都包含这些数据项:版本号、序列号、签名算法识别符、发行者名称、有效期、主体名称、主体的公开密钥信息、发行者唯一识别符、主体唯一识别符、扩充域、签名。
明
阿明
十一项里我挑两个确认下:序列号和签名。
雅
小雅
序列号:由 CA 给每一个证书分配唯一的数字型编号,由同一 CA 发放的每个证书的序列号是唯一的。签名:CA 用自己的私钥对上述各数据项的散列值进行数字签名的结果——注意是对「散列值」签名,不是对原文整体。有效期含两个日期:开始生效日期和失效日期,在两者之间有效。
雅
小雅
本集必背:最常用数字证书格式由 ITU-T X.509 v3 定义;证书内容六件——所有者名称、签发者名称、所有者公钥、签发者数字签名、有效期、序列号;PKI 由数字证书、CA 及其他注册机构组成,可信第三方是核心部件;CRL 定期发布被撤销证书号;三类实体——管理实体是核心、端实体是用户、证书库存放检索证书和 CRL;CA 唯一能发布和撤销证书,RA 验证请求后代用户向 CA 提交;持有者与验证者是端实体;三层从低到高传输层、密码学服务层、证书服务层,证书库仅用传输层;X.509 五特点多算法、多命名、限用途、定策略、控信任传递,证书签名为 CA 用私钥对各项数据散列值的签名。
明
阿明
CA 和 RA 的分工这回锁死了:发布撤销只归 CA。下一集总算到 IPSec 了?
雅
小雅
对,安全协议三部曲开演:IPSec 的 AH 与 ESP、SSL 的位置和握手、PGP 的混合加密,一道题一个考点。