矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

本文转载自微信公众号: 矩阵元

原创 :胡震恺

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

前言


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


ECDSA两方签名


上次我们简单介绍了ECDSA签名和其相关的知识,这次科普我们将会展开介绍ECDSA的两方签名。

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

ECDSA签名

回顾一下ECDSA的签名,在ECDSA签名中,签名者Alice除了私钥𝑥外,还需要产生一个随机数𝑘,我们将𝑘称为instance key。

思考一下,签名要实现的是不可抵赖性和完整性,完整性要求签名之后文件不可被更改,对于现实中在正规格式的纸质文件上的签名,天然就具有完整性,不可抵赖性则通过签名字迹的独一无二保证。ECDSA签名是具有这两个性质的,现在要实现的是两方签名,那么应该要实现对签名两方的不可抵赖性和完整性。

首先我们观察一下,签名需要的是私钥𝑥和instance key:𝑘,思考一个简单的两方方式:Bob产生自己的instance key:矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,计算DBob=KBobG,通过Diffie-Hellman密钥交换,将DBob发送给Alice,Alice收到Bob发来的DBob后,产生KAlice,将DAlice=KAlice发送给Bob,这样Alice和Bob就可以计算𝑃=𝑘𝐺=KAliceDBob=KBob⋅DAlice了。但是,直接这么做是有问题的,问题在于Alice虽然没法通过计算出的值,但是Alice是在收到后再产生的,意味着Alice决定𝑃=KAliceDBob的能力,这和协议的公平性相违背,Alice和Bob应该具有相同的权利。 

我们要介绍的两方ECDSA签名协议是由Jack Doerner等人在18年提出的,签名协议中的𝐻(⋅)是哈希函数,假设协议开始之前SKASKB是私钥SK的两个乘法share,即SK=SKA⋅SKB,已经分别由Alice和Bob所持有,对应的公钥pk已经公开,𝑝𝑘=SKA⋅SKB⋅𝐺,具体实现方式可通过之前介绍的混淆电路,也可通过ABY等,此处不再重复。两方签名流程为:

1. Bob产生自己的instance key:KB,并计算DB=KB⋅𝐺,将DB发送给Alice。

2. Alice产生自己的instance key:K’A,并计算=K’ADBK’A=𝐻(R’) +K’A,𝑅=KA⋅DB

3. Alice产生一个随机数𝛼,和Alice和Bob间运行一个两方乘法协议FMul,Alice的输入是矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,Bob的输入是矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名。两方乘法协议我们之前的科普已经介绍过多个了,如Beaver Triple、ABY等,任选一个即可。二者分别拿到乘法结果的Share,分别记为矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,且矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名满足: 

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

接着Alice和Bob再运行一次FMul,Alice输入矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,Bob输入矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,将Alice和Bob分别拿到的FMul的输出记为矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,且矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名满足矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

4. Alice将发送给Bob,Bob计算𝑅=𝐻(R’)⋅DB+R’,将𝑅在椭圆曲线上的坐标记为矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名。 

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

两方密钥交换

签名之后的签名阶段,以及一致性和正确性验证过程为:

5. Alice和Bob计算m’=𝐻(𝑚)

6. Alice计算第一次验证值矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,用加密𝛼获得密文矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,之后Alice将矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名发送给Bob。

7. Alice计算她签名的share:sigA和第二次验证值矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,Alice用矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名加密sigA获得密文矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名,将矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名发送给Bob。 

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

8. Bob计算验证值,并对签名进行重构: 

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

9. Bob利用他自己的公钥pk来验证(𝑠𝑖𝑔,rx)是否是一个合法的签名,如果合法则输出(𝑠𝑖𝑔,),不合法则报错。

矩阵元 |【隐私计算笔谈】MPC系列专题(二十九):ECDSA两方签名

两方签名及验证

对正确性验证的详细分析部分我们将留在下次科普进行,并在之后介绍ECDSA的多方签名。

Rosetta GitHub:

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

本文转载自https://mp.weixin.qq.com/s/F2AxgDJde9Yv0Cf9pKv2Ew

(0)
矩阵元的头像矩阵元编辑
上一篇 1 6 月, 2021 12:39
下一篇 2 6 月, 2021 12:01

相关推荐

发表回复

登录后才能评论