不经意传输(OT)协议 - Mike Rosulek教授课堂笔记

视频地址:密码学学术讲座 | Mike Rosulek教授开讲不经意传输及其扩展_哔哩哔哩_bilibili

Base OT

Base-OT,即1-out-of-2 OT协议,即发送方S拥有两个秘密消息 M_{0}M_{1},接收方拥有秘密选择比特 b\in \left \{ 0,1 \right \},根据接收方输入的秘密比特b,OT协议返回 M_{b} 给接收方,同时应安全性的要求,接收方对 M_{1-b} 一无所知,发送方对接收方选择的是 M_{0} 还是 M_{1} 也一无所知。

随机OT

随机OT,即发送方的两个消息以及接收方的选择比特都是由OT协议随机生成的。

随机OT可以容易地转换为标准OT。如下图所示,在离线预处理阶段,发送方获得随机OT生成的消息m_{0}^{\$ },m_{1}^{\$ },接收方获得c^{\$ },m_{c^{\$ }}^{\$}。在线阶段,发送方发送消息m_{0},m_{1},接收方发送选择比特c,获得消息m_{c}。发送方利用随机OT生成的消息m_{0}^{\$ },m_{1}^{\$ }来加密发送方的消息m_{0},m_{1},并将加密后的消息x_{0},x_{1}发送给接收方。现假设接收方从随机OT获得的c^{\$ }=0。若c=c^{\$ },则发送方发送的消息为x_{0}=m_{0}^{\$ }\oplus m_{0},x_{1}=m_{1}^{\$ }\oplus m_{1},Bob本地计算x_{0}\oplus m_{0}^{\$ }=m_{0}^{\$ }\oplus m_{0}\oplus m_{0}^{\$ }=m_{0},即获得了消息m_{0},并且对消息m_{1}一无所知;若c\neq c^{\$ },按照上述步骤可以发现,接收方无法获得正确的消息,除非发送方交换加密信息,用m_{1}^{\$ }加密m_{0}m_{0}^{\$ }加密m_{1}

为解决上述出现的问题,Beaver提出让接收方告诉发送方c, c^{\$ }是否相等,即发送d=c\oplus c^{\$ },然后发送方计算x_{0}=m_{d}^{\$ }\oplus m_{0},x_{1}=m_{1\oplus d}^{\$ }\oplus m_{1} 并发送给接收方,接收方计算x_{c}\oplus m_{c^{\$ }}^{\$ }=x_{c}^{\$ }\oplus m_{c\oplus d}^{\$ }=m_{c}。其正确性容易验证,且是安全的,发送方从d中无法获得cc^{\$ }的具体信息。

IKNP-OTE

在实际的应用场景中,会多次调用Base OT,为解决其低效性,提出了OT扩展协议,即采用少量的Base OT和对称密钥结合生成大量OT实例。

