首页 > 其他分享 >IKNP协议详解

IKNP协议详解

时间:2024-05-17 21:40:49浏览次数:26  
标签:协议 mathbf COT Alice IKNP 详解 oplus OT

一起学习OT extension的重要文章: Extending Oblivious Transfers Efficiently. 作者是Yuval Ishai, Joe Kilian, Kobbi Nissim, and Erez Petrank, 发表在2003的Crypto上.

目录

1. 简介

Motivition: 在这片文章之前的一些结果表明, OT基本不可能规约到开销少的对称原语上, 而只能通过公钥的原语进行构造. 那么人们就会想, 既然OT本身开销不低, 那么能不能通过一些少数量的OT, 基于对称原语构造出大量的OT呢?

人们发现是可以的, Beaver首先给出了一个结果: 可以利用单向函数扩展OT. 但是这个构造是非黑盒的, 所以非常低效, 工程上无法使用.

在Beaver之后就是这篇文章了. 由于这篇文章是第一个实用性的, 所以也算是开山之作. 这篇文章提出的协议(IKNP Protocol)构造是黑盒的, 针对半诚实敌手的时候是pratical的: 每个OT只调用了两次hash函数. 给定 \(k\) 个 base OT, 能构造出 \(poly(k)\) 个OT.

2. 具体协议

我们这里只讨论半诚实敌手模型下的IKNP协议. 在这一小节我们介绍IKNP的具体流程, 以及这个协议的构造思路(作者在文章完全没有提).

2.1 协议流程

协议的目的是, 给定 \(k\) 个OT, 每个消息比特数都是 \(m\)(用 \(OT^k_m\) 表示), 构造 \(m\) 个OT, 每个消息比特数为 \(l\)(用 \(OT^m_l\) 表示).

image

协议如上所示. 我们简单过一下流程.

  1. \(S\) 生成一个向量 \(s\), \(R\) 生成一个矩阵 \(T\).

  2. 在利用 \(OT^k_m\) 的过程中, \(S\) 扮演了接受者, 用的向量就是第一步生成的那个. \(R\) 扮演了发送者, 用的向量是 \(T\) 的列向量以及列向量与 \(r\) 的异或. S接收到一个矩阵 \(Q\).

  3. \(S\) 对 \(Q\) 的行向量进行hash, 再异或上消息值, 发送给 \(R\).

  4. 由于 \(R\) 没有 \(s\) 的消息, 所以这保证了他没法学到每两个消息的另一个消息, 而只能学到 \(r_j\) 对应的消息.

这只是带大家走一遍, 具体的推导还是得大家动手推导.

2.2 协议设计原理

重新回顾协议的设计目的: \(OT^k_m \implies OT^m_l(m \gg k)\). 作者在原文中是一步登天的. 但是实际上我们可以分为三个步骤.

\[OT^k_m \implies COT^m_k \implies ROT^m_l \implies OT^m_l(m \gg k). \]

下面我们分别讲讲这三步是怎么构造的.

COT和ROT

在介绍之前, 我们有必要了解COT和ROT的概念以及作用.

ROT: Random OT. ROT中的Alice和Bob都没有输入. ROT自己生成两个随机数 \(r_0, r_1\), 一个随机比特 \(b\). Alice获得的输出是 \(r_0, r_1\), Bob获得的输出是 \(b, x_b\).

Beaver在95年就提出了这个概念, 并证明了 ROT 可以用于生成 OT.

COT: Correlated OT. 我们考虑Alice输入为 \(\Delta\), Bob输入为 \(b\). COT随后自己产生了一个随机数 \(x\). Alice获得的输出是 \(r, r \oplus \Delta\), Bob获得的输出是 \(b, r\oplus b\Delta\).

在上面的COT中, Alice获得的输出顺序是固定的, 而Bob获得的输出是由 \(b\) 决定的. 我们可以考虑等价的一种COT. Alice获得的输出顺序是由 \(b\) 决定的, 即 \(r \oplus b\Delta, r \oplus \bar{b} \Delta\), 而Bob只会固定的获得一个输出 \(r\). 如下图所示:

image

2.2.1 第一步: \(OT^k_m \implies COT^m_k\)

我们观察这一步干了什么. OT的数量在这一步由 \(k\) 变成 \(m\), 起到了一个extension的作用. 所以这一步就是这个协议的核心.

image

我们从上面的图中更容易看出这个协议内部发生了什么.

我们在2.1节已经讲了这个协议的流程. 所以我们知道Bob在base OT里面扮演了发送者, Alice在base OT里面扮演了接受者, 接收到了一个矩阵 \(Q\).

在拿到 \(Q\) 之后, Alice关注的是行向量, 一共有 \(m\) 个行向量. 对于每一个行向量 \(\mathbf a_i=\mathbf t_i \oplus b_i \Delta\). Alice自己再算出一个值 \(\mathbf b_i = \mathbf a_i \oplus \Delta = \mathbf t_i \oplus \bar b_i \Delta\). 而Bob是持有 \(\mathbf t_i\) 的, 所以这就是我们上面所说的第二种COT. Alice拿到了相关的两个向量, 而Bob拿到了固定的一个 \(\mathbf t_i\). 所以这一步的构造完成.

