跳到主要内容

安全

A-Level 计算机科学 · 知识点 17

本主题的视频课程 打开视频页面
13:16

加密如何工作

看看你浏览器地址栏中的锁图标。你输入了银行名称,不知何故你的笔记本电脑现在确信它真的在与银行通信——而且……

英语旁白 · 英中内嵌字幕

17.1

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

教学大纲
考生应能: 注释与指导
展示对 加密 工作原理的理解 包括 公钥、私钥、明文、密文、加密、对称密钥密码学 和 非对称密钥密码学 的使用。说明如何利用密钥将私人消息从公众发送给特定个人/组织;说明如何利用密钥向公众发送经过验证的消息;说明如何使用对称和非对称密码学对数据进行加密和解密。量子密码学 的目的、优点和缺点
了解 安全套接字层 (SSL) / 传输层安全 (TLS) SSL/TLS 的用途;在客户端-服务器通信中 SSL/TLS 的应用;适合使用 SSL/TLS 的场景
展示对 数字认证 的理解 数字证书 的获取方式;如何利用 数字证书 生成 数字签名

来源:Cambridge International 教学大纲

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

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

对称加密

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

"描述对称密钥加密是什么意思"(两分)。 用同一个密钥加密明文和解密密文,所以密钥必须在发送方和接收方之间共享,并对其他所有人保密。两个缺点。 发送消息之前密钥必须先交换,若它在传输中被截获,截获者就能读所有消息;每一对通信者都需要单独的密钥;而且它不能证明消息是谁发的,因为两端持有同一个密钥。"给出使用密钥密码学的两个理由":使数据对截获它的任何人不可读(机密性);使接收方能确信数据来自声称的发送方且未被篡改(真实性和完整性(integrity))。两种方法是对称和非对称密钥密码学。

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

非对称加密(公钥)

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

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

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

"说明私钥是什么意思。" 只有其拥有者知道(决不传输)的密钥,用于解密用配对公钥加密的数据,以及创建数字签名。 "描述非对称加密的过程"(四分):(1) 接收方生成一对密钥,一个公钥和一个私钥,在数学上相关;(2) 公钥提供给任何想发送给他们的人;(3) 发送方用接收方的公钥加密明文;(4) 密文只能用接收方的私钥解密,而私钥从不离开接收方,所以截获消息的人都读不了。

例题。 Fred 想给 Sheila 发一份机密文件。解释如何使用非对称加密。

Sheila 有一对密钥;她把她的公钥发给 Fred(或者他从她的证书获取)。Fred 用 Sheila 的公钥加密文件并发送密文。只有 Sheila 的私钥能解密它,而只有 Sheila 持有私钥,所以其他任何人,包括加密之后的 Fred,都读不了这份文件。密钥按接收方的方式使用:她的公钥上锁,她的私钥开锁。持有一对密钥"用于接收安全传输"的组织正是这样做的:公布公钥,保留私钥,解密收到的东西。

对称与非对称加密的两个区别。 对称加密两个方向用一个密钥;非对称加密用两个相关的密钥,一个加密另一个解密。对称加密中密钥必须由双方保密并安全交换;非对称加密中公钥可以公开,只有私钥保密。对称加密快得多,适合大量数据;非对称较慢,所以用于密钥和签名而不是批量数据。

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

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

混合方法(几乎每个真实系统都用)

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

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

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

考试版的密钥交换问题。 "在发送消息之前要交换一个对称密钥。解释如何安全地交换该密钥。"发送方用接收方的公钥加密对称密钥并发送;接收方用自己的私钥解密;双方现在都持有这个从未在传输中暴露的对称密钥,并用它处理消息。非对称加密解决分发问题;对称加密再做快速的工作。

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

散列(相关,不是加密)

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

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

量子密码学

量子密码学(quantum cryptography)用光的物理来分发密钥:密钥的各位作为光子发送,其量子态编码取值。"描述它的目的":以能检测到任何截获企图的方式安全地传输加密密钥,因为测量光子会改变它的状态;窃听者(eavesdropper)因此会留下证据,被破坏的密钥被丢弃并发送新的。优点:截获总能被检测;密钥不能在不被改变的情况下复制;它对未来计算能力的进步是安全的(数学密钥终究能被破解,量子密钥不被扰动就无法读取)。缺点:需要专门的、昂贵的设备;只在专用光纤(或视距)上有限的距离内工作,不能跨越现有互联网;它只分发密钥,消息仍由普通加密保护;而且它是一项新技术,供应商少、经验少。

