忘记同态加密:现在我们有了功能加密



您听说过功能加密 (FS)吗? 也许您听说过它,并且您自己对它进行了同态加密的处理 ,但这并不是完全错误,但也不是完全正确。

让我们看一下今天的FS,分析几个示例以及它与完全同态加密(PGS)有何不同。

首先让我们确定谈论FS时的含义。 最近,在2010年,Dan Bonnet,Amit Sahai和Brent Waters正式确立了FS的概念。 大约FS可以描述如下:这是一种具有公共密钥的加密方案,其中用于解密的不同密钥使用户可以了解加密数据的某些功能。

因此,在函数F(·,·)的FS方案中,具有主密钥的加密器生成密钥s k ,该密钥可以从加密数据计算函数F(k,·),以便解密器从数据x和密钥s知道加密文本c k能够计算F(k,x),除了从x计算函数的结果之外,无法找到其他任何东西。

FS与PGS


如果您熟悉PGS的概念,那么以下内容将很有趣:

使用PGS,您可以计算加密数据的任何功能,而无需解密该数据。 这是将计算委托给不信任的第三方的有趣机会。 这种方法的缺点是,结果也会被加密,要解密它,您需要将其发送给私钥的所有者。 PGS流程可以表示如下,其中E是加密方案,F是我们要根据加密数据计算的函数:

E(x_1),E(x_2),...,E(x_n)→E(F(x_1,x_2,··,x_n))

另一方面,使用FS,结果在计算后立即可直接提供给我们,即以下内容可供我们使用:

E(x_1),E(x_2),··,E(x_n)→F(x_1,x_2,··,x_n)

从某种意义上说,FS是一种可以同时计算和解密结果的方案,除了计算结果本身之外,没有泄漏私钥和有关x 1 ,x 2 ,...,x n的任何信息。

显然,我们不需要每个人都能够计算出他们想要的任何函数,因为否则,很容易获得明文中各个参数的信息(例如,计算一个相同的函数)。 因此,只有私钥的所有者才能解密E(x_i)并为其选择的某些功能生成结算密钥。 这意味着FS要求存在“中央机构”,向负责功能计算的人员颁发“结算密钥”。

也就是说,FS是对使用公共密钥加密的想法的概括,它允许用户通过为这些功能生成某些秘密密钥,从而将加密数据中某些类型的功能的计算委托给第三方。 与标准加密方案不同,它使您可以更准确地控制第三方可用的解密功能。

FS非常有用,因为它使我们能够有意将有关加密数据的某些信息传输给某些用户。 例如,我们可以从一组加密数据中获取平均值而无需透露数据本身,或者获取有关该组数据的更多统计信息。 鉴于当前的安全问题以及新法律(例如GDPR)提出的要求,对有效的FS方案的需求变得更加明确,因为它允许第三方处理加密的数据,而不必将此数据纯粹以任何形式提供给任何人。 这意味着我们可以超越个人数据的伪匿名允许的范围,从而确保更严格的机密性!

回到FS


由于其一般性质,FS包含并结合了许多以前独立研究过的其他高级加密方案,即: 基于身份验证的 加密,可搜索的加密,隐藏的矢量加密,基于通配符模式的标识加密,基于属性的加密 ,使用标量产品进行功能加密。

尽管FS方案还很年轻,但是自2010年以来发生了很多事情,并且已经有很多有趣的方案可以让您执行8年前看起来非常复杂的事情。 在某些加密会议上已经组织了有关FS的报告!

让我们看一下几种不同类型的FS方案。 例如:

  • 具有标量积(FSFS)的功能加密,其中纯文本是向量,并且加密的数据与密钥一起可用于计算此向量与另一个向量的标量积。 FSSP有多种选择:对于许多客户端,许多输入,分散式,具有隐藏功能等。
  • 基于属性的加密(SHO),其中加密的数据与一组属性和秘密密钥以及某些规则相关联,这些规则控制可以加密哪些加密文本,具体取决于我们拥有的属性。
  • FS“通用”,它允许从加密数据Enc(x)计算任何类型的函数f。

但是,在这里必须注意的是,尽管已经做了很多工作,并且集中在FS的理论方面,但是为了尽可能多地开发该领域,所有通用FS在今天的实际使用中效率仍然太低。 这是FENTEC项目(欧洲功能加密技术研究计划)的研究主题之一:通过设计和实施可在工业规模上使用的实用方案,使FS达到实用性。 在这个项目中,不仅开发了功能更丰富的新方案,而且还开发了可以进一步加快所需计算速度的特殊协处理器-所有使理论更接近实践的东西。 有关此设备的更多信息,请参见FENTEC 项目博客文章

想今天使用FS吗? 请使用


但是,如果您想今天使用FS,该怎么办? 那应该没有问题! 作为FENTEC项目的一部分,XLAB的团队正在实施由合作伙伴大学开发的许多计划,这些计划的形式为CiFEr C-library和GoFE Go-library。

您可以在FENTEC博客上详细了解有关库的更多信息 ,或直接转到Github并开始使用CiFErGoFE库 。 顺便说一句,我们通过WASM检查了它们是否在浏览器中也有效!

该项目的Github存储库中甚至还有一些示例:


所有可怕的细节:FS方案的内在内容


在已经实施的方案中,您可以找到许多方案,称为“带标量的功能加密”。 但是这个名字是什么意思? 应该从字面上看:这些方案允许第三方使用FS计算两个向量的标量积的结果。

假设您要对向量a进行加密,并使用向量y获得其标量积的结果。 首先,我们需要一个中央机构来实施FS。

在这种情况下,中央机构发布“公共主密钥” mpk以及给定向量y的结算密钥z y。 然后,任何知道公钥的人都可以对向量a进行加密,从而允许任何拥有密钥z y的第三方使用E mpk (a)计算<a,y>,而对向量a本身一无所知。

注意,在该FS方案中,与计算密钥z y相对应的向量y必须为第三方所知,以便计算标量积。 即,仅向量a仍然是秘密。

如果您希望两个向量a和y都保持秘密,但同时又让第三方可以计算其标量积,该怎么办?

幸运的是,近年来,这一研究领域也取得了重大突破。 它被称为“具有隐藏功能的FS”。 实际上,如果密钥和密文除了它们的标量积<a,y>之外不提供关于向量a和y的附加信息,则标量积的加密方案“隐藏功能”。 在具有FS的新方案中,隐藏功能越来越普遍( 1、2、3 )。

总结一下


尽管功能加密最近已经出现,但我们已经可以想象到将来有许多选择使用它。 特别有趣的是能够基于端到端数据加密将决策过程从后端系统转移到复杂网络中的某些网关系统的能力。 我们称此为“本地决策”,这样的机会是朝着为“物联网”和其他高度分散的网络创建安全网络的重要一步,这些网络希望实现端到端加密而又不会在网关级别损失太多决策能力。

现在,我们正在研究一种产品的原型,该产品将FS与标量产品一起使用,能够使用所谓的“网关”级别检测从摄像机到后端系统的视频流中的移动。 H.264 / MPEG-4 AVC标准中包含的“运动矢量”。


编码H.264开放短动画片Big Buck Bunny时帧中运动矢量的可视化

请注意,在带有标量积的FS方案中使用的运动矢量有多好,因为标量积是在矢量空间上定义的! 我们仍在寻找运动检测方法的最佳选择,并希望在2020年底之前获得使用FS进行运动识别的功能齐全的原型。

Source: https://habr.com/ru/post/zh-CN482790/


All Articles