茫然传输(Oblivious Transfer)

2023-11-25 00:59

本文主要是介绍茫然传输(Oblivious Transfer),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自

1-out-2 OT

Oblivious Transfer(茫然传输)简称OT,是一种基本密码学原语,被广泛的用于安全多方计算等领域。
OT最早在1981年被 Michael O. Rabin提出[1],在Rabin的OT协议中,发送者S发送一个信息m给接收者R,接收者R以1/2的概率接受信息m。所以在协议交互的结束的时候,S并不知道R是否接受了消息。该方案是基于RSA加密体系构造的。
1985年S. Even, O. Goldreich, and A. Lempel提出了1-out-2 OT[2],在新的方案中S每次发送2个信息 m 0 m_0 m0 m 1 m_1 m1,而R每次输入一个选择b。当协议结束的时候,S无法获得关于b的任何有价值的信息,而R只能获得 m b m_b mb,对于 m 1 − b m_{1-b} m1b,R也一无所知。
在这里插入图片描述
1988年,Claude Crépeau 证明了Rabin的OT方案和1-out-2 OT方案是等价的[3]。

1-out-n OT

而在1986年Brassard等人首次将1-out-2 OT扩展为1-out-n OT[4],1998年Stern J P.首次将公钥特性加入了1-out-n OT协议之中[5]。
在这里插入图片描述
2001年Naor和Pinkas基于Diffie-Hellamn(DDH)困难问题假设给出了一个高效的2轮1-out-n OT协议[6],同一年Aiello等人基于同态加密也给出了一个2轮的1-out-n OT协议[7],并且在该方案中无论n多大,R只需要进行2次指数运算而S则需要2n 2n2n次指数运算。
2003年Yuval Ishai等人以1-out-2 OT为基础提出了一种高效的通过少量OT构造大量OT的方案,该方案基于随机神谕机构造[8]。
2008年,Lindell将cut-and-choose技术融入到OT协议中,给出了一个高效而且可以完全模拟的OT协议[9]。
2013年,Vladimir Kolesnikov1 和 Ranjit Kumaresan直接构造了1-out-n OT[19],并且对于短消息的茫然传输效率比03年Yuval Ishai等人的方案更高。

浅见

在入门阶段,可以粗略看一下2000年之前的文章对于OT的起源和初始的想法有大体的了解。
对于[6] 和[7]的两篇文章可以着重看一下,其中对于安全性的证明和复杂性的分析是比较符合中等水平的要求的。
2003年和2013年的两篇论文可以对比看一下,很有意义也就很有意思。
2008年的论文作者Lindell是个大佬,牛到可以写算法导论那种等级著作的大佬,他在大作中的安全性证明不是写给一般水平玩家看的。
除此之外,还可以看一下Dan Bone的书[]中关于OT部分的介绍,比较浅显容易理解。

参考文献
[1]Michael O. Rabin. “How to exchange secrets by oblivious transfer.”
[2]S. Even, O. Goldreich, and A. Lempel, “A Randomized Protocol for Signing Contracts.”
[3]Claude Crépeau. “Equivalence between two flavours of oblivious transfer.”
[4]Gilles Brassard, Claude Crépeau and Jean-Marc Robert. “All-or-nothing disclosure of secrets.”
[5]Stern J P. “A New and Efficient All-Or-Nothing Disclosure of Secrets Protocol.”
[6]Moni Naor and Benny Pinkas. “Efficient oblivious transfer protocols.”
[7]Bill Aiello, Yuval Ishai, and Omer Reingold. “Priced Oblivious Transfer:How to Sell Digital Goods.”
[8]Ishai Y., Kilian J., Nissim K., Petrank E. “Extending Oblivious Transfers Efficiently.”
[9]Lindell Y. “Efficient Fully-Simulatable Oblivious Transfer.”
[10]Vladimir Kolesnikov and Ranjit Kumaresan. “Improved OT Extension for Transferring Short Secrets.”

敌手模型

半诚实(Semi-Honest)模型

假设参与计算的各方都是半诚实的,即参与方可以保留交互时得到的信息。对于想要协作完成计算并得到正确结果的参与方来说,这样的模型符合实际情况。