2.2.2 第二步: \(COT^m_k \implies ROT^m_l\)

这一步我们关注如何打破相关性(break the correlation). 并且顺便我们把比特数也做一个增加.

作者的思路非常的简单粗暴, 就是使用一个Random Oracle. 对RO的输入输出进行规定: \(H: [m] \times \{0,1\}^k\rightarrow \{0,1\}^l\). 其中 \([m]\) 表示 index.

这一步非常直接, 因为Random Oracle本身输出的就是真随机数. 所以是一定没有相关性的.

在实例化的时候, 作者把Random Oracle替换成了一个具有特殊性质的哈希函数(Correlation Robust Hash), 这个我们最后会提到.

2.2.3 第三步: \(ROT^m_l \implies OT^m_l\)

我们离协议成功只差最后一步, 就是转换成真正的OT. ROT转换成OT的工作其实是Beaver在95年就提出的.

有两种情况: 在OT中Bob的选择比特 \(b\) 和 ROT中的选择比特是否相同. 如果相同只需要一轮协议, 否则需要两轮协议. 如下图所示, 左边表示相同情况下的转换, 右边表示不同情况下的转换.

image

IKNP协议中的最后一条消息利用了左图中的转换.

到此为止我们把协议的构造思路讲清楚了. 下面我们深入协议研究其安全性.

3. 协议的安全性证明

证明分为两个部分, 分别对于 malicious sender, 以及对于 semi-honest verifier. 当然, 当我们考虑一个人是恶意/半诚实时, 我们要求另一个人是诚实的.

形式化的定义请大家参考Lindell: How to simulate it 或者我之前的博客: 如何写好Simulation证明(二): 半诚实模型下MPC的定义 .

3.1 Against malicious sender

在写Simulator之前我们先进行观察. 这里我们需要保证的是: 恶意的Alice不能学到Bob的输入\(\mathbf r\). 我们对Alice拿到的 \(Q\) 进行一个观察. \(Q\) 的每一列, 要么是 \(\mathbf t^i\), 要么是 \(\mathbf t^i \oplus \mathbf r\). 而所有的 \(\mathbf t^i\) 都是独立且随机的, 这相当于一次一密, 是信息论隐藏的. 所以拿到的 \(Q\) 完全是一个随机矩阵. 当然不会学到 \(\mathbf r\) 的任何知识.

下面我们可以写Simulator, 当我们遇到恶意的敌手时, 我们需要注意的是要extract出敌手真正的输入. 因为恶意的敌手不会按照你给他的输入进行.

构造如下:

\(Sim_1^{\mathcal A}\):

  • Run \(S^*\) with a uniformly chosen random input \(\rho\). Let \(\mathbf s^*\) be the input \(S^*\) sends to the \(OT^k_m\) primitive in Step 2.

  • Generate a random \(m \times k\) matrix \(Q\), and feed \(S^*\) with the columns of \(Q\) as the reply from the \(OT^k_m\) primitive.

  • Let \((\mathbf y^*_{j,0},\mathbf y^*_{j,1})\) be the messages sent by \(S^*\) in Step 3. Call TP with inputs \(\mathbf x_{j,0}^*= \mathbf y_{j,0}^*\oplus H(j,\mathbf{q}_j), \mathbf x_{j,1}^*= \mathbf y_{j,1}^*\oplus H(j,\mathbf{q}_j\oplus \mathbf s^*). (1 \leq j \leq m).\)

  • Output whatever \(S^*\) output.

Thm: 这个Sim产生的view和真实世界的完全相同.

3.2 Against semi-honest verifier

在针对半诚实的验证者时, 我们遇到的困难是我们不知道 \(x_{i, 1-r_i}\) 的知识. 但是在写Sim的时候我们可以用 \(0^l\) 去替代. 原因是 RO生成的是真随机数. 通过异或操作一次一密加密了, 所以是Perfect hiding的.

构造如下:

\(Sim_2(\mathbf r, \{\mathbf x_{j, r_j}\}_{j\in [m]})\)

  • Choose random \(\rho\) as \(R^*\)'s random tape.
  • \(\mathbf s \gets \{0,1\}^k, T \gets \{0,1\}^{m \times k}.\)
  • Send \(\mathbf s\) and \(\{\mathbf t^i, \mathbf t^i \oplus \mathbf r\}_{i\in[k]}\) to \(OT^k_m\). Receive the output \(Q\).
  • Compute \(y_{j, r_j} \gets \mathbf x_{j,r_j} \oplus H(j, \mathbf q_j), y_{j, 1-r_j} \gets 0^l \oplus H(j, \mathbf q_j \oplus \mathbf{s}) .\)
  • Output \((\rho, \mathbf{r}, \{\mathbf t^i, \mathbf t^i \oplus r\}_{i\in[k]} \{\mathbf y_{j,0}, \mathbf y_{j,1}\}_{j \in [m]}, \mathbf x_{j, r_j}).\)

