NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何确定数据密钥缓冲是否适合您的应用程序

  • 2019-09-25
  • 本文字数:3356 字

    阅读完需:约 11 分钟

如何确定数据密钥缓冲是否适合您的应用程序


今天,AWS 加密工具团队宣布在 AWS 加密工具包中推出一项新功能:数据密钥缓存。借助数据密钥缓存功能,您可以重复使用保护数据所用的数据密钥,不再需要为每个加密操作生成一个新的密钥。


数据密钥缓存可以减少延迟,提高吞吐量,降低成本,帮助您在应用程序扩展的同时不超过服务限制。当您的应用程序触及 AWS Key Management Service (KMS) 的每秒请求数限制,并且执行放宽限制也无法解决问题时,缓存功能可能尤其有用。


当然,这些便利也涉及一些安全性方面的权衡。加密最佳实践一般不鼓励广泛重复利用数据密钥。


在本博文中,我将探索这些权衡,并且将提供相关的信息,以帮助您确定数据密钥缓存是否是适合您的应用程序的好策略。此外,我还将解释如何在 AWS 加密开发工具包中实施数据密钥缓存,并介绍您可以设置的安全阈值,以限制数据密钥的重复使用。最后,我将提供一些有关使用安全阈值来满足成本、性能和安全性目标的实践案例。

数据密钥缓存简介

AWS 加密工具包是一种客户端侧加密库,它可方便您在应用程序中实施加密最佳实践。它包含了多项面向不属于加密专家的开发人员的安全默认行为,同时又保持足够灵活,以便满足经验丰富用户的需要。


在 AWS 加密开发工具包中,按照默认设置,您将为每个加密操作生成一个新的数据密钥。这是最安全的实践。但在一些应用程序中,为每个操作生成一个新数据密钥的开销令人不可接受。


数据密钥缓存将会在一个可配置的缓存中,存储您使用的数据密钥的明文和密文。当您需要使用密钥来加密或解密数据时,您可以重复使用缓存中的数据密钥,而无需创建新的数据密钥。您可以创建多个数据密钥缓存并分别独立配置。最重要的是,AWS 加密工具包提供了安全阈值功能,您可以通过设置安全阈值来确定您将允许重复使用多少个数据密钥。


为方便数据密钥缓存的实施,AWS 加密开发工具包提供了一种称为 LocalCryptoMaterialsCache 的内存中缓存,它是一种最近最少使用型缓存,大小可以配置。这种软件开发工具包负责为您管理缓存,包括为所有加密和解密操作添加存储、搜索和匹配逻辑。


我们建议您按原样使用 LocalCryptoMaterialsCache 缓存,当然您也可以对它进行自定义或者使用兼容的缓存替换。但您绝对不要将明文数据密钥存储在磁盘上。


AWS 加密开发工具包文档包含了 Java 和 Python 格式的示例代码,该示例代码针对使用数据密钥缓存来加密 Amazon Kinesis Streams 收发的数据的应用程序。

成本与安全性的权衡

是否使用数据密钥缓存的决定,应当基于对成本(时间、资金和资源)和安全性的权衡。但在任何情况下,这种权衡应当以安全性要求优先。原则上,应使用实现成本和性能目标所需的最少缓存。


在实施数据密钥缓存前,请考虑您的应用程序的详细情况、您的安全性要求以及加密操作的成本和频率。一般而言,如果每项操作都非常缓慢或昂贵,或者您会频发进行数据加密和解密操作,则您的应用程序可通过数据密钥缓存受益。如果加密操作的成本和速度已经可接受,或者可以通过其他方式改进,则不要使用数据密钥缓存。


如果您的加密和解密流量非常高,则数据密钥缓存可能会适合您的应用程序。例如,如果您已经触及 KMS 每秒请求数限制,那么缓存将会非常有用,因为您将会从缓存中获取一些数据密钥,无需为每个请求调用 KMS。


当然,您也可以在 AWS 支持中心创建案例,申请增加账户的 KMS 限制。 如果放宽限制可以解决问题,则无需使用数据密钥缓存。

配置缓存阈值以优化成本和安全性

在 AWS 加密工具包中,您可以对数据密钥缓存进行配置,从而仅允许在满足成本和性能目标的范围内重复使用数据密钥,同时确保满足应用程序的安全性要求。此软件开发工具包会执行这些阈值,从而让您可以使用任何兼容的缓存。


