当前位置: 首页 > news >正文

【隐私计算篇】不经意传输协议(OT/OTE)的进一步补充

1. 背景介绍        

        关于不经意传输(OT)和不经意传输扩展(OT Extension), 我们在之前的文章《OT&OT扩展(不经意传输扩展)深入浅出》做了详细的说明。但对于OT/OTE的一些技术或者概念,还有一定的内容欠缺,因此本文根据冯登国院士关于安全多方计算协议的分享,做了相关的笔记,在这里对OT的相关内容做进一步的补充,主要涉及OT扩展类别体系、COT-ROT-OT的构建关系等。

        接下来,我们先回顾一下标准OT的构建基础(依赖的密码学技术和困难假设)以及一种经典的1-out-of-2 OT协议Naor-Pinkas OT。然后再引出本文的要点。

1.1 标准OT的构建基础

1.2 Naor-Pinkas OT过程(基于CDH困难假设的示例)

        Naor-Pinkas Oblivious Transfer (Naor-Pinkas OT) 是一种经典的基于公钥加密的 1-out-of-2 Oblivious Transfer (OT) 协议,该协议建立在 Diffie-Hellman 假设 上。在公钥密码学中,循环群的概念【3】可以被用于构建Diffie-Hellman密钥交换。符号G表示循环群的基群,指有限域上的一个有限群。g是生成元,群中的一个元素,通过不断对 g 进行幂运算可以生成整个群 G。

协议步骤:
1. 循环群(\mathbb{G}, q, g, C)
  • 协议基于一个循环群,群的生成元为 g
  • 发送方和接收方都在该群内进行操作。
2. 接收方的选择 b \in \{0,1\}
  • 接收方根据比特选择 b,生成 PK_b = g^k,然后计算另一个公钥 PK_{1-b} = C / PK_b
  • 接收方发送 PK_0​ 给发送方。
3. 发送方的预计算
  • 发送方生成一个随机数 r \in \mathbb{Z}_q,并计算 g^r 和 C^r
  • 发送方用 (PK_0)^r 和 (PK_1)^r 进行加密。也就是: E_0 = H((PK_0)^r, 0) \oplus m_0,​E_1 = H((PK_1)^r, 1) \oplus m_1
  • 然后发送方将 g^r, E_0, E_1 发送给接收方。
4. 接收方的解密
  • 接收方通过 b 选择的值,计算 (g^r)^k,并使用哈希函数 H((g^r)^k, b) 来解密选定的消息 m_b​。
  • 接收方无法计算未选择的消息 m_{1-b}​,因为没有 (PK_{1-b})^r的私钥部分 r。

2. OT存在的性能问题及OT Extension的引出

2.1 OT性能问题

        关于OT的作用和性能问题,我们在 《OT&OT扩展(不经意传输扩展)深入浅出》文中做了详细的解释,主要是由于OT需要依赖公钥密码操作,而MPC协议需要大量的OT运算,因此会导致通信量较大,整体效率低。

2.2 OT Extension分类

        因此也就引出了后续的OT Extension技术,通过少量的Base OT(有限次公钥密码操作),实现大量的OT生成。下图中列出了OT扩展的类别体系,包含IKNP类、PCG类、PCF类。不同的类别基于的困难假设不同,比如IKNP类基于PRG的困难假设,PCG类基于LPN的困难假设。

2.2.1 PRG困难假设

        伪随机生成器(Pseudo-Random Generator, PRG) 的困难假设是指构建安全伪随机生成器所依赖的计算困难问题。其核心目标是扩展一个小的随机种子为更长的伪随机序列,且该伪随机序列在计算上不可区分于真正的随机序列。

        PRG 的困难假设可以概括为以下几个方面:

1. 可计算性假设

        PRG 的输出必须是可有效计算的。也就是说,给定一个初始的随机种子 s,可以通过多项式时间的算法生成一个伪随机序列 G(s)。

2. 不可区分性假设

        这是假设的核心。对于一个有效的 PRG 来说,伪随机序列应该在计算上与真正的随机序列难以区分。具体而言,给定伪随机生成器 G 的输出序列 G(s)和等长的真正随机序列,任何多项式时间的算法(即攻击者)在接受这两者作为输入时,都不能以显著优于随机猜测的概率区分出这两个序列。

        用数学语言表述为:对于任何多项式时间的算法 A,存在一个可以忽略的函数\epsilon(n),使得:

