文章目录
- Pre
- 概述
- 不可否认性
- PKI
- 其他疑问
-
- [1. Alice能直接获取Bob的公钥,是否还需要证书?](#1. Alice能直接获取Bob的公钥,是否还需要证书?)
- [2. 为什么即使能直接获取公钥也需要加密?](#2. 为什么即使能直接获取公钥也需要加密?)
- [3. 使用约定的非公开加解密方式通讯,是否还需要证书?](#3. 使用约定的非公开加解密方式通讯,是否还需要证书?)
- [4. 公开算法与私有算法的安全性对比](#4. 公开算法与私有算法的安全性对比)
- [5. 信任CA的必要性](#5. 信任CA的必要性)

Pre
加密与安全_常见的分组密码 ECB、CBC、CFB、OFB模式介绍
密钥体系的三个主要目标
机密性 :确保第三者无法通过密文猜测出明文。
完整性 :确保第三者无法篡改原文内容。
不可否认性:确保第三者不能冒充其他人发送消息。
概述
- 解释消息认证码的基本概念及其局限性。
- 介绍数字证书及其在身份认证中的重要性。
- 解释CA的角色和PKI的基本概念。
- 描述CA的主要功能及证书的层级结构。
- 讨论证书在安全通信中的必要性。
- 说明信任CA的原因。
在消息认证码中,我们可以证明消息没有发生过篡改。但却无法证明这个消息就是 Alice 发给 Bob 的。 因为计算消息认证码所需的数据,Bob 和 Alice 都有,所以从理论上 Bob 是可以伪造这条"消息"的。
如果想做到消息的"无可抵赖性",就需要证明"Alice 是 Alice"。证书体系应运而生,就用在证明"我是我"的场景中。
不可否认性
不可否认性确保消息的发送者不能否认曾经发送过消息,这通常通过数字签名实现。
数字签名(Digital Signature)
定义:数字签名是一种基于非对称密码技术的认证机制,用于验证消息的发送者身份和消息的完整性。
工作原理:
- Alice使用自己的私钥对消息的哈希值进行加密,生成数字签名,并将消息和数字签名一起发送给Bob。
- Bob使用Alice的公钥对数字签名进行解密,得到消息的哈希值,并计算接收到的消息的哈希值。
- Bob比较两个哈希值,若相同,则确认消息完整且由Alice发送。
优点:
- 提供身份认证和完整性验证。
- 防止发送者否认发送过消息。
应用场景:
- 安全电子邮件、数字合同、软件分发等需要验证身份和完整性的场景。
证书是什么
证书是数字世界中的"身份证",证书中标记了姓名、组织、邮箱和地址等个人信息,以及属于这个人的公钥。
仅仅有这些信息还不足以让数字证书变成身份证,证书最关键的一个环节是经过"CA"认证并且施加了数字签名。换言之,CA 认定这个证书就是属于某个人的,在数字世界中无法抵赖。
为什么 CA 有这么大的权力呢? CA 有能力颁发证书,所以就有能力认定:"这个公钥的确属于某人"。某种意义上,我们信任数字证书更大程度上是信任 CA 中心。
证书使用流程
所有 CA 必须是可信的第三方。典型的证书使用流程是这样的
PKI
在证书体系中,为了能够有效的运用公钥而制定了一系列的规范,这些规范构成了证书体系的基础,因此被统称为 PKI(Public-Key Infrastructure)
PKI 和其他规范一样,只是规范规格,并没有强制如何实现。所以很多组织和公司自行实现了里面的细节,所以从理论上说我们每个人都可以自行实现一套 PKI 规范,这样你也可以成为一个 CA 中心。
但是如何得到广泛大多数人的承认,这个是最复杂也是最重要的一步。
一般来说 PKI 有三个要素:
- 用户(使用 PKI 的人)
- 认证机构(CA,也就是颁发证书的人)
- 仓库(保存所有证书信息的地方)
用户就不说了,仓库就是保存证书的数据库,用户从仓库获取证书。
CA
下面我们说 CA
CA 最重要的几个功能:
- 生成密钥对。 首先,密钥对可以由用户自己生成,也可以由 CA 来生成。
- 注册证书。CA 会核对用户身份。当核对成功后,CA 使用自己的私钥来对用户的公钥数据进行数字签名,生成复合 X.509 规范的证书。
- 作废证书和 CRL。当用户私钥丢失或者丢失时,CA 可以及时宣告证书作废。数字证书的作废并不是登报声明就能完成,而是会登记在一个证书作废清单(CRL)中。用户需要及时更新 CRL 内容,当需要验证的证书在 CRL 中时,就会按照作废处理。
证书层级
在最开始的时候,CA 对 Bob 的公钥进行了认证,并生成了证书。 此时的证书由两层,一层是 CA,另外一层是 Bob 公钥

多级证书
在实际情况中,证书会有很多层。上面一层负责给下面一层进行认证,而最上面的那一层就称为 Root CA(根 CA)

除去根 CA 和最底层的 Bob 之外,其余的中间 CA 就称为证书链(上面证明下面,就像一个认证链所以称为证书链)
证书链是如何完成认证的?

根证书怎么证明呢? 既然称之为根证书那就说明上面已经没有其他 CA 了。 此时此刻,根证书就需要自签名进行认证

由此可见,根证书的私钥绝对不能泄露。一旦泄露,就可以伪造出完整的证书链,那么这个 CA 就算是彻底废了
其他疑问
1. Alice能直接获取Bob的公钥,是否还需要证书?
即使Alice能直接获取Bob的公钥,仍然需要证书来验证公钥的真实性。获取公钥的通道可能不安全,可能被中间人攻击(Man-in-the-Middle Attack)篡改公钥。证书通过CA的签名,确保公钥确实属于Bob,防止伪造和篡改。
2. 为什么即使能直接获取公钥也需要加密?
即使Alice能通过安全通道直接获取Bob的公钥,仍需要加密通信来保护数据的机密性和完整性。加密可以防止数据在传输过程中被第三方窃取或篡改。证书体系通过验证公钥的真实性,确保加密通信的安全性。
3. 使用约定的非公开加解密方式通讯,是否还需要证书?
使用非公开的加解密方式并不安全。以下是原因:
- 算法的安全性:私有算法可能存在未被发现的漏洞,容易被攻击。公开算法经过广泛审查和测试,更加安全。
- 保密性:即使算法保密,也难以抵御高级攻击者。公开算法通过算子保密,实现更高的安全性。
4. 公开算法与私有算法的安全性对比
公开算法的优势:
- 广泛测试:公开算法经过学术界和工业界的广泛测试,安全性更高。
- 透明性:算法公开透明,易于发现和修复漏洞。
- 标准化:公开算法遵循标准,确保互操作性和兼容性。
私有算法的劣势:
- 不透明:算法未公开,可能存在未发现的安全漏洞。
- 信任问题:依赖于开发者的能力和诚信,难以获得广泛信任。
- 难以维护:私有算法难以与其他系统集成,维护成本高。
5. 信任CA的必要性
信任CA类似于信任政府发行的货币。CA通过签发和管理证书,为公钥提供信用背书,确保公钥的合法性和真实性。若不信任CA,需要自行验证每个证书节点的合法性,实际上等同于CA的工作。因此,信任CA可以简化验证过程,提高效率和安全性。