数据密钥缓存的安全阈值适用于每个缓存条目。如果任何缓存条目超过您设置的任何阈值,则 AWS 加密开发工具包不会使用来自该缓存条目的数据密钥。


  • 最长寿命(必填项):每个缓存密钥的寿命,该参数的设置必须足够长以确保能获得缓存点击,同时又要足够短,以确保仅在特定的时间期限内在内存中暴露明文数据密钥。

  • 您可以将最长寿命阈值作为密钥轮换策略来使用。使用它可以限制数据密钥的重复使用,减少加密材料的暴露。您还可以借助此功能,在应用程序处理的数据类型或来源发生变化时收回数据密钥。

  • 最大加密消息数(可选;默认值为 232 条消息):这是每个缓存密钥可以保护的消息数,它的设置必须足够大以确保重复利用的价值,同时要足够小以限制可能潜在暴露的消息数量。

  • AWS 加密开发工具包仅缓存使用算法套件和密钥导出函数的数据密钥。这种方法避免了有关使用单个密钥加密的字节数的加密限制。但一个密钥加密的数据越多,该数据密钥泄露时暴露的数据也将越多。


限制消息的数量而不是字节数,在您的应用程序加密具有类似大小的许多消息时,或者潜在的暴露风险必须限制在极少数消息时尤其有用。当您希望将某个数据密钥重复用于特定类型的消息,并且事先知道您拥有多少条该类型的消息时,此阈值也将非常有用。您还可以使用加密上下文来为您的加密请求选择特定的缓存数据密钥。


  • 最大加密字节数(可选;默认值为 263 – 1):这是每个缓存数据密钥可以保护的字节数,它的设置应足够大以确保满足您的重复利用需求,同时要足够小以限制同一密钥加密的数据量。

  • 限制字节数而不是消息数量,适合应用程序加密的消息大小差异较大,或者对可能会暴露大量数据的担忧远远高于暴露较小数量的数据等情形。


除这些安全阈值外,AWS 加密开发工具包中的 LocalCryptoMaterialsCache 还可让您设置容量,这是缓存中可以容纳的最大条目数量。


使用容量值来调整 LocalCryptoMaterialsCache 缓存的性能。一般而言,应使用能够实现应用程序需要的性能改进的最小值。建议您对仅包含 5-10 个条目的极小缓存进行测试,然后在必要时进行扩展。如果将缓存同时用于加密和解密请求,或者您使用加密上下文来选择特定的缓存条目,则您将需要稍大一些的缓存。

考虑下面的缓存配置示例

在您确定了应用程序的安全性和性能要求后,请谨慎考虑缓存的安全阈值并根据您的需求进行调整。这些阈值不存在万用值:理想的设置取决于具体的应用程序、它的安全性和性能要求以及预算等。应使用获得可接受性能和成本所需的最低缓存量。


下面的示例演示了您可以如何借助 LocalCryptoMaterialsCache 的容量设置和安全阈值来满足您的安全性要求:


  • 主密钥操作缓慢:如果您的主密钥处理速度仅为 100 条事务每秒 (TPS),但您的应用程序需要达到 1000 TPS,则您可以允许每个数据密钥最大加密 10 条消息,从而满足应用程序的要求。

  • 高频和大规模场景:如果您的主密钥的成本为每次操作 0.01 USD,并且您需要稳定保持 1000 TPS 的处理速度,同时不能超过每月 100000 USD 的预算,则您可以允许每个缓存条目最大加密 275 条消息。

  • 突增流量:如果您的应用程序的处理量,在一分钟内会有五秒时间突增到 100 TPS,而剩下的时间为零,并且您的主密钥成本为每次操作 0.01 USD,则可将最大消息数设置为 3,从而实现的可观的节约。为防止在突增间歇期(55 秒)内重复使用数据密钥,则可将每个缓存数据密钥的最大寿命设置为 20 秒。

  • 主密钥操作成本高:如果您的应用程序使用某种低吞吐量的加密服务,成本高达每个操作 1.00 USD,则您可能需要减少操作次数。为此,您可以创建一个足够大的缓存,以容纳您需要的数据密约。然后将字节数和消息数限制设置为一个足够高的值,以在满足安全性要求的前提下确保重复利用。例如,如果您的安全性要求不允许一个数据密约加密超过 10GB 的数据,则将处理的字节数设置为 10GB 仍可显著减少操作数,并同时满足您的安全性要求。

了解更多有关数据密钥缓存的信息

如需了解更多有关数据密钥缓存的信息,包括如何实施此方法,如何设置安全阈值,以及有关缓存组件的详细信息,请参阅 AWS 加密开发工具包中的数据密钥缓存。另请参阅适用于 Java 和 Python 的 AWS 加密开发工具包以及 Javadoc 和 Python 文档。


