第五十二个知识点:选择一个先进的应用概念,如电子投票,拍卖或多方计算。这样一个系统的大致安全需求是什么
这是我们认为每个密码学博士一年级都应该知道的52件事中的最后一件。你可能已经收集了过去的52个博客,我们希望学生知道从理论到实践的各个方面。但关键是你需要在密码学中考虑的不仅是对遵守规则的玩家的安全,还有对不遵守规则的玩家的安全。让我们从投票、拍卖和多方计算的角度来研究这个问题。
让我们先讨论一下三个应用程序的含义。
在投票中,我们根绝投票者进行一些投票方案(得票最多者当选、多选、赞成投票或其他投票)进行选择候选人。投票应该保守秘密,仅仅合法的投票者可以进行投票,每个候选人只能投一票,投票必须是有效的(例如对于一个真正的候选人),最后的结果必须是正确的,选民不能被强迫,安全要求的名单很长。
针对拍卖,我们想要拍卖应该是隐私的,我们不能信任拍卖商,那可能有很多个物品,很多个可能的最终价格,中标的投标/价格的选择将由于某种算法,最终的输出可能需要审核。
针对多方计算(这里我们指的是一个函数在一组参与方的私有输入上的计算),安全是简单的---我们希望仅仅计算得到的函数的结果可以被暴露,任何有关输入的信息不能被泄露。然而,虽然这是一个简单的目标,功能比拍卖和投票更广泛,因为我们需要为任何函数应该能够计算。
这些场景的特点是什么?
使这些操作有趣的是,我们期望坏家伙成为协议的一部分。和简单的加密方案相比,Alice和Bob发送一个消息,我们期望Alice和Bob都是可信任的,坏家伙只能在协议外围观看。针对投票、拍卖和多方计算,我们不能信任任何人,坏人可能是一个试图投多张票的投票人,一个试图数错票数的计票人,一个试图出价并不是最高的得标人,或者一个试图计算出未中标者的价值的拍卖人等等。
协议中的各方甚至不需要遵守规则,即遵循协议。它们可以发送生成不正确但“看起来像”有效的消息,但随后会为协议生成不正确的结果。我们需要防范这种所谓的“恶意”行为。
可能会有一群坏人一起合作来击败这个系统,我们需要确定在我们的协议中我们能容忍多大的坏人联盟。在MPC中,诚实多数和不诚实多数是有很大区别的。对于诚实多数协议,我们可以确保诚实的一方总是以有效的函数输出结束。对于不诚实的多数协议,我们不能阻止不诚实的一方终止每个人的协议。
我们需要防止谁先谁后的问题。有一个单词叫做“公平”。例如,假设我们有三个投票人;A、B和C。假设投票是加密的,玩家C可以通过复制A的投票来确保被A投票支持的候选人获胜(从而找出被A投票支持的人)。这应该被阻止起来。
敌手可能在协议开始时控制一组参与方,即所谓的静态敌手。或者,随着协议的推进,对手可能会决定要腐败哪个政党,也就是所谓的适应性敌手。
可以看到,在这样的高级协议中可能存在大量的安全问题,而且确实存在大量的安全结果。实际上,每个应用程序域都会产生不同的安全属性。考虑到可能的应用协议的广泛范围,这意味着密码学要解决的一系列问题永远不会结束。
因此,密码学博士生要解决的问题层出不穷。