\left| \Pr[A(G(s)) = 1] - \Pr[A(r) = 1] \right| < \epsilon(n),

        其中 s 是随机种子,G(s) 是 PRG 生成的伪随机序列,r 是真正的随机序列,\epsilon(n) 随着输入大小 n 增大趋近于零。

3. 基础困难问题

        PRG 的安全性通常基于一些公认的计算困难问题,这些问题在当前的计算能力下是难以有效解决的:

  • 离散对数问题(Discrete Logarithm Problem, DLP):在某些有限群上,计算 g^x 容易,但已知 g^x 推导 x 则很难。这在椭圆曲线密码学和 Diffie-Hellman 协议中有重要应用。

  • 整数分解问题:对于大整数 N,分解成两个大素数的乘积是困难的。这是 RSA 加密的基础。

  • 基于格的假设:如 Learning With Errors (LWE) 问题,它涉及在高维格中求解某些方程或猜测噪声,是一种非常难的计算问题。基于格的假设可以构建抗量子攻击的 PRG。

  • 扩展的单向函数:单向函数是一类易于计算但难以反向的函数。PRG 通常建立在单向函数的基础上,假设通过伪随机生成器生成的序列难以通过逆向计算还原。

        总结起来,PRG 的困难假设归根结底依赖于:(1)PRG 的输出不可与真正的随机序列区分。(2)该不可区分性假设基于某些计算困难问题。

2.2.2 LPN(Learning Parity with Noise问题)困难假设

        学习带噪声的奇偶校验(LPN)问题【4,5】作为加密或认证协议等“可证明安全”密码方案构建的困难假设基础。在理论方面,LPN 问题等价于随机线性码解码问题。在实践方面,LPN 基于的方案通常非常简单且高效,既节省代码空间,又能在时间和空间要求方面表现优异。LPN在效率上非常高效,利用了有限域中的乘法和加法操作。

        LPN通过将秘密信息表示为带有误差的方程组,有效地通过引入噪声来隐藏秘密的值。LPN作为一种后量子安全性假设使用,类似于纠错码理论,并且与学习带误差问题(Learning with Errors, LWE)有相似之处。

        LPN问题定义如下:

A · s + e mod p = u

        给定一个矩阵A,即使在噪声向量e的情况下,要找到一个向量s以无限接近目标向量u也是一个计算难题。这里,"·"表示点积,p是一个大于或等于2的素数,s是模p的整数域中的n维向量,而噪声向量e是具有较小汉明重量的稀疏向量。

2.2.3 DDH(Decisional Diffie-Hellman)困难假设

        DDH困难假设是密码学中的一个基础假设,用于证明许多密码协议的安全性。该假设在离散对数问题的基础上提出,主要与 Diffie-Hellman 密钥交换协议相关。

        DDH 困难假设的核心内容如下:

        给定一个有限群 G(通常是一个循环群),群的生成元 g,以及三个群元素 g^ag^bg^c(其中 a、b、c 是随机选取的整数),DDH 假设认为:

        难以区分 (g^a, g^b, g^{ab})(g^a, g^b, g^c) 两个三元组。

        也就是说,给定三个元素 g^ag^b 和第三个元素 g^c,如果第三个元素是 g^{ab} 或者是 g^c(随机独立于 a 和 b 生成的),攻击者无法有效地区分这两种情况。

具体步骤

  1. 选择一个大质数 p 和一个生成元 g。
  2. 随机选取整数 a 和 b,计算 g^a 和 g^b
  3. 两种可能的情况:
    • 有效的 Diffie-Hellman 三元组:给定 g^a, g^b, g^{ab}
    • 伪造的三元组:给定 g^a, g^b, g^c,其中 c 是随机的。
  4. DDH 假设断言,无法有效区分两种三元组。

        不同类型的OT扩展,在通信效率、计算效率上存在差异,以下展示了对比分析, PCG类的协议通信效率高,适合在低带宽场景下使用。而IKNP协议则适合在高带宽下使用。另外,大部分的OT扩展协议可以通过COT->ROT->OT进行构造。下一章节具体来分析一下。