半诚实模型的敌手行为时被动的,它只是收集信息,这些信息可能用于以后的分析以图得到私有信息。

恶意(Malicious)模型

相对于半诚实模型,恶意的敌手拥有更主动的行为:

  • 它可以拒绝参与协议的执行
  • 可以用任意值来替换它的输入
  • 可以在任意时间终止执行

Naor-Pinkas茫然传输协议

Naor和Pinkas通过三次公钥密码学操作实现了半诚实模型下的1-out-of-2茫然传输协议。
输入信息:

  • Sender输入两个长度为l比特的字符串 ( x 0 , x 1 ) (x_0, x_1) (x0,x1)
  • Receiver输入一个选择比特r,用于选择 ( x 0 , x 1 ) (x_0, x_1) (x0,x1)中的其中一个

系统参数:

  • p,q均为素数,且q|p-1
  • Z q Z_q Zq为q阶群, G q G_q Gq Z p ∗ Z_p^* Zp的q阶子群
  • 给定 Z p ∗ Z_p^* Zp的生成元g,满足Diffie-Hellman困难性假设

随机预言函数:

  • H

协议:

  • 步骤1
    S发送并公布随机数 C ∈ Z q C \in Z_q CZq,然后S生成随机数a,并计算 g a g^a ga C a C^a Ca
  • 步骤2
    R选择随机数 1 ≤ k ≤ q 1 \le k \le q 1kq,并生成公钥 p k r = g k {pk}_r=g^k pkr=gk p k 1 − r = C / g k {pk}_{1-r}=C/g^k pk1r=C/gk,R将 p k 0 {pk}_0 pk0发送给S。
  • 步骤3
    S计算 ( p k 0 ) a ({pk}_0)^a (pk0)a ( p k 1 ) a = C a / ( p k 0 ) a ({pk}_1)^a=C^a/({pk}_0)^a (pk1)a=Ca/(pk0)a。Sender将 ( E 0 , E 1 ) (E_0, E_1) (E0,E1)发送给Receiver。 E 0 = ( g a , H ( ( p k 0 ) a ) ⊕ x 0 ) E_0=(g^a, H(({pk}_0)^a)\oplus x_0) E0=(ga,H((pk0)a)x0) E 1 = ( g a , H ( ( p k 1 ) a ) ⊕ x 1 ) E_1=(g^a, H(({pk}_1)^a)\oplus x_1) E1=(ga,H((pk1)a)x1)
  • 步骤4
    Receiver通过计算 H ( ( g a ) k ) H((g^a)^k) H((ga)k)得到 H ( ( p k r ) a ) H(({pk}_r)^a) H((pkr)a),因此可以得到
    x r = E r , 2 ⊕ H ( ( p k r ) a ) x_r=E_{r,2}\oplus H(({pk}_r)^a) xr=Er,2H((pkr)a)

扩展OT(OT Extension)

相对于对称密码学,基于数论中各种困难性假设的公钥密码学操作的算法复杂度更高。因此,在平时密文传输信息的过程中,通信双方都会先进行基于公钥密码学的密钥交换协议得到一个通信的对称密钥加密传输信息。

扩展OT的思路也一样。虽然这种方法没有完全抛弃公钥密码学操作,但是已经将公钥密码学操作的数量降低到很少。如,扩展OT可以将 O T l m OT_l^m OTlm归约到使用少量基于公钥密码的 O T λ λ OT_{\lambda}^{\lambda} OTλλ和若干对称密码学操作,其中 λ &lt; &lt; m \lambda &lt;&lt;m λ<<m。通常情况下, λ \lambda λ可以取为80,128或更多。注意 λ \lambda λ不能太小,因为其通常作为安全性参数。

  • 使用公钥密码学操作产生少量种子OT
  • 利用堆成密码学操作(如PRG,哈希函数等)将这些种子OT协议扩展为任意数量的OT协力。

IKN茫然传输协议

Yuval Ishai等人提出的IKN茫然传输扩展协议,其中 λ \lambda λ为安全参数

  1. 1次 O T l m OT_l^m OTlm协议->1次 O T m λ OT_m^{\lambda} OTmλ协议
  2. 1次 O T m λ OT_m^{\lambda} OTmλ协议-> λ \lambda λ O T λ 1 OT_{\lambda}^1 OTλ1协议。

