PSI算法之ECDH-PSI

参考文献

ECDH PSI 算法概述

ECDH PSI是一种基于椭圆曲线Diffie-Hellman(ECDH)协议和集合交(PSI)协议的组合算法,用于解决两个集合间的隐私保护问题。该算法主要应用于分布式计算、云计算、物联网等领域中需要对不同方的私有数据进行比对和匹配的场景。

ECDH PSI 算法步骤

  1. Alice和Bob商定一个椭圆曲线 E
  2. Alice随机地生成一个私钥 Sa
  3. Alice 重复地对她的原始集合中的每个值进行散列,直到它们都是 E 的 generator。例如,她可以迭代地对每个值应用SHA256,直到输出对应于曲线上某一点的 x 值。
  4. 对于这些散列值中的每一个Ga,Alice计算出 Ga × Sa,其中 Ga 是步骤3中曲线上的对应的点。
  5. Alice将她的计算值 Ga × Sa 发送给Bob。
  6. Bob随机生成一个私钥 Sb
  7. Bob重复地对他的原始集合中的每一个值进行散列处理,直到它们都是 E 的 generator(与Alice的做法相同)。
  8. Bob对于这些散列值中的每一个 Gb,计算出 Gb × Sb
  9. Bob通过Alice原始集合中的每个元素 G × Sa 来计算对应的共享密钥 Ga × SaSb
  10. Bob将 (Gb × Sb, Ga × SaSb) 发给Alice。
  11. Alice通过Bob的原始集合中的每个元素 Gb × Sb 计算所对应的共享密钥 Gb × SaSb
  12. Alice将共享密钥 Ga × SaSb 与共享密钥 Gb × SaSb 进行比较,找到交集。

基于ECC的散列值处理方法

上述步骤3和步骤7提到基于ECC的散列值处理,使处理完之后的散列值使ECC曲线上面的某一个x值,这一步骤可以使用Elliptic Curve Cryptography(ECC)中的Hash-to-Point算法。该算法将任意长度的输入消息散列为曲线上的点,使得每个输入消息都对应于曲线上唯一的点。

在实践中,有几种不同的Hash-to-Point算法可供选择,但其中最常见的是Elligator 2算法。下面是使用Elligator 2算法将一个值散列为曲线上某一点的 x 值的步骤:

  1. 对输入值进行哈希处理,生成一个256位的哈希值。
  2. 将哈希值拆分为两个128位的值,假设它们分别为 uv
  3. 计算 ++r=v * (u^3 + a*u + b)++。 其中 ab 是椭圆曲线的系数。
  4. 如果结果是二次非剩余,则将 u 加 1,重复步骤3,直到结果为二次剩余。计算方式为 jacobi(r,p) = 1,则称 a 为二次剩余;如果 jacobi(a,p) = -1,则称 a为二次非剩余。其中p是椭圆曲线对应的有限域 Fp 中最大奇素数 p
  5. 计算 ++sqrt((v * (u^3 + a*u + b))/h)++ ,其中 h 是曲线上的 Cofactorsqrt 表示平方根。
  6. 如果结果不存在,则返回错误;否则,检查 y 坐标是否为偶数。如果是,则返回 (x, y) ;否则,返回 (x, -y)

经过上述步骤这样就可以将给定的值散列到椭圆曲线上的一个点,该点的x坐标对应于哈希值。

上述红色字体部分是否正确还有待考证,希望有朋友能提出来纠正或者确定的答案。

名词解释

二次非剩余

在数论中,素数 p 的一个二次剩余是指存在一个整数 x,满足x² ≡ a ( mod p)。如果不存在这样的整数 x ,则称 a 是模 p 的二次非剩余。

简单来说,对于给定的素数 p 和整数 a ,如果方程 x² ≡ a ( mod p) 有解,那么 a 就是模 p 的二次剩余;如果方程无解,那么 a 就是模 p 的二次非剩余。

二次剩余

计算二次剩余 b,满足 b ≡ p+1 (mod 4)b^((p-1)/2) ≡ 1 (mod p),然后选取 Px 坐标为 a = (m^2 * b) mod p。只有当 b 是椭圆曲线上的二次剩余时,这种哈希方法才是安全的。

