[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:02.95,Default,,0000,0000,0000,,在我们开始应用密码学之前,我想说说 Dialogue: 0,0:00:02.95,0:00:06.49,Default,,0000,0000,0000,,什么是密码学,以及密码学应用的不同领域。 Dialogue: 0,0:00:06.49,0:00:10.49,Default,,0000,0000,0000,,密码学的核心当然是安全的通信,它 Dialogue: 0,0:00:10.49,0:00:14.54,Default,,0000,0000,0000,,由两部分组成。第一部分是安全密钥构造,第二是当我们 Dialogue: 0,0:00:14.54,0:00:18.70,Default,,0000,0000,0000,,有了共享密钥后,如何进行安全通信。我们已经说过, Dialogue: 0,0:00:18.70,0:00:22.85,Default,,0000,0000,0000,,安全密钥构造方法是 Alice和Bob相互发送消息, Dialogue: 0,0:00:22.85,0:00:26.91,Default,,0000,0000,0000,,在协议结束时,他们能获得同一的 Dialogue: 0,0:00:26.91,0:00:30.91,Default,,0000,0000,0000,,共享密钥 K。而除此之外, Dialogue: 0,0:00:30.91,0:00:35.27,Default,,0000,0000,0000,,Alice会知道她确实是在跟Bob说话,而Bob也确定和他对话的 Dialogue: 0,0:00:35.27,0:00:39.96,Default,,0000,0000,0000,,是Alice。而攻击者就算可以窃听他们的会话,也不知道 Dialogue: 0,0:00:39.96,0:00:44.01,Default,,0000,0000,0000,,共享密钥是什么。这些我将在以后的课程中详细介绍。当他们 Dialogue: 0,0:00:44.01,0:00:47.66,Default,,0000,0000,0000,,拥有了共享密钥,他们就希望能通过密钥加密,从而安全通信 Dialogue: 0,0:00:47.66,0:00:51.70,Default,,0000,0000,0000,,我们将谈论能使他们这样做的加密方法, Dialogue: 0,0:00:51.70,0:00:55.49,Default,,0000,0000,0000,,并且攻击者无法得知传输的消息。 Dialogue: 0,0:00:55.49,0:00:59.63,Default,,0000,0000,0000,,此外,如果攻击者篡改了消息,那么一定会被发现。 Dialogue: 0,0:00:59.63,0:01:03.23,Default,,0000,0000,0000,,换句话说,这些加密方案不仅仅提供了机密性,还有 Dialogue: 0,0:01:03.23,0:01:06.77,Default,,0000,0000,0000,,完整性。但加密还有许许多多别的用处。 Dialogue: 0,0:01:06.77,0:01:10.52,Default,,0000,0000,0000,,我来举几个例子吧。第一个例子,那就是 Dialogue: 0,0:01:10.52,0:01:14.47,Default,,0000,0000,0000,,所谓的 数字签名。数字签名 是 Dialogue: 0,0:01:14.47,0:01:18.89,Default,,0000,0000,0000,,是对现实世界签名的模拟。 Dialogue: 0,0:01:18.89,0:01:23.37,Default,,0000,0000,0000,,在现实世界,当签名文档时,你把名字签在文档上就行了。 Dialogue: 0,0:01:23.37,0:01:27.74,Default,,0000,0000,0000,,并且,你的签名几乎始终是相同的。也就是说, Dialogue: 0,0:01:27.74,0:01:32.16,Default,,0000,0000,0000,,你的签名有自己的特点。而在数字世界中,这不可能 Dialogue: 0,0:01:32.16,0:01:36.81,Default,,0000,0000,0000,,奏效,因为只要攻击者获得一个由我签过名的文档, Dialogue: 0,0:01:36.81,0:01:41.18,Default,,0000,0000,0000,,他就可以剪切我的签名,并粘贴到另外一些可能我并不愿意 Dialogue: 0,0:01:41.18,0:01:45.25,Default,,0000,0000,0000,,签名的文档上。所以在数字世界中,实际上我为不同文件 Dialogue: 0,0:01:45.25,0:01:49.59,Default,,0000,0000,0000,,的签名也是不同的。因此,我们要谈谈 Dialogue: 0,0:01:49.59,0:01:53.83,Default,,0000,0000,0000,,如何构建安全的数字签名,这是课程后半部分的内容。 Dialogue: 0,0:01:53.83,0:01:58.12,Default,,0000,0000,0000,,构造数字签名会非常有趣。现在我只 Dialogue: 0,0:01:58.12,0:02:02.10,Default,,0000,0000,0000,,给你们一个提示,数字签名的工作方式基本上是通过 Dialogue: 0,0:02:02.10,0:02:06.23,Default,,0000,0000,0000,,基于内容的签署函数来实现的。那么就算攻击者 Dialogue: 0,0:02:06.23,0:02:10.31,Default,,0000,0000,0000,,试图将我的签名从一个文档复制到另一个上,他也不会成功 Dialogue: 0,0:02:10.31,0:02:14.54,Default,,0000,0000,0000,,因为该签名在新文档由于内容不同, Dialogue: 0,0:02:14.54,0:02:18.53,Default,,0000,0000,0000,,是无法通过验证的。正如我所说, Dialogue: 0,0:02:18.53,0:02:22.61,Default,,0000,0000,0000,,我们将在今后的某个时间学习构造数字签名,然后再 Dialogue: 0,0:02:22.61,0:02:27.19,Default,,0000,0000,0000,,证明这样构造是安全的。密码学的 Dialogue: 0,0:02:27.19,0:02:31.10,Default,,0000,0000,0000,,另一个应用是 匿名通信。试想, Dialogue: 0,0:02:31.10,0:02:35.83,Default,,0000,0000,0000,,Alice想与聊天服务器那边的Bob交谈。并且,也许她想说 Dialogue: 0,0:02:35.83,0:02:40.38,Default,,0000,0000,0000,,诸如医疗状况这类隐私话题。她希望能匿名交谈,这样一来 Dialogue: 0,0:02:40.38,0:02:45.11,Default,,0000,0000,0000,,服务器完全不知道她是谁。实现这个有一个标准方法,叫 Dialogue: 0,0:02:45.11,0:02:49.95,Default,,0000,0000,0000,,mixnet,这将允许Alice一系列的代理最终与Bob交谈, Dialogue: 0,0:02:49.95,0:02:54.86,Default,,0000,0000,0000,,而在交谈结束后,Bob完全不清楚刚刚到底是在跟谁说话。 Dialogue: 0,0:02:54.86,0:02:59.54,Default,,0000,0000,0000,,Mixnets 基本是这样工作的:Alice将消息发送 Dialogue: 0,0:02:59.54,0:03:03.82,Default,,0000,0000,0000,,Bob时,消息通过了一系列代理服务器,这些消息通过适当的 Dialogue: 0,0:03:03.82,0:03:08.27,Default,,0000,0000,0000,,加解密后,最后传给Bob时,不仅Bob不知道谁在跟他说话, Dialogue: 0,0:03:08.27,0:03:12.72,Default,,0000,0000,0000,,那些代理服务器甚至也不清楚Alice的通话对象是Bob, Dialogue: 0,0:03:12.72,0:03:16.75,Default,,0000,0000,0000,,或者说,谁都不知道对方是谁。有趣的是,匿名通信 Dialogue: 0,0:03:16.75,0:03:20.50,Default,,0000,0000,0000,,的通道实际上是一个双向通道。换句话说, Dialogue: 0,0:03:20.50,0:03:24.74,Default,,0000,0000,0000,,虽然Bob不知道对方是谁,他仍然可以向对方做出回答, Dialogue: 0,0:03:24.74,0:03:29.15,Default,,0000,0000,0000,,而Alice也能获得这些消息。一旦我们有了匿名通信,就可以 Dialogue: 0,0:03:29.15,0:03:33.78,Default,,0000,0000,0000,,构造其他隐私的机制了。另一个例子, 匿名数字现金 Dialogue: 0,0:03:33.78,0:03:37.64,Default,,0000,0000,0000,,在现实世界中,如果我有实实在在的1美元, Dialogue: 0,0:03:37.64,0:03:42.11,Default,,0000,0000,0000,,我可以去书店,并买了一本书,而老板并不知道我是谁。 Dialogue: 0,0:03:42.11,0:03:46.88,Default,,0000,0000,0000,,问题是我们是否可以在数字世界做同样的事情呢? Dialogue: 0,0:03:46.88,0:03:50.96,Default,,0000,0000,0000,,在数字世界里,假设Alice有虚拟的1美元硬币, Dialogue: 0,0:03:50.96,0:03:55.98,Default,,0000,0000,0000,,她想要在网上书店花掉这虚拟的1美元, Dialogue: 0,0:03:55.98,0:04:00.76,Default,,0000,0000,0000,,现在,我们想做同现实世界一样,那就是 Dialogue: 0,0:04:00.76,0:04:05.54,Default,,0000,0000,0000,,当Alice用这1美元在网上书店买书时,书店也会知道她是谁。 Dialogue: 0,0:04:05.54,0:04:10.63,Default,,0000,0000,0000,,这样,我们就提供了与现实中相同的匿名服务。 Dialogue: 0,0:04:10.63,0:04:15.47,Default,,0000,0000,0000,,现在的问题是在数字世界里,Alice可以做一些邪恶的事情, Dialogue: 0,0:04:15.47,0:04:20.25,Default,,0000,0000,0000,,在她花掉这虚拟1美元之前,她可以做几份拷贝, Dialogue: 0,0:04:20.25,0:04:24.09,Default,,0000,0000,0000,,突然之间Alice就不止只有1美元了 Dialogue: 0,0:04:24.09,0:04:27.94,Default,,0000,0000,0000,,她有了3个1美元硬币,并且它们是一模一样的。 Dialogue: 0,0:04:27.94,0:04:31.83,Default,,0000,0000,0000,,没人能组织她做这样的拷贝,或者在其他网络商家 Dialogue: 0,0:04:31.83,0:04:35.82,Default,,0000,0000,0000,,花掉这拷贝的钱。所以问题是我们如何提供匿名数字现金, Dialogue: 0,0:04:35.82,0:04:39.85,Default,,0000,0000,0000,,但同时,也防止Alice做刚刚我们说过的那些事? Dialogue: 0,0:04:39.85,0:04:43.76,Default,,0000,0000,0000,,在某种意义上,有一个悖论,那就是 Dialogue: 0,0:04:43.76,0:04:47.88,Default,,0000,0000,0000,,匿名是与安全是冲突的。因为如果Alice有了匿名现金, Dialogue: 0,0:04:47.88,0:04:51.100,Default,,0000,0000,0000,,那么没人可以阻止她拷贝硬币了。而正因为 Dialogue: 0,0:04:51.100,0:04:56.24,Default,,0000,0000,0000,,现金是匿名的,我们也没有办法找出谁做出了这种欺诈行为。 Dialogue: 0,0:04:56.24,0:05:00.39,Default,,0000,0000,0000,,那我们如何解决呢?事实证明,完全是有办法的。 Dialogue: 0,0:05:00.39,0:05:04.76,Default,,0000,0000,0000,,稍后我们会详述匿名数字现金。现在只是给个提示, Dialogue: 0,0:05:04.76,0:05:09.17,Default,,0000,0000,0000,,我们可以这么做:如果 Alice 花同一枚硬币仅仅一次, Dialogue: 0,0:05:09.17,0:05:13.76,Default,,0000,0000,0000,,那么没人知道她是谁;但如果她花同一个硬币超过一次, Dialogue: 0,0:05:13.76,0:05:17.88,Default,,0000,0000,0000,,那么突然之间,她的身份就被暴露了,然后估计就会被警察 Dialogue: 0,0:05:17.88,0:05:22.10,Default,,0000,0000,0000,,请去公安局坐坐了。这就是匿名数字现金的工作方式。 Dialogue: 0,0:05:22.10,0:05:26.16,Default,,0000,0000,0000,,我们将在后面的课程中尝试实现它。 Dialogue: 0,0:05:26.16,0:05:30.22,Default,,0000,0000,0000,,另一个密码学应用是与一些抽象的协议结合的, Dialogue: 0,0:05:30.22,0:05:34.33,Default,,0000,0000,0000,,在我告诉你这是什么之前,先举两个例子。 Dialogue: 0,0:05:34.33,0:05:38.34,Default,,0000,0000,0000,,第一个例子与选举系统有关。 Dialogue: 0,0:05:38.34,0:05:42.66,Default,,0000,0000,0000,,我们有两个党,党0和党1。选民为他们心宜的党投票。 Dialogue: 0,0:05:42.66,0:05:47.10,Default,,0000,0000,0000,,在这个例子中,选民可能支持党0,也可能支持党1。 Dialogue: 0,0:05:47.10,0:05:52.31,Default,,0000,0000,0000,,就像这样...在这次选举中,党0得到了3票,而另一个当得到了 Dialogue: 0,0:05:52.31,0:05:56.59,Default,,0000,0000,0000,,2票。所以,党0在此次选举中获胜。 Dialogue: 0,0:05:56.59,0:06:01.58,Default,,0000,0000,0000,,因为一般说来得到大多数选票的党成为选举中的胜者。 Dialogue: 0,0:06:01.58,0:06:06.45,Default,,0000,0000,0000,,现在,投票的问题如下:选民希望 Dialogue: 0,0:06:06.45,0:06:11.72,Default,,0000,0000,0000,,知道哪个党得到了大部分选票,但与此同时并不会泄露 Dialogue: 0,0:06:11.72,0:06:16.80,Default,,0000,0000,0000,,具体票数。那么应该怎么做呢? Dialogue: 0,0:06:16.80,0:06:21.49,Default,,0000,0000,0000,,为了达到这个目的,我们引进“选举中心”,它将帮助我们 Dialogue: 0,0:06:21.49,0:06:26.63,Default,,0000,0000,0000,,计算票数,但不泄露其他信息。 Dialogue: 0,0:06:26.63,0:06:32.03,Default,,0000,0000,0000,,参与竞选的党派将把票数通过加密送入竞选中心, Dialogue: 0,0:06:32.03,0:06:36.95,Default,,0000,0000,0000,,在竞选结束后,竞选中心 Dialogue: 0,0:06:36.95,0:06:41.62,Default,,0000,0000,0000,,计算票数并宣布获胜方,而其他的所有 Dialogue: 0,0:06:41.62,0:06:46.58,Default,,0000,0000,0000,,信息都不会泄露,也就是说单独的 Dialogue: 0,0:06:46.58,0:06:51.37,Default,,0000,0000,0000,,票数仍然保密。选举中心当然也需要 Dialogue: 0,0:06:51.37,0:06:56.33,Default,,0000,0000,0000,,对选民进行验证,例如选民是否有权投票,以及 Dialogue: 0,0:06:56.33,0:07:00.82,Default,,0000,0000,0000,,是否只投了一次。但是除此之外,选举中心和 Dialogue: 0,0:07:00.82,0:07:05.48,Default,,0000,0000,0000,,其他所有人或组织都只知道选举结果。 Dialogue: 0,0:07:05.48,0:07:10.10,Default,,0000,0000,0000,,这是一种涉及六个对象的协议, Dialogue: 0,0:07:10.10,0:07:14.43,Default,,0000,0000,0000,,在这种情况下,有5个选民,1个选举中心。 Dialogue: 0,0:07:14.43,0:07:19.42,Default,,0000,0000,0000,,他们将计算选票,而在计算结束时, Dialogue: 0,0:07:19.42,0:07:24.40,Default,,0000,0000,0000,,除了得知结果,其他的一切信息,诸如个人输入都未被泄露。 Dialogue: 0,0:07:24.40,0:07:29.16,Default,,0000,0000,0000,,类似的问题也出现了私人拍卖会上。假设一个私人卖家 Dialogue: 0,0:07:29.16,0:07:34.16,Default,,0000,0000,0000,,对自己想要的商品进行竞标。 Dialogue: 0,0:07:34.16,0:07:39.36,Default,,0000,0000,0000,,拍卖机制使用的是“维克瑞拍卖”,即 Dialogue: 0,0:07:39.36,0:07:45.29,Default,,0000,0000,0000,,出价最高者是这件商品竞标的获胜者,但 Dialogue: 0,0:07:45.29,0:07:50.10,Default,,0000,0000,0000,,他只需要按第二高的出价支付。 Dialogue: 0,0:07:50.10,0:07:54.85,Default,,0000,0000,0000,,这就是所谓的“维克瑞拍卖”。 Dialogue: 0,0:07:54.85,0:08:00.03,Default,,0000,0000,0000,,现在我们想做的是,第一 Dialogue: 0,0:08:00.03,0:08:04.78,Default,,0000,0000,0000,,要弄清楚出价最高者是谁,其次这个人要支付多少钱, Dialogue: 0,0:08:04.78,0:08:09.16,Default,,0000,0000,0000,,除此之外的其他个人竞标信息都要保密。 Dialogue: 0,0:08:09.16,0:08:14.16,Default,,0000,0000,0000,,例如,出价最高的实际金额 Dialogue: 0,0:08:14.16,0:08:19.22,Default,,0000,0000,0000,,应保密,唯独要公开的是第二高的出价金额, Dialogue: 0,0:08:19.22,0:08:23.53,Default,,0000,0000,0000,,以及出价最高的人的身份。所以在此, Dialogue: 0,0:08:23.53,0:08:28.17,Default,,0000,0000,0000,,我们引进“拍卖中心”,并以和选举例子类似的方法执行,即 Dialogue: 0,0:08:28.17,0:08:32.59,Default,,0000,0000,0000,,每人将向拍卖中心发送加密的竞标书。拍卖中心将 Dialogue: 0,0:08:32.59,0:08:37.12,Default,,0000,0000,0000,,计算的获胜者身份,以及第二高的出价, Dialogue: 0,0:08:37.12,0:08:41.82,Default,,0000,0000,0000,,但除了这两个值以外,其他信息仍然保密。 Dialogue: 0,0:08:41.82,0:08:46.13,Default,,0000,0000,0000,,现在,举一个更普遍问题的例子,即 Dialogue: 0,0:08:46.13,0:08:50.26,Default,,0000,0000,0000,,安全多方计算。那么安全多方计算到底是什么呢? Dialogue: 0,0:08:50.26,0:08:54.62,Default,,0000,0000,0000,,简单地说,参与者有一个秘密输入。 Dialogue: 0,0:08:54.62,0:08:58.65,Default,,0000,0000,0000,,所以,在选举中,输入即为投票; Dialogue: 0,0:08:58.65,0:09:02.79,Default,,0000,0000,0000,,在拍卖会上,输入即为秘密的投标书。 Dialogue: 0,0:09:02.79,0:09:06.96,Default,,0000,0000,0000,,参与者希望以某种函数,以他们的输入来计算结果。 Dialogue: 0,0:09:06.96,0:09:10.84,Default,,0000,0000,0000,,在选举中,函数即为计算大多数票数,输出获胜者。 Dialogue: 0,0:09:10.84,0:09:15.09,Default,,0000,0000,0000,,在拍卖中,该函数计算第二高的金额,以及最高者金额的编号 Dialogue: 0,0:09:15.09,0:09:19.18,Default,,0000,0000,0000,,可他们该怎么做,才能只输出函数计算的值, Dialogue: 0,0:09:19.18,0:09:23.38,Default,,0000,0000,0000,,而其他信息维持保密呢? Dialogue: 0,0:09:23.38,0:09:27.68,Default,,0000,0000,0000,,一种比较呆板的、 不安全的方法是,我们引进一个 Dialogue: 0,0:09:27.68,0:09:31.77,Default,,0000,0000,0000,,可信组织。然后,这个可信组织将收集所有的个人输入。 Dialogue: 0,0:09:31.77,0:09:36.22,Default,,0000,0000,0000,,并且,它承诺对各个输入保密,也就只有它 Dialogue: 0,0:09:36.22,0:09:40.51,Default,,0000,0000,0000,,知道那些具体输入情况。最后,它计算函数的值后公布结果。 Dialogue: 0,0:09:40.51,0:09:44.74,Default,,0000,0000,0000,,这样一来,我们得到了结果,但 Dialogue: 0,0:09:44.74,0:09:48.81,Default,,0000,0000,0000,,其他信息未被泄露。当然,你必须 Dialogue: 0,0:09:48.81,0:09:52.99,Default,,0000,0000,0000,,要信任这个可信组织,如果你觉得它会搞名堂, Dialogue: 0,0:09:52.99,0:09:57.17,Default,,0000,0000,0000,,那就没用了。所以,密码学中有一个 Dialogue: 0,0:09:57.17,0:10:01.00,Default,,0000,0000,0000,,让人很吃惊的中心理论:任何你想要 Dialogue: 0,0:10:01.00,0:10:05.20,Default,,0000,0000,0000,,做的计算或者函数,如果你能把这个计算交给 Dialogue: 0,0:10:05.20,0:10:09.30,Default,,0000,0000,0000,,可信组织做,那么你也一定可以不需要可信组织来得到结果。 Dialogue: 0,0:10:09.30,0:10:13.56,Default,,0000,0000,0000,,让我在较高级别上解释这意味着什么。也就是说,我们做的 Dialogue: 0,0:10:13.56,0:10:17.82,Default,,0000,0000,0000,,任何事情都可以不要可信组织插手。所以实际上参与者不需要 Dialogue: 0,0:10:17.82,0:10:21.81,Default,,0000,0000,0000,,将输出提供给可信组织。并且,事实上,在系统中也没有 Dialogue: 0,0:10:21.81,0:10:26.01,Default,,0000,0000,0000,,什么权威组织。那些参与者需要的仅仅只是使用某种协议与 Dialogue: 0,0:10:26.01,0:10:30.57,Default,,0000,0000,0000,,其他参与者交换信息。而在结束后, Dialogue: 0,0:10:30.57,0:10:34.89,Default,,0000,0000,0000,,每个人都只知道最终结果是什么。 Dialogue: 0,0:10:34.89,0:10:39.39,Default,,0000,0000,0000,,换句话说, Dialogue: 0,0:10:39.39,0:10:43.64,Default,,0000,0000,0000,,个体的输入仍然是保密的。但在此之中也没有可信权威组织 Dialogue: 0,0:10:43.64,0:10:47.87,Default,,0000,0000,0000,,只是通过另一种方式来获得最终的输出。 Dialogue: 0,0:10:47.87,0:10:51.85,Default,,0000,0000,0000,,这是一个普遍的结果,虽然有些难以置信,但却是可行的。 Dialogue: 0,0:10:51.85,0:10:56.02,Default,,0000,0000,0000,,事实上,在课程快结束时,我们就会知道如何做啦! Dialogue: 0,0:10:56.02,0:11:00.58,Default,,0000,0000,0000,,还有一些我不能将它们归类的密码学应用, Dialogue: 0,0:11:00.58,0:11:05.56,Default,,0000,0000,0000,,但它们确实很神奇。 Dialogue: 0,0:11:05.56,0:11:10.24,Default,,0000,0000,0000,,举两个例子。第一个称之为“私下外包计算”。 Dialogue: 0,0:11:10.24,0:11:15.22,Default,,0000,0000,0000,,为了方便说明,就以谷歌搜索为例子吧。 Dialogue: 0,0:11:15.22,0:11:20.33,Default,,0000,0000,0000,,假设Alice有一串搜索关键词想要查询, Dialogue: 0,0:11:20.33,0:11:25.43,Default,,0000,0000,0000,,并且有一些特殊的加密方案使得她可以将加密的查询 Dialogue: 0,0:11:25.43,0:11:30.37,Default,,0000,0000,0000,,信息发送给谷歌。由于这种特殊加密方案的某个特性, Dialogue: 0,0:11:30.37,0:11:35.30,Default,,0000,0000,0000,,谷歌可以基于这些加过密的信息计算搜索,而无需知道 Dialogue: 0,0:11:35.30,0:11:40.37,Default,,0000,0000,0000,,原始的文本是什么。也就是说,谷歌可以基于加密的信息,运 Dialogue: 0,0:11:40.37,0:11:44.90,Default,,0000,0000,0000,,运行其大规模的搜索算法,并得到加密的结果。之后,谷歌将 Dialogue: 0,0:11:44.90,0:11:49.24,Default,,0000,0000,0000,,发送加密的结果给Alice,Alice解密信息后得到查询的结果。 Dialogue: 0,0:11:49.24,0:11:53.69,Default,,0000,0000,0000,,神奇的地方在于,谷歌只知道加过密的查询内容, Dialogue: 0,0:11:53.69,0:11:57.49,Default,,0000,0000,0000,,所以,谷歌也不知道什么Alice到底想要搜索什么, Dialogue: 0,0:11:57.49,0:12:01.67,Default,,0000,0000,0000,,以及Alice到底得到了什么结果。 Dialogue: 0,0:12:01.67,0:12:05.81,Default,,0000,0000,0000,,这些就是神奇的加密方案。 Dialogue: 0,0:12:05.81,0:12:09.98,Default,,0000,0000,0000,,它们是最近才发展的,大约从两年或三年前开始。 Dialogue: 0,0:12:09.98,0:12:14.44,Default,,0000,0000,0000,,它使我们能够计算加密的数据,即使我们不知道 Dialogue: 0,0:12:14.44,0:12:18.67,Default,,0000,0000,0000,,加密的内容是什么。现在,在你飘飘然之前想想如何实现。 Dialogue: 0,0:12:18.67,0:12:22.47,Default,,0000,0000,0000,,虽然现在来说只是理论, Dialogue: 0,0:12:22.47,0:12:26.42,Default,,0000,0000,0000,,也许到那谷歌实现这个技术的那一天还要很久很久, Dialogue: 0,0:12:26.42,0:12:30.52,Default,,0000,0000,0000,,但尽管如此,这个方案可行的事实已经令人无比兴奋了, Dialogue: 0,0:12:30.52,0:12:34.47,Default,,0000,0000,0000,,并且,就一些相对简单的计算而言,它是非常有用的。 Dialogue: 0,0:12:34.47,0:12:38.67,Default,,0000,0000,0000,,事实上,我们将在稍后看到一些这样的应用。另外一个神奇的 Dialogue: 0,0:12:38.67,0:12:42.47,Default,,0000,0000,0000,,应用,是所谓的“零知识”。 Dialogue: 0,0:12:42.47,0:12:46.08,Default,,0000,0000,0000,,我先说说“零知识证明”。 Dialogue: 0,0:12:46.08,0:12:50.18,Default,,0000,0000,0000,,假设Alice知道一个确定的数N, Dialogue: 0,0:12:50.18,0:12:54.17,Default,,0000,0000,0000,,数字 N 是由两个大素数构造的。试想一下, Dialogue: 0,0:12:54.17,0:12:58.84,Default,,0000,0000,0000,,我们有两个素数 P 和 Q。它们很大很大,比如一千位。 Dialogue: 0,0:12:58.84,0:13:03.89,Default,,0000,0000,0000,,我们知道两个1000位的数字想成很容易。 Dialogue: 0,0:13:03.89,0:13:08.24,Default,,0000,0000,0000,,但如果我给你一个乘积的结果,让你把它分解为两个质数, Dialogue: 0,0:13:08.24,0:13:12.43,Default,,0000,0000,0000,,其实是相当困难的。事实上,我们要利用因数难分解的特点, Dialogue: 0,0:13:12.43,0:13:16.57,Default,,0000,0000,0000,,来构造公共密钥的密码系统,这个我们将在课程后半部分讲到 Dialogue: 0,0:13:16.57,0:13:20.97,Default,,0000,0000,0000,,现在,Alice有此数字 N,并且她也知道的构成N的因子。 Dialogue: 0,0:13:20.97,0:13:24.90,Default,,0000,0000,0000,,而Bob只知道数字N,他不知道构成N的因子是什么。 Dialogue: 0,0:13:24.90,0:13:28.72,Default,,0000,0000,0000,,现在就是见证奇迹的时刻:根据“零知识证明”, Dialogue: 0,0:13:28.72,0:13:33.14,Default,,0000,0000,0000,,Alice可以向Bob证明她知道的 N 的因子, Dialogue: 0,0:13:33.14,0:13:37.46,Default,,0000,0000,0000,,Bob也可以做一些验证,证实Alice没有骗他, Dialogue: 0,0:13:37.46,0:13:42.39,Default,,0000,0000,0000,,最终,Bob却只知道N的值是什么,不知道因子P和Q的值。 Dialogue: 0,0:13:42.39,0:13:47.03,Default,,0000,0000,0000,,这就是可证明的。Bob绝对不知道因子P和Q的值是什么。 Dialogue: 0,0:13:47.03,0:13:50.100,Default,,0000,0000,0000,,实际上这个论证是很普遍的,一般的。 Dialogue: 0,0:13:50.100,0:13:55.28,Default,,0000,0000,0000,,它不仅仅能证明N的因式分解,还能证明你所知道的任何难题 Dialogue: 0,0:13:55.28,0:13:59.61,Default,,0000,0000,0000,,的答案都是你的知识。因此,如果 Dialogue: 0,0:13:59.61,0:14:03.83,Default,,0000,0000,0000,,你解决了字谜拼图,好吧,我承认字谜这个例子不太好。 Dialogue: 0,0:14:03.83,0:14:07.84,Default,,0000,0000,0000,,如果你解决了一个数独难题,你想证明你解决了它, Dialogue: 0,0:14:07.84,0:14:12.28,Default,,0000,0000,0000,,那么你可以证明给Bob看,虽然Bob不知道答案, Dialogue: 0,0:14:12.28,0:14:16.72,Default,,0000,0000,0000,,但却能坚信你确实知道这个数独难题的答案。 Dialogue: 0,0:14:16.72,0:14:20.93,Default,,0000,0000,0000,,看看,密码学的这个应用神奇吧! Dialogue: 0,0:14:20.93,0:14:25.00,Default,,0000,0000,0000,,最后我想说,现代密码学是一个非常 Dialogue: 0,0:14:25.00,0:14:29.02,Default,,0000,0000,0000,,严谨的科学。事实上,我们描述的每个概念都将 Dialogue: 0,0:14:29.02,0:14:33.13,Default,,0000,0000,0000,,严格的按照三个步骤,我们将反反复复地遵循这三个步骤 Dialogue: 0,0:14:33.13,0:14:37.34,Default,,0000,0000,0000,,所以我想要解释它们是什么。首先, Dialogue: 0,0:14:37.34,0:14:41.49,Default,,0000,0000,0000,,象介绍什么是数字签名那样, Dialogue: 0,0:14:41.49,0:14:45.54,Default,,0000,0000,0000,,我们先说说什么是威胁模型。数字签名中的威胁模型是攻击者 Dialogue: 0,0:14:45.54,0:14:49.53,Default,,0000,0000,0000,,如何对数字签名发动攻击,以及攻击者为什么要伪造签名? Dialogue: 0,0:14:49.53,0:14:53.85,Default,,0000,0000,0000,,对于数字签名这个例子,我们一定要了解,签名必须是 Dialogue: 0,0:14:53.85,0:14:57.76,Default,,0000,0000,0000,,无法伪造的。三个步骤是, Dialogue: 0,0:14:57.76,0:15:01.100,Default,,0000,0000,0000,,对于每一个基元,我们要描述需要 Dialogue: 0,0:15:01.100,0:15:06.46,Default,,0000,0000,0000,,精确定义的威胁模型是什么。接着,提出一种方案。 Dialogue: 0,0:15:06.46,0:15:10.93,Default,,0000,0000,0000,,再证明在特定威胁模型条件下,任何攻击者都能攻击这个方案 Dialogue: 0,0:15:10.93,0:15:15.96,Default,,0000,0000,0000,,一旦攻击者成功了,那么攻击者也可以解决相对应的一些 Dialogue: 0,0:15:15.96,0:15:20.15,Default,,0000,0000,0000,,根本的复杂的难题。如果难题够复杂攻击者无法破解, Dialogue: 0,0:15:20.15,0:15:24.35,Default,,0000,0000,0000,,那么也就证明了在这个威胁模型下没有攻击者能破解这个方案 Dialogue: 0,0:15:24.35,0:15:27.84,Default,,0000,0000,0000,,以上的三个步骤实际上相当重要。就签名这个例子而言, Dialogue: 0,0:15:27.84,0:15:31.93,Default,,0000,0000,0000,,我们要定义数字签名意味着什么,那就是不可伪造性。 Dialogue: 0,0:15:31.93,0:15:35.91,Default,,0000,0000,0000,,接着给出一个方案,并指出任何一个可以破解我们的方案 Dialogue: 0,0:15:35.91,0:15:39.80,Default,,0000,0000,0000,,的人都能解决因子整数分解,而因子整数分解被普遍认为 Dialogue: 0,0:15:39.80,0:15:43.54,Default,,0000,0000,0000,,是一个很难的问题。在今后,我们将遵循这三个步骤, Dialogue: 0,0:15:43.54,0:15:47.33,Default,,0000,0000,0000,,就能得到证明的结果了。这些就是本节的内容。 Dialogue: 0,0:15:47.33,0:15:51.22,Default,,0000,0000,0000,,在下一节,我们将谈谈 密码学的历史。 Dialogue: 0,0:15:51.22,0:15:52.01,Default,,0000,0000,0000,,End