工作量证明(Proof-of-Work,以下简称“PoW”)在维基百科的介绍中指一般要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。
在实际生活中可以例举为:学生进行考试,答题需要一定时间;考试结束后,老师可以迅速判断出学生答案的正确性。在这一过程中,学生即用户,老师代表了服务方,试卷就是学生进行答题的工作量证明。
工作量证明的实际应用
在搜索引擎输入“工作量证明”或“pow”的关键字后,页面百分之九十以上会出现与区块链相关的内容。的确,作为区块链网络的共识算法机制,近年来PoW在区块链行业将其作用发挥到了极致。在以太坊、比特币这种去中心化区块链的生态系统中,任何加密交易都需要通过共识机制来验证真实性,这样才能成为链上的一部分。PoW具有高难度的协议程序代码,既可以使去中心化系统中的节点安全运作,又能保证区块链网络免受黑客行为的恶意攻击。
区块链的流行使PoW出现在大众视野并逐渐被了解,但实际上在区块链行业出现以前PoW就已经有实际应用。1993年工作量证明就已被提出,后来它被应用于抗DDOS攻击和反垃圾邮件。像互联网巨头公司微软就将其应用在Hotmail、Exchange、Outlook 等电邮服务上,要求所有收到的邮件都使用强PoW附件,以此预防大量垃圾邮件发出。
工作量证明与验证码
鉴于PoW能有效阻隔高频交互及其具有的独特优越性,极验的研发团队将其应用到了行为验4.0中。在计算机系统中,PoW中的验证者为服务器,工作者为请求方,但请求方极有可能是破坏业务安全的黑灰产,他们利用计算机在短时间内发送大量垃圾请求,导致企业业务受损。考虑到这种情况的发生,极验引入PoW工作量证明,在请求方发出请求时给对方出题,请求方需付出一定时间和资金成本给出结果交给验证方验证。
极验的工作量证明主要采用一种哈希运算的方法,在详细为大家介绍PoW是如何应用到极验的验证码中之前,这里讲解一下哈希算法,以便后续理解。
哈希算法,指安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是美国联邦信息处理标准所认证的安全散列算法。能计算出一个数字消息所对应到的长度固定的字符串的算法。且若输入的数据不同,它们对应到不同字符串的机率很高。
极验工作量证明业务流程
在极验验证码的工作量证明的业务流程中,加载验证资源时,极验服务器下发PoW参数到客户端,参数中包含PoW的计算难度、哈希运算方法、业务流水号等关键部分,客户端在验证时除了需要完成验证码的答案还需要额外计算PoW结果。客户端根据下发的参数,凭借满足条件的随机字符串进行哈希运算,通过哈希运算的不可预测性和随机字符串的随机性进行多次运算最终得出符合条件的结果,最后将结果提交到极验服务端进行校验,答案正确方可通过验证。
在这一过程中,客户端需要二次回答,即用户除了需要回答出验证码的正确结果,如将滑块移动到正确的位置、按照正确的顺序依次点选文字,还需要客户端回答出正确的PoW结果。相比以往的验证码只验证一个回答,PoW的应用提高了验证码对客户端的要求,安全性也随之提高。
因正常用户的客户端一次只需通过一个验证码,其请求量少,相应的计算也很少,平均一个字符串的平均查找的时间在数十毫秒,这对正常的客户端的影响可忽略不计,但是对于恶意的客户端他们必须多花费CPU找到相应的串来通过检测,这样就可以限制恶意客户端的行为。
PoW提高验证码安全性的表现
随机生成、无法篡改:在加载验证请求时,字符串与验证码请求返回的验证ID、流水号、消息生成时间有关,因此任意一个PoW参数都无法被随意篡改。极端情况下,就算黑产了解了字符串的生成规则,试图通过伪造篡改请求参数,来越过POW机制。极验也可在服务端进行校验时第一时间发现异常并立即将发起的请求标记或封禁拦截。
规避提前计算:PoW参数在加载验证码时会下发跟验证流水号相关的参数,必须先加载验证码,获取资源,获取流水号后才能进行后续运算。极验的业务安全专家也表示这是核心的一点,在此过程中一旦出现预计算,PoW便形同虚设。
抵抗客户端破解: 很多时候安全产品需要在客户端进行环境检测,黑客的反侦察亦是如此, 他们会投入资源以破解产品逻辑,规避环境检测。但是应用了PoW的验证码即使在客户端逻辑被破解, 也不能被黑客绕过,因为所有的校验逻辑都需在服务端进行。
与风控系统高度融合:PoW与极验的风控体系结合用以判别异常账号,我们通过IP频率、设备频率等风控策略判断用户风险,面对正常、低风险用户降低计算难度;面对异常、中高风险的请求提高难度。这种策略使黑灰产在时间和CPU上产生高消耗,从而阻拦异常流量;为企业提供更安全、更便捷、更智能的用户运营。
无法逆向推出答案:客户端生成的随机字符串组成Hashcash msg,需要使用散列算法来对此进行散列,但因散列算法不可逆,所以任何客户端只能进行多次尝试找到目标串。
通过以下两个计算题举例:1+4=5;2+3=5
我们知道题目从而得出答案为“5”,却不能因为答案为“5”推出题目一定是“1+4”,其还有“2+3”、“1.5+3.5”等无数个可能。
结语
在大家都将目光聚焦到比特币中的PoW时,极验选择另辟蹊径将这一共识算法应用到行为验证4.0中,这一创新无疑使验证码的安全性得到了更高的保证。在极验创立的十年以来,一直致力于以创新作为发展的驱动力,除PoW工作量证明外,极验行为验4.0还首创了七层动态安全防御体系,动态防御使极验在与黑灰产的博弈中占据主动权,二者共同打造了安全的行为验4.0