Cofactor

Cofactor 是密码学中椭圆曲线密码学(ECC)中一个概念,指的是在ECC中基点 G 的阶 n 和椭圆曲线上点 P 的阶 k 之间的关系,即: cofactor = n / k

其中,基点 G 的阶 n 是指通过连续进行加法操作,使得 G 加上自己 n 次后,结果为无穷远点的最小正整数。椭圆曲线上某个点 P 的阶 k 是指通过连续进行加法操作,使得 P 加上自己 k 次后,结果为无穷远点的最小正整数。

如果椭圆曲线中的 Cofactor 等于1,那么该椭圆曲线就是一个安全的曲线。但是,如果 Cofactor 大于1,则会存在一些攻击,例如 Cofactor Attack,因此在ECC中,要选择 Cofactor 等于1的曲线来保证安全性。

ECDH PSI算法的使用场景

ECDH PSI(Elliptic Curve Diffie-Hellman Private Set Intersection)算法在某些特定场景下可以发挥其独特的优势,主要用于需要在保护隐私的前提下进行集合交集计算的场景。以下是一些常见的特定场景:

  1. 隐私保护的数据合并:当多个参与方拥有各自的私有数据集,并希望在合并数据时保护数据的隐私时,ECDH PSI算法可以用于计算数据集之间的交集。例如,不同医疗机构希望共享部分数据以进行研究分析,但又不希望直接暴露敏感信息。

  2. 联合分析和数据挖掘:在需要对多个数据集进行联合分析和数据挖掘的场景中,参与方可以使用ECDH PSI算法来确定数据集之间的交集元素,以便进行联合分析和挖掘,同时保护每个参与方的数据隐私。

  3. 安全计算外包:当一个数据持有者希望将其数据外包给其他计算方进行处理时,ECDH PSI算法可以用于在不泄露数据内容的情况下,进行集合交集计算。这种场景下,数据持有者可以使用ECDH PSI算法与计算方进行安全的数据交互。

ECDH PSI算法的优缺点

优点

  1. 隐私保护:ECDH PSI算法通过使用椭圆曲线Diffie-Hellman协议和哈希函数,可以在保护隐私的前提下进行集合交集计算。参与方无需直接暴露其数据内容,仅通过哈希值进行交互,从而保护数据隐私。

  2. 安全性:ECDH PSI算法基于公钥密码学和椭圆曲线运算,具有较高的安全性。使用椭圆曲线Diffie-Hellman协议进行密钥交换,确保了交互过程中的数据保密性和完整性。

  3. 可验证性:ECDH PSI算法允许参与方在完成集合交集计算后进行验证。通过使用公钥和私钥的组合,可以验证交集结果的正确性和完整性。

  4. 适用性:ECDH PSI算法适用于小规模数据集和相对较低的计算开销。相对于其他更复杂的PSI算法,ECDH PSI算法的实现较为简单,并且可以在资源有限的环境下进行部署。

  5. 算法整合性:ECDH PSI算法结合了椭圆曲线Diffie-Hellman协议和PSI算法的思想,能够同时实现私密的数据交换和集合交集计算,从而减少了算法的复杂性和通信开销。

缺点

需要注意的是,ECDH PSI算法适用于较小规模的数据集和较低的计算开销。对于大规模数据集和实时交互的场景,可能需要考虑其他更高效的PSI算法。选择使用ECDH PSI算法时,应综合考虑隐私保护需求、数据规模、计算资源和算法复杂性等因素。

  1. 复杂性:ECDH PSI算法的实现相对复杂,需要涉及椭圆曲线运算、密钥交换等加密算法。这会增加算法的实现难度和计算复杂度,对于一般的应用场景来说,可能过于复杂。

  2. 计算开销:ECDH PSI算法需要进行多次密钥交换和椭圆曲线运算,这对计算资源的要求较高。在大规模数据集和实时交互的情况下,可能会面临较大的计算开销和延迟,限制了算法的可用性

猜你喜欢

转载自blog.csdn.net/shuizhongmose/article/details/131001304
psi