探索

哈希与雪崩效应

一个哈希是单向的:容易计算,实际上不可能逆转。输入中的一个微小改变翻转输出的一大部分、不可预测的部分——使哈希对密码有用的雪崩效应。

探索

凯撒密码

移位每个字母以加密消息。一个简单的密码展示了密钥的概念——以及为什么小密钥容易被破解。

词汇 训练
English 中文 拼音
encryption/enˈkrɪpʃn/ 加密 jiā mì
plaintext/ˈpleɪntekst/ 明文 míng wén
ciphertext/ˈsaɪfətekst/ 密文 mì wén
decryption/dɪˈkrɪpʃn/ 解密 jiě mì
quantum cryptography/ˈkwɒntəm krɪpˈtɒɡrəfi/ 量子密码学 liàng zǐ mì mǎ xué
eavesdropper/ˈiːvzdrɒpə/ 窃听者 qiè tīng zhě
symmetric encryption/sɪˈmetrɪk enˈkrɪpʃn/ 对称加密 duì chèn jiā mì
key distribution/kiː ˌdɪstrɪˈbjuːʃn/ 密钥分发 mì yào fēn fā
asymmetric encryption/ˌeɪsɪˈmetrɪk enˈkrɪpʃn/ 非对称加密 fēi duì chèn jiā mì
integrity/ɪnˈteɡrɪti/ 完整性 wán zhěng xìng
public key/ˈpʌblɪk kiː/ 公钥 gōng yào
private key/ˈpraɪvət kiː/ 私钥 sī yào
hardware security key/ˈhɑːdweə sɪˈkjʊərɪti kiː/ 硬件安全密钥 yìng jiàn ān quán mì yào
session key/ˈseʃn kiː/ 会话密钥 huì huà mì yào
cryptographic hash/ˌkrɪptəˈɡræfɪk hæʃ/ 密码散列 mì mǎ sàn liè
digest/ˈdaɪdʒest/ 摘要 zhāi yào
17.1

SSL / TLS

TLS(传输层安全,Transport Layer Security,安全套接层(Secure Socket Layer,SSL)的后继者)是一个为通过一个网络发送的数据提供加密和身份验证的协议。它加密传输中的数据、用一个证书认证服务器,并提供完整性(检测篡改)。

一次 TLS 握手的概要:

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

结果是一个为更高层协议(HTTP、SMTP)加密、认证、完整性检查的隧道。它在任何发送敏感信息的地方都适用:HTTPS 网络浏览、网上银行和支付、安全电子邮件,以及 VPN。

"描述 SSL/TLS 的目的"和"说出两个功能"。 目的是在客户端和服务器之间通过网络提供安全通信。它的功能:加密发送的数据,使其被截获也无法读取;通过数字证书认证(authenticate)服务器(也可以认证客户端),使客户端知道它在与真正的站点通话;检查数据的完整性,使传输中的改动被发现。两个适合使用的例子:网上银行和网上购物(银行卡支付);还有登录、私人电子邮件、文件传输、VoIP 和即时通讯:任何私密数据跨越互联网的交易。

组成 TLS 的两个协议。 握手(handshake)协议建立会话:商定加密算法(密码套件),用证书认证服务器,交换会话密钥。记录协议再传送数据:用会话密钥加密每条消息,加上完整性校验,交给传输层。

客户端与服务器之间的时序图:客户端请求安全连接,服务器回复它的数字证书和公钥,客户端检查证书、创建会话密钥并用服务器的公钥加密后发送,服务器用私钥解密,然后双方用对称加密通信
安全会话如何开始:证书证明服务器是谁,服务器的公钥保护会话密钥的传送,会话密钥保护此后的一切

"解释客户端–服务器通信发起时如何使用 SSL/TLS"(六分)。 (1) 客户端(浏览器)向服务器发送安全连接请求,说明它支持哪些加密方法。(2) 服务器回送它的数字证书,其中包含它的公钥。(3) 客户端检查证书有效(由受信任的证书颁发机构颁发、未过期、对应正确的域名)。(4) 客户端生成一个会话密钥,用服务器的公钥加密后发送。(5) 服务器用它的私钥解密会话密钥。(6) 双方现在都持有会话密钥,此后所有数据都用它以对称加密发送。按这个顺序给出步骤;分数在于证书、公钥、会话密钥和转到对称加密。

