数据安全的下一个前沿之保护使用中的数据
2022-7-20 00:19:6 Author: 哆啦安全(查看原文) 阅读量:16 收藏

2022年4月18日    摘自 SecurityIntelligence 

写在前面:上一篇从整体介绍了数据安全,本篇就加密部分的同态加密和机密计算做了说明。

       在过去几年中,在保护传输和存储中的敏感数据方面取得了巨大的进展。但敏感数据在使用过程中仍可能受到攻击。例如,透明数据库加密(TDE),虽然透明数据库加密能确保敏感数据在存储时受到保护,但同样的敏感数据必须以明文的形式存储在数据库缓冲池中,以便能够处理SQL查询。这使得敏感数据很容易受到攻击,因为它的机密性可能通过多种方式被破坏,包括抓取内存的恶意软件和特权用户滥用。

       这种对使用中的数据保护的担忧,已经成为许多组织不愿将某些计算委托给云来节省IT基础设施成本,以及不愿与同行共享私有数据进行协作分析的主要原因。机密计算(confidential computing)和全同态加密(FHE)是解决这一问题的两项有前景的新兴技术,使组织能够释放敏感数据的价值。这两个概念的具体含义是什么,它们之间的区别是什么?

保护使用中数据的场景

       直到最近,与合作者共享私有数据和使用云数据服务一直是许多组织面临的挑战。对有些组织来说,与协作者共享数据和使用云数据服务所产生的价值,使他们有理由接受私有数据在使用时可能容易受到攻击的风险。但是,对于其他组织来说,这样的取舍并不在议程上。如果组织不需要被迫做出这样的取舍呢?如果数据不仅在传输和存储过程中而且在使用过程中都能得到保护呢?这将打开各种应用场景的大门:

       保护云中的数据库处理:云数据库服务使用传输层安全(transport layer security, TLS)来保护数据在数据库服务器和客户端应用程序之间传输。它们还采用各种数据库加密技术来保护存储中的数据。但是,当涉及到数据库查询处理时,数据必须以明文的形式驻留在主内存中。全同态加密可用于直接对加密数据执行查询处理,从而确保敏感数据在传输、存储和使用三种状态下都进行加密。机密计算不支持对加密数据的查询处理,但可确保在可信执行环境(trusted execution environment,TEE)中执行此类计算,从而使敏感数据在使用时能得到保护。

       保护协作分析时数据共享:在金融行业,组织需要与他们的同行共享私人数据,以帮助防止金融欺诈。在医疗健康行业,机构需要共享私有数据来治疗患者和开发新疾病的治疗方法。这种情况下,组织很难在遵守数据隐私法的同时,从共享私有数据中获得所需的结果。全同态加密可以通过直接对加密数据执行分析来解决这一难题,确保数据在使用期间仍然受到保护。机密计算可用于确保在可信执行环境(TEE)中对数据进行组合和分析,从而使其在使用时受到保护。

       通过将计算委托给云来节省IT成本:金融机构培训和部署机器学习(ML)模型,以更好地了解客户,并为他们定制产品。例如,市场营销部门可能想要了解客户在未来三个月内申请贷款的倾向,并为他们量身定制贷款方案。金融机构可能希望通过将客户的数据转移到更便宜的云存储并在那里进行分析来节省存储成本。然而,这给客户端数据的隐私和ML模型本身的隐私带来了一个问题。全同态加密可以通过对ML模型进行加密并直接在加密数据上运行来解决这个问题,确保私有数据和ML模型在使用时都受到保护。机密计算通过确保计算在可信执行环境(TEE)中运行来保护私有数据和ML模型。

       加强遵守零信任安全原则:由于传输和存储中的数据受到标准保护机制(如TLS和TDE)的保护,攻击者正在将他们的焦点转移到正在使用的数据上。在这种情况下,攻击技术被用于锁定正在使用的数据,例如内存抓取、管理程序和容器中断和固件破坏。全同态加密和机密计算通过消除绝对信任来加强对零信任安全原则的遵守,否则应用程序将需要在底层软件堆栈中设置绝对信任以保护使用中的数据。

