理解密码学基础

学习目标

  • 描述加密、数字证书和签名是如何工作的

密码学基础

安全通信在很大程度上依赖密码学概念来建立加密连接并验证通信对端的身份。理解这些密码学概念的基础,有助于领会安全通信是如何工作的,以及建立它所需要采取的步骤。

密码学是使用数学算法来保护和保障信息安全的科学。它涉及以某种方式对信息进行编码和解码的技术,使未授权的各方难以访问或理解这些信息。密码学涵盖多种方法,包括加密、解密、数字签名和密钥管理。

加密

加密是密码学中的一项特定技术,它涉及使用加密算法和密钥将明文(未加密的数据)转换为密文(已加密的数据)。加密过程确保信息被转换为一种对于任何不持有相应解密密钥的人都无法理解的格式。

我们将更详细地介绍两种主要的加密类型:对称加密和非对称加密。

对称加密

在对称加密中,加密和解密过程使用同一个秘密(也称为密钥)。加密数据的发送方和接收方必须共享同一个密钥。对称加密的主要优点是速度快、效率高。然而,挑战在于如何在发送方和接收方之间安全地共享密钥。

安全的密钥交换本身就已经需要一条加密的消息。就两个人之间的通信而言,一种选择是他们可以当面见一次并交换密钥。然而,对于现代互联网通信来说,这并不是一个解决方案。需要另一种技术。这正是非对称加密发挥作用的地方。

非对称加密

非对称加密,也称为公钥密码学,使用一对不同但在数学上相关联的密钥来进行加密和解密:公钥和私钥。

  • 公钥用于加密(以及验证数字签名)。它可以分发并共享给任何人。

  • 私钥用于解密(以及创建数字签名)。它必须保密,并且只有其所有者知晓。

尽管这对密钥在数学上相互关联,但从一个密钥推导出另一个在计算上是不可行的。

公钥用于加密消息,只有对应的私钥才能解密这些消息。这是非对称加密的主要优点:无需预先共享的密钥即可安全交换信息的能力。它使从未谋面的双方之间也能进行安全通信。

公钥可以与任何人共享,因为它只能用于加密消息,而不能用于解密该消息。这意味着,任何知道某人公钥的人都可以向该人发送加密消息,而只有该人才能解密该消息。安全性在很大程度上取决于私钥的保密性,否则第三方也可以解密该消息。

然而,非对称加密通常比对称加密更慢,且计算开销更大。这就是为什么互联网上的加密通信通常只在会话开始时使用非对称加密,以安全地交换一个预先共享的秘密。随后该秘密被用于更快、更轻量的对称加密。

这也适用于 HTTPS 协议,当客户端与服务器建立连接时。交换所有密钥(以及其他信息)的过程称为 TLS 握手。我们将在下一课中进一步了解 TLS 握手和服务器信任。

数字证书与签名

安全通信的另一个方面是验证对端的身份。这可以借助数字证书来实现,而数字证书又使用数字签名。让我们先仔细看看数字签名。

数字签名

数字签名是一种密码学技术,用于验证数字文档(例如证书或消息)的真实性和完整性。它们提供了一种方式来确保数字文档的创建者确实是其所声称的人,并且文档未被篡改。

可以为文档创建数字签名,换句话说,也就是对文档进行签名,方法是使用一种数学算法生成该文档唯一的数字指纹(即哈希),然后使用创建者的私钥对其进行加密。

哈希是一段固定长度的字符串,唯一地表示文档的内容。无法从哈希计算出原始内容。一旦文档内容稍有变化,哈希就会完全改变。

要验证数字签名,文档的接收方使用创建者的公钥解密签名并获得文档的哈希。接收方随后独立计算文档的哈希,并将其与解密得到的哈希进行比较。如果两个哈希匹配,则表明文档未被更改,且创建者是真实的,也就是说,其拥有匹配的私钥。

Note

请记住:数字签名使用公钥密码学,因此它们需要生成一对公钥和私钥,其中私钥由创建者用于签署文档,公钥用于验证签名。

数字证书与证书颁发机构

视频:本节含 SAP 官方视频(视频 ID 1_9g5y9u2o),需在 learning.sap.com 在线观看。

我们将在下一课中更仔细地了解使用数字证书验证服务器和客户端身份,以及维护信任列表的内容。

数字证书

正如我们从视频中所了解的,数字证书也称为公钥证书或 SSL/TLS 证书,是一种数字文档,用于验证互联网上某个网站或实体的真实性。它由受信任的第三方组织(称为证书颁发机构 (CA))在验证证书持有者的身份后颁发。数字证书包含证书持有者的名称和公钥,以及附加信息,例如证书的到期日期和 CA 的数字签名。公钥用于加密数据和建立安全通信通道,而数字签名则确保证书的完整性和真实性。

数字证书可以存储在不同类型的文件中,支持不同的能力,通常遵循 X.509 标准。因此数字证书有时也被称为 X.509 证书。最常用的文件格式如下:

  • PEM (Privacy Enhanced Mail) - 典型文件扩展名:.pem、.crt、.cer、.key PEM 格式使用 Base64 编码以 ASCII 文本格式表示证书或私钥。

  • DER (Distinguished Encoding Rules) / CER (Canonical Encoding Rules) - 典型文件扩展名:.der、.cer DER 和 CER 是用于存储数字证书的二进制文件格式。与 PEM 相比,它是一种更紧凑的表示形式,因为它不使用 Base64 编码。

  • PKCS#12 (Public-Key Cryptography Standards) - 典型文件扩展名:.pfx、.p12 PKCS#12 是一种可以存储多个密码学对象的文件格式,包括数字证书、私钥和其他相关信息。它通常用于将私钥连同证书及证书链一起存储或传输。这些文件通常经过加密并受密码保护。

  • JKS (Java Key Store):- 典型文件扩展名:.jks JKS 文件格式通常被基于 Java 的应用程序使用。它可以安全地存储私钥和证书。这些文件通常经过加密并受密码保护。

证书颁发机构 (CA)

正如视频中提到的,建立证书链涉及多个(通常是两个)证书颁发机构:

中间证书颁发机构 以及

根证书颁发机构 。

根 CA 是证书层级中的最高权威。它负责颁发中间 CA 的证书并对其进行数字签名,而中间 CA 则向最终实体(如网站、服务器或个人)颁发证书。

以下截图显示了 Web 浏览器中针对网站 learning.sap.com 的证书查看器。它显示了证书链,中间 CA 位于中间,根 CA "DigiCert Global Root CA" 位于顶部。

根 CA 通常由受信任的组织运营,例如商业证书颁发机构或政府实体。根 CA 的数字签名嵌入在根证书中,而根证书由 Web 浏览器和其他软件分发并信任。这是必要的,因为根 CA 之上没有其他 CA。因此,根 CA 的证书由根 CA 自己签名。这称为自签名证书。

由于自签名证书无法由其他 CA 验证,客户端需要维护信任列表,其中包含受信任 CA 的证书。

例如,Web 浏览器在发布时就附带了一份常见的受信任根 CA 列表。在 SAP 解决方案中,这些列表必须由管理员维护,通常称为信任存储库(Trust Stores)、密钥库(Keystores)或信任列表(Trust Lists)。

本课其余配图

SymmetricEncryption2

PublicKeyCrypto

AsymmetricEncryption1

DigitalSignature

CertificateChain

Root CA Self Signed

本课其余配图

Root CA Self Signed

本课其余配图

Root CA Self Signed

本课其余配图

Root CA Self Signed