安全多方计算(1):不经意传输协议
学习&转载文章:安全多方计算(1):不经意传输协议
前言#
在安全多方计算系列的首篇文章(安全多方计算之前世今生)中,我们提到了百万富翁问题,并提供了百万富翁问题的通俗解法,该通俗解法可按图1简单回顾。
图1 百万富翁问题通俗解法
百万富翁问题通俗解法场景中,我们可以将Alice和Bob的诉求总结如下:
-
Alice:有9个装有物品的箱子,Bob只能打开其中一个箱子看到物品,看不到其他箱子内的物品。
-
Bob:不希望Alice知道自己打开的是哪个箱子。
百万富翁问题通俗解法可以通过密码学中的n选1的不经意传输协议(Oblivious Transfer,OT)完美解决。
通过百万富翁问题通俗解法场景描述,对OT协议解决的问题可抽象为:Alice拥有
OT协议按研究类别区分,可以分为以下3种OT协议:
- 2选1的OT协议(
条消息中正确解密(选) 条) - n选1的OT协议(
条消息中正确解密(选) 条) - OT扩展协议(
条消息中正确解密(选) 条, )
受篇幅所限,本文仅介绍2选1与n选1的OT协议,OT扩展协议则在后续系列文章中进行介绍。
利用RSA加密实现n选1的OT协议#
自1981年提出以来,OT协议有多种多样的实现形式,其中最容易理解的是基于RSA公钥算法实现的n选1的OT协议[1]。
RSA加解密过程简介#
此处不讲解RSA原理,只介绍RSA加解密过程和用到的参数,便于密码学知识储备不足的读者理解后面的OT协议。
-
RSA密钥参数:
, 其中 和 为大素数。 -
RSA公私钥对:生成
和 ,满足 与 互质, 与 互质,且 ,则令 为公钥, 为私钥。
则RSA算法对明文
图2 RSA算法加解密计算过程
RSA实现n选1的OT协议过程描述#
基于RSA公钥算法实现的n选1的OT协议执行过程如图3所示。
图3 基于RSA公钥算法实现n选1的OT协议执行过程
协议执行过程分为4个步骤:
- Alice有
条消息,则产生 个RSA公私钥对,并将 个私钥保留, 个公钥发送给Bob。 - Bob随机产生一个大整数key,假定Bob想要获得第
条消息,则Bob用收到的第 个RSA公钥加密大整数key,加密计算结果为 ,Bob将 发送给Alice。 - Alice用保留的
个RSA私钥,依次解密 ,获得 个解密结果,依次为 ;利用对称加密算法,利用 ,加密对应的消息 ,得到密文消息 ,将 发送给Bob。 - Bob利用自己掌握的大整数
作为密钥,对第 条密文 进行对称解密,则得到想要的第 条原始明文消息 。
n选1的OT协议解决百万富翁问题#
将图1中的百万富翁问题和图3中的n选1的OT协议结合,我们可以对图1中的操作步骤做如图4的改造:
-
Step1:Alice构造9条明文消息,序号
,消息为“0”;否则消息为“1”。 -
Step2:Alice与Bob执行9选1的OT协议,解密第7条消息,看到0,
;看到1, 。
图4 基于n选1的OT协议实现百万富翁问题
协议分析#
该协议执行过程可以满足OT协议中Alice和Bob的核心诉求,关键在于第2步和第3步。
-
第3步中,Alice利用
个私钥逐个尝试解密 ,得到 ,由于 是由Bob利用第 个公钥加密整数key计算得到的,因此只有keyt=key,但对于Alice来说, 都是大整数,根本无法区分哪个才是Bob掌握的key,实现了Bob的诉求,即Alice无法知道Bob选择的是哪条消息。 -
对于Bob来说,拿到了
个密文消息 ,但是自己只有一个key,此key只能解密消息 ,对于其他 条消息则无法解密,实现了Alice的诉求,即Bob只能正确得要Bob想要得到1条消息,无法正确得到其他 条消息。
如果
虽然基于RSA实现的n选1的OT协议简单易懂,但是却存在如下缺陷:
- key为0或1时,Alice的诉求无法保证。Bob如果将key指定为0或1,则根据图2中RSA的加解密计算方法,无论私钥
是否正确,解密后的 均成立,意味着第3步中,Alice强行解密 得到的 均等于key(看加密就懂了~),则Bob可以解密所有的消息,获得所有的明文 。 - 协议计算效率有待优化。第1步Alice需要产生
个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协议。
离散对数简介#
离散对数问题通俗理解:有限域
离散对数实现2选1的OT协议过程描述#
基于离散对数实现2选1的OT协议执行过程如图5所示:
图5 离散对数实现2选1的OT协议执行过程
协议执行过程分为4个步骤:
- Alice有消息
*,则Alice挑选 ,并计算 ,将 发送给Bob。 - Bob想要第
条消息( 或1),Bob挑选 *,并计算 ,将B发送给Alice。 - Alice利用
,按照图4中的步骤3计算 和 的值,然后用 为密钥,对称加密 ;用 为密钥,对称加密 。将加密后的密文 和 传递给Bob。- 这里的密文
和 只有一个是“可用”的,也就是说 和 只有一个是可用的,当 时, 是可用的;当 时, 是可用的。
- 这里的密文
- Bob利用
和 计算解密密钥 ,对称解密对应的密文后拿到想要的正确消息。
协议分析#
该协议的核心步骤是步骤2和步骤3,对这两步中的参数B、C0、C1进行展开,展开后如图6所示。
图6 2选1的OT协议部分参数展开
从图6的展开式可知,无论
对于Alice来说,仅知道
与2.2的协议相比,该协议不存在Bob选择特殊的
基于离散对数实现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有
条消息 , ( 代表素数域 ),挑选 的两个生成元 和 ,将 发送给Bob。 - 假定Bob想获得第
条消息,则Bob随机选择大整数 ,并计算 ,将 发送给Alice。 - Alice利用
,分别对 条消息,重复执行图6中左下角的计算步骤,每一次执行都会随机选择大整数 ,并结合消息 计算 和 。然后将 组 发送给Bob。 - Bob拿到
组 后,利用掌握的大整数 ,计算想要的第 条消息 。
协议分析#
对于第4步Bob的操作,我们把消息
图8 消息mx的计算公式展开
从图8可以看出,要想获得消息
对于Alice来说,虽然知道
与2.2的协议相比,该协议不存在Bob选择特殊的
总结#
本文介绍了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.
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/16988760.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)