《万店聊》是Blocklike推出的在线直播系列节目。每周都会邀请最“投入”的交流、热搜币、能聊到热门话题的大V加入群内分享讨论。
3月26日19:00,《万店聊》第25期上线。本期主题是“密码学博士带你了解零知识证明和隐私币”。本次直播由Blocklike CEO小万和上海交通大学密码学博士、Suterusu CTO黄林共同主持。
林晃博士:Suterusu CTO,拥有上海交通大学密码学博士学位和佛罗里达大学隐私保护分布式系统博士学位。他在洛桑理工学院担任博士后研究员,负责基因组数据保护和区块链数据货币化方面的应用密码学研究。后担任香港应用科技研究院副总工程师。他是几个区块链项目的PI,负责建筑和方案设计。他在几个顶级IEEE期刊和密码安全会议上发表了20多篇论文,引用次数超过1000次。
在这次直播中,黄林带我们走进了密码学的世界,普及了一些关于隐私保护的问题,零知识证明的原理,隐私币的区别等等。
以下为本期直播内容,由Blocklike (ID: iblocklike)编辑:
万:最近,主流社交媒体微博被曝泄露了大量用户隐私。“暗网出售的微博用户信息有5.38亿条,其中有1.72亿条是基本账号信息。涉及的账号信息包括用户ID、账号发布的微博数量、粉丝数量、关注人数、性别、地理位置等。”,引起社会热议。作为隐私保护专家,你认为当前社会隐私泄露的原因有哪些?隐私泄露的路径有哪些?
黄林:隐私泄露的原因可以从两个角度分析:一个是系统设计和实现上的漏洞,一个是用户在实际使用过程中的疏忽。
比如微博隐私信息泄露的情况,我所知道的是微博中的门禁系统允许用户使用本地手机通讯录搜索好友手机号码使用的账号。这种看似合理的访问控制机制,让黑客可以利用这个漏洞,通过伪造本地手机通讯录的方式,扫描账号使用的手机号码。是这个系统设计上的疏忽导致的攻击。
另外还有一些实现漏洞,比如很多安全系统使用密码算法,密码算法的实现容易出问题,比如前段时间轰动一时的针对openssl的heartbleed攻击,针对各种系统漏洞的零日攻击等等。
在实际使用中,也容易出现各种问题。比如用户可能会选择一些随机性极弱的密码,比如123456等。这个黑客很容易猜到。此外,用户为了记忆方便,可能会在多个网站使用相同的密码,这很容易导致黑客通过撞库的方式猜出相应的密码。
看似这些问题很常见,也很容易解决,但实际操作中,并不少见。连国安部门都会犯这种低级错误。比如最近泄露的CIA一个用于网络攻击的工具库,也是管理员设置的简单密码导致的,而且被成功攻击。
据报道,他们的密码是123ABCdef和mysweetsummer,所以即使是这些本该很专业的部门也会犯下如此低级的错误。
此外,黑客还经常使用各种恶意软件进行攻击,比如向用户发送带有恶意软件链接的钓鱼邮件等。很多时候,这种社会工程攻击往往利用了人类的一些弱点,因此用户需要时刻保持警惕,防止这种攻击。
万:允许本地手机通讯录搜索好友的手机号码,应该是社交平台必备的功能。会有很大的信息泄露风险吗?毕竟微博再强大的平台也会有漏洞,更别说小软件了。
黄林:是的,所以在很多情况下,系统设计可能需要在系统的可用性和安全性之间做出权衡。安全本质上是选择的艺术。
小万:隐私的重要性不言而喻,尤其是对于习惯于在大数据时代使用互联网进行生产和生活的个人和组织。但现在的情况是,公众长期以来饱受隐私泄露之苦,却对此无能为力。在你看来,我们可以采用哪些门槛更低的方法来保护个人和组织的隐私?如果隐私已经泄露,有哪些方法可以及时止损?
黄林:我认为首先要做的是防患于未然,也就是专业人员要参与系统的设计和实现,尤其是密码方案的设计和实现,比如使用经过实践反复检验的密码代码库。
这就是为什么我们强调要支持密码代码库的设计和实现,包括像Suterusu这样的项目,因为一个安全可靠的密码代码库需要优秀的密码学家和工程师的全力配合,这需要足够的资源来长期支持。
另外,从用户的角度来说,需要提高安全意识,养成良好的上网习惯。如果觉得用随机性高的密码太麻烦,也可以用一些密码管理器。当隐私信息泄露时,如微博上的账号密码,应及时重置相关隐私信息。
万:其实每个人都会有意识地保护自己的隐私,只是有时候防不胜防。比如密码管理,安全性和易记忆性也需要权衡。我也尝试过使用密码管理器,但是我担心密码管理器的安全性。林博士认为密码管理器安全吗?有没有推荐的比较安全的密码管理器?
黄林:其实有一些简单易用的密码生成和记忆方法,不一定要用密码管理器。如果我不用密码管理器,可以推荐一个由图灵奖获得者曼纽尔布鲁姆设计的随机密码生成方法。基本思路是你自己设计一个数学算法,把字母和数字对应起来。然后,你每次使用一个网站,就可以用网站URL来使用这个算法来对应数字。当然,生成的密码随机性不一定足够强,但如果你的算法本身不泄密,在实践中应该是足够的。
万:隐私币作为一种特殊的货币,侧重于隐私保护,在业内很受欢迎。作为密码学博士,如何看待隐私币?不同的隐私币有什么区别?
黄林:首先,隐私币是一个伟大的社会实验,将理论密码学应用于实践。由于这些尝试,零知识证明等非常困难的密码概念能够走出实验室,为公众所知。目前主流的使用零知识证明的隐私币主要有zcash,Monroe币,还有稍微小一点的grin和beam。
zcash使用的零知识证明需要可信初始化,攻击者可以无限制的打印zcash而不被检测到。然而,虽然门罗币目前使用的环签名方案不需要可信初始化,但签名大小与匿名集线性相关,可扩展性不是那么好。
Grin和beam都是mimblewimble协议的实现。由于mimblewimble协议本身是一种匿名性和可扩展性的折衷方案,因此在私密性方面相对较弱。上面提到的其他隐私币几乎不支持智能合约。
我们的Suterusu项目提出的匿名支付方案使得我们的隐私保护区块链协议在安全性和可扩展性之间达到了最佳平衡,即几乎恒定的证明大小,而无需可信初始化。我们的匿名支付方案还支持智能合约平台,因此可以支持一些更复杂的金融技术应用。
如果你有兴趣了解更多关于隐私币的区别,可以参考我之前写过的两篇相关文章:《去中心化隐私支付漫谈》(一文读《隐私币|去中心化隐私支付漫谈》)和一篇介绍zcash和mimblewimble的文章(隐私币Zcash不“私”,MimbleWimble简史)。
万:这里你可能需要解释另一个概念:可信初始化。
黄林:所谓可信初始化是因为这类零知识证明协议的初始化过程涉及到一些陷门知识,就像数字签名方案中的私钥一样。在签名方案中,如果你的私钥泄露给攻击者,攻击者可以生成合法的签名而不被发现。在零知识证明方案中,这种陷阱知识泄漏允许攻击者在不被检测到的情况下生成合法证明。在实际操作中,要求一个实体负责初始化过程,而这个陷阱知识必须由这个负责实体掌握,所以实际上与分散支付的思想背道而驰,也是一个巨大的安全隐患。虽然zcash试图使用安全多方计算来解决这个问题,但是安全多方计算仍然有可能引入新的安全漏洞,攻击者仍然有可能成功攻击这些多方计算的参与者,所以这并不是一个完整的解决方案。理想的零知识证明方案应该是无可信初始化的。
肖:零知识证明被认为是一种高质量的保护数据隐私的方案,但作为一种新型的科学技术,它仍然很难被公众所理解。作为零知识证明领域的前沿探索者,请深入浅出地解释一下零知识证明的原理。
林:零知识证明实际上可以看作是一种加密的数学证明。当你读完一个数学证明,正常情况下你应该会有一种擅长数学的感觉,因为你对这个定理有了新的认识。
零知识证明不一样。他的目的不是让证明者掌握新知识。他的核心目的是说服证明者,证明者知道如何证明这个命题,或者更正式地说,他已经掌握了让命题成立所需的秘密,仅此而已。
他不在乎验证者看完证明后是否掌握了新知识。事实上,零知识在这里被精确地定义为证明本身除了证明者掌握了建立命题所需的秘密之外,不揭示任何其他信息的事实。
所以零知识证明的证明往往以密文的形式出现,你可以把它看成一堆乱码。换句话说,通过阅读这些乱码,你可以相信命题成立,证明者知道如何写这个证明,但你不知道其他的。
因为零知识证明本身是以乱码的形式出现的,这时候我们就要考虑一个问题,那就是如果一个没有证明这个命题所需要的秘密的人和一个攻击者试图浑水摸鱼补数怎么办?
所以零知识证明的另一个性质,可靠性,就变得很有意义了。其目的是确保攻击者在没有掌握证明命题所需的知识或秘密的情况下,无法伪造证明。
当然,零知识证明还得考虑完备性的性质,这里暂且不展开。
一般来说,零知识证明可以看作是数字签名和加密的推广和结合。零知识的性质实际上与加密方案要求的保密性有一定的对应关系。加密方案的保密性确保加密的密文不会泄露加密的明文的任何有用信息。零知识的性质通常用于隐私币中保证隐私。
可靠性可以看作是数字签名方案不可伪造性在一般命题上的概括。在数字签名方案中,没有签名密钥的用户不能伪造签名,这被称为不可伪造性。零知识证明的可靠性常用在隐私币中,以保证只有当用户拥有隐私币对应的秘密时,才能成功消费对应的货币。
万:在他短短9页的白皮书[Sato08]中,用了整整一章的篇幅讲述比特币的隐私问题。自数字货币诞生以来,围绕它的隐私问题就引起了行业从业者的关注。在你看来,零知识证明对数字货币的隐私有什么帮助?
黄林:零知识证明在保密支付中最简单的应用就是证明当输入量和输出量以密文或数字承诺的形式出现时,满足平衡的条件,即输入量之和等于输出量之和。由于密码方案通常是在有限域上进行的,所以一个负数相当于一个大的正数,往往需要用区间证明来证明其数量在一个合理的范围内。
为了保证交易参与者的隐私,交易发起者的身份将通过使用会员证书来隐藏。此外,如果发送方需要对接收方的某些信息进行加密,可以使用零知识证明来证明加密内容的合法性。这些就是零知识证明在数字货币交易隐私中的作用。
最近,零知识证明也被用于个人数据货币化。比如最近的基本注意力令牌项目,使用零知识证明来保证用户隐私,同时区分从僵尸网络获取令牌的真实用户。具体可以参考我之前写的介绍这个zk-sense项目的文章(传统互联网经济中零知识证明的新应用场景——隐私保护reCAPTCHA)。这既关系到基础注意力token的数字货币,也关系到传统互联网经济的新模式,很有意思。
此外,如果考虑数字货币中的应用基础设施,比如半分散认证设施或者联盟认证设施,零知识证明也是有用的,因为它涉及到用户的隐私和责任。
万:门罗币(Monroe Coin)专注于隐私、去中心化和可扩展性,是最早和最受欢迎的隐私货币之一。许多用户持有并使用它。你对门罗币有什么评价?
林:Monroe Coin在社区方面做得很好,但是正如我上面提到的,在可扩展性和效率方面还有很大的提升空间。况且门罗币本身不支持智能合约。
相比之下,我们的Suterusu解决方案在安全性上并不逊色于Monroe Coin,在可扩展性上也比他们有优势,并且支持智能合约。
万:目前,全球数据和隐私安全政策仍不明确。互联网上留下的大量隐私被用作免费数据。有人认为,数据的“隐私”边界不在于我们是否应该寻找和收集一些必要的信息,而在于它如何被保存、管理、分析和后期使用。在你看来,数据监管和“隐私”的界限在哪里?
黄林:这种观点可能不准确。我认为保护数据的隐私必须从数据源开始。我们知道,系统的安全性取决于系统中最薄弱的环节。在许多情况下,数据系统最薄弱的环节可能就在数据的源头。目前隐私系统设计的一些新概念,包括给数据带来应用,其实都与这个前提密切相关。
隐私数据监管这几年的进步是有目共睹的,包括欧洲的《一般数据保护法》(GDPR)和美国加州最近公布的《消费者隐私法》(CCPA)。这些规定对商家货币化用户数据的流程提出了很多要求。
例如,CCPA明确指出,如果用户的个人信息被用于不同目的,商家必须事先告知,并征得用户同意。比如商家提供财务激励购买用户隐私数据,就必须明确说明估算用户数据价值的具体方法。
在法律法规上逐步明确界定用户对个人数据的所有权和控制权是好事,但没有技术的配合,法律法规是行不通的。随着未来个人数据主权和个人数据货币化框架的建立,我相信密码技术将在这个过程中发挥至关重要的作用。
这可能包括可能用于多方数据共享的多方计算技术,将用于保证多方计算过程的计算可靠性的零知识证明技术,如旨在对隐私数据进行合理定价的隐私保护数据定价技术,甚至是未来用户数据对不同买家价值不同而导致的价格差异。也许智能合同也可以用来自动化这一货币化过程。
万:你是苏特苏的CTO。这个项目和其他隐私币在应用路径上有什么区别?
黄林:我们设想的sutersu的应用场景主要有:匿名交易,数字货币对匿名性的要求会越来越强,sutersu作为第二层隐私保护协议,会为其他主流数字货币提供匿名服务。此外,我们还将考虑提供可控匿名的模块,以满足用户对合规性的要求。由于suter提供了智能合约功能,因此可以通过智能合约自动化来实现合规要求。另一个应用场景是零知识身份认证。现在,几乎所有网站的注册用户在登录时都必须向网站管理员透露自己的身份。通过在身份认证过程中引入零知识会员认证,可以在满足身份认证要求的同时保护用户隐私。此外,我们还在研究使用零知识证明来提高区块链系统的可扩展性。目前,如zk-rollup和coda都采用零知识证明来提高区块链的可扩展性,但都或多或少存在一些安全隐患。比如帮助生成零知识证明的操作符可能会被dos攻击,所以这方面也是我们努力研究的方向。