探索

TLS 握手

逐步走过一个挂锁出现之前发生什么。慢的公钥密码学只用来商定一个共享密钥;实际的页面然后在快速的对称加密下传输。

词汇 训练
English 中文 拼音
TLS/ˌtiː el ˈes/ 传输层安全 chuán shū céng ān quán
handshake/ˈhændʃeɪk/ 握手 wò shǒu
17.1

数字证书

一个数字证书(digital certificate)把一个身份(一个域、一个组织)绑定到一个公钥,并由一个受信任的证书颁发机构(Certificate Authority,CA)签名。它包含主体(它标识谁)、主体的公钥、颁发者(CA)、一个有效期,以及 CA 对所有这些的签名。

一个用户把一个带他们身份和公钥的请求发给一个证书颁发机构,它验证身份并颁发一个签名的数字证书,包含公钥、CA 标识、用户 id、数字签名和其他信息
一个证书颁发机构颁发一个把一个身份绑定到一个公钥的数字证书

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

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

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

"描述数字证书是什么意思"(两分)。 由证书颁发机构颁发的电子文档,验证其拥有者(个人、组织或网站)的身份,并包含拥有者的公钥。 其中的项目:**序列号;拥有者的名称(主体),对网站则是其域名;拥有者的公钥**;颁发 CA 的名称;有效期(日期);所用的签名算法;以及 CA 对整个证书的数字签名。

"解释组织如何获取数字证书"(四分)。 (1) 组织生成自己的密钥对,一个公钥和一个私钥。(2) 它向证书颁发机构发送一个包含其公钥和身份信息的请求。(3) CA 核实身份(检查申请者确实是该组织或拥有该域名)。(4) CA 创建包含公钥和身份的证书,用 CA 自己的私钥签名,并返回。(5) 组织把证书安装在服务器上,以便发送给客户端。私钥从不离开组织。

"解释为什么验证数字签名需要数字证书。" 检查签名时接收方需要发送方的公钥,并且需要确信该密钥确实属于声称的发送方;证书把公钥和身份一起提供,而且因为证书由受信任的 CA 签名,接收方可以信任这种绑定。没有它,冒名者可以用别人的名字公布一个公钥并以其名义签名。同样的道理回答"从互联网下载的程序应附带什么以证明它是真的":一个数字签名,对照发布者的证书检查。

词汇 训练
English 中文 拼音
digital certificate/ˈdɪdʒɪtl səˈtɪfɪkət/ 数字证书 shù zì zhèng shū
Certificate Authority/səˈtɪfɪkət əˈθɒrɪti/ 证书颁发机构 zhèng shū bān fā jī gòu
17.1

数字签名

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

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

要验证:计算收到的消息的散列;用发送方的公钥解密签名以得到发送方的散列;比较。若它们匹配,消息被私钥的持有者签名(身份验证(authentication))且没有被改变(完整性)。一个签名不隐藏消息——要同时保密,就既加密又签名。

发送方把消息散列成一个摘要并用他们的私钥加密它以构成签名;接收方重新散列消息并用发送方的公钥解密签名,然后比较两个摘要
签名把消息散列并用私钥加密摘要;接收方用公钥检查它

"解释数字证书在创建数字签名中的作用"(三分)。 发送方的证书由 CA 颁发,包含发送方的公钥和发送方的身份;发送方通过对消息散列并用自己的私钥加密该散列值(证书中密钥的配对密钥)来产生签名;接收方用证书中的公钥解密散列值,又因为证书把该密钥绑定到发送方,签名就证明了是谁签的。

"解释如何用数字签名验证消息"(四分)。 (1) 接收方用发送方的公钥(取自发送方的证书)解密签名,得到发送方计算的散列值。(2) 接收方用同样的散列算法对收到的消息散列。(3) 比较两个散列值。(4) 若匹配,消息来自私钥的持有者(真实)并且自签名以来未被篡改(完整性);若不同,消息被拒绝。银行家收到带签名的机密数据时正是这样做才信任它;数据本身可以另外用银行家的公钥加密以保机密。

综合起来