3. OT构造链路

        事实上,我们在《OT&OT扩展(不经意传输扩展)深入浅出》文中,详细介绍了IKNP03-OT Extension的生成过程,其基于有限次Correlated OT生成n组Random OT,可以详细阅读理解一下实现方案。

        Random OT中的Random其实是指预处理过程中发送者的消息r_0r_1是随机生成的,然后经过OT计算,接收者获得选择比特c对应的r_c信息,该过程所涉内容与实际要发送的信息m_0m_1无关,因此可以预先生成。后续真正要发送m_0m_1时,可以利用已经生成的ROT信息,快速实现OT。下图展示了具体的执行过程。接收者通过选择比特b获得所需要的信息m_b

        进一步地,通过COT, 可以用于快速生成ROT。所谓的COT是指,发送方的消息x_0x_1之间存在相关关系【6,7】。

        通过对消息对进行Hash化,可以实现信息的随机性。因此可以快速生成ROT。下图展示的是一个示例。具体的实现案例,依然可以参考我们之前写的IKNP03-OT Extension的生成过程。

        接下来我们来分析一下为什么说COT的生成相对于ROT来说代价更低或者说更容易。从两个层面来回答:        

1. 随机性来源:

  • ROT生成的随机性复杂:ROT需要生成多个随机比特并确保每个比特对应的消息对都是随机的。因此,ROT需要在安全性上保证消息对的完全随机性,并且消息之间没有任何关联。

  • COT可以基于简单的关联:COT只要求消息对之间存在特定的关联性(例如,线性关系、加法关系等)。这种关联可以通过从ROT生成的随机性中简单地引入某种固定的数学变换实现。因此,COT可以使用ROT的随机消息并通过简单的线性变换或函数构造所需的关联性。

2. 从ROT转换为COT非常高效

  • 从ROT生成COT时,只需要将ROT的随机消息经过一次线性或代数变换来创建关联的消息对。比如,设定两个消息对(m_0, m_1),COT只需要确定一个差值 \Delta,通过加法运算来形成关联对:(x_0, x_1) = (m_0 + \Delta, m_1),这种数学操作的计算复杂度非常低,因此生成COT相对简单。

  • 一次ROT生成的随机性可以用于多次COT操作。这意味着通过少量的ROT,能够生成大量的COT,而不需要为每个COT实例单独进行高成本的生成。

        从上述描述来看,其实COT的生成是利用了ROT的随机性。COT可以通过ROT的随机性加上简单的数学变换生成,而不需要重新生成复杂的随机性。,也意味着在多个COT实例中可以重复利用同一组ROT生成的随机性。通过一次ROT生成的随机消息对,可以复用多次,通过简单的数学变换生成多个COT实例。有了COT后,又可以变换为ROT实例,进而实现OT的生成。这一段可能比较绕,建议结合 《OT&OT扩展(不经意传输扩展)深入浅出》中的IKNP03-OT Extension说明反复阅读理解。

4. 参考材料

【1】安全多方计算(MPC)的基本概念及基础组件

【2】基于秘密分享方法的 MPC 协议

【3】密码学-02-群论基础

【4】Cryptography from Learning Parity with Noise

【5】Learning Parity with Noise (LPN)

【6】Efficient Actively Secure OT Extension

【7】OT_extension


http://www.mrgr.cn/news/29614.html

相关文章:

  • 自组织是管理者和成员的双向奔赴
  • 示波器的使用
  • Lucene详解介绍以及底层原理说明
  • maven pom文件中的变量定义
  • Qt安卓开发连接手机调试(红米K60为例)
  • 数据结构入门学习(全是干货)——树(中)
  • 【研发日记】嵌入式处理器技能解锁(六)——ARM的Cortex-M4内核
  • Mybatis中sql数组为空判断
  • 智能优化算法-遗传算法(GA)(附源码)
  • MySQL5.7主从复制搭建-gtid方式
  • 音视频入门基础:AAC专题(8)——FFmpeg源码中计算AAC裸流AVStream的time_base的实现
  • OpenCV-直方图
  • 数据处理与统计分析篇-day03-Numpy环境搭建
  • 在Windows操作系统中,如何再命令提示符(cmd)中快速打开自启动文件夹?
  • TCP/IP Socket用于测试免费使用的服务器端
  • C++中类的创建和声明
  • Vmware虚拟机无法打开内核设备“\\.\Global\vmx86“的解决方法
  • Gitlab升级14.0.12-->14.3.6遇到的gitlab-ctl reconfigure错误
  • MySQL聚合统计和内置函数
  • JS基础:数组for循环年龄案例