密码协议学习笔记(7):不经意传输

不经意传输:

不经意传输(Oblivious Transfer,OT)这个名字不太直观,实际上,该协议的描述是:

发送方Alice向接收方Bob发送了n条消息,m1,,mn,

接收方Bob从中选择一条或几条消息.

发送方无法控制接收方的选择,也无法得知接收方的选择,而接收方不能得到其选择之外的信息.

该协议的应用场景例如:网上购物,卖家将自己的货物信息发送给买家,但买家不希望卖家知道自己查询了哪些货物的报价(这可能涉及隐私,你也不希望自己浏览斐济杯的记录被其他人知道吧),但同时,卖家也不希望将买家未查询的信息额外地透露给买家(这则涉及商业秘密).

因此,不经意传输在设计时需要考虑的因素有:

  1. 正确性:若发送方和接收方正确执行协议,则接收方可得到其选择的信息.
  2. 不经意性(接收者的隐私性):接收方选择了那些信息,发送方是无法得知的.
  3. 安全性(发送者的隐私性):接收方不能得到它没有选择接收的信息.

在此协议中,协议的参与者可按其行为分类为:

  1. 可信参与者:按协议执行的参与者
  2. 半可信参与者/被动攻击者:按协议执行,但试图通过接收到的消息计算出额外的信息
  3. 恶意参与者/主动攻击者:不按照协议执行

常见的不经意传输形式:

根据发送信息和获知信息的条数,可将不经意传输分为如下几类:

1-out-of-2不经意传输(OT21):

Alice有两条消息m1,m2,协议执行后Bob只能选择获知其中的一条(安全性),而Alice不知道Bob选择的是哪条(不经意性),且Bob可以确信它得到了想要的信息(正确性).

1-out-of-n不经意传输(OTn1):

Alice有若干条消息m1,,mn,协议执行后Bob只能选择获知其中的一条(安全性),而Alice不知道Bob选择的是哪条(不经意性),且Bob可以确信它得到了想要的信息(正确性).

k-out-of-n不经意传输(OTnk):

Alice有若干条消息m1,,mn,协议执行后Bob可以选择获知其中的k条(k<n)(安全性),而Alice不知道Bob选择的是哪条(不经意性),且Bob可以确信它得到了想要的信息(正确性).

根据不经意传输的实施办法,又可分为如下几种形式:

非适应性不经意传输:

接收者Bob提前选择自己要得知哪一部分信息,协议中不能改变选择,一般适用于安全多方计算协议设计.

适应性不经意传输:

发送者Alice事先发送秘密,而接收者再确定自己要获得哪一部分秘密,一般用于隐私保护的数据库搜索.

分布式不经意传输:

将A的职能分布到多个服务器上,发送方Alice和接收方Bob之间没有直接交互,他们都分别与这组服务器分享,实现信息传递。

可公开验证的不经意传输:

在一些安全性要求高的协议中,需要让任何人都能够验证Bob获得了应该得到的秘密,而且没有获得更多的秘密。在这样的验证中,通信双方都不希望泄漏各自的秘密或秘密选择以及获得的秘密。

完全不经意传输:

发送者Alice和接收者Bob都不知道哪些秘密被Bob接收.

不经意传输的设计方法:

不经意传输协议的设计模型:

基于计算复杂性理论设计不经意传输额协议.

假设攻击者拥有概率多项式计算时间,那么不经意传输协议可以在一系列密码学假设下实现.

也有基于其他安全假设的不经意传输协议设计.

OT21的设计方法:

系统参数:

非对称加密系统(PEnc()(),PDec()()),记其信息空间为μx

对称加密系统(SEnc()(),SDec()())

(注,可视为按位异或操作)

Alice   Bob
生成公钥pk和随机数c0,c1μx c0,c1,pk  
  q

选择随机数r{0,1},

将两个随机数之一cr作为盲化因子

会话密钥kμx

使用pkk加密并用cr盲化,以得到

q=PEncpk(k)cr

解密并计算

k0=PDecpk(qc0)

k1=PDecpk(qc1)

两个值解密后其中一个是会话密钥,另一个是无意义值,但无法区分

   

使用k0,k1分别加密两段信息m0,m1

SEnck0(m0)

SEnck1(m1)

SEnck0(m0)

SEnck1(m1)

 
   

使用会话密钥分别尝试解密

SDeck(SEnck0(m0))

SDeck(SEnck1(m1))

