密码学专家解答10大关键技术问题
密码学是电子设备和互联网的基础组成部分,它保护着信用卡、手机、网页浏览(希望您正在使用TLS!)甚至绝密军事数据的安全。在区块链领域,密码学同样至关重要,以太坊等区块链依赖哈希、Merkle树和ECDSA签名等原语来运行。配对密码学、全同态加密和零知识证明等创新技术也已进入区块链领域。
1. SNARKs最常用的承诺方案有哪些?
多项式承诺方案是一种协议,证明者承诺某个多项式并生成证明表明该承诺有效。该协议包含三个主要算法:
- Commit
- Open
- Verify
在提交阶段,证明者发送其承诺——即他们在给定点对多项式f的评估值(即满足f(x)=a的值a)。该承诺应具有绑定性质,意味着一旦证明者承诺了某个多项式,他们就不能"改变主意"并为另一个多项式生成有效证明。它还可能具有隐藏性质,即在密码学上难以提取满足f(x)=a的值x。
最常见的生产环境中使用的承诺方案包括:
- KZG(Kate-Zaverucha-Goldberg),例如用于EIP 4844中的danksharding
- FRI(快速Reed-Solomon交互式Oracle接近性证明),用于STARKs
- 像Pedersen承诺这样的承诺方案,用于Bulletproofs等证明系统(被Monero和Zcash使用)
2. 哈希构造(MD、Sponge)有何区别?
大多数人所熟悉的哈希函数,如MD5和SHA1,都是Merkle-Damgard构造。而我们熟知且喜爱的keccak256函数则是海绵构造。
在Merkle-Damgard构造中,任意长度的消息被解析为特定大小的块。关键部分是压缩函数应用于每个块,使用前一个块作为下一个压缩函数的密钥(对于第一个块,我们使用IV或初始化向量代替)。
相比之下,海绵构造不使用压缩函数。海绵构造的核心包括两个阶段:一个"吸收"阶段,其中消息的部分与初始状态进行异或运算,同时对它应用置换函数;然后是一个"挤压"阶段,其中输出的部分被提取并作为哈希输出。
3. 椭圆曲线密码学(ECC)的理论攻击有哪些?
ECC通常被视为密码学中复杂且有些神秘的部分,容易受到各种技术攻击。两个值得注意的理论攻击是Weil下降和MOV攻击。
Weil下降攻击:这种方法涉及使用代数几何中的概念,特别是称为Weil下降的技术。其思想是将离散对数问题从其原始形式的椭圆曲线(复杂的代数结构)转换为更简单的代数结构(如超椭圆曲线)上的类似问题。
MOV攻击:该攻击使用称为Weil配对的数学函数将椭圆曲线离散对数问题(ECDLP)转换为有限域中的离散对数问题,这是一个不同的数学设置。
4. 后量子密码系统(如基于格和基于同源的密码学)概述
基于格的密码学使用格(显然),它是基向量的整数线性组合。关于格有许多难题,如最短向量问题(给定基,找到格中最短的向量)和最接近向量问题(给定格和格外的点p,找到格中最接近p的点)。
另一方面,基于同源的密码学涉及使用同源(显然),这是椭圆曲线之间的同态。我们可以使用这些同源创建标准椭圆曲线Diffie-Hellman密钥交换的后量子版本。
5. Fiat-Shamir启发式方法有哪些注意事项?
Fiat-Shamir用于将交互式Oracle证明系统转换为非交互式证明系统。这允许证明者证明计算的结果,而不需要验证者在线。这是通过获取公共输入的哈希并将该哈希解释为随机输入来实现的。
需要注意的几个与安全相关的问题:
- 哈希必须包含所有公共输入
- 即使使用强Fiat-Shamir变换,也可能出现更微妙的理论问题
6. PLONK交互式Oracle证明系统的最新进展
交互式Oracle证明是SNARKs中的主要信息理论组件,它允许证明者生成证明,以高概率发现伪造证明的方式"说服"验证者的"知识"。
PLONK证明系统的变体包括:
- Turboplonk:支持两个以上输入的自定义门
- UltraPLONK:支持查找表
- Hyperplonk:消除了对数论变换(NTT)的需求
7. 构建zkEVM的各种设计决策(Type 1/2/3等)
不同类型的zkEVM可以根据它们与以太坊的"完全兼容性"来考虑,Type 1最等效,Type 4最不等效。
- Type 1 zkEVMs在各方面等同于以太坊的执行和共识层
- Type 2 zkEVMs旨在实现EVM等效
- Type 3 zkEVMs通过使用更少的等效性实现更快的证明时间
- Type 4 zkEVMs旨在将Solidity和Vyper等语言编译为ZK友好格式以生成证明
8. zkEVMs的进一步改进
虽然从理论上讲,构建zkEVM和创建高效证明的主要挑战可以通过plonkish算术化、查找和增量可验证组合(IVC)的组合来解决,但在我们真正实现ZK证明所承诺的大规模可扩展性之前,仍存在许多工程挑战。
可能的进一步优化包括:
- 使用更小的字段
- 硬件改进和并行化
- 理论改进
9. Shamir的秘密共享方案及其常见错误
Shamir的秘密共享(SSS)是一种在各方之间分割一组秘密的方法,使得一组参与者可以合作恢复秘密,但任何数量少于阈值的参与者都无法了解任何信息。
需要注意的几个可能使SSS或Feldman的可验证秘密共享完全不安全的"陷阱":
- 向参与者共享0点会无意中泄露秘密
- 确保共享之间的差异不为0或模等价
10. 递归证明的折叠方案如何工作?
折叠方案是增量可验证计算问题的一种解决方案。折叠方案起源于Nova,并引入了一个新想法:验证者不会在每次调用F时验证SNARK,而是将当前实例"折叠"到累加器中。
对折叠方案的几项更新和改进已经完成。例如,Sangria方案将折叠推广到Plonkish算术化,而不仅仅是R1CS。HyperNova将Nova推广到可定制约束系统(CCS),这是一个更通用的约束系统,可以表达Plonkish和AIR算术化。
迈向更好的密码学安全
密码学不断发展,理论与实现之间的差距越来越小。更多有趣的密码学协议和新颖的实现正在各处涌现,包括多方计算、增量可验证组合、全同态加密以及介于两者之间的一切。