| Candidates should be able to: | Notes and guidance |
|---|---|
| Show understanding of how encryption works | Including the use of public key, private key, plain text, cipher text, encryption, symmetric key cryptography and asymmetric key cryptography How the keys can be used to send a private message from the public to an individual/organisation How the keys can be used to send a verified message to the public How data is encrypted and decrypted, using symmetric and asymmetric cryptography Purpose, benefits and drawbacks of quantum cryptography |
| Show awareness of the Secure Socket Layer (SSL) / Transport Layer Security (TLS) | Purpose of SSL/TLS Use of SSL/TLS in client-server communication Situations where the use of SSL/TLS would be appropriate |
| Show understanding of digital certification | How a digital certificate is acquired How a digital certificate is used to produce digital signatures |
安全
A-Level 计算机科学 · 第 17 主题
17.1
加密、加密协议与数字证书
大纲
来源:剑桥国际大纲
加密(encryption)用一个依赖于密钥(key)的数学运算,把可读的明文(plaintext)变成不可读的密文(ciphertext)。只有有正确密钥的人才能逆转它——解密(decryption)——以取回明文。一个没有密钥就截获密文的攻击者只看到无意义的数据,因为尝试每一个可能的密钥会花太长的时间。一个较新的方法,量子密码学(quantum cryptography),用量子物理以一种揭示任何窃听者的方式共享一个密钥。


Symmetric encryption
对称加密(symmetric encryption,对称密钥密码学)对加密和解密都用同一个密钥,所以发送方和接收方必须都持有这个秘密密钥。它快,适合大批数据(整个磁盘、一个视频流)。它的问题是密钥分发(key distribution):你一开始怎么安全地共享密钥?非对称加密解决这个。

Asymmetric encryption (public-key)
非对称加密(asymmetric encryption,非对称密钥密码学)给每个用户一对相关的密钥:一个他们公布的公钥(public key),和一个他们保密的私钥(private key)。用公钥加密的数据只能用匹配的私钥解密,反之亦然。

要给 Alice 发一个秘密消息:取她公布的公钥、用它加密,并发送。只有 Alice——持有匹配的私钥——能解密。不需要事先的密钥交换。权衡是它比对称慢得多,所以它不用于大数据。
一个私钥必须保密,所以它有时被保存在一个小的硬件安全密钥(hardware security key)上。你插入它或轻触它来证明你是谁,而这个秘密密钥从不离开设备。

Hybrid approach (used by almost every real system)
用非对称加密来交换一个新鲜的会话密钥(session key),然后对数据用那个对称密钥:
- 客户端制作一个随机会话密钥。
- 它用服务器的公钥加密会话密钥。
- 服务器用它的私钥解密它。
- 两端现在共享会话密钥,并对其余部分用快速的对称加密。
这就是 HTTPS 和 SSH 工作的方式。

Hashing (related, not encryption)
一个密码散列(cryptographic hash)函数取任何输入并给出一个固定大小的摘要(digest),使得同样的输入总是给出同样的摘要、找到两个有同样摘要的输入是不可行的,而输入中一个微小的改变会完全改变摘要。散列是单向的——你不能取回输入。它被用于存储密码检查、完整性(integrity)检查和数字签名。

