这段时间在各个学术论坛及会议上与很多专家交流研究零知识证明的心得。大家似乎都有个感觉是,零知识证明除了和区块链相关的保密支付外很难找到其他靠谱的应用场景。我对零知识证明的应用场景做了些调研,这篇文章将探讨零知识证明在传统互联网非支付领域的一个应用。具体来讲,这篇文章将探讨如何使用零知识证明构造隐私保护的reCAPTCHA。
背景知识:什么是reCAPTCHA
我们要谈的这篇文章《zkSENSE: a privacy-preserving mechanism for bot detecTIon in mobile devices》[PAZVNL]是由Brave Software公司研究员联合马德里卡洛斯三世大学和剑桥大学的研究人员合作的一个工作。这一章我们首先介绍下这项工作的动机:大家使用浏览器登录网站时可能会经常碰到一个叫验证码的东西,比如向你展示一行歪歪扭扭的字,然后要求你输入正确字句。
这种测试专业名称叫Completely automated public Turing tests to tell computers and humans apart (CAPTCHA),翻译成中文是用于区分计算机和人类的完全自动化的公开图灵测试。这种测试在2000年左右互联网初期时开始在网站建设中得到广泛应用,主要目的在于使用这种测试检测区分机器人和人类,进而阻止攻击者通过使用机器人对网站发起拒绝服务攻击或发送垃圾邮件恶意广告等。
这篇文章重新设计CAPTCHA方案的动机略有不同,由于这个项目是由brave浏览器和basic attenTIon token (BAT)项目的研究人员发起的,所以他们的应用场景和BAT的整个商业模式密切相关。BAT的基本宗旨是用户应该为自己看广告时付出的注意力得到补偿,因此在用户点击观看广告时将会相应地收到一定量的BAT。这种商业模式有个专业名称叫pay to surf,在1999年已经有人提出并实现过,当时一家叫AllAdvantage的公司通过这种付费给用户看广告的商业模式在不到一年时间内迅速吸引到了将近1300万用户和两亿美元的风投。后来网络泡沫破灭,这家公司迅速倒闭。
这家公司最终失败除了生不逢时,一个很重要的原因是攻击者们使用机器人诈骗广告点击费过于猖獗导致公司最终入不敷出。事实上,我们知道这种类型的攻击即使在今天依然非常常见的,网络安全专业人士都知道攻击者会通过购买低价手机来组成click farms以使用机器人软件来骗取广告费。所以这篇文章的背景就是,BAT意图复兴这种pay to surf商业模式,前提是他们必须避免重蹈AllAdvantage的覆辙,因而如何防止攻击者使用机器人诈骗广告费便成了重中之重了。
方案动机:为什么需要隐私保护的reCAPTCHA
那你可能会问既然已经有了CAPTCHA这个工具,Brave再另起炉灶重新搞一个基于零知识证明的机器人检测方案岂不是多此一举。这可能得从现有的CAPTCHA方案存在的问题说起。目前广泛使用的CAPTCHA方案主要存在两个问题:首先是其检测机器人的效果还是有一定局限性的,尤其是目前基于深度学习的机器学习算法[GTFZFXCW18]已经能保证使用极少量的训练样本高效攻击多个广为使用的CAPTCHA方案;另一个问题则是在移动设备上CAPTCHA严重损害用户体验,这个相信大家在手机上碰到过验证码都有所体会。
针对这些问题,研究人员提出了一种新型的,对用户透明的reCAPTCHA方案。其基本思想是通过收集移动设备上用户个人数据来区分访问者是机器还是人类。具体来讲,其基本的思路是人在移动设备上输入时需要按压显示屏,而触屏时设备的惯性测量单元,即加速和陀螺仪会记录手指在屏幕上按压移动时所产生的传感器数据。相对而言,机器人则往往是通过软件模拟来生成输入的,由于没有手指触屏,所以传感器不会收集到相关数据,因此这个传感器输出的差别可用于区分人类和机器人。
不过这种惯性测量单元数据从个人隐私角度看是非常敏感的,研究表明通过分析这些数据可以推导出设备上的按键(keystroke)信息,如用户年龄,性别等,且这些数据可作为指纹信息来指认用户。通过收集用户按键(keystroke)信息甚至可以窃取用户私钥。BAT这个项目是以保护用户隐私为立身之本的,如何能构造一个reCAPTCHA系统既能保证用户隐私同时还能成功区分机器人和人类便成了这篇文章试图解决的问题,这也是为何该系统最终使用了零知识证明的原因。
方案设计原则和安全模型
和传统reCAPTCHA方案把移动端传感器数据传输给互联网公司控制的服务器,然后在服务器端上由公司分析用户数据不同的是,这篇文章方案的基本原则是用户数据不离开用户移动设备,换句话说机器人检测算法将在用户设备上分析传感器所收集数据,并将最终分析结果发送给服务器端,从而保护用户隐私。这里顺便提一下,BAT这种不让用户数据离开用户设备且在用户端处理隐私数据的原则非常有意思,应该能成为下一代隐私保护系统的一个通用设计原则。按照BAT项目创始人Brendan Eich的话说,这相当于从do no evil变成了can’t do evil。如果数据不离开用户设备,那么对用户数据拥有主权的显然是用户,而非互联网垄断公司们了。
从上面的背景介绍中我们可以看出,这篇文章显然假设攻击者控制了移动设备。既然机器人检测算法在用户设备端执行,如何保证算法所读取传感器数据没被攻击者篡改,如何保证即使在攻击者有可能修改机器人检测分析算法代码的情况下所收集的分析结果依然正确便成了问题的关键了。
零知识证明正是用于保证分析算法结果的可靠性的。事实上,零知识证明如果只考虑其方案设计可靠性(soundness)的话,其实可以被看作计算证明(signatures of computaTIon)方案。换句话说其所证明的是被承诺(committed)的输入和输出之间满足预定的函数关系。如果输入输出之间不满足这个预定的函数关系,攻击者是无法生成可以通过验证的证明的。如果把机器人检测算法看作一个预定的函数的话,那么显然零知识证明的这个soundness性质就可以保证一旦攻击者修改机器人检测算法代码,它将无法生成合格的计算证明。而零知识证明的零知识性质则可以保证这个过程除了告诉验证者检测结果外不泄漏其他任何个人隐私信息,因此就能保证用户隐私。
注意这个安全模型在实际中功能非常强大,这意味着系统在一个控制着大群移动设备(如click farms)的攻击者发起攻击时仍能有效检测机器人且保证用户隐私。这些可能的攻击包括:攻击用户 *** 作系统,修改用户api,提供伪造传感器输出,重放合法用户使用移动设备时所收集传感器设备数据等。
方案简介
这个方案的基本思想可以解释成:用户在移动设备的点击事件将引发一个人类(humanness)认证过程,humanness证明模块将读取设备传感器输出。这个模块将使用一个经过训练的模型区分是人类还是机器执行了该点击事件,并将检测结果和对应零知识证明发给服务器验证。零知识证明主要用于证明如下两个计算步骤的正确性:
1. 机器人检测程序输入的数据确实是实时从传感器采集的,且这些采样算法运行正常。
2. 机器人检测程序计算过程准确无误。
具体技术细节上,该方案使用的是以太坊的一个通用的零知识证明代码库,具体使用的机器人识别算法则是基于支持向量机(support vector machines)的。由于现有的零知识证明只能支持整数输入的,所以在技术细节上该方案做了些微调优化。另外由于这篇文章中使用的零知识证明算法初始化过程必须提前知道证明对应函数输入向量大小的,他们预设向量维度大小上限为70。
展望
这篇文章实验模拟比较了几种手机上使用零知识证明的资源消耗,且对该方案在实际中应该如何使用提供了些建议。比如可以在移动应用代码中引入一个SDK,然后周期性让用户手机做humanness证明。很明显,用户手机如果高频地做这种零知识证明给手机带来的额外计算负担会很大,因此相应地耗电量可能也很大。这篇文章提出使用一个专用协处理器(co-processor)来专门做零知识证明运算。如果以BAT为代表的这种互联网商业模式能得到广泛推广(目前brave浏览器已经有1000万用户了),那么这种专门用于优化零知识证明计算的硬件模块恐怕势在必行。
另外,这篇文章使用零知识证明方案由于需要trusted setup,且初始化参数和其使用的支持向量机算法相关,这在检测机器人效果上有可能造成限制。相对而言,无需trusted setup的零知识证明方案,包括Suterusu项目目前研究实现的方案在支持通用的隐私保护机器学习方案具有一定的优势,相信会在这种新互联网经济模式中大显身手。
责任编辑;zl
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)