任何事物出现都有两面性,比如网络安全技术的出现是为了解决隐私泄露、勒索病毒、漏洞攻击、数据窃听等威胁,但技术本身也在运用过程中带来种种安全风险。在区块链场景,零知识证明(ZKP)的运用也是如此。
最近,在2019 区块链开发者大会上,360核心安全事业部高级安全专家彭峙酿以《零知识证明在区块链应用中的安全和隐私问题》为主题进行演讲,向现场听众详细阐述了这一技术的风险。
360核心安全事业部高级安全专家彭峙酿
20世纪80年代初,麻省理工学院研究人员首次提出“零知识证明”的概念,简单说即允许一方(证明方)向另一方(验证方)证明一项声明是真实的,而不披露除声明本身的有效性之外的任何信息。它实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。
零知识证明能够保障数据的安全性,能够解决很多隐私问题,而且能让双方交换的信息量减少,在各个领域都能有较好的应用。区块链的出现给零知识证明的应用提供了新的方向。
“比特币是去中心化的数字货币,为了防止双花攻击选择广播交易到区块链当中,但带来了匿名性、隐私性安全问题。” 彭峙酿说道,零知识证明的出现可以解决区块链中隐私问题。用户可以在不泄露信息的情况下,向其他人证明某个论述的正确性。
目前,零知识证明(ZKP)技术被广泛应用于包括以太坊、门罗币、Zcash等多个区块链项目中,但在具体实现中仍存在漏洞与隐患,彭峙酿提出四个方面:
由于电路设计复杂,包括大量密码算法实现,大量约束、大量优化技巧等,难以针对这些设计进行细致的安全审计,就容易出现逻辑漏洞,被攻击者利用。比如Zcash最初的版本,电路设计中就存在多个逻辑上的安全问题。
另外,由于零知识证明应用开发者对零知识证明体系的原理和逻辑并不清晰,其设计方案往往直接调用零知识证明库实现零知识证明应用,对底层ZKP缺乏足够了解,所以写出的代码容易出现应用逻辑安全问题。
目前应用在区块链中的零知识证明技术大多使用ZkSNARKS方案。然而ZkSNARKS的参数生成一直备受诟病。如果参数生成不可信,那么整个方案就不可信。虽然现在包括Zcash,以太坊等项目都使用多方安全技术进行参数生成,但现阶段多方案安全计算仪式过程仍具有一定黑盒性。如果不是亲身参与,用户很难100%确定参数的安全性。
事实上零知识证明的技术并不是万能的。比如应用的易用性和隐私实际上就存在着天生不可调和的矛盾。零知识证明只是某种程度上缓解这种矛盾。在如轻客户端之类的场景中,市场上就没有一个能够兼顾易用性和隐私性的方案。
零知识证明从统计上是完美的,但统计中并不能保证其能够落地到实际中,比如Zcash中证明是零知识,虽然证明是零知识的,但是交易的其他部分是可能会有信息泄露的。彭峙酿在分享中提出了一种对Zcash的零知识证明方案的侧信道攻击,和一种针对Zcash地址不可关联性的攻击技术。证实了零知识技术在逻辑过程中的安全风险。
ZKP是一种功能强大的加密方法,它在区块链中的应用很有希望,他在一定程度上解决区块链的隐私问题。“上述安全风险的存在告诉我们,零知识证明是一项新技术,仍然存在很多问题,但我相信未来几年会变的越来越好,未来360也积极将隐私保护技术应用到自研的区块链平台中。”彭峙酿说道。
来源 360企业安全 |
|
|
|
评论
直达楼层