论文学习记录20200424:可验证函数加密[ASIACRYPT2016]

在这里插入图片描述
这篇论文讲的是可验证的函数加密,这个可验证,验证的是密文是否由公钥正确加密,私钥是否是由函数f(特定函数)和主密钥正确生成,在这个方案中,任何阶段任何参与方都可以是恶意的,也就是可信方也不可信了。
在这里插入图片描述
首先先简单看一下函数加密。
首先,会在初始化阶段生成公钥pk和msk,这一阶段通常是由可信方完成的,就像我下面画的这个。
接下来,加密者会使用公钥对消息x进行加密,在这图中是上传给云。
云想进行操作的话,会给可信方发送相应的函数,然后得到私钥sk,使用私钥sk对秘闻解密得到y,也就是f(x),这个能够保证如果云是恶意的,它也只能看到x的函数值f(x)而得不到真正的消息x。这是函数加密的好处。

但是它存在问题。

在这里插入图片描述
看第一个应用场景,是存储加密图像,这是前人的一个例子。
假设有一个云服务,客户在该云服务上存储加密图像。执法部门可能会要求云搜索包含特定人脸的图像,这就是一个函数f。因此,客户需要向云提供一个相应的函数f的解密密钥,该密钥允许云解密包含目标人脸的图像(但不包括其他内容)。之前Boneh人们认为可以在这样的设置中使用函数加密来提供这些解密密钥。

然而,我们观察到,如果我们使用功能加密,那么执法部门就必须相信客户是诚实的,因为在这种情况下,客户既是可信方又是加密者。如果它是恶意的,那么它可以创建格式错误的密文和“假”解密密钥,而这些密钥可能并不能提供执法部门要求的功能。这样的结果就是可以让执法部门相信没有匹配的图像,而实际上可能有几个匹配的图像。
在这里插入图片描述

接下来是一个更老的例子。假设有一家银行在其每个分行中维护大型加密的交易数据库。审计师需要进行财务审计,以证明其符合各种财务法规。为此,审计员需要访问存储在银行服务器上的某些类型的数据。但是,银行不希望让审计师获得全部数据(这会泄露客户个人信息等)。解决办法是让银行使用功能加密。这将使它能够向审计员释放一个密钥,该密钥有选择地只允许审计员访问所需的数据。
但是,请注意,审计的全部目的是提供保证,即使在被审计实体不可信的情况下也是如此。如果系统设置、加密或解密密钥生成都是恶意的,该怎么办。

这里有两种情况。
第一种,假设持有x的银行是正常的,持有Y的银行可能想要隐瞒自己的数据,所以贿赂总行,与总行共谋,而这个总行本来应该担任一个可信方的角色,但是在这是恶意的。审计员想学f(x)和f(y),最后可能拿到的是函数f(x),g(y),原因是,第一种这个y可能不是正确加密的,或者世界银行给他的密钥sk不是函数f的,在生成密钥的时候,可能设置为是如果输入的不是y,那么输出f的密钥,否则输出函数g的密钥。

第二种,现在总行和分行都是恶意的,这个审计者想要拿到两个函数值,fx和gx,所以她给总行发送f,g,并拿到相应的密钥,但是他没有学到fx和gx,而是gx’,也就是说这可能是完全不同的消息,但是审计者只知道密文,私钥,所以他不知道他得到的结果是对的还是错的,他可能认为自己是对的但是其实这是错误结果。
在这里插入图片描述
应对这些场景,这种在系统设置、加密或解密密钥生成是恶意的情况,作者提出了可验证函数加密,给出了定义还给出了构造。它主要是依赖这个DLIN假设

DLIN假设是在椭圆密码曲线中使用的困难性假设,在这里DLIN假设仅用于构造非交互性不可区分证明系统,也就是NIWI。在证明这块儿,NIWI是非交互式零知识证明NIZK的弱化版本,没有用NIZK的原因是因为setup阶段可能会有恶意操作,所以NIZK中的CRS可能也是错误的。在典型的零知识证明中,验证者仅仅只可以了解陈述的真相。在WI(证据不可区分)中,这种零知识条件被削弱,更强调的是一个不可区分。唯一的保证是验证者无法区分使用不同证据的证明者。

编译器在不同的假设下产生了各种可验证的功能加密方案。表1总结了其中一些。
在这里插入图片描述
定义,简单看一下。
在这里插入图片描述

首先,在初始化阶段,运行这个函数加密系统四次,生成四对公钥和主密钥对
在这里插入图片描述
加密阶段
在这里插入图片描述
密钥生成阶段:
只有满足下面这两种情况才能满足这个y,w=1,也就是后面的验证才能够通过,一个是这个四个系统都是对同一个函数f,而且不管是左右那种情况,如果想要保证私钥的可验证性,是要求初始化的那个公私钥对是诚实生成的。
这里直说是同一函数f,假如说有一个而乙方换掉函数f,让他变成g,那就是四个都是g,在这一步也是可以的,但是会在后面被检测出来。
在这里插入图片描述
解密:
先验证再解密,令y=

验证CT,验证的是密文CT和公钥MPC是否是对应的,密文是否是由公钥正确加密产生的。
验证K,验证的是函数f和私钥sk是否是对应的,私钥是否是用函数f和主密钥正确生成的。

到这里,构造结束了
在这里插入图片描述
简单看下可验证性,主要是R和R1,R是验证密文的,R1是验证密钥的。框框里分别是Ryw=1 和R1yw=1的两种情况。他们分开来看能够满足各自的验证,但是合起来不是简单的加法而是有一些冲突。

先来看R的第一种情况,对R1的两种,
A r是四个系统都对同一消息进行加密,r1是四个都对同一函数进行生成密钥,所以,很直接,能够通过验证,正确得到fm
B r是四个系统都对同一消息进行加密,r1是三个都对同一函数进行生成密钥。签名解密阶段说至少三个相等,就能够得到fm,所以这个也没问题。

再来看R的第而种情况,对R1的两种,
A 由于在r里面,z1是对0的承诺,在r1里面z1是对1的承诺,所以冲突了,验证密文和密钥不能够同时满足
B r是两个系统都对同一消息进行加密,r1是三个都对同一函数进行生成密钥。根据鸽巢原理,因为一共就四个系统,所以一定存在一个i* 在r1的这三个和r的两个有至少一个重复。又因为z是对四个密文的承诺,四个系统解密得到的结果一定是相等的,而i*的解出来是fm,所以这四个都是fm。

这两个的思路和公钥函数加密的这个是类似的,私钥的比公钥的多加了一个系统。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值