安全多方计算(1):不经意传输协议

安全,多方,计算,不经意,传输,协议 · 浏览次数 : 566

小编点评

**OT协议** OT协议是一种安全多方计算协议,它用于在多个安全计算器上执行安全计算操作。OT协议使用混淆电路来实现安全计算操作,混淆电路是安全的计算器,它可以被多个安全计算器访问。 **基于密码学实现的OT协议实例** 以下三个基于密码学实现的OT协议实例用于在多个安全计算器上执行安全计算操作: * **安全多方计算之前世今生**:该文章介绍了OT协议,并结合百万富翁问题的通俗解法看到了OT协议的应用实例。 * **混淆电路**:混淆电路是安全的计算器,它可以被多个安全计算器访问。 * **基于混淆电路的通用安全多方计算路线**:该文章介绍了如何通过OT协议实现混淆电路,以及如何实现基于混淆电路的通用安全多方计算路线。 **OT协议的重要性** OT协议是安全多方计算中很重要的一个协议,它用于在多个安全计算器上执行安全计算操作。OT协议使用混淆电路来实现安全计算操作,混淆电路是安全的计算器,它可以被多个安全计算器访问。 **OT协议的应用实例** OT协议的应用实例包括: * 安全多方计算 * 混淆电路 * 通俗安全协议(TLS) **结论** OT协议是一种安全多方计算协议,它用于在多个安全计算器上执行安全计算操作。OT协议使用混淆电路来实现安全计算操作,混淆电路是安全的计算器,它可以被多个安全计算器访问。

正文

学习&转载文章:安全多方计算(1):不经意传输协议

前言

在安全多方计算系列的首篇文章(安全多方计算之前世今生)中,我们提到了百万富翁问题,并提供了百万富翁问题的通俗解法,该通俗解法可按图1简单回顾。

图片

图1 百万富翁问题通俗解法

百万富翁问题通俗解法场景中,我们可以将Alice和Bob的诉求总结如下:

  • Alice:有9个装有物品的箱子,Bob只能打开其中一个箱子看到物品,看不到其他箱子内的物品。

  • Bob:不希望Alice知道自己打开的是哪个箱子。

百万富翁问题通俗解法可以通过密码学中的n选1的不经意传输协议(Oblivious Transfer,OT)完美解决。

通过百万富翁问题通俗解法场景描述,对OT协议解决的问题可抽象为:Alice拥有\(n\)条消息\({m_1,…,m_n}\),Bob想知道其中一条消息\(m_i\);通过执行OT协议,Bob可以正确获得想要知道的消息\(m_i\),且无法获得其它\(n-1\)条消息,而Alice无法知道Bob获得的是哪条消息。

OT协议按研究类别区分,可以分为以下3种OT协议:

  • 2选1的OT协议\(2\)条消息中正确解密(选)\(1\)条)
  • n选1的OT协议\(n\)条消息中正确解密(选)\(1\)条)
  • OT扩展协议\(n\)条消息中正确解密(选)\(m\)条,\(m<n\)

受篇幅所限,本文仅介绍2选1与n选1的OT协议,OT扩展协议则在后续系列文章中进行介绍。

利用RSA加密实现n选1的OT协议

自1981年提出以来,OT协议有多种多样的实现形式,其中最容易理解的是基于RSA公钥算法实现的n选1的OT协议[1]。

RSA加解密过程简介

此处不讲解RSA原理,只介绍RSA加解密过程和用到的参数,便于密码学知识储备不足的读者理解后面的OT协议。

  • RSA密钥参数:\(N=p*q\)\(L=(p-1)*(q-1)\)其中\(p\)\(q\)为大素数。

  • RSA公私钥对:生成\(d\)\(e\),满足\(d\)\(L\)互质,\(e\)\(L\)互质,且\(d*e(mod L)=1\),则令\((d,N)\)为公钥,\(e\)为私钥。

则RSA算法对明文\(m\)\(m\)为大整数)的加解密过程如图2所示。

图片

图2 RSA算法加解密计算过程

RSA实现n选1的OT协议过程描述

基于RSA公钥算法实现的n选1的OT协议执行过程如图3所示。

图片

图3 基于RSA公钥算法实现n选1的OT协议执行过程