如果您对本博文有意见和建议,请在下面的“评论”部分提交评论。如果您有任何问题,请在 Java 或 Python 版本的加密开发工具包 GitHub 存储库中提出问题,也可加入 AWS 加密工具论坛浏览和发帖。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-encryption-sdk-how-to-decide-if-data-key-caching-is-right-for-your-application/


2019-09-25 15:05568
用户头像

发布了 1835 篇内容, 共 92.4 次阅读, 收获喜欢 73 次。

关注

评论

发布
暂无评论
发现更多内容

Video Copilot Element 3D for Mac(AE三维模型插件)激活版

影影绰绰一往直前

Element 3D 下载 Element 3D 破解版 Element 3D mac

用友携手平安银行,加速数智化司库及财资体系建设

用友BIP

全球司库

TikTok 与 YouTube:哪个更适合您?

九凌网络

赛题招募令:总投入超5000万元,诚邀您免费出题

开放原子开源基金会

AI 女友突然下线,大叔集体「崩溃」;谷歌聊天机器人称谷歌滥用垄断力量丨 RTE 开发者日报 Vol.78

声网

国内首个电力物联操作系统正式发布,实现电力设备万物互联、海量数据互通共享

开放原子开源基金会

开源

冯冠霖秘书长参加2023中国汽车软件大会并致辞

开放原子开源基金会

开源

Jetbrains PhpStorm 2023中文破解版下载 mac/win

影影绰绰一往直前

PhpStorm 2023下载 PhpStorm 2023注册码 Phpstorm下载

AI系列产品来袭,用友招聘云换新上线

用友BIP

AI 招聘

如何在HarmonyOS对数据库进行备份,恢复与加密

HarmonyOS开发者

HarmonyOS

人民邮电出版社70周年庆暨异步社区8周年庆成功举办,和鲸Heywhale荣获异步社区“2023年度最佳合作伙伴”奖

ModelWhale

IT 数据科学 书籍出版 异步社区 人民邮电出版社

和鲸为神经计算建模及编程培训班提供支持,聚焦学术前沿,助力人才培养

ModelWhale

编程 培训 脑科学 建模 计算神经科学

Macs Fan Control Pro for mac(电脑风扇控制软件) v1.5.16永久激活版

mac

电脑风扇控制软件 苹果mac Windows软件 Macs Fan Control

合成数据对于机器学习模型至关重要

3D建模设计

人工智能 合成数据 虚幻合成数据

云图说|分钟级构建业务大屏——Astro大屏应用

华为云开发者联盟

云计算 华为云 华为云开发者联盟 华为云云图说 华为云Astro

第十五届全国交通运输领域青年学术会议,和鲸 Heywhale 携手龙船科技联合发布科研服务解决方案

ModelWhale

数据 服务 解决方案 交通运输 科研

吴翰清《计算》重磅来袭,为了可计算的价值,写给所有人!

博文视点Broadview

Dapp开发流程以及应用

西安链酷科技

软件开发 dapp 去中心化 安全性

fcpx视频剪辑 Final Cut Pro中文破解版下载

影影绰绰一往直前

Final Cut Pro下载 Final Cut Pro中文版 Final Cut Pro破解版

领跑中国APM市场,博睿数据蝉联第一!

博睿数据

运维 监控 可观测性

星河共创,开为科技加入飞桨大模型生态圈,共建营销应用新范式

飞桨PaddlePaddle

深度学习 飞桨 文心大模型

「支持M1/M2」Xcode for Mac v14.3.1正式版

影影绰绰一往直前

Xcode for Mac Xcode Mac版 Xcode下载

软件测试/测试开发丨如何利用ChatGPT自动生成测试用例思维导图

测试人

软件测试

NFT数字藏品(交易平台)系统开发

西安链酷科技

数字货币 dapp 去中心化 钱包系统开发 交易所

合成数据的被需要的5 个重要原因

3D建模设计

人工智能 合成数据 虚幻合成数据

如何释放React Hooks的力量

树上有只程序猿

Hooks React Hooks

PubDef:使用公共模型防御迁移攻击

这我可不懂

PubDef

基金会旗下铜锁/Tongsuo项目官宣密钥管理工具RustyVault正式开源

开放原子开源基金会

开源 铜锁

第二届开放原子开源基金会OpenHarmony技术大会圆满举行

开放原子开源基金会

开源 OpenHarmony

“数据”如何影响“业务决策” ?

高端章鱼哥

数字化 数据可视化

行业独家 | 腾讯云ES:PB日志查询大提速,自治索引查询裁剪详解!

腾讯云大数据

ES

如何确定数据密钥缓冲是否适合您的应用程序_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章