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/**
更多内容推荐
03|Token:如何降低用户身份鉴权的流量压力?
这节课我们来看看如何用token算法降低用户中心的身份鉴权流量压力。
2022-10-28
腾讯云数据安全中台解决方案
本文从技术角度剖析当前国内数据安全面临的难题及密码应用现状,并带来腾讯数据安全解决方案和云密码应用最佳实践解析。
IAM 项目是如何设计和实现访问认证功能的?
今天我们来看下,IAM项目是如何设计和实现认证功能的。
2021-07-24
KonaJDK 8 新版本更新,国密算法轻松用
TencentKona 是腾讯开源的可立即投入生产的 OpenJDK 发行版,在主流 OpenJDK8 的基础上进行了针对性的开发和优化。
密码学系列之:twofish 对称密钥分组算法
之前的文章我们讲到blowfish算法因为每次加密的块比较小只有64bits,所以不建议使用blowfish加密超过4G的文件。同时因为加密块小还会导致生日攻击等。所以才有了blowfish的继承者twofish。
2021-06-30
WhatsApp 是如何实现端到端加密备份的?
有了加密备份,数据访问就只需要一把密钥。
华为云区块链服务安全隐私保护的设计与实现
本文介绍华为云区块链服务BCS(BlockChainService)在安全隐私保护的设计与实现。
AWS KMS 实现跨租户的安全数据加密(一)
在大量saas 平台客户需求实践中,有非常多的User担心敏感数据如何保存
SDK 设计(上):如何设计出一个优秀的 Go SDK?
通过提供SDK,可以提高API调用效率,减少API调用难度,所以大型应用通常都会提供SDK。今天,我主要介绍如何设计一个优秀的Go SDK。
2021-08-10
玩转混合加密 | 精美配图
如何让你的数据更安全?混合加密了解一下!本文阿宝哥首先介绍了对称加密、非对称加密的优缺点及使用示例,接着引出了混合加密的概念并给出了一套完整的使用示例与解决方案。
2020-07-22
敏感数据加密方案及实现
本文主要介绍了一些前端安全方面的知识和具体加密方案的实现。为了保护客户的隐私数据,不管是 HTTP 还是HTTPS,都建议密文传输信息,让破解者增加一点攻击难度吧。
精彩回顾 | 一张图读懂 OPPO 应用与数据安全防护
一张图解读了OPPO云密码本、AES密钥白盒、动态分析检测、恶意行为检测、SDK安全检测等多项安全技术能力。除此之外,OPPO安全团队还分享了移动三方SDK安全质量保障实践方案以及移动应用安全实践
2020-12-02
加密数字货币钱包软件系统开发详情(案例)
加密数字货币钱包软件系统开发详情,张森:I85薇2946电OIIO,加密数字货币钱包系统软件开发搭建,加密数字货币钱包软件系统开发搭建,加密数字货币钱包软件系统开发,加密数字货币钱包软件系统开发价格,加密数字货币钱包软件系统开发介绍,加密数字货币钱包
2021-10-18
AWS Nitro Enclaves – 隔离 EC2 环境以处理机密数据
Nitro 系统是一个能够以多种不同方式组合的丰富构建块集合,可以让我们灵活地设计并快速交付 EC2 实例类型,并提供不断增加的计算、存储、内存和网络选项。
KonaJDK 助力微服务国密算法使用特性一览
本文介绍 TencentKona 8.0.4 的新特性。
SDK 设计(下):IAM 项目 Go SDK 设计和实现
今天,我会介绍Kubernetes client-go风格的SDK实现方式。和公有云厂商的SDK设计相比,client-go风格的SDK设计有很多优点。
2021-08-12
12|如何编码出一个 AAC 文件?
根据不同的应用场景,我们可以选用不同的压缩编码算法,如WAV、MP3、AAC、OPUS等
2022-08-19
如何为 Amazon S3 中的 AWS KMS 加密数据启用跨账户 Amazon Redshift COPY 和 Redshift Spectrum 查询(一)
此博文显示了如何使用 Amazon S3 中的示例数据集设置跨账户 Amazon Redshift COPY 和 Spectrum 查询的逐步演练。
你了解数据安全传输吗?
你知道 HTTPS 底层是如何对数据进行安全保障的吗?
认证机制:应用程序如何进行访问认证?
今天,我以HTTP服务为例,来给你介绍下当前常见的四种认证方法。
2021-07-22
推荐阅读
如何通过 Java 程序加密或者解密 PDF 文档
2023-03-10
4、Zookeeper 服务发布和订阅机制解析
2023-09-26
加密标准中 DES 与 AES 到底是什么?两者有啥区别?
2022-10-20
MongoDB 发布可查询加密预览版,数据库历史上首次
4、利用 ShardingSphere 实现敏感数据的加解密
2023-09-26
关于加密数据的模糊查询
2022-09-27
33|Schema:如何设计实现 Schema 模块?
2023-09-04
电子书
大厂实战PPT下载
换一换 王晓亮 | WebEye 数据中台负责人
赵钰莹 | 极客邦科技(InfoQ) 主编
廖晓格 | 平安银行 数据资产管理及研发中心/数据及AI平台团队负责人
评论