首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

密码学-不经意传输

不经意传输(oblivioustransfer)是一个密码学协议,在这个协议中,消息发送者从一些待发送的消息中发送一条给接收者,但事后对发送了哪一条消息仍然oblivious(不知道),这个协议也叫茫然传输协议。

历史

第一种形式的不经意传输(oblivious transfer),最初是在1981由Michael O.Rabin提出,在这种不经意传输中,发送者Alice发送一条消息给接收着Bob,而Bob以1/2的概率接收到信息,在结束后Alice并不知道Bob是否接收到了信息,而Bob能确信地知道自己是否收到了信息。

另一种更实用的不经意传输协议,被称为2选一不经意传输(1 out 2 oblivious transfer)由 Shimon Even, Oded Goldreich, 和Abraham Lempel 在1985年提出,在这种形式的不经意传输模型中,Alice每次发两条信息(m1、m2)给Bob,Bob提供一个输入,并根据输入获得输出信息,在协议结束后,Bob得到了自己想要的那条信息(m1或者m2),而Alice并不知道Bob最终得到的是哪条。

1986年,Brassard等人将2选1不经意传输拓展为n选1。

不经意传输(oblivious transfer)一种实现方式是基于RSA公钥算法,下面就2选1不经意传输的实现做简要介绍

基于RSA的1 out 2 不经意传输

流程:

1. 发送者Alice生成两对rsa公私钥,并将两个公钥puk0、puk1发送给接受者Bob。

2. Bob生成一个随机数,并用收到的两个公钥之一加密随机数(用哪个秘钥取决于想获取哪条数据,例如如果想要得到消息M0 就用puk0加密随机数,如果想要得到M1就用puk1加密随机数),并将密文结果发送给Alice。

3. Alice用自己的两个私钥分别解密收到随机数密文,并得到两个解密结果k0,k1,

并将两个结果分别与要发送的两条信息进行异或(k0异或M0,k1异或M1),并将两个结果e0,e1发给Bob。

4. Bob用自己的真实随机数与收到的e0、e1分别做异或操作,得到的两个结果中只有一条为真实数据,另外一条为随机数。

分析:

在此过程中第3步最为关键,如果Alice无法从用两条私钥解密得到的结果k0、k1中区分出Bob的真实随机数,则能保证Alice无法得知Bob将要获取的是哪条数据。Bob没有私钥也就无法得出真实的私钥解密结果(如果k0为真实随机数,Bob无法得知k1的值),所以也就只能得到自己想要的那条数据而无法得到另外一条,保障协议能执行成功。

同理,1 out n不经意传输也可基于类似原理实现,只需要将2秘钥换成n秘钥。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200831A0BULP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券