论文笔记:P2P Mixing and Unlinkable Bitcoin Transactions

CoinShuffle:利用mixing技术混合多笔交易输入输出之间的比特币链接。
P2P Mixing:不依赖任何第三方的匿名广播混洗协议

问题:

  1. 现有的混洗方案不支持可扩展性。
  2. 通信代价高,最好的情况下为O(n)轮,存在f个恶意参与方时,达到O(nf)的通信轮次复杂度。
  3. DC-net是一种隐私保护的分布式通信协议,通信效率高,适合用于混洗方案,但存在易破坏,要求可信第三方等问题。目前没有实用的基于DC-net的P2P Mixing方案。

P2P Mixing协议的概念化要点(特点):

  1. 对输入输出的特殊要求:
    • 输入:Fresh message
      • 要求每个参与方使用具有足够熵的新生成的位串;
      • 如果协议中有参与方被丢弃(如,下线,恶意),所有参与方的消息都要被丢弃,新一轮中使用新生成的消息。
    • 输出:额外的确认步骤
      • 要求所有参与方在混合生效前明确同意混合的输出(如,共同匿名签名);
      • 将恶意参与方剔除。
  2. 形式化接口:
    GEN():生成fresh input message
    CONFIRM(i,P,M):从所有未被剔除的参与方中获得对M的确认

例如
Run 1: G E N ( ) → m 1 → m i x 失败(参与方 p 主动干扰) → 〖 P 2 : P 〗 1 剔除参与方 p GEN()→ m_1→mix失败(参与方p主动干扰)→〖P_2:P〗_1剔除参与方p GEN()m1mix失败(参与方p主动干扰)P2:P1剔除参与方p
Run 2: G E N ( ) → m 2 → m i x 成功 → C O N F I R M ( 2 , P 2 , M 2 ) → P ( m a l , 2 ) ≠ ∅ → 确认失败,〖 P 3 : P 〗 2 剔除 P ( m a l , 2 ) GEN()→ m_2→mix成功→ CONFIRM(2,P_2,M_2 )→P_(mal,2)≠∅→确认失败, 〖P_3:P〗_2剔除P_(mal,2) GEN()m2mix成功CONFIRM(2,P2,M2)P(mal,2)=确认失败,〖P3:P2剔除P(mal,2)
Run 3: G E N ( ) → m 3 → m i x 成功 → C O N F I R M ( 3 , P 3 , M 3 ) → P ( m a l , 3 ) = ∅ → 确认成功,执行结束,输出混洗后的集合 M 3 GEN()→ m_3→mix成功→ CONFIRM(3,P_3,M_3 )→P_(mal,3)=∅→确认成功,执行结束,输出混洗后的集合M_3 GEN()m3mix成功CONFIRM(3,P3,M3)P(mal,3)=确认成功,执行结束,输出混洗后的集合M3

  1. 安全性目标:
    • Sender Anonymity:如果诚实参与方p使用消息m_p和最终参与方集合P运行一次协议成功,p^‘∈P是另一个诚实参与方,则攻击者无法区分消息m_p属于p还是属于p’。
      • 假设公告板不诚实:攻击者阻碍诚实参与方的通信,导致其被剔除。则设n为未被剔除的参与方个数,f<n-1
      • 只关注成功运行中的消息,对于失败运行中丢弃的消息,不保证匿名)
    • Termination:假设公告板是诚实的,则协议最终会为每个诚实的参与方成功结束。

关键技术:

Slot冲突:

P2P mixing的每个参与方都想要匿名发布自己的消息,他们可以运行一个DC-net的|P|个实例,每个参与方随机选择一个实例(或slot)来发布她的消息
即使所有的对等体都是诚实的,两个对等体也有很大可能选择同一个slot

冲突处理:基于Newton’s identities抽取消息的方法

  1. n slots,每个参与方index i,消息 m i m_i mi,发布 m i j m_i^j mij m i m_i mi j j j次幂)。用加法代替XOR来生成DC-net 消息,每个slot冗余发布消息幂和: S i = ∑ i m i j S_i=∑_im_i^j Si=imij
  2. 广播后每个参与方都能计算:
    在这里插入图片描述
  3. 用Newton’s identities 抽取 x 1 , … , x n x_1,…,x_n x1,,xn
    • 设多项式: f ( x ) = a n x n + a ( n − 1 ) x ( n − 1 ) + ⋯ + a 1 x + a 0 f(x)=a_n x^n+a_(n-1) x^(n-1)+⋯+a_1 x+a_0 f(x)=anxn+a(n1)x(n1)++a1x+a0,使得 f ( x ) = 0 f(x)=0 f(x)=0有根 x 1 , … , x n x_1,…,x_n x1,,xn.
      f ( x ) = ( x − x 1 ) ⋅ … ⋅ ( x − x n ) = 0 → a n = 1 f(x)=(x-x_1 )⋅…⋅(x-x_n )=0 → a_n=1 f(x)=(xx1)(xxn)=0an=1
    • 一般化Newton’s identities定理:
      在这里插入图片描述
    • 已知所有P_i,代入能够很容易地恢复出所有的a_i,直到计算出多项式f(x)的所有系数。
  4. 对f(x)进行因式分解,得到n个解(即,m_1,…,m_n)。

仍然存在的问题:

恶意参与方捣乱可能导致Newton’s identities恢复消息失败,或恢复错误的消息。
解决:在中断的情况下打破匿名。由于fresh message,这不会泄露隐私

  • 由于DC-nets的发送方匿名性,行为不端的参与方不会被轻易检测到。
  • 披露所有在初始密钥交换中使用的密钥
  • 每个参与方可以重播其他参与方所做的步骤,剔除恶意参与方

DiceMix-基于DC-net的实用P2P Mixing协议

DiceMix协议流程:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
优化通信轮次:

  • 顺序执行:4+4f rounds
    在这里插入图片描述
  • 并行运行(两轮执行之间部分步骤可重叠): 4+2frounds
    在这里插入图片描述
    大大优化了通信性能!

CoinShuffle++:将DiceMix用于区块链混币协议

在这里插入图片描述
算法:
在这里插入图片描述

一种对其他P2P Mixing方案的攻击

DiceMix免疫此攻击

核心思想:如果一个参与方被动地离线,它将被视为恶意参与方牺牲其匿名性。问题在于:如何判断该参与方是否是真的恶意?如果它是诚实的呢?

例:Dissent方案,剩余的参与方判断p离线并将其排除;发起第二次运行,重新发送第一次运行中使用的消息M’,M^(') M={m_p}
在这里插入图片描述
通过延迟or隔离p的通信,实现对特定参与方的去匿名攻击!
DiceMix的fresh message机制天然地免疫这类攻击!

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值