Skip to content

Latest commit

 

History

History
69 lines (63 loc) · 2.25 KB

2.Pedersen承诺.md

File metadata and controls

69 lines (63 loc) · 2.25 KB

1.Pedersen 承诺的基本概念

Pedersen 承诺是一个密码学原语,允许用户对一个值进行承诺,并在之后可以打开这个承诺
类似于:把一个数字放在密封信封中,之后可以打开信封验证。 基本要素:

  • 两个生成元:GH
  • 要隐藏的值:m
  • 随机数:r (称为遮盖因子 blinding factor)
  • 承诺值:P = m*G + r*H

2. Pedersen 承诺的三个阶段

  1. 初始化阶段
  • 选择椭圆曲线群的两个生成元 GH
  • 关键:没有人知道 GH 之间的离散对数关系
  • 这两个生成元是公开的系统参数
  1. 承诺阶段
  • 承诺者选择要隐藏的值 m
  • 随机选择一个遮盖因子 r
  • 计算承诺值:P = m*G + r*H
  • 公开发布承诺值 P
  1. 打开阶段
  • 承诺者公开原始值 m 和随机数 r
  • 验证者通过计算 m*G + r*H 是否等于 P 来验证承诺

3 Pedersen 承诺的核心特性

  1. 隐藏性
  • 仅从承诺值 P 无法推导出原始值 m
  • 这是因为随机数 r 的存在
  • 即使对手计算能力无限强大也无法破解
  1. 绑定性
  • 承诺者无法改变已经承诺的值
  • 只要 G 和 H 之间的离散对数关系未知
  • 计算上不可能找到另一对 (m', r') 产生相同的承诺值
  1. 同态性 对两个承诺:
  • P1 = m1*G + r1*H
  • P2 = m2*G + r2*H

它们的和:

  • P1 + P2 = (m1+m2)*G + (r1+r2)*H
  • 等于对 (m1+m2) 的承诺

4 安全注意事项

  1. 生成元选择
  • G 和 H 必须正确生成
  • 没有人知道它们之间的离散对数关系
  • 否则整个系统的安全性将被破坏
  1. 随机数管理
  • 每次承诺使用新的随机数
  • 随机数必须安全生成
  • 私下安全传输给接收方
  1. 离散对数保护 如果有人知道 H = α*G
  2. 可以通过调整 r 值伪造承诺
  3. 可以将小额伪装成大额
  4. 整个系统的安全性将完全崩溃

5 优缺点

优点

  • 完美隐藏性
  • 计算绑定性
  • 支持同态运算
  • 效率相对较高 缺点
  • 需要安全传输随机数
  • 承诺大小固定
  • 依赖离散对数难题
  • 需要可信初始化