属性加密:1-ABE

内积加密、算术密钥乱码化方案的标签内积加密、算术密钥乱码化方案的标签内积加密、算术密钥乱码化方案的标签内积加密、算术密钥乱码化方案的标签内积加密、算术密钥乱码化方案的标签
内积加密、算术密钥乱码化方案的标签

本文是我的 2019 年科研“属性加密”系列博文第三篇。在这一篇里,我将介绍 LL20 里构造一次性安全的属性加密方案(叫做 1-ABE)的思路——使用内积加密计算算术密钥乱码化方案的标签。本文有彩蛋

前情提要

第一篇里介绍了属性加密 (ABE) 的概念:密文和属性相关联,密钥和策略相关联,解密成功当且仅当策略允许属性。我们定了一个“小目标”:构造支持算术公式的 ABE。

第二篇里定义了算术密钥乱码化方案 (arithmetic key garbling scheme),简称 AKGS:把 乱码化可得若干标签函数 (label functions) 代入就得到标签 (labels) 通过 可还原 且标签中无任何其他关于 的信息。此外,还构造了用于算术公式 (arithmetic formulae) 的 AKGS。

思路回顾

先来考虑一个简化情况,不考虑抗乌合 (collusion resistance),只需要在单个密钥、单个密文、随机消息(稍后解释这是什么意思)的情况下安全,且只考虑私钥方案,这种情况下的 ABE 叫做 1-ABE。此外,为了方便,再加一个小修改:把消息放在密钥里(即和算术公式 关联)。这对于私钥方案没问题,因为可以把 当作实际消息的一次性密钥。

假设希望当 时可以还原消息 LL20 利用内积加密 (IPFE) 构造 1-ABE,当密文和密钥放在一起时,首先算得 乱码化的标签,然后进行 AKGS 求值即得到

具体来说,LL20 会用到泛函保密 (function-hiding) 的内积加密。之前我已在“内积加密”系列文章中介绍过其语法、语义安全性具体构造,而且用到了双线性群。不过就目前来说,它用了双线性群这一点只和正确性有点关系,和(一次性)安全性关系不大。这里快速回忆(并重命名)一下 IPFE 的四个算法:

  • 输入向量维数 它用来生成主密钥
  • 生成对应于 的密钥
  • 生成对应于 的密文
  • 输出密钥里的向量和明文向量的内积。

方便起见,用 表示正常生成的、对应于 的密钥、密文。重命名是为了和 ABE 算法、密钥、密文区分开来。

构造 1-ABE

既然 AKGS 标签函数 的仿射函数,那么可以写出每个 的系数向量 它满足 可以用 IPFE 加密系数向量和属性,解密时先用 IPFE 解密算法得到 AKGS 标签,然后再进行 AKGS 求值即可。1-ABE 构造如下:

  • 运行 并令
  • 用 IPFE 生成一堆密钥,其中密钥里的向量是 乱码化标签函数的系数向量,这些 IPFE 密钥和 本身构成了 ABE 密钥:
  • 产生对应于 的 IPFE 密文,它和 本身构成了 ABE 密文:
  • 先计算 若等于 0 则输出 并结束,否则先用 IPFE 解密获得 AKGS 标签,再用 AKGS 求值得 最后除以 即可:

正确性显而易见。在实际的方案中,所用的 IPFE 基于双线性群,得到的是群编码的 而不是裸的 好在 AKGS 关于 线性,且除以 也线性,故两者可在指数中(同态)进行并得到 虽然这个方案不能还原 本身,不过它也不是最终方案,我们以后会解决这个问题。(上述论证不适用于 需要在知道 本身的情况下才能进行。)

安全性

之前说过 1-ABE 安全性只需要对单个密钥、单个密文、随机消息成立,前两点限制很好理解,第三点是这个意思:在安全博弈 (security game) 中,密钥总是针对一条随机消息 生成,并且在生成密钥时额外告诉使坏者 (adversary) 一条消息 是和 独立的均匀随机数;使坏者的任务是猜测这两种情况中哪一种发生了。

换言之,使坏者需要判断它收到的密钥里蕴含的是它收到的消息,还是蕴含着另一条独立随机消息。熟悉密码学的读者容易发现这类似于密钥封装机制 (key-encapsulation mechanism)非交互式密钥协商 (non-interactive key exchange) 安全性的定义,也类似于 BS20 中随机消息的语义安全性。

直观上讲,安全性似乎显而易见:IPFE 的安全性保证使坏者只能计算标签,而 AKGS 安全性保证一组标签里不包含 之外关于 的任何信息。因为在 ABE 安全博弈中使坏者查询的密钥、密文对应的策略、属性必须满足 (即“不允许解密”),所以标签里不包含任何关于 的信息,这样的话 无论是等于 还是独立随机,都只不过是一个独立于其他东西的随机数罢了,故使坏者无法猜出是哪种情况。

顺着这个思路很容易写出证明。回忆泛函保密性 (function-hiding) 即 IND-FH:它允许我们更改 IPFE 密钥、密文里的向量,只要对应内积保持不变,这种改变就不可区分。考虑如下过渡论证:

过渡博弈 的密文 的密钥

注意 故 IND-FH 保证

由 AKGS 标签模拟算法生成,由 AKGS 完美模拟安全性可知 注意模拟器的输入是 独立,故 中的东西除了 都和 独立。无论 还是 使坏者收到的 都是一个和其他东西都独立的均匀随机数,整个博弈和 独立,故使坏者猜对 的概率是 这就完成了安全性证明。

《哆啦A梦:大雄的魔界大冒险》结束了?
《哆啦A梦:大雄的魔界大冒险》结束了?

证毕……了吗?上面的证明看起来有模有样,实则暗藏谬误,是诈和。你能找到错误在哪儿吗?验证证明最直接的方法是只用形式逻辑思考并尝试自己说服自己,把过渡实验的回答方式、归约算法都具体写出来看看!

画外 直觉思考也必不可少,良好的直觉建立在长年累月对形式化的熟稔之上,我在这方面还有很长的路要走。

本篇结语

这一篇里我介绍了 LL20 中用 AKGS 和 IPFE 构造单个密钥、单个密文、随机消息安全的 ABE(即 1-ABE)的方法,不过,我给出了一个“错误”的安全证明,并且作为一个小悬念留了下来。下一次我会先解释目前的安全证明错误在哪儿,然后给出初步解决方案。后面的几篇会是这个系列里最精彩的部分,会详实记录文献中“冰冷的美丽”背后“火热的思考”。

参考文献

BS20 Dan Boneh and Victor Shoup. A Graduate Course in Applied Cryptography. January 2020. Draft version 0.5, in exercise 3.1, available at https://crypto.stanford.edu/~dabo/cryptobook/BonehShoup_0_5.pdf.
LL20 Huijia Lin and Ji Luo. Compact Adaptively Secure ABE from -Lin: Beyond and Towards . In Anne Canteaut and Yuval Ishai, editors, EUROCRYPT 2020, Part III, volume 12107 of LNCS, pages 247–277. Springer, Heidelberg, May 2020.

请启用 JavaScript 来查看由 Disqus 驱动的评论。