协议执行过程分为4个步骤:

  1. Alice有\(n\)条消息,则产生\(n\)个RSA公私钥对,并将\(n\)个私钥保留,\(n\)个公钥发送给Bob。
  2. Bob随机产生一个大整数key,假定Bob想要获得第\(t\)条消息,则Bob用收到的第\(t\)个RSA公钥加密大整数key,加密计算结果为\(s\),Bob将\(s\)发送给Alice。
  3. Alice用保留的\(n\)个RSA私钥,依次解密\(s\),获得\(n\)个解密结果,依次为\({key1,key2,…,keyt,…,keyn}\);利用对称加密算法,利用\((key1,...,keyn)\),加密对应的消息\((m1,...,mn)\),得到密文消息\((M1,...,Mn)\),将\((M1,...,Mn)\)发送给Bob。
  4. Bob利用自己掌握的大整数\(key\)作为密钥,对第\(t\)条密文\(Mt\)进行对称解密,则得到想要的第\(t\)条原始明文消息\(mt\)

n选1的OT协议解决百万富翁问题

将图1中的百万富翁问题和图3中的n选1的OT协议结合,我们可以对图1中的操作步骤做如图4的改造:

  • Step1:Alice构造9条明文消息,序号\(<x\),消息为“0”;否则消息为“1”。

  • Step2:Alice与Bob执行9选1的OT协议,解密第7条消息,看到0,\(y<x\);看到1,\(y≥x\)

图片

图4 基于n选1的OT协议实现百万富翁问题

协议分析

该协议执行过程可以满足OT协议中Alice和Bob的核心诉求,关键在于第2步和第3步。

  • 第3步中,Alice利用\(n\)个私钥逐个尝试解密\(s\),得到\((key1,...,keyn)\),由于\(s\)是由Bob利用第\(t\)个公钥加密整数key计算得到的,因此只有keyt=key,但对于Alice来说,\((key1,...,keyn)\)都是大整数,根本无法区分哪个才是Bob掌握的key,实现了Bob的诉求,即Alice无法知道Bob选择的是哪条消息。

  • 对于Bob来说,拿到了\(n\)个密文消息\((M1,...,Mn)\),但是自己只有一个key,此key只能解密消息\(Mt\),对于其他\(n-1\)条消息则无法解密,实现了Alice的诉求,即Bob只能正确得要Bob想要得到1条消息,无法正确得到其他\(n-1\)条消息。

如果\(n=2\),则该n选1的OT协议就退化成了2选1的OT协议。

虽然基于RSA实现的n选1的OT协议简单易懂,但是却存在如下缺陷:

  • key为0或1时,Alice的诉求无法保证。Bob如果将key指定为0或1,则根据图2中RSA的加解密计算方法,无论私钥\(e\)是否正确,解密后的\(m0=m\)均成立,意味着第3步中,Alice强行解密\(s\)得到的\((key1,...,keyn)\)均等于key(看加密就懂了~),则Bob可以解密所有的消息,获得所有的明文\((m1,...,mn)\)
  • 协议计算效率有待优化。第1步Alice需要产生\(n\)个RSA公私钥对,而RSA公私钥对的产生比较耗时。

为了提高安全性和计算效率,还有基于其他密码学方法的OT协议,如基于离散对数的OT协议,将在本文第四节和第五节中进行介绍。(如果您仅希望简单了解OT协议的原理和能解决的问题,则读到此处足矣,本文后面的内容适合有一定密码学基础读者。)

基于离散对数实现2选1的OT协议

为了优化OT协议计算效率和安全性,学者一般对2选1的OT协议和n选1的OT协议分开进行研究。对于2选1的OT协议,Tung Chou[2]于2015年基于离散对数问题,在DH密钥协商协议的基础上设计的2选1的OT协议,被认为是一个简单清晰的2选1的OT协议。

离散对数简介

离散对数问题通俗理解:有限域\(F_p\)\(p\)为大素数,\(F_p\)中元素共\(p-1\)个整数,取值\([1,p-1]\))上的大整数幂乘取模容易计算,即\(a*b mod p=c,a,b\in F_p\),而计算对数是很困难的,即 \(log_a^c(mod p)=b\)

离散对数实现2选1的OT协议过程描述

基于离散对数实现2选1的OT协议执行过程如图5所示:

图片

图5 离散对数实现2选1的OT协议执行过程

