< Return to Video

密码学是什么? (15 分钟)

  • 0:00 - 0:03
    在我们开始应用密码学之前,我想说说
  • 0:03 - 0:06
    什么是密码学,以及密码学应用的不同领域。
  • 0:06 - 0:10
    密码学的核心当然是安全的通信,它
  • 0:10 - 0:15
    由两部分组成。第一部分是安全密钥构造,第二是当我们
  • 0:15 - 0:19
    有了共享密钥后,如何进行安全通信。我们已经说过,
  • 0:19 - 0:23
    安全密钥构造方法是 Alice和Bob相互发送消息,
  • 0:23 - 0:27
    在协议结束时,他们能获得同一的
  • 0:27 - 0:31
    共享密钥 K。而除此之外,
  • 0:31 - 0:35
    Alice会知道她确实是在跟Bob说话,而Bob也确定和他对话的
  • 0:35 - 0:40
    是Alice。而攻击者就算可以窃听他们的会话,也不知道
  • 0:40 - 0:44
    共享密钥是什么。这些我将在以后的课程中详细介绍。当他们
  • 0:44 - 0:48
    拥有了共享密钥,他们就希望能通过密钥加密,从而安全通信
  • 0:48 - 0:52
    我们将谈论能使他们这样做的加密方法,
  • 0:52 - 0:55
    并且攻击者无法得知传输的消息。
  • 0:55 - 1:00
    此外,如果攻击者篡改了消息,那么一定会被发现。
  • 1:00 - 1:03
    换句话说,这些加密方案不仅仅提供了机密性,还有
  • 1:03 - 1:07
    完整性。但加密还有许许多多别的用处。
  • 1:07 - 1:11
    我来举几个例子吧。第一个例子,那就是
  • 1:11 - 1:14
    所谓的 数字签名。数字签名 是
  • 1:14 - 1:19
    是对现实世界签名的模拟。
  • 1:19 - 1:23
    在现实世界,当签名文档时,你把名字签在文档上就行了。
  • 1:23 - 1:28
    并且,你的签名几乎始终是相同的。也就是说,
  • 1:28 - 1:32
    你的签名有自己的特点。而在数字世界中,这不可能
  • 1:32 - 1:37
    奏效,因为只要攻击者获得一个由我签过名的文档,
  • 1:37 - 1:41
    他就可以剪切我的签名,并粘贴到另外一些可能我并不愿意
  • 1:41 - 1:45
    签名的文档上。所以在数字世界中,实际上我为不同文件
  • 1:45 - 1:50
    的签名也是不同的。因此,我们要谈谈
  • 1:50 - 1:54
    如何构建安全的数字签名,这是课程后半部分的内容。
  • 1:54 - 1:58
    构造数字签名会非常有趣。现在我只
  • 1:58 - 2:02
    给你们一个提示,数字签名的工作方式基本上是通过
  • 2:02 - 2:06
    基于内容的签署函数来实现的。那么就算攻击者
  • 2:06 - 2:10
    试图将我的签名从一个文档复制到另一个上,他也不会成功
  • 2:10 - 2:15
    因为该签名在新文档由于内容不同,
  • 2:15 - 2:19
    是无法通过验证的。正如我所说,
  • 2:19 - 2:23
    我们将在今后的某个时间学习构造数字签名,然后再
  • 2:23 - 2:27
    证明这样构造是安全的。密码学的
  • 2:27 - 2:31
    另一个应用是 匿名通信。试想,
  • 2:31 - 2:36
    Alice想与聊天服务器那边的Bob交谈。并且,也许她想说
  • 2:36 - 2:40
    诸如医疗状况这类隐私话题。她希望能匿名交谈,这样一来
  • 2:40 - 2:45
    服务器完全不知道她是谁。实现这个有一个标准方法,叫
  • 2:45 - 2:50
    mixnet,这将允许Alice一系列的代理最终与Bob交谈,
  • 2:50 - 2:55
    而在交谈结束后,Bob完全不清楚刚刚到底是在跟谁说话。
  • 2:55 - 3:00
    Mixnets 基本是这样工作的:Alice将消息发送
  • 3:00 - 3:04
    Bob时,消息通过了一系列代理服务器,这些消息通过适当的
  • 3:04 - 3:08
    加解密后,最后传给Bob时,不仅Bob不知道谁在跟他说话,
  • 3:08 - 3:13
    那些代理服务器甚至也不清楚Alice的通话对象是Bob,
  • 3:13 - 3:17
    或者说,谁都不知道对方是谁。有趣的是,匿名通信
  • 3:17 - 3:20
    的通道实际上是一个双向通道。换句话说,
  • 3:20 - 3:25
    虽然Bob不知道对方是谁,他仍然可以向对方做出回答,
  • 3:25 - 3:29
    而Alice也能获得这些消息。一旦我们有了匿名通信,就可以
  • 3:29 - 3:34
    构造其他隐私的机制了。另一个例子, 匿名数字现金
  • 3:34 - 3:38
    在现实世界中,如果我有实实在在的1美元,
  • 3:38 - 3:42
    我可以去书店,并买了一本书,而老板并不知道我是谁。
  • 3:42 - 3:47
    问题是我们是否可以在数字世界做同样的事情呢?
  • 3:47 - 3:51
    在数字世界里,假设Alice有虚拟的1美元硬币,
  • 3:51 - 3:56
    她想要在网上书店花掉这虚拟的1美元,
  • 3:56 - 4:01
    现在,我们想做同现实世界一样,那就是
  • 4:01 - 4:06
    当Alice用这1美元在网上书店买书时,书店也会知道她是谁。
  • 4:06 - 4:11
    这样,我们就提供了与现实中相同的匿名服务。
  • 4:11 - 4:15
    现在的问题是在数字世界里,Alice可以做一些邪恶的事情,
  • 4:15 - 4:20
    在她花掉这虚拟1美元之前,她可以做几份拷贝,
  • 4:20 - 4:24
    突然之间Alice就不止只有1美元了
  • 4:24 - 4:28
    她有了3个1美元硬币,并且它们是一模一样的。
  • 4:28 - 4:32
    没人能组织她做这样的拷贝,或者在其他网络商家
  • 4:32 - 4:36
    花掉这拷贝的钱。所以问题是我们如何提供匿名数字现金,
  • 4:36 - 4:40
    但同时,也防止Alice做刚刚我们说过的那些事?
  • 4:40 - 4:44
    在某种意义上,有一个悖论,那就是
  • 4:44 - 4:48
    匿名是与安全是冲突的。因为如果Alice有了匿名现金,
  • 4:48 - 4:52
    那么没人可以阻止她拷贝硬币了。而正因为
  • 4:52 - 4:56
    现金是匿名的,我们也没有办法找出谁做出了这种欺诈行为。
  • 4:56 - 5:00
    那我们如何解决呢?事实证明,完全是有办法的。
  • 5:00 - 5:05
    稍后我们会详述匿名数字现金。现在只是给个提示,
  • 5:05 - 5:09
    我们可以这么做:如果 Alice 花同一枚硬币仅仅一次,
  • 5:09 - 5:14
    那么没人知道她是谁;但如果她花同一个硬币超过一次,
  • 5:14 - 5:18
    那么突然之间,她的身份就被暴露了,然后估计就会被警察
  • 5:18 - 5:22
    请去公安局坐坐了。这就是匿名数字现金的工作方式。
  • 5:22 - 5:26
    我们将在后面的课程中尝试实现它。
  • 5:26 - 5:30
    另一个密码学应用是与一些抽象的协议结合的,
  • 5:30 - 5:34
    在我告诉你这是什么之前,先举两个例子。
  • 5:34 - 5:38
    第一个例子与选举系统有关。
  • 5:38 - 5:43
    我们有两个党,党0和党1。选民为他们心宜的党投票。
  • 5:43 - 5:47
    在这个例子中,选民可能支持党0,也可能支持党1。
  • 5:47 - 5:52
    就像这样...在这次选举中,党0得到了3票,而另一个当得到了
  • 5:52 - 5:57
    2票。所以,党0在此次选举中获胜。
  • 5:57 - 6:02
    因为一般说来得到大多数选票的党成为选举中的胜者。
  • 6:02 - 6:06
    现在,投票的问题如下:选民希望
  • 6:06 - 6:12
    知道哪个党得到了大部分选票,但与此同时并不会泄露
  • 6:12 - 6:17
    具体票数。那么应该怎么做呢?
  • 6:17 - 6:21
    为了达到这个目的,我们引进“选举中心”,它将帮助我们
  • 6:21 - 6:27
    计算票数,但不泄露其他信息。
  • 6:27 - 6:32
    参与竞选的党派将把票数通过加密送入竞选中心,
  • 6:32 - 6:37
    在竞选结束后,竞选中心
  • 6:37 - 6:42
    计算票数并宣布获胜方,而其他的所有
  • 6:42 - 6:47
    信息都不会泄露,也就是说单独的
  • 6:47 - 6:51
    票数仍然保密。选举中心当然也需要
  • 6:51 - 6:56
    对选民进行验证,例如选民是否有权投票,以及
  • 6:56 - 7:01
    是否只投了一次。但是除此之外,选举中心和
  • 7:01 - 7:05
    其他所有人或组织都只知道选举结果。
  • 7:05 - 7:10
    这是一种涉及六个对象的协议,
  • 7:10 - 7:14
    在这种情况下,有5个选民,1个选举中心。
  • 7:14 - 7:19
    他们将计算选票,而在计算结束时,
  • 7:19 - 7:24
    除了得知结果,其他的一切信息,诸如个人输入都未被泄露。
  • 7:24 - 7:29
    类似的问题也出现了私人拍卖会上。假设一个私人卖家
  • 7:29 - 7:34
    对自己想要的商品进行竞标。
  • 7:34 - 7:39
    拍卖机制使用的是“维克瑞拍卖”,即
  • 7:39 - 7:45
    出价最高者是这件商品竞标的获胜者,但
  • 7:45 - 7:50
    他只需要按第二高的出价支付。
  • 7:50 - 7:55
    这就是所谓的“维克瑞拍卖”。
  • 7:55 - 8:00
    现在我们想做的是,第一
  • 8:00 - 8:05
    要弄清楚出价最高者是谁,其次这个人要支付多少钱,
  • 8:05 - 8:09
    除此之外的其他个人竞标信息都要保密。
  • 8:09 - 8:14
    例如,出价最高的实际金额
  • 8:14 - 8:19
    应保密,唯独要公开的是第二高的出价金额,
  • 8:19 - 8:24
    以及出价最高的人的身份。所以在此,
  • 8:24 - 8:28
    我们引进“拍卖中心”,并以和选举例子类似的方法执行,即
  • 8:28 - 8:33
    每人将向拍卖中心发送加密的竞标书。拍卖中心将
  • 8:33 - 8:37
    计算的获胜者身份,以及第二高的出价,
  • 8:37 - 8:42
    但除了这两个值以外,其他信息仍然保密。
  • 8:42 - 8:46
    现在,举一个更普遍问题的例子,即
  • 8:46 - 8:50
    安全多方计算。那么安全多方计算到底是什么呢?
  • 8:50 - 8:55
    简单地说,参与者有一个秘密输入。
  • 8:55 - 8:59
    所以,在选举中,输入即为投票;
  • 8:59 - 9:03
    在拍卖会上,输入即为秘密的投标书。
  • 9:03 - 9:07
    参与者希望以某种函数,以他们的输入来计算结果。
  • 9:07 - 9:11
    在选举中,函数即为计算大多数票数,输出获胜者。
  • 9:11 - 9:15
    在拍卖中,该函数计算第二高的金额,以及最高者金额的编号
  • 9:15 - 9:19
    可他们该怎么做,才能只输出函数计算的值,
  • 9:19 - 9:23
    而其他信息维持保密呢?
  • 9:23 - 9:28
    一种比较呆板的、 不安全的方法是,我们引进一个
  • 9:28 - 9:32
    可信组织。然后,这个可信组织将收集所有的个人输入。
  • 9:32 - 9:36
    并且,它承诺对各个输入保密,也就只有它
  • 9:36 - 9:41
    知道那些具体输入情况。最后,它计算函数的值后公布结果。
  • 9:41 - 9:45
    这样一来,我们得到了结果,但
  • 9:45 - 9:49
    其他信息未被泄露。当然,你必须
  • 9:49 - 9:53
    要信任这个可信组织,如果你觉得它会搞名堂,
  • 9:53 - 9:57
    那就没用了。所以,密码学中有一个
  • 9:57 - 10:01
    让人很吃惊的中心理论:任何你想要
  • 10:01 - 10:05
    做的计算或者函数,如果你能把这个计算交给
  • 10:05 - 10:09
    可信组织做,那么你也一定可以不需要可信组织来得到结果。
  • 10:09 - 10:14
    让我在较高级别上解释这意味着什么。也就是说,我们做的
  • 10:14 - 10:18
    任何事情都可以不要可信组织插手。所以实际上参与者不需要
  • 10:18 - 10:22
    将输出提供给可信组织。并且,事实上,在系统中也没有
  • 10:22 - 10:26
    什么权威组织。那些参与者需要的仅仅只是使用某种协议与
  • 10:26 - 10:31
    其他参与者交换信息。而在结束后,
  • 10:31 - 10:35
    每个人都只知道最终结果是什么。
  • 10:35 - 10:39
    换句话说,
  • 10:39 - 10:44
    个体的输入仍然是保密的。但在此之中也没有可信权威组织
  • 10:44 - 10:48
    只是通过另一种方式来获得最终的输出。
  • 10:48 - 10:52
    这是一个普遍的结果,虽然有些难以置信,但却是可行的。
  • 10:52 - 10:56
    事实上,在课程快结束时,我们就会知道如何做啦!
  • 10:56 - 11:01
    还有一些我不能将它们归类的密码学应用,
  • 11:01 - 11:06
    但它们确实很神奇。
  • 11:06 - 11:10
    举两个例子。第一个称之为“私下外包计算”。
  • 11:10 - 11:15
    为了方便说明,就以谷歌搜索为例子吧。
  • 11:15 - 11:20
    假设Alice有一串搜索关键词想要查询,
  • 11:20 - 11:25
    并且有一些特殊的加密方案使得她可以将加密的查询
  • 11:25 - 11:30
    信息发送给谷歌。由于这种特殊加密方案的某个特性,
  • 11:30 - 11:35
    谷歌可以基于这些加过密的信息计算搜索,而无需知道
  • 11:35 - 11:40
    原始的文本是什么。也就是说,谷歌可以基于加密的信息,运
  • 11:40 - 11:45
    运行其大规模的搜索算法,并得到加密的结果。之后,谷歌将
  • 11:45 - 11:49
    发送加密的结果给Alice,Alice解密信息后得到查询的结果。
  • 11:49 - 11:54
    神奇的地方在于,谷歌只知道加过密的查询内容,
  • 11:54 - 11:57
    所以,谷歌也不知道什么Alice到底想要搜索什么,
  • 11:57 - 12:02
    以及Alice到底得到了什么结果。
  • 12:02 - 12:06
    这些就是神奇的加密方案。
  • 12:06 - 12:10
    它们是最近才发展的,大约从两年或三年前开始。
  • 12:10 - 12:14
    它使我们能够计算加密的数据,即使我们不知道
  • 12:14 - 12:19
    加密的内容是什么。现在,在你飘飘然之前想想如何实现。
  • 12:19 - 12:22
    虽然现在来说只是理论,
  • 12:22 - 12:26
    也许到那谷歌实现这个技术的那一天还要很久很久,
  • 12:26 - 12:31
    但尽管如此,这个方案可行的事实已经令人无比兴奋了,
  • 12:31 - 12:34
    并且,就一些相对简单的计算而言,它是非常有用的。
  • 12:34 - 12:39
    事实上,我们将在稍后看到一些这样的应用。另外一个神奇的
  • 12:39 - 12:42
    应用,是所谓的“零知识”。
  • 12:42 - 12:46
    我先说说“零知识证明”。
  • 12:46 - 12:50
    假设Alice知道一个确定的数N,
  • 12:50 - 12:54
    数字 N 是由两个大素数构造的。试想一下,
  • 12:54 - 12:59
    我们有两个素数 P 和 Q。它们很大很大,比如一千位。
  • 12:59 - 13:04
    我们知道两个1000位的数字想成很容易。
  • 13:04 - 13:08
    但如果我给你一个乘积的结果,让你把它分解为两个质数,
  • 13:08 - 13:12
    其实是相当困难的。事实上,我们要利用因数难分解的特点,
  • 13:12 - 13:17
    来构造公共密钥的密码系统,这个我们将在课程后半部分讲到
  • 13:17 - 13:21
    现在,Alice有此数字 N,并且她也知道的构成N的因子。
  • 13:21 - 13:25
    而Bob只知道数字N,他不知道构成N的因子是什么。
  • 13:25 - 13:29
    现在就是见证奇迹的时刻:根据“零知识证明”,
  • 13:29 - 13:33
    Alice可以向Bob证明她知道的 N 的因子,
  • 13:33 - 13:37
    Bob也可以做一些验证,证实Alice没有骗他,
  • 13:37 - 13:42
    最终,Bob却只知道N的值是什么,不知道因子P和Q的值。
  • 13:42 - 13:47
    这就是可证明的。Bob绝对不知道因子P和Q的值是什么。
  • 13:47 - 13:51
    实际上这个论证是很普遍的,一般的。
  • 13:51 - 13:55
    它不仅仅能证明N的因式分解,还能证明你所知道的任何难题
  • 13:55 - 14:00
    的答案都是你的知识。因此,如果
  • 14:00 - 14:04
    你解决了字谜拼图,好吧,我承认字谜这个例子不太好。
  • 14:04 - 14:08
    如果你解决了一个数独难题,你想证明你解决了它,
  • 14:08 - 14:12
    那么你可以证明给Bob看,虽然Bob不知道答案,
  • 14:12 - 14:17
    但却能坚信你确实知道这个数独难题的答案。
  • 14:17 - 14:21
    看看,密码学的这个应用神奇吧!
  • 14:21 - 14:25
    最后我想说,现代密码学是一个非常
  • 14:25 - 14:29
    严谨的科学。事实上,我们描述的每个概念都将
  • 14:29 - 14:33
    严格的按照三个步骤,我们将反反复复地遵循这三个步骤
  • 14:33 - 14:37
    所以我想要解释它们是什么。首先,
  • 14:37 - 14:41
    象介绍什么是数字签名那样,
  • 14:41 - 14:46
    我们先说说什么是威胁模型。数字签名中的威胁模型是攻击者
  • 14:46 - 14:50
    如何对数字签名发动攻击,以及攻击者为什么要伪造签名?
  • 14:50 - 14:54
    对于数字签名这个例子,我们一定要了解,签名必须是
  • 14:54 - 14:58
    无法伪造的。三个步骤是,
  • 14:58 - 15:02
    对于每一个基元,我们要描述需要
  • 15:02 - 15:06
    精确定义的威胁模型是什么。接着,提出一种方案。
  • 15:06 - 15:11
    再证明在特定威胁模型条件下,任何攻击者都能攻击这个方案
  • 15:11 - 15:16
    一旦攻击者成功了,那么攻击者也可以解决相对应的一些
  • 15:16 - 15:20
    根本的复杂的难题。如果难题够复杂攻击者无法破解,
  • 15:20 - 15:24
    那么也就证明了在这个威胁模型下没有攻击者能破解这个方案
  • 15:24 - 15:28
    以上的三个步骤实际上相当重要。就签名这个例子而言,
  • 15:28 - 15:32
    我们要定义数字签名意味着什么,那就是不可伪造性。
  • 15:32 - 15:36
    接着给出一个方案,并指出任何一个可以破解我们的方案
  • 15:36 - 15:40
    的人都能解决因子整数分解,而因子整数分解被普遍认为
  • 15:40 - 15:44
    是一个很难的问题。在今后,我们将遵循这三个步骤,
  • 15:44 - 15:47
    就能得到证明的结果了。这些就是本节的内容。
  • 15:47 - 15:51
    在下一节,我们将谈谈 密码学的历史。
  • 15:51 - 15:52
    End
Title:
密码学是什么? (15 分钟)
Description:

语言:简体中文

more » « less
Video Language:
English
Chris Chen edited Chinese, Simplified subtitles for What is cryptography? (15 min)
Chris Chen added a translation

Chinese, Simplified subtitles

Revisions