跳到主要内容

安全

A-Level 计算机科学 · 第 17 主题

训练
讲义 词汇表
17.1

加密、加密协议与数字证书

大纲
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

来源:剑桥国际大纲

加密(encryption)用一个依赖于密钥(key)的数学运算,把可读的明文(plaintext)变成不可读的密文(ciphertext)。只有有正确密钥的人才能逆转它——解密(decryption)——以取回明文。一个没有密钥就截获密文的攻击者只看到无意义的数据,因为尝试每一个可能的密钥会花太长的时间。一个较新的方法,量子密码学(quantum cryptography),用量子物理以一种揭示任何窃听者的方式共享一个密钥。

带键盘和转子的 Enigma 密码机
Enigma 机在第二次世界大战中加密消息——一个早期的机械密码设备
明文经过一个带加密密钥的加密算法变成密文,穿过互联网,然后一个带解密密钥的解密算法变回明文
加密用一个密钥打乱明文;解密逆转它

Symmetric encryption

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

对称加密在两端用同一个密钥,它必须被秘密地共享
对称加密在两端用同一个秘密密钥

Asymmetric encryption (public-key)

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

Tom 和 Meera 各有一个要共享的公钥和一个保密的私钥;Meera 把她的公钥发给 Tom
每个用户有一个要共享的公钥和一个要保密的私钥

要给 Alice 发一个秘密消息:取她公布的公钥、用它加密,并发送。只有 Alice——持有匹配的私钥——能解密。不需要事先的密钥交换。权衡是它比对称慢得多,所以它不用于大数据。

一个私钥必须保密,所以它有时被保存在一个小的硬件安全密钥(hardware security key)上。你插入它或轻触它来证明你是谁,而这个秘密密钥从不离开设备。

一个白色背景上的黑色硬件安全密钥,中间一个圆形的金色触摸传感器,一端一个金色的 USB 连接器
一个硬件安全密钥存储一个秘密密钥来证明你是谁

Hybrid approach (used by almost every real system)

用非对称加密来交换一个新鲜的会话密钥(session key),然后对数据用那个对称密钥:

  1. 客户端制作一个随机会话密钥。
  2. 它用服务器的公钥加密会话密钥。
  3. 服务器用它的私钥解密它。
  4. 两端现在共享会话密钥,并对其余部分用快速的对称加密。

这就是 HTTPS 和 SSH 工作的方式。

客户端用服务器的公钥加密一个会话密钥并发送它;只有服务器的私钥能打开它;然后两端用共享的会话密钥用快速的对称加密
混合方法:非对称密码学一次性共享一个会话密钥,然后快速的对称加密保护数据

Hashing (related, not encryption)

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

一个密码散列把输入 hello 映射到一个摘要,把改了一个字母的输入 hellp 映射到一个完全不同的摘要;散列不能被逆转
一个密码散列给出一个固定的摘要;一个微小的输入改变会完全改变它,而它不能被逆转
探索

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 握手的概要:

  1. 客户端连接并提议密码选项。
  2. 服务器挑一个并发送它的数字证书(带它的公钥)——颁发和验证这些证书是数字认证
  3. 客户端检查该证书。
  4. 两端用非对称密码学交换一个新鲜的会话密钥(session key)。
  5. 所有后续流量用会话密钥用快速的对称加密。

结果是一个为更高层协议(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 标识、用户 id、数字签名和其他信息
一个证书颁发机构颁发一个把一个身份绑定到一个公钥的数字证书

要验证一个证书,客户端(它持有一个受信任的根 CA 列表):

  1. 检查过期日期。
  2. 检查主体名匹配 URL。
  3. 检查它由一个受信任的 CA 签名,用 CA 的公钥来验证签名。
  4. 沿证书链往上一直到一个受信任的根。

若任何一项失败,浏览器显示"你的连接不是私密的"警告。当它干净地验证时,客户端知道身份被一个受信任的 CA 审核过、公钥真的属于那个身份,而证书是当前的。

词汇表 训练
英文 中文 拼音
digital certificate 数字证书 shù zì zhèng shū
Certificate Authority 证书颁发机构 zhèng shū bān fā jī gòu
17.1

数字签名

一个数字签名(digital signature)证明谁签了一个消息以及它没有被改变。要签名:

  1. 计算消息的一个密码散列。
  2. 用发送方的私钥加密该散列——那就是签名。
  3. 发送消息和签名。

要验证:计算收到的消息的散列;用发送方的公钥解密签名以得到发送方的散列;比较。若它们匹配,消息被私钥的持有者签名(身份验证(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 的数字证书证明身份。
  • 解释一个数字签名:把消息散列,然后用私钥加密该散列——它证明完整性和来源。

本主题的互动课程

逐步学习,并即时检测练习。

A-Level 计算机科学历年真题

A-Level 计算机科学的更多主题

登录或创建账号

IGCSE, A-Level & AP