功能加密:定义与挑战
1. 功能加密简介
功能加密是一种强大的加密概念,许多现有的加密概念,如基于属性的加密等,都可以优雅地表示为功能加密的特定功能。然而,定义抽象功能加密的安全性却极具挑战性。
最初,我们尝试基于自然的不可区分性游戏来定义安全性,但发现这种简单的定义对于某些功能并不适用,因为一些明显不安全的构造可能会满足该定义。于是,我们转向基于模拟的定义,其灵感来源于Goldwasser和Micali提出的语义安全的原始概念。目标是确保攻击者除了通过其持有的密钥对应的明文函数 (F(k, \cdot)) 外,无法获取关于明文的任何其他信息。令人惊讶的是,这与非承诺加密存在联系,这表明我们的定义在某些情况下无法满足,原因与非交互式非承诺加密无法实现类似。不过,在随机预言模型中,我们的定义是可以满足的,并且能构建出被证明安全的有趣功能。
2. 功能加密语法
- 功能定义 :功能 (F) 定义在 ((K, X)) 上,是一个函数 (F : K×X →{0, 1}^*),可由一个(确定性)图灵机描述。集合 (K) 称为密钥空间,集合 (X) 称为明文空间,且密钥空间 (K) 包含一个特殊的空密钥 (\epsilon)。
- 功能加密方案定义 :对于功能 (F) 的功能加密方案(FE)是一个由四个概率多项式时间(PPT)算法 ((setup, keygen, enc, dec)) 组成的元组,需满足以下正确性条件:
1. ((pp, mk) \leftarrow setup(1^{\lambda})):生成公钥和主秘密密钥对。
2. (s