硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

当 DR 灾备遇到 KMS(二)

  • 2019-12-20
  • 本文字数:1420 字

    阅读完需:约 5 分钟

当 DR 灾备遇到 KMS(二)

3. 场景三,客户端加密场景扩展,需要固定 DEK 支持密文对比

某些场景下,加密数据不会解密使用,而是用密文做对比,比如用户的密码,数据库存放的就是密文。用户在客户端输入的密码,在加密之后传输,通过密文与密文的对比来判断密码是否一致。这样的情况下,都不会涉及解密过程,但是要求不管任何时间对同样的明文,加密的密文保持不变。这样就要求 DEK 必须固定不变。在场景二介绍的 Encryption SDK 中,为了提高安全等级,DEK 是调用的时候临时生成的,每次调用,生成的 DEK 是不一样的。因此场景二的解决方案不能直接用于场景三。调整如下


为了保证 DEK 不变,需要将 DEK 从封装的方法中剥离出来,Client 端自己管理 DEK。具体如下

DEK 的生成和管理

首先,调用 Encryption SDK 中的 generateDataKey 方法,生成一个 DEK ****


Java


// generate data key, with CMK, with AES_128        GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest();        //dataKeyRequest.setKeyId(KEYID);        dataKeyRequest.setKeyId(this.CMKKeyID);        dataKeyRequest.setKeySpec("AES_128");        GenerateDataKeyResult dataKeyResult = kms.generateDataKey(dataKeyRequest);```    ****
其次,对该DEK进行加密保护,在加密的时候,为了保证该DEK能够在DR场景下使用,也需要使用场景二中介绍的包含多个区域的CMK的Provider,对DEK进行加密保护,这样,我们就可以在不同的区域都可以将加密的DEK进行解密了。 ****
Java

复制代码


// plain text data key


ByteBuffer plainTextKey = dataKeyResult.getPlaintext();


// 使用 multiple provider 加密管理 datakey,以便跨区域使用


CryptoResult<byte[], ?> result = new AwsCrypto().encryptData(this.provider, plainTextKey.array());



经过加密的DEK,就可以保存在数据库中备用了。当然,还可以放一份在S3上作为冷备保存,借助S3高达11个9的持久性,更为放心。因为DEK已经加密了,所以也不担心安全的风险。
#### 数据加解密环节
从数据库中取出加密的DEK,调用场景二中的解密方法**decryptData()**,得到明文的DEK,这时候就可以使用该DEK对数据进行加解密了。由于encryption SDK 中包含的方法都有自己的DEK,因此建议使用成熟的库支持AES加密的SDK,对数据做加密和解密。比如java中的Cipher库 **javax.crypto.Cipher;**
### 4. 总结
无论是使用客户端加密还是服务器端加密的方式,AWS都提供了对应的DR(多区域)的方案。但是从具体的操作方式来看,服务器端的加密,更加简单方便,无需修改代码;而客户端的方式,是需要在代码层面进行调整的。因此我们建议优先使用服务器端加密的方式,在服务器端加密不能满足的场景下,再考虑客户端加密的方式。
**作者介绍:**
<footer> ![](https://s3.cn-north-1.amazonaws.com.cn/awschinablog/Author/shengbo.jpg)
### [](https://amazonaws-china.com/cn/blogs/china/tag/%E9%99%88%E6%98%87%E6%B3%A2/)
亚马逊AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广。现致力于网络安全和大数据分析相关领域的研究。在加入AWS之前,在爱立信东北亚区担任产品经理,负责产品规划和方案架构设计和实施,在用户体验管理以及大数据变现等服务方面有丰富经验。</footer>
**本文转载自AWS技术博客。**
**原文链接:https://amazonaws-china.com/cn/blogs/china/when-the-dr-disaster-prepared-encounter-kms/**
复制代码


2019-12-20 15:26760

评论

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

最新版XMind for mac思维导图软件 v24.04.05171中文版

Rose

Node.js fs 模块详尽分析与实际应用

Apifox

node.js 程序员 前端 后端 FS

性能基础之速读【性能之巅:洞悉系统、企业与云计算】

zuozewei

性能 书籍推荐

Go-Zero从0到1实现微服务项目开发(二)

王中阳Go

Go 分布式 微服务 Go进阶 gozero

带你开发一个视频动态手势识别模型

华为云开发者联盟

人工智能 华为云 华为云ModelArts 华为云开发者联盟 企业号2024年4月PK榜

Fantastical for mac让日程管理更加便捷!

Rose

利用人工智能ChatGPT批量生成测试数据,测试工作再也不愁数据!

测试人

软件测试 测试开发

mac电脑如何导入ps笔刷 ,Adobe Photoshop笔刷导入安装教程详解

Rose

AirPods Pro 如何更换取下和安装耳塞?

Rose

国外服务器选购技巧大揭秘!别再盲目选择,先学会这些

一只扑棱蛾子

国外服务器选购

0经验,我是如何做大数据测试开发的?

京东零售技术

大数据 测试 企业号 4 月 PK 榜

Util 应用框架 UI 全新升级

何镇汐

CrossOver代替KeyGen Runner运行exe注册机的方法

Rose

低代码与定制开发相结合:构建质量管理系统的新途径

天津汇柏科技有限公司

创业 低代码 软件开发定制 质量管理系统 质量管理QMS系统

建立成功平台工程的关键:自助式 IaC

SEAL安全

运维 IaC 平台工程

Mac电脑怎么设置动态桌面,heic动态桌面壁纸怎么使用

Rose

ChatGPT Plus订阅用户对GPT-4使用次数限制的失望

蓉蓉

openai ChatGPT GPT-4

Slave SQL线程与PXB FTWRL死锁问题分析

GreatSQL

一文读懂Partisia Blockchain 的互操作方案:Oracle 服务框架

西柚子

【2022深圳ArchSummit 】大数据架构稳定性保障实践

zuozewei

深圳 ArchSummit

Serato DJ Pro Suite for Mac:专业DJ设备 支持M芯片

Rose

Mac文本处理软件 FSNotes 中文破解版

Rose

Guitar Pro 8 Mac 吉他编曲学习软件 8.1.2-32 直装版

Rose

降本增效,火山引擎ByteHouse助力短剧广告投放效率提升5倍

极客天地

Mac视觉特效处理包FxFactory 8 Pro安装卸载教程

Rose

程序员都在用哪些神器提升工作效率

小魏写代码

助力企业部署国产云原生数据库 XSKY星辰天合与云猿生完成产品互兼容认证

XSKY星辰天合

git客户端工具 Sublime Merge 注册版 mac软件 支持M芯片

Rose

低代码技术在构建质量管理系统中的应用与优势

天津汇柏科技有限公司

质量管理 低代码 质量管理系统

当 DR 灾备遇到 KMS(二)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章