查看原文
其他

椭圆曲线密码在多方安全计算中的应用

hujwei 隐私计算研习社 2023-04-07


关于介绍椭圆曲线加解密的论文和介绍非常多,也非常详细,我在这里过多重复这些内容已无必要。相反地,我将写作重点放在“除了加解密/数字签名,我们还能用椭圆曲线密码做些什么?”。特别地,我将介绍若干个,经典的,利用椭圆曲线密码(Elliptic Curve Cryptography, ECC)构造多方安全计算(Secure Multiparty Computation, MPC)的例子展示椭圆曲线密码的另一面。
1

预备知识

为了行文逻辑的连续性,这里我重提一些椭圆曲线密码[1]的基本知识。

椭圆曲线上的基本运算

在密码学中使用的椭圆曲线一般是定义在素数域 或2的扩域 上。这里为了介绍方便,我规定椭圆曲线都是定义在素数域上的,记作 ,并将曲线上的点个数记为

圆曲线的基本运算是标量乘(scalar multiplication),即给定 计算 。标量乘可以由Double-and-add算法或者一些更优化的算法实现,这里我不在赘述,读者可以参考这里[2]获得细节内容。简而言之,标量乘的计算复杂度为 乘法。

椭圆曲线上的离散对数问题

椭圆曲线密码的安全性来源于椭圆曲线上的离散对数问题(Elliptic Curve Discrete Log Problem, ECDLP)。

ECDLP就是椭圆曲线版本的DLP(Discrete Log Problem, DLP), 定义如下[3]:

  • 给定椭圆曲线 上的两个点 , 寻找这样的一个整数 ,使得

解决ECDLP是一个艰深的数学难题,目前学界已知的最有效方法包括Baby-step giant-step,Pollard's rho algorithm,Index calculus等[4],然后这些方法都不能在多项式时间内解决问题,它们的计算复杂度都不超过 ,这里 是选定的椭圆曲线 上的点的个数, 即

另外注意到给定一条椭圆曲线,确定它上面的点个数 是非常耗时的,因此密码学使用的都是事先选定的,已经知晓点个数的椭圆曲线。Hasse定理[5]阐明了椭圆曲线的点个数和所在素数域有下面的关系: 。 

简而言之,我们有 ,如果我们希望ECDLP有128-bit安全级别,那么应当选取

椭圆曲线上的Diffie-Hellman假设

Diffie-Hellman假设[6]在椭圆曲线上也是成立的,它包含了两个方面的内容,即计算性的Diffie-Hellman假设判定性的Diffie-Hellman假设

计算性的Diffie-Hellman假设(Elliptic Curve Computational Diffie-Hellman Assumption, EC-CDH)定义如下:

  • 给定 , 计算 是困难的。 

目前已知解决EC-CDH的方法是基于ECDLP的,因此EC-CDH的困难程度得到了保障。

判定性的Diffie-Hellman假设(Elliptic Curve Decisional Diffie-Hellman Assumption, EC-DDH)定义如下:

  • 给定 , 判定 是否成立。 

EC-DDH是一个比EC-DLP更强的(stronger)困难假设:如果我们可以有效地解决EC-DLP, 那么解决EC-DDH是显然的;但同时注意到存在一些椭圆曲线, 使得EC-DDH是一个容易解决的问题。因此在使用EC-DDH时,我们应该特别小心选择合适的椭圆曲线确保EC-DDH确实是困难的。


2

MPC应用之一:隐私求交

隐私求交(Private Set Intersection, PSI) [7][8]是一个非常重要的多方安全计算问题,它在计算方Client和计算法Server之间完成求交集的运算,并且不泄露除了交集本身以外的其他任何信息。借助EC-DDH我们可以构造如下图所示的隐私求交协议:

ECDDH-based PSI Protocol

这里,函数 将集合中的元素映射到椭圆曲线上的相应点。首先Client生成随机数 且对集合 中的每一个元素 都做一次椭圆曲线标量乘运算 ,记作 并发送给Server; 接着Server生成随机数 且对集合 进行标量乘运算得到 , 对集合 进行标量乘运算得到 ,并发送给Client。Client拿到 后对 做标量乘运算得到 , 最终通过比较 确定交集

协议的正确性是显然的。下面我借助模拟器概念[9]证明上图的PSI协议确实是安全的(passive security, semi-honest security)。

首先假定Server被敌手控制(Server is corrupted), 那么从Server的视角来看,它仅仅看到了Client发送过来的 ,又因为 是随机的,那么 一定服从均匀分布;因此,Server的模拟器 是非常简单的,只需要随机生成 即可, 容易看出

接着假定Client被敌手控制(Client is corrupted), 从Client的视角来看,它看到了Server发送过来的 , 构造Client的模拟器 如下:随机生成 并使用 模拟 , 因为ECDDH假设的缘故,容易看出 ; 接着准备集合 , 这里 表示交集 , 表示补充生成的随机元素使得 , 接着算 用来模拟 , 又因为 是随机的,因此有 , 且 , 证毕。


3

MPC应用之二:OPRF
不经意伪随机函数计算(Oblivious Pseudo-Random Function, OPRF)可以理解成一个分布式的伪随机函数, 计算方Alice(拥有私有的输入 )和Bob (拥有伪随机函数的密钥 ) 协作最终使得Alice算得伪随机函数的值 , 注意这里 将整数 映射到椭圆曲线上的点 , 因此 是椭圆曲线上的一个点,也就是说 实际上算的是椭圆曲线上的点构成的子群(通过生成元 生成)中的随机点。可以借助 将其转换成相应的整数 作为伪随机数输出。
具体地,可以构造如下图所示的OPRF协议:
ECDDH-based OPRF Protocol
Alice拥有私有输入 , 首先她生成随机数 用来随机化 得到 并发送给Bob; Bob接着用自己的私钥 算得 并发送给Alice, Alice拿回 在用 算出 即可。而协议交互传递的数据 满足EC-DDH假设,因此和随机分布不可区分。
同理可以借助模拟器严格地证明上图的OPRF协议是安全的,不再赘述。


参考

[1]https://en.wikipedia.org/wiki/Elliptic-curve_cryptography

[2]https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication

[3]https://eprint.iacr.org/2015/1022.pdf

[4]https://en.wikipedia.org/wiki/Discrete_logarithm

[5]https://en.wikipedia.org/wiki/Counting_points_on_elliptic_curves

[6]https://en.wikipedia.org/wiki/Decisional_Diffie%E2%80%93Hellman_assumption

[7]https://zhuanlan.zhihu.com/p/589081394

[8]https://zhuanlan.zhihu.com/p/586433710

[9]https://zhuanlan.zhihu.com/p/588114150

本文作者:hujwei

知乎链接:https://zhuanlan.zhihu.com/p/597457384

END

往期推荐


1.基于密码的数据安全防护体系研究
2.零知识证明与多方安全计算之间是什么关系?3.基于差分隐私的联邦学习数据隐私安全技术4.隐私计算领域大咖推荐,这些国内外导师值得关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存