【问题标题】:Field level encryption using AWS KMS and AWS CloudHSM使用 AWS KMS 和 AWS CloudHSM 的字段级加密
【发布时间】:2023-03-10 23:55:01
【问题描述】:

需要为应用程序实施额外的安全级别。假设有一个包含 10'000'000 个用户的表。敏感字段是 user.first_name 和 user.last_name。我们需要在将数据存储到数据库之前对其进行加密,然后在应用程序级别解密以将其显示在 UI 上。

据我所知,使用 KMS 的推荐方法是:

写部分

  • 调用KMS服务获取数据密钥
  • 使用数据密钥加密字段
  • 在应用程序级别将带有加密字段的用户记录保存到数据库中

阅读部分

  • 从数据库中检索带有加密字段的记录
  • 使用数据密钥解密字段
  • 在 UI 上显示数据

我有一系列问题需要澄清:

  1. 为每个用户使用一个新的数据密钥有意义吗?
  2. 10'000'000 个用户意味着 10'000'000 个不同的数据密钥,存储它们并从进行解密的机器访问它们的最佳实践是什么?
  3. 可以为整个用户表使用一个数据键吗?
  4. 将单个密钥安全地存储在本地计算机上的最佳做法是什么?
  5. 如果数据密钥意外丢失会怎样?是否有任何恢复程序?

【问题讨论】:

    标签: amazon-web-services security encryption aws-kms


    【解决方案1】:

    应根据组织政策和监管需求确定要实施的确切解决方案。但是,以下几点有望帮助您制定解决方案:

    1. 您可以使用伪随机数生成器为每个字段创建单独的数据键。数据密钥将用于加密原始数据,然后数据密钥本身将使用来自 KMS 的通用“客户主密钥”进行加密。然后,加密的数据密钥将与加密的数据(在您的情况下为名字和姓氏)一起存储。
    2. 在解密过程中,加密数据密钥(与加密数据一起存储)将首先使用 KMS 的主密钥解密,然后使用数据密钥解密数据
    3. KMS 可以配置为每年自动轮换主密钥。但是,KMS 会跟踪旧密钥,因此即使在主密钥轮换后,使用旧密钥完成的加密也可以在将来解密
    4. KMS 中的主密钥将跨多个可用区复制,因此具有高可用性
    5. 如果您有更严格的安全要求,您可以考虑使用 CloudHSM,它将密钥存储在不与其他 AWS 客户共享的专用硬件中
    6. 您还可以使用由 CloudHSM 支持的 KMS 自定义密钥存储。但是,在这种情况下,自动密钥轮换将不可用

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 2020-11-26
      • 2019-07-24
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多