其中之一是有意义信息,另一个为无意义值

观察协议的执行过程,正确性,不经意性和安全性是显然的.

OTn1的设计方法:

系统参数:

大质数q

q阶循环群G

G的两个生成元g,h(\log_gh是保密的)

初始化:

Alice发送的信息为m1,m2,,mnG,Bob选择接收的信息为第t[1,n]

交互阶段:

Alice   Bob
  y

生成一个随机数r[1,q1]

计算y=grht

随机生成k1,,kn[1,q1]

计算

ci=(gki,mi(yhi)ki)

i[1,n]

c1,,cn

 
   

ct=(at,bt)

计算mt=bt(at)r

正确性:

mi=bi(ai)r=mi(yhi)ki(gki)r=mi(grhthi)kig(kir)=migrkihtkih(iki)g(kir)=mihtkih(iki)

i=t

mt=mthtkth(tkt)=mt

不经意性:

Alice由于不知道r,因此y=grht对于它来说是完全随机的,无法从中获得t的任何信息

安全性:

对于it,有mi=mihtkih(iki)

Bob由于不知道ki,因此无法得知mi

OTnk的设计方法:

注意,该方案属于适应性不经意传输,即Bob在获知了第一条信息之后,可以在剩下的n1条消息中任意地选择获取的下一条消息.

该方案基于不经意密钥搜索OKS(Oblivious Keyword Search).假设W是所有密钥集合,在承诺阶段,Alice首先承诺了n个数据,在后来的每一个交互过程中,用户Bob在Alice不知道其选择的前提下,可自适应地选择一个密钥ωW

系统参数:

G随机数发生器

H安全哈希函数

(||符号可以理解为字符串拼接,可视为按位异或操作)

承诺阶段:

Alice   Bob
生成RSA公钥(N,e),私钥d (N,e)  

产生n个数据

B1,,Bn

Bi=(ωi,ci)

其中ωiW(或许可以称之为消息标签)

ci是内容

   

计算

Ki=(H(ωi))dmodN

Ei=G(ωi||Ki||i)(0l||ci)

E1,,En

 

交互阶段:

Bob共有k次向Alice查询信息的机会,每次获得一个数据

对于第j[1,k]次交互过程

Alice   Bob
  Y

选择消息标签ωj{ω1,,omegan}

和随机元素r

计算Y=reH(ωj)

计算K=Ydmodn K  
    计算K=Kr1
   

对于i=1,2,,n,依次计算

(ai||bi)=EiG(ωj||K||i)

若某个ai=0l,则得到选择的消息

正确性:

K=Kr1=Ydr1=(reH(ωj))dr1=(re)(H(ωj))dr1=r(H(ωj))dr1(RSA密码体系)=(H(ωj))d

EiG(ωj||K||i)=G(ωi||Ki||i)(0l||ci)G(ωj||K||i)=G(ωi||(H(ωi))d||i)(0l||ci)G(ωj||(H(ωj))d||i)

ωj=ωi时,

EiG(ωj||K||i)=G(ωi||(H(ωi))d||i)(0l||ci)G(ωi||(H(ωi))d||i)=0l||ci(异或的性质)

将其拆分为ai||bi,前半部分为全0,后半部分为消息的值.

(博主注:为什么要把随机数产生器G和安全哈希函数H分开?)

不经意性:

每次交互时Alice都不知道随机数r是多少,因此无法从Y=reH(ωj)中获取关于ωj的任何信息

安全性:

如果没有Alice发送的K,G(ωi||Ki||i)生成的数据对于Bob来说完全随机,因此,被G(ωi||Ki||i)按位异或后得到的Ei对于Bob也没有任何有效信息.

不经意传输应用:

    1. 作为组件构造其他高级密码协议

      密码学领域的重要设计原则是,先设计参与者都是半可信时能保证安全的密码协议,然后迫使参与者证明它们都是半可信的,进而构造出抵抗恶意攻击者的协议

      不经意传输便可用于后一步.将不经意传输协议作为原语,通过比特承诺,零知识证明保证协议的正确性和参与者本地数据的私有性.

OT21可用于安全计算,公平的盲签名,电子拍卖,OTn1可用于匿名指纹

  1. 直接用于电子商务,内容保护等领域用于保护参与者的隐私
  2. 应用于保护隐私的数据库检索系统(例如前文提到的自适应不经意传输协议)

 

posted @   Isakovsky  阅读(717)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示