PPIO 是为开发者打造的去中心化存储与分发平台,让数据更便宜、更高速、更隐私。
官方网站是 https://pp.io。

1. Groth16 简介






4. 攻击思路






5.4 实施攻击


那么如何防御这种攻击方式呢?回想 zokrates 给出的四条建议就很有参考价值:
signed proofs
要求给出 zkSNARK proof 的同时也给出 proof 的生成者的签名。这样即使有攻击者伪造了 proof,也无法伪造签名。
nullifiers
可以考虑将 proof 中 public input 的部分或者全部作为 nullifier,由于上述的攻击方式不能更改 public input, 因此限制 public input 只能使用一次,可以有效防止这种攻击。
usage of an ethereum address as a public input to the program
将提交 proof 的 msg.sender 作为 public input 的一部分,也可以防止种攻击。但这要求电路在设计时就要把这个因素考虑进去。
usage of non-malleable schemes such as GM17
最后一个方法是换其他 proving scheme。这是显而易见的,但就失去了使用 groth16 算法高效的优势了。
7. 总结
Groth16 是非常优秀的 zkSNARK 证明算法。不仅 proof 数据量小,生成 proof 和验证 proof 的速度都有质的提升。Groth16 技术上已经成熟,已被广泛的应用到各种类型的项目中。Zcash, Filecoin 等明星项目都用到了 Groth16 算法。 但我们在用 Groth16 设计新系统时,需要考虑攻击者可能会利用已公开的 proof 生成新 proof 的情况。
因此对于 Groth16,系统设计者不能很草率的拿来就用,而是要考虑具体的业务场景和潜在的攻击模型,采用适当的措施规避缺陷,避免造成漏洞。
参考文献

想了解更多有关 PPIO 的信息,可以移步官网:pp.io
如果你想更进一步了解项目,欢迎加入我们的微信讨论群,后台回复“PPIO讨论群” 获取入群二维码
