工作量证明(Proof Of Work,简称POW),简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。本文提出了一个基于RSA属性集工作量证明算法,将陷门函数和RSA公钥密码体制中的加解密应用于工作量证明函数中,根据用户的属性是否满足属性集而决定是否分发陷门用于工作量的证明。本文提出的算法同时满足6个性质:有陷门计算容易、无陷门计算困难、易于验证、正确性、可靠性和顺序性。进一步设计了基于RSA属性集工作量证明函数的电子邮件系统,该系统实现了满足属性的用户群发邮件容易、反垃圾邮件、保证邮件内容的机密性和完整性等功能。
工作量证明[1]是确认一个用户做过一定量工作的证明,一般要求用户计算一个难于计算但易于验证的函数。简单来说,倘若要求A 监督B 工作的完整过程,这将极为费时费力且十分低效,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。因此利用POW 函数,将重点放在工作的结果上,可以使得验证工作变得高效。
陷门工作量证明函数由Dwork 和Naor 提出[2],是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。即是一种有陷门时工作量证明计算容易,无陷门时计算困难的函数,陷门使得POW 具有更广泛的应用,如在邮件系统中应用陷门POW 函数,可以使陷门拥有者更容易发送大量邮件。POW 函数时固定的且由系统管理员分配给受信任者,为避免陷门泄露带来安全问题,需要定期更新陷门,给管理员带来不便。
工作量证明函数可以成功地应用于邮件系统中起到反垃圾邮件的作用。其基本思想是:如果用户A想给用户B 发送邮件,那么他必须向服务器提供一个仅与用户B 和此邮件有关的证明,假设生成证明需要占用用户A 电脑CPU10 秒的时间,并且该证明不可被重复使用。这样如果用户A 要发送一万份垃圾邮件,则占用电脑CPU 为10 万秒,时间代价非常大,因此会放弃大量发送邮件,从而实现反垃圾邮件的目的。此外,在邮件系统的实际使用中,有时候需要群发邮件,则可以给某些满足属性的人特权,也就是让满足属性的用户获得陷门,使其群发邮件容易。我们将基于属性的陷门工作量证明函数应用于邮件系统,可以实现满足属性的用户群发邮件容易、反垃圾邮件、保证邮件内容的机密性和完整性等功能。
现有的工作量证明函数存在部分问题,如功能简单、实现复杂、不太完善、安全性能低。近年来, 加密货币越来越火爆,其实质是建立在区块链系统之上[3],区块链是一个分布式的共享账本和数据库, 具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础[4]。工作量证明是目前最流行区块链里不可或缺的重要部分,它被应用于各种加密货币如比特币和以太坊,在工作量证明中,为了选出一位参与者成为领导者并选择下一个加入区块链的区块,参与者必须解决一个特定的难度可动态调整的数学问题。对于给定问题很难找到解决方法,一旦找到问题的答案,很容易就能证实它是对的,每挖出一个新的区块,矿工就会得到一些代币奖励,以此激励他们继续挖矿。
并将当前时间段的所有交易打包记入一个新的区块、按照时间顺序链接到比区块主链上,其它节点通过检验该区块数据的哈希值是否小于预设值来验证该区块的有效性。因此结合所学公钥密码体制,将RSA 加解密体制应用在工作量证明函数中是十分必要的, 使得工作量证明函数更加丰富,加密货币交易更加安全可靠。