Hashing and the avalanche effect
A hash is one-way: easy to compute, practically impossible to reverse. A tiny change in the input flips a large, unpredictable part of the output — the avalanche effect that makes hashes good for passwords.
The Caesar cipher
Shift each letter to encrypt the message. A simple cipher shows the idea of a key — and why a small key is easy to break.
| 英文 | 中文 | 拼音 |
|---|---|---|
| encryption | 加密 | jiā mì |
| plaintext | 明文 | míng wén |
| ciphertext | 密文 | mì wén |
| decryption | 解密 | jiě mì |
| symmetric encryption | 对称加密 | duì chèn jiā mì |
| key distribution | 密钥分发 | mì yào fēn fā |
| asymmetric encryption | 非对称加密 | fēi duì chèn jiā mì |
| public key | 公钥 | gōng yào |
| private key | 私钥 | sī yào |
| hardware security key | 硬件安全密钥 | yìng jiàn ān quán mì yào |
| session key | 会话密钥 | huì huà mì yào |
| cryptographic hash | 密码散列 | mì mǎ sàn liè |
| digest | 摘要 | zhāi yào |
| integrity | 完整性 | wán zhěng xìng |
| quantum cryptography | 量子密码学 | liàng zǐ mì mǎ xué |
17.1
SSL / TLS
TLS(传输层安全,Transport Layer Security,安全套接层(Secure Socket Layer,SSL)的后继者)是一个为通过一个网络发送的数据提供加密和身份验证的协议。它加密传输中的数据、用一个证书认证服务器,并提供完整性(检测篡改)。
一次 TLS 握手的概要:
- 客户端连接并提议密码选项。
- 服务器挑一个并发送它的数字证书(带它的公钥)——颁发和验证这些证书是数字认证。
- 客户端检查该证书。
- 两端用非对称密码学交换一个新鲜的会话密钥(session key)。
- 所有后续流量用会话密钥用快速的对称加密。
结果是一个为更高层协议(HTTP、SMTP)加密、认证、完整性检查的隧道。它在任何发送敏感信息的地方都适用:HTTPS 网络浏览、网上银行和支付、安全电子邮件,以及 VPN。
The TLS handshake
Step through what happens before a padlock appears. The slow public-key crypto is used only to agree a shared key; the actual page then travels under fast symmetric encryption.
| 英文 | 中文 | 拼音 |
|---|---|---|
| TLS | 传输层安全 | chuán shū céng ān quán |
17.1
数字证书
一个数字证书(digital certificate)把一个身份(一个域、一个组织)绑定到一个公钥,并由一个受信任的证书颁发机构(Certificate Authority,CA)签名。它包含主体(它标识谁)、主体的公钥、颁发者(CA)、一个有效期,以及 CA 对所有这些的签名。

要验证一个证书,客户端(它持有一个受信任的根 CA 列表):
- 检查过期日期。
- 检查主体名匹配 URL。
- 检查它由一个受信任的 CA 签名,用 CA 的公钥来验证签名。
- 沿证书链往上一直到一个受信任的根。
若任何一项失败,浏览器显示"你的连接不是私密的"警告。当它干净地验证时,客户端知道身份被一个受信任的 CA 审核过、公钥真的属于那个身份,而证书是当前的。
| 英文 | 中文 | 拼音 |
|---|---|---|
| digital certificate | 数字证书 | shù zì zhèng shū |
| Certificate Authority | 证书颁发机构 | zhèng shū bān fā jī gòu |
17.1
数字签名
一个数字签名(digital signature)证明谁签了一个消息以及它没有被改变。要签名:
- 计算消息的一个密码散列。
- 用发送方的私钥加密该散列——那就是签名。
- 发送消息和签名。
要验证:计算收到的消息的散列;用发送方的公钥解密签名以得到发送方的散列;比较。若它们匹配,消息被私钥的持有者签名(身份验证(authentication))且没有被改变(完整性)。一个签名不隐藏消息——要同时保密,就既加密又签名。

Putting it together
一个到 https://www.bank.com 的安全请求:服务器发送它的证书;客户端对照受信任的 CA 验证它;客户端用服务器的公钥来交换一个会话密钥;然后数据用那个密钥加密流动。加密阻止窃听者,证书证明服务器的身份,而完整性检查阻止一个中间人攻击(man-in-the-middle)篡改数据。
例题。 Alice 给 Bob 发送一份合同。她希望 Bob 能确信这份合同来自她本人且未被篡改,并且希望别人都读不到它。她要用哪些密钥?方向如何?这是两件不同的事,需要两对不同的密钥。用于签名(身份验证与完整性):Alice 对合同做哈希,并用她自己的私钥加密这个哈希值;Bob 用 Alice 的公钥解密它,再与自己对该消息算出的哈希值比对。只有 Alice 持有她的私钥,所以只有她能生成它。用于机密性:Alice 用 Bob 的公钥加密合同本身,这样只有 Bob 的私钥才能打开它。有一条规则能把这四者理清:用自己的私钥签名,用接收方的公钥加密。只有签名本身并不能隐藏消息内容。
| 英文 | 中文 | 拼音 |
|---|---|---|
| digital signature | 数字签名 | shù zì qiān míng |
| authentication | 身份验证 | shēn fèn yàn zhèng |
| man-in-the-middle | 中间人攻击 | zhōng jiān rén gōng jī |
17.1
考试技巧
- 区分对称加密(一个共享密钥,快)和非对称(一个公钥/私钥对)。
- 解释 TLS 握手以及为什么一个来自 CA 的数字证书证明身份。
- 解释一个数字签名:把消息散列,然后用私钥加密该散列——它证明完整性和来源。
本主题的互动课程
逐步学习,并即时检测练习。