协议执行过程分为4个步骤:

  • Alice有消息\(m0、m1\in F_p\)*,则Alice挑选\(g,a\in F_p\),并计算\(A=g^a mod p\),将\(A、g、p\)发送给Bob。
  • Bob想要第\(\sigma\)条消息(\(\sigma=0\)或1),Bob挑选\(b\in F_p\)*,并计算\(B=A^\sigma *g^b mod p\),将B发送给Alice。
  • Alice利用\(a、A、B\),按照图4中的步骤3计算\(C0\)\(C1\)的值,然后用\(C0\)为密钥,对称加密\(m0\);用\(C1\)为密钥,对称加密\(m1\)。将加密后的密文\(M0\)\(M1\)传递给Bob。
    • 这里的密文\(M_0\)\(M_1\)只有一个是“可用”的,也就是说\(C_0\)\(C_1\)只有一个是可用的,当\(\sigma =0\)时,\(C_0\)是可用的;当\(\sigma =1\)时,\(C_1\)是可用的。
  • Bob利用\(A\)\(b\)计算解密密钥\(g^{ab} mod p\),对称解密对应的密文后拿到想要的正确消息。

协议分析

该协议的核心步骤是步骤2和步骤3,对这两步中的参数B、C0、C1进行展开,展开后如图6所示。

图片

图6 2选1的OT协议部分参数展开

从图6的展开式可知,无论\(\sigma =0\)还是\(\sigma =1\)\(C0\)\(C1\)始终只有一个为\(g^{ab}\),而另一个对于Bob而言则不可计算(Bob不知道\(a\)的值),\(g^{ab}\)的计算实质上就是DH密钥协商协议。

对于Alice来说,仅知道\(B、A、g\),不知道\(b\)的情况下,由于离散对数问题难解,因此是无法推断出\(\sigma =0\)还是\(\sigma =1\)

与2.2的协议相比,该协议不存在Bob选择特殊的\(b\)会导致密文消息\(M0\)\(M1\)同时正确解密这一缺陷(只能正确解密其中一个)。

基于离散对数实现n选1的OT协议

本章节将以Wen-Guey Tzeng[3]提出的高效n选1的OT协议为例,讲解如何基于离散对数实现基本的n选1的OT协议。

离散对数实现n选1的OT协议过程描述

基于离散对数实现n选1的OT协议执行过程如图7所示。

图片

图7 离散对数实现n选1的OT协议执行过程

协议执行过程分为4个步骤:

  • Alice有\(n\)条消息\({m1,…,mn}\)\(mi\in G\)(\(G\)代表素数域\(F_p^*\)),挑选\(G\)的两个生成元\(g\)\(h\),将\(g,h,p\)发送给Bob。
  • 假定Bob想获得第\(t\)条消息,则Bob随机选择大整数\(r\in G\),并计算\(y=g^r*h^tmod p\),将\(y\)发送给Alice。
  • Alice利用\(y,g,h\),分别对\(n\)条消息,重复执行图6中左下角的计算步骤,每一次执行都会随机选择大整数\(k_i\in G\),并结合消息\(mi\)计算\(ai\)\(bi\)。然后将\(n\)\((ai,bi)\)发送给Bob。
  • Bob拿到\(n\)\((ai,bi)\)后,利用掌握的大整数\(r\),计算想要的第\(t\)条消息\(m_t=b_t∕(a_t)^r\)

协议分析

对于第4步Bob的操作,我们把消息\(m_t\)泛指为\(m_x\),则对\(m_x\)的计算公式展开后如图8所示。

图片

图8 消息mx的计算公式展开

从图8可以看出,要想获得消息\(m_x\),要么令\(x=t\),此时消息为Bob想要获得的消息;要么计算出\(h^{(t-x)*k_x}\),由于\(k_x\)是Alice的秘密数字,因此保证了Bob不可能正确解密除消息\(m_t\)之外的其余\(n-1\)条消息。

对于Alice来说,虽然知道\(y,g,h\),但是不知道\(r\)的情况下,由于离散对数问题难解,因此是无法推断出\(t\)的正确值。

与2.2的协议相比,该协议不存在Bob选择特殊的\(r\)会导致\(n\)条消息同时正确解密这一缺陷,同时也不存在需要产生\(n\)对公私钥这一耗时操作。

总结

本文介绍了OT协议和3个基于密码学实现的OT协议实例,并结合百万富翁问题的通俗解法看到了OT协议的应用实例,这样的实例很难看出OT协议的重要性。

其实OT协议是安全多方计算中很重要的一个协议,在安全多方计算系列的首篇文章(安全多方计算之前世今生)中,我们提到,安全多方计算的通用技术路线可以用混淆电路解决,而混淆电路的构建离不开OT协议。因此,下期文章将会讲解如何通过OT协议实现混淆电路,以及如何实现基于混淆电路的通用安全多方计算路线。

参考文献

[1] https://en.wikipedia.org/wiki/Oblivious_transfer