机密计算

       敏感数据在计算过程中可能会受到攻击,因为它通常以明文形式驻留在主存中。机密计算通过确保在可信执行环境(TEE)中执行对此类敏感数据的计算来解决这个问题,可信执行环境(TEE)是一种基于硬件的机制,用于防止对敏感数据的未经授权访问或修改。

       英特尔软件保护扩展(SGX)是一个广为人知的机密计算的例子。它允许应用程序定义主内存的一个私有区域,称为安全飞地(secure enclave),它的内容不能由enclave之外的任何进程读取或写入,无论其特权级别或中央处理单元(CPU)模式如何。即使在操作系统、管理程序和容器引擎受到威胁时,这种隔离也可以保护enclave。此外,enclave内存使用存储在CPU内部的密钥进行加密。只有飞地内的代码,才能在CPU内部解密。这意味着,即使有恶意的实体从物理上窃取飞地的内存,对他们来说也没有任何用处。

机密计算的两种方法

       今天,机密计算主要使用两种方法:应用程序软件开发工具包(SDK)和运行时部署系统。上面提到的Intel SGX功能就是基于SDK的应用程序方法的一个例子。在这种方法中,开发人员负责将应用程序划分为不受信任的代码和受信任的代码。不受信任的代码在操作系统上正常运行,而受信任的代码在安全飞地中运行。SDK提供了创建和管理安全飞地所需的API (application programming interface)。

       Open Enclave SDK是基于应用程序SDK的另一个例子。它是一个开源SDK,提供了一个抽象级别,使开发人员能够一次构建基于可信执行环境(TEE)的应用程序,并将它们部署到多个硬件平台上。基于应用程序SDK的方法允许更好地审查受信任的代码,因为需要审查的代码更少,但它确实需要对应用程序进行更改。

       基于运行时部署系统的方法的目标是使应用程序能够在可信执行环境中运行,而不必为特定的硬件平台或SDK重写它们。这类解决方案的例子包括IBM Linux安全执行(IBM Z15和LinuxOne III)和开源项目Enarx。成本降低和实现价值所需的时间显然是基于运行时部署系统的方法的两个最大优势。但是,如果不进行任何修改就部署应用程序,可能会阻止它们利用其他特性,比如证实(attestation),除非此类应用程序在编码时已经考虑到了这一点。

全同态加密

       您可以依靠传统的加密方案,如高级加密标准(AES)来保护传输和存储中的数据。但是它们不能对加密数据进行计算。换句话说,必须先对数据进行解密,然后才能对其进行操作。在这种“数据正在使用”状态下,敏感数据可能会受到攻击。全同态加密(FHE)通过直接对加密数据进行计算来解决这个问题。那么,究竟什么是同态加密,以及什么使一个同态加密方案变成全同态的?

       同态加密方案支持对加密数据进行某种形式的计算。例如,给定一个明文输入x和它的加密值E(x),应该可以为某个函数f计算E(f(x)),而不需要访问x或任何其他秘密信息。在这种情况下,许多著名的加密方案显示出一些同态特性。例如,使用RSA,明文输入x被加密为E(x) = xe mod m,其中e是公钥指数,m是公钥模。很容易看出,给定两个密文E(x) = xe mod m和E(y) = ye mod m,对两个明文输入x和y进行加密,我们可以将它们相乘得到(xy)e mod m,即xy的加密值。这意味着RSA对于乘法是同态的。

       考虑Paillier加密方案。在Paillier中,一个明文输入x被加密为E(x) = gx rm mod m2,其中g是底数,m是模,r是随机的。很容易看到,给定两个密文E (x) = gx rm mod m2和E (y) = gy sm mod m2,加密明文输入两个x和y,我们可以一起相加,得到g m (x + y) (rs)m mod m2,即加密x + y的值。这意味着Paillier加法同态。一种只支持乘法或加法的同态加密方案称为部分同态加密方案。

同态加密的早期尝试

       同时支持乘法和加法的早期方案,如DGHV,对加密数据所能进行的操作数量有限制。因此,这些被称为某种同态加密。在这些方案中,为了安全起见,在加密过程中添加了“噪声”。

       结果是,随着每一次加法或乘法运算,噪声会增加。这种噪声可能变得如此重要,以至于密文无法被正确解密。因此,全同态加密(FHE)是任何支持对加密数据进行无限次乘法和加法的方案。

       2009年,IBM的Craig Gentry取得了突破。他的基于格子( lattice-based )的加密方案是第一个合理的全同态加密(FHE)方案。在Gentry的研究中,关键的想法被称为Bootstrapping。Bootstrapping指的是对密文进行刷新,以生成一个新的密文,加密相同的数据,但使用更低的噪声水平,以便对其进行更多的同态操作。

