云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

CDN_阿里云切换ip_怎么买

小七 141 0

了解加密的性能开销

尼古拉斯·科拉雷洛(Nicolas Corrarello)是总部位于伦敦的HashiCorp解决方案工程的区域总监。每一个现代应用程序都需要加密一定数量的数据。传统的方法要么依赖某种透明加密(在存储中使用静态加密功能,要么在数据库系统中使用列/字段级加密)。虽然这明显降低了应用程序中对加密的要求,但它不能保护数据不受诸如SQL注入之类的攻击,也不能保护数据不受由于其帐户拥有过多特权而导致的数据转储,或备份暴露。随之而来的是在应用程序级别进行加密的要求,当然还有在代码级别执行正确的实现(选择正确的密码、加密密钥、保护对象)以及保护和维护实际加密密钥的预期复杂性,这些通常以版本控制结束,或者在某种对象存储中受常见问题的影响。传统上,有不同的方法来保护加密密钥:可以使用HSM,但会造成相当大的性能损失。外部加密系统,如Amazon的KMS、Azure密钥库或Google KMS,其中第三方持有您的加密密钥。最终,HashiCorp Vault提供了自己的传输后端,允许(取决于策略)卸载加密/解密/hmac工作流,以及签名和验证,抽象了维护加密密钥的复杂性,并允许用户和组织在Vault的加密屏障内保留对它们的控制。作为对Vault功能的简要概述,当谈到加密即服务时,我们可以参考Vault的文档。传输的主要用例是加密来自应用程序的数据,同时仍将加密的数据存储在一些主数据存储中。这减轻了应用程序开发人员对正确加密/解密的负担,并将负担推到了保险库的操作人员身上。Vault的操作员通常包括组织中的安全团队,这意味着他们可以确保正确加密/解密数据。此外,由于加密/解密操作必须进入审核日志,因此会记录任何解密事件。然而,本文的目的不是解释Vault的功能,而是分析在应用程序中使用Vault加密单个字段的开销。为此,我们使用MySQL数据源,使用传统的world数据库(大约有4000行),运行的测试将有效地为每个条目启动一个线程,该线程将加密此类条目的字段,然后将其持久化到amazons3。这个测试在Amazon的一个m4.large实例上运行,运行一个保险库服务器,一个consur后端,一个MySQL服务器,脚本采用度量,所有这些都在同一个系统上。它的灵感来源于一个传统的大数据用例,在这个用例中,信息需要被持久化到某种对象存储中以供以后处理。在每个线程中执行的带注释的Python函数如下:def makeJson(保险库、s3、s3\u bucket、ID、名称、国家代码、地区、人口):#取整个函数的开始时间总时间=时间。时间()#利用加密的开始时间加密时间=时间。时间()#Base64单个值Nameb64=base64.b64编码(名称.编码(8英尺)#通过保险库加密名称Enc=保险库.写入('transit/encrypt/world transit',明文=字节(Nameb64),context=base64.b64encode('world-transit'))#计算加密所用的时间eetime=时间。时间()-加密时间#创建要持久化的对象并将其转换为JSONCityobj={"ID":ID,"Name":NameEnc['data']['ciphertext'],"CountryCode":国家代码,"地区":地区,"人口":人口}城市=json.dumps文件(城市北京)filename="%s.json"%ID#将它保存到S3中的开始时间作为比较存储时间=时间。时间()#持久化对象s3.put_对象(Body=City,Bucket=s3_Bucket,Key=filename)#计算一下存放它需要多长时间S时间=时间。时间()-存储时间#计算运行整个函数所用的时间时间=时间。时间()-总时间打印("%i,%s,%s,%s\n"%(int(ID),str(sstime),str(eetime),str(tttime)))这将为每个线程呈现一行CSV,稍后进行聚合以分析数据。平均值、最小值和中值如下:至于并发性,这是在一个for循环上实例化的4000个线程。根据这个有限的数据集(大约4000个条目),在执行时间方面,我们看到了5%~10%的开销。值得注意的是,在测试期间,Vault几乎不费吹灰之力,Top报告说它使用了15%的CPU(而Python使用的是140%)。这是有目的地在有限的范围内完成的,因为我们并不打算测试保险库能走多远。Vault Enterprise支持性能复制,使其能够扩展以满足即使是最苛刻的应用程序的需要。至于开发工作,唯一增加的复杂性是添加两个语句来加密/解密数据,如Python示例所示。值得注意的是,Vault支持收敛加密,使相同的加密值返回相同的字符串,以防有人需要在WHERE子句中查找索引。使用此模式,再加上保险库中众所周知的秘密管理功能,将有助于抵御英国特许协会(British Chartered Institute)为IT部门记录的前十大数据库攻击:过度权限-使用transit,结合Vault的数据库机密后端,组织可以确保每个用户或应用程序都获得对数据的正确访问级别,这些数据本身可以加密,需要更高的权限才能解码。特权滥用-使用传输,即使拥有正确权限也会对获得的数据进行加密,并且可能需要正确的"上下文"来解密,即使用户有权访问。未经授权的权限提升—与上述情况类似,Vault可以确定用户对数据库的正确访问权限,从而有效地终止"黄金凭证"模式,并对操作员访问的底层数据进行加密。平台漏洞-即使平台易受攻击,数据也是安全的。SQL注入-由于数据不是透明加密的,易受攻击的应用程序通常会转储混淆的数据,在检测到更新的加密密钥的漏洞时,可以重新包装这些数据。弱审核-保险库审核加密和解密操作,有效地创建了一个审核跟踪,允许精确地确定谁有权访问数据。拒绝服务-通过Sentinel,我们的策略作为代码引擎,Vault可以通过规则评估流量模式并相应地拒绝访问。数据库协议漏洞-和以前一样,即使数据被转储,也不会被透明地解密。弱身份验证—使用Vault的数据库机密后端,将生成可集中撤销的短期凭据,并且具有适当的复杂性。备份数据的公开-备份将自动加密,就像底层数据一样。参考文献:英国特许IT研究所,"十大数据库攻击"。登记簿,"埃森哲?《秋天S3er:咨询业巨头在线泄露私钥、电子邮件等》,2017年10月10日,https://www.theregister.co.uk/2017/10/10/accenture_amazon_aws_s3/"维亚康姆将皇冠珠宝暴露给AWS S3 bucket Bluder中的world+dog",2017年9月19日,https://www.theregister.co.uk/2017/09/19/viacom_exposure_in_aws3_bucket_bluder/登记册,"哦,不是你,威瑞森:美国电信加入泄漏的AWS S3桶名单",2017年9月22日,https://www.theregister.co.uk/2017/09/22/verizon_falls_for_the_old_unguarded_aws_s3_bucket_trick_暴露_内部_系统/HashiCorp,"传输秘密后端",https://www.vaultproject.io/docs/secrets/transit/index.html你对HashRP的产品感兴趣吗?告诉我们。将您的故事或想法发送至guestblogs@hashicorp.com