[2] Chou T , Orlandi C . The Simplest Protocol forOblivious Transfer[C]// International Conference on Cryptology and InformationSecurity in Latin America. Springer International Publishing, 2015.

[3] Tzeng W G . Efficient 1-out-of-noblivious transfer schemes with universally usable parameters[J]. IEEETransactions on Computers, 2004, 53(2):p.232-240.

与安全多方计算(1):不经意传输协议相似的内容:

安全多方计算(1):不经意传输协议

学习&转载文章:安全多方计算(1):不经意传输协议 前言 在安全多方计算系列的首篇文章(安全多方计算之前世今生)中,我们提到了百万富翁问题,并提供了百万富翁问题的通俗解法,该通俗解法可按图1简单回顾。 图1 百万富翁问题通俗解法 百万富翁问题通俗解法场景中,我们可以将Alice和Bob的诉求总结如下

多方安全计算(3):MPC万能钥匙-混淆电路

学习&转载文章:多方安全计算(3):MPC万能钥匙-混淆电路 前言 我们在讲解不经意传输(Oblivious Transfer,OT)的文章(安全多方计算(1):不经意传输协议)中提到,利用n选1的不经意传输可以解决百万富翁问题(两位富翁Alice和Bob在不泄露自己真实财富的情况下比对出谁更有钱)

【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算

学习&转载文章:【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算 集合运算 集合可以通俗地描述为确定的一堆东西。如有一个集合$𝐴$,一个元素$𝑐$要么属于集合$𝐴$,记做$𝑐\in 𝐴$;要么不属于集合$𝐴$,记做$𝑐∉𝐴$,元素$𝑐$不能既属于集合$𝐴$又不属于$

隐私集合求交(PSI)协议研究综述

摘要 隐私集合求交(PSI)是安全多方计算(MPC)中的一种密码学技术,它允许参与计算的双方,在不获取对方额外信息(除交集外的其它信息)的基础上,计算出双方数据的交集。隐私集合求交在数据共享,广告转化率,联系人发现等领域有着广泛的应用空间。本文对隐私集合求交的各项实现技术做了介绍和对比,对隐私集合求

MPC:百万富翁问题

学习文章:“一起学MPC:(一)百万富翁问题”和“【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览” 百万富翁问题 将问题具体化: Alice有$i$亿元,Bob有$j$亿元,为方便描述,我们限定$0

多方安全计算(6):MPC中场梳理

学习&转载文章:多方安全计算(6):MPC中场梳理 前言 诚为读者所知,数据出域的限制约束与数据流通的普遍需求共同催生了数据安全计算的需求,近一两年业界又统将能够做到多方数据可用不可见的技术归入隐私计算范畴。粗略来说,隐私计算可分为以联邦学习为代表的机器学习类升级方案、以可信硬件为基础的可信执行环境

多方安全计算(4):MPC万能积木-秘密共享

学习&转载文章:多方安全计算(4):MPC万能积木-秘密共享 前言 在之前的文章(多方安全计算(3)MPC万能钥匙:混淆电路中,我们对MPC中一类通用方案混淆电路(GC)与密文比较策略做了介绍。混淆电路通过将任务抽象为电路以及对基础电路提供加密方案达到了万能钥匙的效果。在姚期智先生提出GC方案不久后

对于多方安全计算,你是否也有这样的疑惑?

学习&转载文章:对于多方安全计算,你是否也有这样的疑惑? 问题 假设多方安全计算中有两个参与方$P_0$和$P_1$,其中$P_0$拥有$x$,$P_1$拥有$y$,双方想要在不暴露自己拥有的数据的同时计算一个结果$z$,且$z=x+y$。那么不管用哪种协议进行计算得到最终结果$z$,并且公布给双方

rbenv:Ruby 多版本管理利器

在 Ruby 开发的世界中,经常需要面对不同项目使用不同 Ruby 版本的情况。这时,一个高效、灵活且易于使用的 Ruby 版本管理工具就显得尤为重要。 rbenv 正是这样一个工具,它允许开发者在同一台计算机上轻松安装、切换和管理多个 Ruby 版本。本文将详细介绍 rbenv 的安装、基本使用以...

安全多方计算(2):隐私信息检索方案汇总分析

> 学习&转载文章:[安全多方计算(2):隐私信息检索方案汇总分析](https://mp.weixin.qq.com/s/7JF-g6m8RLPWf0QgbYE-7g) ## 前言 **多头贷问题**是网络小额贷款平台放款时所要考虑的一个重要问题。假设银行A有一潜在贷款客户小张,银行A为了足够多的