当前位置: 首页 > article >正文

【密码学】【多方安全计算】不经意传输(Oblivious Transfer,OT)

文章目录

    • 不经意传输(oblivious transfer)定义
    • 不经意传输的实例(1 out 2,二选一不经意传输)
    • 基于RSA的1 out 2 不经意传输
    • 疑问

不经意传输(oblivious transfer)定义

不经意传输(oblivious transfer)是一个密码学协议,在这个协议中,消息发送者从一些待发送的消息中发送数据给接收者,但事后对发送了哪一条消息仍然oblivious(不知道),同时接受者对自己想要接受外的数据一无所知,这个协议也叫茫然传输协议。

不经意传输的实例(1 out 2,二选一不经意传输)

在二选一形式的不经意传输模型中,Alice每次发两条信息(m1、m2)给Bob,Bob提供一个输入,并根据输入获得输出信息,在协议结束后,Bob得到了自己想要的那条信息(m1或者m2),而Alice并不知道Bob最终得到的是哪条,同时Bob不知道自己想要的那条信息之外的数据信息。
在这里插入图片描述
1986年,Brassard等人将2选1不经意传输拓展为n选1。
在这里插入图片描述

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

不经意传输(oblivious transfer)一种实现方式是基于RSA公钥算法,下面就2选1不经意传输的实现做简要介绍。
基于RSA的1 out 2 不经意传输:
在这里插入图片描述
流程:

  1. 发送者Alice生成两对rsa公私钥,并将两个公钥puk0、puk1发送给接受者Bob。
  2. Bob生成一个随机数b,并用收到的两个公钥之一加密随机数(用哪个秘钥取决于想获取哪条数据,例如如果想要得到消息M0 就用puk0加密随机数,如果想要得到M1就用puk1加密随机数),并将密文结果c发送给Alice。
  3. Alice用自己的两个私钥分别解密收到随机数密文c,并得到两个解密结果k0,k1,并将两个结果分别与要发送的两条信息进行异或(k0异或M0,k1异或M1),并将两个结果e0,e1发给Bob。
  4. Bob用自己的真实随机数b与收到的e0、e1分别做异或操作,得到的两个结果中只有一条为真实数据,另外一条为随机数。

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

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

疑问

  1. 在第一步中,Bob端在没有知道所有数据的情况下,如何知道自己想要的数据是什么?
  2. 在第四步中,Bob端的b与收到的e0、e1分别做异或操作后,如何辨别哪个结果是自己想要的数据?

http://www.kler.cn/a/147496.html

相关文章:

  • PyAEDT:Ansys Electronics Desktop API 简介
  • Vuex vs Pinia:新一代Vue状态管理方案对比
  • Markdown中输入空格的几种不同方式
  • MongoDB自定义顺序排序
  • Docker+Django项目部署-从Linux+Windows实战
  • 解决部署RKE2或K3S-“docker.io/rancher/mirrored-pause:3.6\“: -无法拉取镜像办法
  • JS作用域与作用域链
  • 2.3基于springboot养老院管理系统
  • 【Android知识笔记】性能优化专题(四)
  • springboot+vue实现websocket通信实例,进入页面建立连接
  • 浏览器触发下载Excel文件-Java实现
  • 一些可能被忽视的 Vue3 API 附带案例
  • 5G智慧工地整体解决方案:文件全文115页,附下载
  • Kubernetes之kubeadm日志展示篇—fiendweb日志展示平台部署
  • Jetson orin(Ubuntu20.04)不接显示器无法输出VNC图像解决办法以及vnc安装记录
  • 基于Python的南京二手房数据可视化分析的设计与实现
  • 华为认证 | HCIE必须要培训才能考试?
  • 【Linux】初识重定向(输入输出)
  • c语言新龟兔赛跑
  • Less的函数的介绍
  • wpf 使用 StringFormat
  • 微信小程序显示二维码?
  • 【SpringCloud】认识微服务、服务拆分以及远程调用
  • 【深度学习】gan网络原理生成对抗网络
  • 零基础可以学编程吗,不懂英语怎么学编程,中文编程工具实例
  • .NET6实现破解Modbus poll点表配置文件