【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

前言

隐私计算笔谈系列是矩阵元联合知名密码学学者共同推出的密码学科普系列文章,旨在普及密码学与隐私计算,让密码学触手可及。

ECDSA 两方签名(二)

上次科普我们介绍了 ECDSA 的两方签名和验证流程,并没有对流程进行正确性分析。本次科普我们将对签名和验证流程的安全性进行详细分析。首先回顾一下 ECDSA 两方签名的签名和验证主要流程:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

双方签名及验证

正确性验证:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

能注意到,当 Bob 在两次乘法中都诚实地输入和时,根据我们推导出的式-5 和式-9 有 =⋅?,=+⋅?−⋅??。而 Alice 用加密了?,将 =?()+?发送给了 Bob。Bob 又持有和?的,因此 Bob 可以自己计算⋅?=,再计算−?()=?,即可获得?,=+⋅?−⋅??,当 Bob 计算出?后也就能计算出,进而对 =?() +进行解密,获得 Alice 的签名。

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

Bob 是诚实参与者

我们接着忽略?进行验证,如果不考虑?,那么:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

也就是说:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

如果 Bob 是个诚实参与者,那么他在两次双方乘法中应该输入和,但是 Bob 不一定诚实。因此不失一般性的假设 Bob 分别输入了和,则在进行验证时有:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

那么要通过验证,Bob 就需要计算,而 Bob 是不知道的,因此验证会不通过。可以看到如果 Bob 进行不诚实地输入,那么第二次两方乘法的验证会不通过,而对第一次两方乘法的验证则会有安全问题,假设 Bob 输入的是,那么会有:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

可以看到⋅?⋅?中的每一项 Bob 都是知道的,因此第一次乘法 Alice 的输入需要额外附加一个?,这样 Bob 如果进行不诚实地输入,那么会验证时会获得:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

因为?对 Bob 来说是未知的,?对 Alice 来说是未知的,因此两者间任意一人都无法获取关于和的信息。而若 Bob 诚实地进行输入,那么有:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

Alice 可以根据 ,?,?计算出⋅?的值,即当 Bob 诚实输入时,=⋅?。因此当 Alice 用对?进行加密时,Bob 就只有诚实输入时才能解密出?,解密出?后才能进行第二次乘法的验证。若 Bob 还是不诚实地输入,那么:

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

??⋅?⋅?这一项对 Bob 来说是未知的,Bob 就无法计算出,因此无法用解密?,不知道?也就无法通过第二次乘法验证。这就要求 Bob 必须诚实地进行输入。因为验证者是 Bob,如果 Alice 不诚实地进行输入,容易检验 Bob 也无法验证通过。

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

Bob 是非诚实参与者

Rosetta GitHub:

https://github.com/LatticeX-Foundation/Rosetta

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

关注矩阵元了解最新动态

【隐私计算笔谈】MPC 系列专题(三十):ECDSA 两方签名 II

戳阅读原文 走进矩阵元

原创文章,作者:btcbtc,如若转载,请注明出处:https://www.zmyg.org/3297.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注