现有Alice和Bob两个参与方,他们想生成 n 个OT。其中,Bob拥有一个长为m的比特串 r ,该比特串中的m个比特是每次执行 OT 时的选择比特。Bob将这个比特串 r 排成一列向量,然后将其进行重复编码,即将向量中的每一个元素按行进行重复,(每一行要么全是0,要么全是1 ) 形成一个 n\times \lambda 的矩阵R。Bob对该矩阵进行秘密分享,生成两个秘密份额矩阵\left ( T,{T}' \right )。若矩阵R中的某一行全是0,则生成的两个矩阵中对应的行的元素相同;若全是1,则相反。Alice随机生成一个长为 \lambda 的比特串S。

然后双方交换身份,即Alice变为接收方,Bob为发送方,执行 \lambda 次Base OT。对于第 i 次的Base OT,Bob输入两个矩阵的第 i 列元素\left ( T_{i},{T_{i}}' \right ),Alice选择 S_{i} 作为选择比特选择两列元素中的某一列。直至执行完 \lambda 次,Alice获得矩阵Q。

 在上图中,可以看出当r=0时,Alice获得的矩阵Q中的某一行 q_{i} 与 Bob的秘密分额矩阵中对应行 t_{i} 的元素相同,而当r=1时,Alice获得的矩阵Q中的某一行 q_{i}是Bob的秘密分额矩阵中对应行 t_{i}与S异或得到的结果,即

q_{i}= \left\{\begin{matrix} t_{i},& r_{i}=0 & \\ t_{i}\oplus s,& r_{i}=1 & \end{matrix}\right.

也可以写成

q_{i}=t_{i}\oplus r_{i} \wedge s

因此,最终Alice获得了t_{i}t_{i}\oplus s,根据r_{i}的不同表示为下图所示的形式。左边表格即可以为Alice所拥有的秘密消息,右边表格为Bob所获得的消息。

 由于Alice的每一行都利用了S,为保证其安全性,Alice和Bob采用了随机预言机模型H,如下图所示。

 以上即为IKNP协议,它是半诚实安全的。实际上,在上述协议中,Alice可以是恶意的,但是Bob只能是半诚实的。

KOS-恶意安全的IKNP

而当Bob是恶意敌手时,IKNP就会出问题,因此提出了KOS协议,即恶意安全的IKNP协议。

如上图所示, 当Bob在生成选择比特矩阵时,若篡改了其中某一比特。当且仅当Alice的比特串s中的第二个比特s_{2}=1时,Alice和Bob在第二行就会有一个比特不一致。 若Alice对该行进行Hash运算并在其他大型协议中使用这些结果而被Bob检测到,则Bob将能得到s的一个比特信息。然后Bob通过使用类似地方法, 在每列的不同位置篡改一个比特,便可以获得Alice秘密信息s。

Keller、Orsini、Scholl 在2015年提出一致性检查(Consistency check)技术可以解决这一问题。

q_{i}=t_{i}\oplus r_{i} \wedge s,可以得出(\oplus _{i\epsilon c} q_{i})=(\oplus _{i\epsilon c} t_{i})\oplus(\oplus _{i\epsilon c} R_{i}) \wedge s

由此,Alice选取随机行数组成的集合C发给Bob,然后Bob计算t^{*}= \oplus _{i\epsilon c} t_{i},R^{*}= \oplus _{i\epsilon c}R_{i}并发送给Alice,因为Alice有s和q_{i},他可以计算q^{*}= \oplus _{i\epsilon c} q_{i},并验证(\oplus _{i\epsilon c} q_{i})=(\oplus _{i\epsilon c} t_{i})\oplus(\oplus _{i\epsilon c} R_{i}) \wedge s是否成立。

KK13

在IKNP协议中,Bob拥有一个选择比特串 r 并将其扩展成为了一个矩阵,在该矩阵中每一行要么全是0,要么全是1。KK13中指出,这是一种简单的重复编码,若将其视为一种纠错码,可以采用不同的纠错码将其进行推广。

因此,现Bob有一选择比特串 r ,设C:\left \{ 0,1 \right \}^{1}\rightarrow \left \{ 0,1 \right \}^{\lambda },用来对Bob的选择比特 r_{i} 的重复码进行编码,即编码后的矩阵中第i行元素为 C(r_{i}),然后对编码的矩阵进行秘密分享,设Bob的秘密分享矩阵为T,T^{'},其中,矩阵的元素表示为t_{i},t_{i}\oplus C(r_{i})

IKNP等式可以推广为  t_{i}=q_{i}\oplus C(r_{i}) \wedge s

执行完Base OT后,对于每一行,Bob获得了 t_{i} ,Alice获得了q_{i}\oplus C(0)\wedge s,q_{i}\oplus C(1)\wedge s

从Bob视角来看,Alice的两个值可以改写为t_{i}\oplus C(r_{i})\wedge s\oplus C(0)\wedge s,t_{i}\oplus C(r_{i})\wedge s\oplus C(1)\wedge s

当C是一个线性码时,[C(a)\wedge s]\oplus [C(b)\wedge s]=C(a\oplus b)\wedge s,因此Alice的两个值可以进一步写为t_{i}\oplus C(r_{i}\oplus 0)\wedge s,t_{i}\oplus C(r_{i}\oplus 1)\wedge s

C(0)\wedge s=0^{\lambda },因此Alice的两个值为t_{i},t_{i}\oplus C(1)\wedge s

最后,再使用随机预言机破坏对于s重用的关联性。

以下是对IKNP的一些推广。 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值