Thm: 这个Sim产生的view和真实世界的统计不可区分.

4. 实例化Random Oracle

通过抽取出特定的性质, 我们定义这样一种哈希函数.

image

这种hash打破了相关性. 这一串数字都和均匀随机分布不可区分.

5. 总结

在具体写完安全性证明之后, 我相信大家能感受到这个协议构造的精巧. 这个协议把one-time pad(一次一密)用到合适的地方, 达到了Perfect hiding的效果. 这个效果对我们写Simulator具有特别大的帮助.

在如何恶意的敌手时, 这篇文章用到了cut-and-choose技巧. 这个技巧是说, 一开始先进行 \(\sigma\) 次协议. 然后Alice检查其中一部分Bob的输入, 看他有没有骗人. 另一部分则继续用于之后的协议. 开销是十分大的, 我们在这片博客中不介绍.

参考

  • Lindell: How to simulate it.
  • Nishant Kumar. Techniques in OT extension.
  • Ishai et al. Extending Oblivious Transfers Efficiently.

标签:协议,mathbf,COT,Alice,IKNP,详解,oplus,OT
From: https://www.cnblogs.com/yangm17/p/18198754

相关文章

  • Redis 的安装与配置详解【Redis系列一】
    〇、前言关于Redis在日常开发中还是用的比较多的,特别是在秒杀、消息队列、排行榜等数据交互时效要求较高的场景,Redis都可以轻松应对。本文将针对Redis进行简单介绍,以及如何安装,并罗列下全部配置项。后续还将另行发文汇总Redis的常用数据结构和常见问题等。一、什么是Re......
  • 网络封包分析软件主要用于捕获、分析网络通信中的数据包,对于网络故障排除、安全审计、
    网络封包分析软件主要用于捕获、分析网络通信中的数据包,对于网络故障排除、安全审计、协议分析等领域至关重要。以下是几款知名的网络封包分析软件:Wireshark:Wireshark是最为流行的网络封包分析工具之一,它具有强大的数据包捕获和分析能力,支持广泛的协议,提供详细的封包解码......
  • 第四节:MySQL主从集群搭建、扩容与数据迁移、半同步复制详解
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • NumPy 分割与搜索数组详解
    NumPy分割数组NumPy提供了np.array_split()函数来分割数组,将一个数组拆分成多个较小的子数组。基本用法语法:np.array_split(array,indices_or_sections,axis=None)array:要分割的NumPy数组。indices_or_sections:指定分割位置的整数列表或要包含每个子数组的元素数......
  • JS — webscoket详解
    一.基本概念WebSocket是一种在Web浏览器和服务器之间建立全双工通信的协议。它允许网页实时地发送和接收数据,而不需要页面刷新或像传统HTTP协议那样的轮询操作。WebSocket使用HTTP协议进行握手,并通过Upgrade头字段指定从HTTP到WebSocket的转换。一旦握手成功,WebSocket连接就会......
  • 开源流媒体服务器ZLMediaKit在Windows上编译过程详解(附编译后版本下载)
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130136245以上讲了ZLMediaKit的具体使用场景,文章中使用的windows的版本不是最新版,比如在flv播放时,旧......
  • SDP协议
    会话描述协议,一般用国标SIP交互媒体信息(offer和应答),RTSP中describe协商媒体信息(只有应答的SDP,没有offer_sdp),webrtc协议交互阶段(offer和answer)时候回存在;本例只介绍SIP-SDP,对于荷载它的协议不做描述原文:https://sharetechnote.com/html/IMS_SIP_SDP.html1国标交互的时候为了让......
  • mysql中explain命令详解
    前言我们可以使用explain命令来查看SQL语句的执行计划,从而帮助我们优化慢查询。使用注意:使用的mysql版本为8.0.28数据准备CREATETABLE`tb_product2`(`id`bigintNOTNULLAUTO_INCREMENTCOMMENT'商品ID',`name`varchar(20)DEFAULTNULLCOMMENT'商品......
  • VMWare Workstation 17命令行自动化测试高级用法详解
    VMwareWorkstation是一个强大的桌面虚拟化解决方案,允许用户在同一台物理机上运行多个虚拟机。虽然VMwareWorkstation主要提供图形用户界面(GUI)来管理虚拟机,但它也支持命令行工具来执行一些高级任务和自动化操作。VMwareWorkstation本身并不直接提供一套完整的命令行工......
  • http协议
    HTTP消息是服务器和客户端之间交换数据的方式。有两种类型的消息:请求(request)——由客户端发送用来触发一个服务器上的动作;响应(response)——来自服务器的应答。HTTP消息由采用ASCII编码的多行文本构成。在HTTP/1.1及早期版本中,这些消息通过连接公开地发送。在HTTP/2中,为了......