注:下面展示Extending OT with a Semi-Honest Receiver

Part1: O T l m OT_l^m OTlm-> O T m λ OT_m^{\lambda} OTmλ

输入信息:

  • Sender有m对输入 ( x j , 0 , x j , 1 ) (x_{j,0},x_{j,1}) (xj,0xj,1) x x x的长度为 l l l位, 1 ≤ j ≤ m 1 \le j \le m 1jm
  • Receiver有m个输入选择比特 r = ( r 1 , r 2 , . . . , r m ) \textbf{r}=(r_1, r2, ..., r_m) r=(r1,r2,...,rm)

系统参数:

  • 安全参数 λ \lambda λ

随机预言函数:

  • H : [ m ] × { 0 , 1 } λ → { 0 , 1 } l \textbf{H}:[m]\times {\{0,1\}}^{\lambda}\rightarrow {\{0,1\}}^l H:[m]×{0,1}λ{0,1}l

协议:

  1. S初始化一个随机向量 s ∈ { 0 , 1 } λ \textbf{s} \in {\{0,1\}}^{\lambda} s{0,1}λ
  2. R初始化一个 m × λ m\times \lambda m×λ的随机矩阵 T \textbf{T} T,其中 t i \textbf{t}^i ti代表 T \textbf{T} T的第i列, t i \textbf{t}_i ti代表 T \textbf{T} T的第i行。
  3. 进行 O T m λ OT_m^{\lambda} OTmλ协议,在该协议中发送者为R而接收者为S,分别记为 R S R_S RS S R S_R SR
    • R S R_S RS λ \lambda λ对输入 ( t i , r ⊕ t i ) (\textbf{t}^i,\textbf{r}\oplus \textbf{t}^i) (ti,rti)
    • S R S_R SR λ \lambda λ个输入选择比特 s \textbf{s} s
    • S R S_R SR得到一个 m × λ m\times \lambda m×λ的矩阵 Q \textbf{Q} Q
  4. S,即 S R S_R SR,发送m对 ( y j , 0 , y j , 1 ) (y_{j, 0}, y_{j, 1}) (yj,0,yj,1)给R,其中 y j , 0 = x j , 0 ⊕ H ( j , q j ) y_{j,0}=x_{j,0}\oplus H(j, \textbf{q}_j) yj,0=xj,0H(j,qj) y j , 1 = x j , 1 ⊕ H ( j , q j ⊕ s ) y_{j,1}=x_{j,1}\oplus H(j,\textbf{q}_j \oplus \textbf{s}) yj,1=xj,1H(j,qjs) 1 ≤ j ≤ m 1\le j\le m 1jm
    q j = ( s j ⋅ r j ) ⊕ t j = { t j r j = 0 s j ⊕ t j r j = 1 \textbf{q}_j=(\textbf{s}_j \cdot \textbf{r}_j)\oplus \textbf{t}_j=\left\{ \begin{aligned} t_j &amp;&amp; {r_j=0}\\ s_j\oplus t_j &amp;&amp; {r_j=1}\\ \end{aligned} \right. qj=(sjrj)tj={tjsjtjrj=0rj=1
  5. R计算m个输出 z j = y j , r j ⊕ H ( j , t j ) z_j=y_{j, r_j}\oplus H(j,\textbf{t}_j) zj=yj,rjH(j,tj);其中, z j = x j , r j z_j=x_{j,r_j} zj=xj,rj 1 ≤ j ≤ m 1\le j\le m 1jm

重点分析4,5步

  • r j = 0 r_j=0 rj=0时,R收到 y j , 0 = x j , 0 ⊕ H ( j , t j ) y_{j,0}=x_{j,0}\oplus H(j, t_j) yj,0=xj,0H(j,tj)以及 y j , 1 = x j , 1 ⊕ H ( j , t j ⊕ s ) y_{j,1}=x_{j,1}\oplus H(j, t_j\oplus s) yj,1=xj,1H(j,tjs),而R只能解开 x j , 0 x_{j,0} xj,0
  • r j = 1 r_j=1 rj=1时,R收到 y j , 0 = x j , 0 ⊕ H ( j , s j ⊕ t j ) y_{j,0}=x_{j,0}\oplus H(j, s_j\oplus t_j) yj,0=xj,0H(j,sjtj)以及 y j , 1 = x j , 1 ⊕ H ( j , t j ) y_{j,1}=x_{j,1}\oplus H(j, t_j) yj,1=xj,1H(j,tj),而R只能解开 x j , 1 x_{j,1} xj,1

PART2 O T m λ OT_m^{\lambda} OTmλ-> O T λ λ OT_{\lambda}^{\lambda} OTλλ

思路:其实就是利用 O T λ λ OT_{\lambda}^{\lambda} OTλλ传输混淆元,后面与OT再无关系。后面通过随机预言函数基于长度为 λ \lambda λ的混淆元生成长度为m的混淆项。

输入信息:

  • Sender有对 λ \lambda λ输入 ( x i , 0 , x i , 1 ) (x_{i,0},x_{i,1}) (xi,0xi,1) x x x的长度为 m m m位, 1 ≤ i ≤ λ 1 \le i \le \lambda 1iλ
  • Receiver有 λ \lambda λ个输入选择比特 r = ( r 1 , r 2 , . . . , r λ ) \textbf{r}=(r_1, r2, ..., r_{\lambda}) r=(r1,r2,...,rλ)

系统参数:

  • 安全参数 λ \lambda λ

随机预言函数:

  • G : { 0 , 1 } λ → { 0 , 1 } m \textbf{G}: {\{0,1\}}^{\lambda}\rightarrow {\{0,1\}}^m G:{0,1}λ{0,1}m

协议:

  1. S初始化 λ \lambda λ对随机的长度为k比特的 ( s i , 0 , s i , 1 ) (s_{i,0},s_{i,1}) (si,0,si,1)
  2. 进行 O T λ λ OT_{\lambda}^{\lambda} OTλλ协议,在该协议中发送者为S而接收者为R,分别记为 S S S_S SS R R R_R RR
    • S S S_S SS λ \lambda λ对输入 ( s i , 0 , s i , 1 ) (s_{i,0},s_{i,1}) (si,0,si,1)
    • S R S_R SR λ \lambda λ个输入选择 r \textbf{r} r
    • S R S_R SR得到长度为 λ \lambda λ的向量 s = { s i , r i } \textbf{s}=\{s_{i,r_i}\} s={si,ri} 1 ≤ i ≤ λ 1\le i \le \lambda 1iλ
  3. S向R发送 λ \lambda λ ( y i , 0 , y i , 1 ) (y_{i,0},y_{i,1}) (yi,0,yi,1),其中 y i , 0 = x i , b ⊕ G ( s i , b ) y_{i,0}=x_{i,b}\oplus \textbf{G}(s_{i,b}) yi,0=xi,bG(si,b)
  4. R通过步骤2中得到的向量 s \textbf{s} s进行还原,即 z i = y i , r i ⊕ G ( s i , r i ) z_i=y_{i,r_i}\oplus \textbf{G}(s_{i, r_i}) zi=yi,riG(si,ri)

PART3 O T λ λ OT_{\lambda}^{\lambda} OTλλ可以通过调用 λ \lambda λ O T λ 1 OT_{\lambda}^1 OTλ1协议实现

效率分析

  • R共调用m次H, 2 λ 2\lambda 2λ次G,发送数据 2 m λ 2m\lambda 2mλ比特
  • S共调用2m次H, λ \lambda λ次G,发送数据 2 m l 2ml 2ml比特
  • 当然协议中调用了一次 O T λ λ OT_{\lambda}^{\lambda} OTλλ协议,因为与m和l无关为常数。

综上,整个流程归约到 O T λ λ OT_{\lambda}^{\lambda} OTλλ(只有该部分与公钥密码学相关),即相当于 λ \lambda λ O T λ 1 OT_{\lambda}^1 OTλ1协议。

这篇关于茫然传输(Oblivious Transfer)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/422874

相关文章

远程桌面文件传输异常或者取消传输后一直显示正在取消

环境: Window Servers 2008 R2 摘要说明: 本篇文章主要讲述当应用远程桌面进行文件传输时,若因网络等导致进程中断,再次传输时则不能进行文件传输;或者传输时取消传输,然后一直显示正在取消。此时可以通过重启window的rdpclip.exe进程来解决此问题 步骤 1.关闭rdpclip.exe进程 远程桌面连上上传输异常的服务器,打开资源管理器,在进程列关闭rdpc

Java传输本地目录到远程服务器

在使用Java进行开发时,有时需要将本地目录中的文件复制或传输到远程服务器上。这种场景在部署应用程序或进行数据迁移时尤为常见。JSch库提供了一种简便的方法来实现这一功能。以下是从Codekru网站获取的信息摘要,并结合相关内容,展示如何使用JSch库实现从本地计算机复制整个目录到远程服务器的过程。 准备工作 首先,确保您的项目中已经包含了JSch库的依赖。如果您使用Maven作为构建工具,可

高效传输秘籍,揭秘Rsync和SCP的优劣,助你做出明智选择!

在日常的运维工作中,文件传输任务频繁出现,而选择合适的工具能显著提高工作效率。Rsync 和 SCP 是两款常见的文件传输工具,但它们各具优缺点,适合不同的场景。本文将通过深入分析这两款工具的特性、使用场景和性能,帮助你做出明智的选择,从而在文件传输中省时省力。 Rsync 与 SCP 简介 Rsync:增量传输的强大工具 Rsync 是一款支持文件同步的工具,广泛应用于备份和传输

使用Java通过SSH协议在两个远程服务器之间传输文件

使用Java通过SSH协议在两个远程服务器之间传输文件是一项常见的任务,特别是在需要自动化文件备份、同步或迁移的情况下。JSch库为Java开发者提供了一个方便的方式来实现这一功能。以下是从Codekru网站获取的信息摘要,并结合相关内容,展示如何使用JSch库实现从一个远程服务器向另一个远程服务器传输文件。 准备工作 首先,确保您的项目中已经包含了JSch库的依赖。如果您使用Maven作为构

后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 一、 概述 工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大、运行稳定,但是有些方面不是太符合需求,主要有如下三点: 需要自己编写客户端来消费canal解析到的数据server-client模式,需要同时部署server和client两个组件,我们的项目中有6个业务数据库要实时同步到redis

Android中Socket通信之TCP与UDP传输原理

一、Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。 而Socket通信中基于TCP/IP协议的通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每

经验笔记:IM系统中的点对点传输

IM系统中的点对点传输经验笔记 随着即时通讯(IM,Instant Messaging)系统的发展,用户对于高效、安全的通信需求日益增长。点对点(P2P,Peer-to-Peer)传输作为一种能够提高数据传输效率和保护用户隐私的技术,越来越受到IM系统的青睐。本文将探讨在IM系统中实现点对点传输的必要性、挑战及解决方案。 1. 引言 在传统的IM系统中,所有的消息都需要通过中心服务器进行路由

关于小米手机USB传输稍大点的文件老中断的问题解决方法!

关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次。 后来使用了360的手机助手,从调试模式传输文件,虽然不会中断,但是慢的要死。 最后我看到手机插上后手机提示 有3种模式:仅限充电 传输文件(MTP) 传输照片(PTP)。当然我们选择传输文件是没戏了,会中

FTP传输中文路径问题

FTP远程文件中文路径传输。 设置controlEncoding为服务器字符集,再执行FTP.login(); 例如ftp服务器为Win,chcp查到为936(GBK简体中文),则在FTPClient.setControlEncoding='GBK',然后FTPClinet.login();

A fault diagnosis method of bearings based on deep transfer learning

A fault diagnosis method of bearings based on deep transfer learning 基于深度迁移学习的轴承故障诊断方法 ABSTRACT 近年来,许多深度迁移学习方法被广泛应用于不同工况下的轴承故障诊断,以解决数据分布移位问题。然而,在源域数据差异较大、特征分布不一致的情况下,深度迁移学习方法在轴承故障诊断中的准确率较低,因此本文提出了一种