一个到 https://www.bank.com 的安全请求:服务器发送它的证书;客户端对照受信任的 CA 验证它;客户端用服务器的公钥来交换一个会话密钥;然后数据用那个密钥加密流动。加密阻止窃听者,证书证明服务器的身份,而完整性检查阻止一个中间人攻击(man-in-the-middle)篡改数据。

例题。 Alice 给 Bob 发送一份合同。她希望 Bob 能确信这份合同来自她本人且未被篡改,并且希望别人都读不到它。她要用哪些密钥?方向如何?这是两件不同的事,需要两对不同的密钥。用于签名(身份验证与完整性):Alice 对合同做哈希,并用她自己的私钥加密这个哈希值;Bob 用 Alice 的公钥解密它,再与自己对该消息算出的哈希值比对。只有 Alice 持有她的私钥,所以只有她能生成它。用于机密性:Alice 用 Bob 的公钥加密合同本身,这样只有 Bob 的私钥才能打开它。有一条规则能把这四者理清:用自己的私钥签名,用接收方的公钥加密。只有签名本身并不能隐藏消息内容。

词汇 训练
English 中文 拼音
digital signature/ˈdɪdʒɪtl ˈsɪɡnɪtʃə/ 数字签名 shù zì qiān míng
authentication/ɔːˌθentɪˈkeɪʃn/ 身份验证 shēn fèn yàn zhèng
authenticates/ɔːˈθentɪkeɪts/ 认证 rèn zhèng
man-in-the-middle/mæn ɪnðə ˈmɪdl/ 中间人攻击 zhōng jiān rén gōng jī
17.1

考官认可的定义

定义题按固定措辞评分。准确学会这些,只给一个答案。

术语 定义
加密 用算法和密钥把明文转换成密文,使其被截获时无法理解
明文 / 密文 原始可读的数据 / 它的加密后不可读的形式
对称密钥密码学 用同一个秘密密钥加密和解密,所以双方必须安全地共享它
非对称密钥密码学 用一对相关的密钥:公钥加密,只有配对的私钥能解密
公钥 提供给任何人的密钥,用于加密发给其拥有者的消息和验证拥有者的签名
私钥 只有拥有者知道的密钥,用于解密用公钥加密的消息和签名
SSL/TLS 在客户端和服务器之间提供安全(加密、认证、完整性校验)通信的协议
数字证书 由证书颁发机构颁发的电子文档,验证拥有者身份并包含其公钥
数字签名 用发送方私钥加密的消息散列值,证明发送者是谁以及消息未被篡改
证书颁发机构 核实身份并颁发和签署数字证书的受信任组织
量子密码学 利用光子的量子态分发密钥,使任何截获都能被检测
17.1

考试技巧

  • 对称:一个共享的秘密密钥,快,密钥交换是弱点。非对称:公钥加密、私钥解密,慢,没有交换问题。两个区别、两个缺点、两个理由:考试成对地问。
  • 机密性用接收方的密钥(公钥上锁,私钥开锁);签名用发送方的密钥(私钥签,公钥验)。每次都说清是谁的密钥。
  • TLS 的启动是六步:请求、带公钥的证书、检查、用公钥加密的会话密钥、用私钥解密、此后对称加密。
  • 证书是身份加公钥,由 CA 签名;获取过程是密钥对、请求、核实、签名、安装。验证签名需要它,因为它证明公钥是谁的。
  • 签名是用私钥加密的散列值;验证是解密、重新散列、比较。它证明的两件事是完整性和真实性。
  • 量子密码学分发密钥并检测窃听;它的限制是成本、距离和新颖。

常见错误

  • 说消息用发送方的公钥加密;是接收方的公钥加密、接收方的私钥解密。
  • 把签名描述成"用私钥加密消息"而不是加密它的散列值。
  • 声称证书包含私钥;它保存公钥和身份,由 CA 签名。
  • 在 TLS 握手中写"服务器发送它的私钥";只有公钥在证书内传输。
  • 把"SSL/TLS 使连接更快"当作功能;它的功能是加密、认证和完整性。
  • 混淆散列与加密:散列不可逆且没有密钥;加密用密钥可逆。
  • 用"为了加密它"回答"为什么签名需要证书";需要它是为了信任公钥。

该知识点的互动课程

逐步完成,配合即时检查练习。

历年真题

更多 A-Level 计算机科学 知识点

登录或创建账户

IGCSE, A-Level & AP