Bootstrapping

       从概念上讲,Bootstrapping可以被认为是用密钥解密密文,然后重新加密数据。但是,密钥是未知的。它被称为Bootstrapping密钥的密钥加密所取代。Bootstrapping是迄今为止已知的大多数全同态加密(FHE)方案的核心。

        下图说明了如何使用全同态加密(FHE)将敏感数据上的计算委托给云,同时仍然保持对数据隐私的完全控制。

       全同态加密(FHE)是一种非对称加密,因此使用了如图所示的公钥(pk)和私钥(sk)。Alice使用私钥加密她的数据,并将她的公钥共享给云服务,在云服务中,函数f作用于加密数据。当Alice收到结果后,用自己的密钥解密,得到f(x)。

全同态加密(FHE)方案如何工作?

       根据计算模型的不同,全同态加密(FHE)方案可以分为三大类:

       布尔电路:将计算表示为布尔电路;这最适合用于数字比较。这类方案的例子包括GSW和TFHE。

       模块运算:将计算表示为整数运算;这最适用于整数运算和标量乘法。这类方案的例子包括BGV和BFV。

       近似算法:将计算表示为浮点运输;这是最适合多项式逼近和ML模型。这类方案的例子包括CKKS。

       目前存在一些全同态加密(FHE)的开源实现。它们包括IBM HELib、PALISADE和微软SEAL。有些方案(如CKKS)在所有三个库中都可用,但其他方案可能不能在所有库中都可用。例如,BGV仅在IBM HELib和PALISADE中可用。

全同态加密和机密计算对比

       全同态加密和机密计算都是用于保护使用中的数据的新兴技术。它们有助于确保敏感/私人有数据在使用时的机密性。全同态加密基于密码学;因此,其安全性在数学上是可以证明的。另一方面,机密计算是基于可信执行环境的。因此,它的安全性在数学上是无法证明的。例如,虽然可信执行环境(TEE)通过基于硬件的隔离提供了高级别的安全性,但它不能防止侧通道攻击。

       虽然全同态加密提供了更强的隐私保证,但它不能保证代码执行的完整性。这就是机密计算的优势所在。通过在可信执行环境(TEE)中运行代码,机密计算在代码执行的完整性方面提供了更强的保证。因此,全同态加密(FHE)和机密计算不应该被视为竞争的解决方案,而是互补的。

下一个前沿

       保护使用中的数据是数据安全的下一个前沿。它使组织能够信任地将计算委托给云来节省IT基础设施成本。它还为私有数据的协作分析打开了大门,同时仍然遵守隐私规定。机密计算和全同态加密是用于保护使用中的数据并实现这些用例的关键新兴技术。从时间轴的角度来看,机密计算更有可能是首先被广泛采用的技术,特别是运行时部署系统类型,因为这不需要任何应用程序更改。现在已经有了一些早期的例子,例如IBM Cloud上的IBM Data Shield或Microsoft Azure上的Always Encrypted database。

       全同态加密在过去十年中取得了巨大的进步,但它需要超越低级密码库,以促进其在创建新应用程序中的使用。目前正在朝着这个方向采取一些重要步骤。例如,最近发布的IBM HElayer SDK支持在加密数据上运行人工智能工作负载,而无需理解底层加密基础。IBM FElayer SDK包含一个Python API,该API使应用程序开发人员和数据科学家能够通过支持广泛的分析方法(如线性回归、逻辑回归和神经网络)来使用全同态加密的强大功能。

https://securityintelligence.com/posts/next-frontier-data-security-use/


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NzUzNzk1Mw==&mid=2247493173&idx=2&sn=44a6a771cd692ea5db6a3d232a636810&chksm=ceb8a37bf9cf2a6ddb8186433d10224714c02954fd55ab83319dac65233fae57daa26d723028#rd
如有侵权请联系:admin#unsafe.sh