一篇CCS的关于密钥交换的论文分析

Minimal Symmetric PAKE and 1-out-of-N OT from Programmable-Once Public Functions:可一次编程公共函数的最小对称PAKE和N取1 OT

前述

坐标2021.1.23
本周最后一篇啦~ 这篇看的是真的迷糊,主要是对于密钥协商这一块的知识比较淡薄,用到的一些支撑技术也不太了解= =
先大致一读,后续研究用到参考了再来细看

关于paper

密钥协商协议
其中一种基于加密密钥交换的EKE协议:用共享密钥p加密随机产生的公开密钥K,建立会话密钥k。论文是对该模型的推广
Symmetric password-authenticated key exchange (sPAKE) :对称口令认证密钥交换,可以看作是传统密钥交换的扩展,当且仅当双方共享一个公共秘密(可能是低熵)口令时,双方就共享密钥达成一致。。。
还提出了一个 N取1不经意传输oblivious transfer (OT) 协议。
不经意传输协议快速入门
(看论文是真的nb啊,知识一波接一波的输入。。。
概括就是A发给B一些消息,他不知道B选择了哪条,B也不知道除了选择的那个之外的消息,保护双方隐私。(密码学真是博大精深
1 of N:A发出去N个消息,B取1
可编程一次性公共函数 programmable-once public function (POPF):POPF是一个函数,它的输出可以由一方在一个点上编程。在可证明的意义上,该函数的所有其他输出都不受任何一方的控制。
Keyword:Encrypted Database; Database Reconstruction; Attack

正文

一些概念

  • 安全模型:基于博弈的PAKE安全模型,为了处理密码的低熵特性,假设密码是独立于固定分布而选择的。这无法有效地模拟密码选择和输入之间有趣的、真实的关系。本文基于 可组合universally-composableUC)定义,基于仿真的定义允许外部环境选择密码,因此不对密码的分布进行任何假设。UC定义更适合于处理密码之间的依赖关系,例如输入错误或在不同服务器上使用类似的密码。
  • 显式/隐式身份验证:在隐式身份验证下,如果两个参与者不共享相同的密码(包括诚实的一方错误键入其密码的情况,或者攻击者未能成功猜出密码),那么每一方都会输出一个看起来随机的密钥。在双方继续使用各自的密钥并且随后的一些任务失败之前,他们可能不会收到任何协议失败的通知。在显式身份验证下,诚实的一方在PAKE实例结束时立即知道协议是否成功。本文采用隐式,避免额外工作流
  • 测量环复杂度:用流来描述,流由来自每一方的消息组成,消息可以按任意顺序连续发送。
  • 理想模型和设置假设:理想密码-其中所有参与方都有对于一系列随机排列{E(k,·)}k和相应的逆{E−1(k,·)}的oracle访问。本文的结构依赖于较弱的随机oracle模型。另一种是 公共引用字符串(CRS),其中所有参与方都可以访问诚实生成的公共字符串(多项式长度)(上一篇生成过)

本文的贡献:用可编程的一次公共函数(POPF)代替理想的密码,一个POPF只需要对一个随机oracle进行2次调用就可以构造出来【理想需8次】

准备工作

(1)未经认证的密钥协议:通用2轮密钥协商协议的结构图源论文
如果两个分布 KA.key1(a,M2) 、KA.K 不可区分,则2轮KA协议是安全的。
如果两个分布XXX不可区分,则2轮KA协议是伪随机的。
如果对于所有PPT A,两种分布XXX不可区分,则2轮KA协议具有强随机响应
如果对于所有PPT A,分布XXX不可区分,则2轮KA协议KA是健壮的。

可编程一次公共函数

(1)EKE:Alice使用密码pw1生成一个普通KA协议消息M1并发送Φ1=E(pw1,M1),其中E是一个理想的密码。Bob对称地发送Φ2=E(pw2,M2)。现在,Alice将E−1(pw1,Φ2)解释为KA协议消息,并计算相应的KA输出作为她的sPAKE输出。
我们的贡献是用一个更简单的对象来实例化理想的密码(E,E−1),这个对象称为可编程的一次性公共函数(POPF)。
Alice: Φ1=Program(pw1,M1);Bob: ^M1=Eval(Φ1,pw2)
(2)诚实一方的POPF就像一个随机函数:Eval函数调用一个随机的oracle H
(3)可编程一次:在经典的EKE中,假设一个破坏的Bob发送Φ*=Φ2。
a在看到Φ*时,模拟器可以识别唯一的pw*,以便Bob能够选择E−1(pw*,Φ*)。本文让模拟器能以1/q概率对这些输出进行编程,其中q是攻击者进行的随机oracle查询数。它通过“猜测”oracle的哪些查询将见证攻击者选择pw*来实现这一点。

定义:一个可编程一次的公共函数(POPF)由算法EvalH:X×{0,1}*→Y和 ProgramH:{0,1}*×Y→X组成。H表示POPF所需的任何全局设置(如随机oracle).
HSim1是一种交互式算法,它代替H并输出一个值Φ∈X及其内部状态。HSim2是第二个交互算法,它使用这个状态和一个oracle Y{0,1}来代替H。同样,Extract1与攻击者交互,代替H,并输出其内部状态。Extract2然后使用这个内部状态以及攻击者选择的Φ∈X来计算哪个X∈{0,1}*是攻击者编程的。Extract3还使用内部状态。

一个元组(Program,Eval,HSim,Extract)是一个安全的POPF:正确性、诚实的模拟、直线提取、不可控输出。。。

架构概述

Alice是如何编程的?假设Alice有一对(x*,y*),其中y∈G,则Program(x,y*)可被计算以得到(s,T)如下:
(1)选择随机r ←{0,1}3κ 并查询H(x*,r)。
(2)求解方程H(x*,r)·T=y* 中的T。
(3)求解方程r=s⊕H′(x,T)中的s。
可以很容易地检查Eval(Φ,x*)=y是否符合要求。
此外,如果y
是随机的,那么s和T都是随机分布的(在各自的组中),因此隐藏x*。

然后是对于上述安全性的证明。。。
下图是安全的POPF构造:
图源论文

对称PKE

•Program(pw,M)=E(pw,M)
•Eval(Φ,pw′)=E−1(pw′,Φ)

单流变体:构造基于一个允许顺序的底层KA协议,因此M2依赖于M1。在某些情况下,例如在Diffie-Hellman密钥协议中,每一方的密钥协议消息可以独立于另一方的密钥协议消息生成。在这些情况下,通过并行发送KA消息,协议可以从2流协议折叠为1流协议。
对于这种单流KA协议,我们可以编写KA.msg2(b)而不是KA.msg2(b,M1)。

实例化和开销。。。

隐式身份验证:在协议结束时,任何一方都不知道它们是否使用相同的会话密钥终止。

1-OPRF结构

OPRF协议允许Alice和Bob联合实例化一个随机函数,其中一方(Bob)可以对有限个输入求值,而Alice可以对任意个输入求值。在这项工作中,我们只考虑Bob在1个输入上计算函数的情况,我们称之为1-OPRF。
安全的说明。。。。
和一些细节。。。。
实例化。。。

心得

这一篇最大的收获还是在于掌握了一些概念吧,论文做的工作还是挺多的,理解起来还需要一些钻研= =
特此声明,该博文所写均为本人自己理解,如有争议以论文原作者为准,(鞠躬

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值