gpt4 book ai didi

security - 开发一个 Web 应用程序,该应用程序自动轮换用于加密存储在数据库中的数据的加密 key

转载 作者:行者123 更新时间:2023-12-04 03:15:37 25 4
gpt4 key购买 nike

假设我有一个在网络场中运行的 ASP.NET MVC 3 应用程序,其中每个网络服务器都属于一个工作组(与具有共享帐户的域相对)。 Web 场也是可自动扩展的,这意味着实例的数量取决于负载。敏感数据在从数据库存储/检索时会被加密和解密。对称和非对称 key 存储在每台机器上,并使用 ACL 进行保护,并使用 DAPI(使用机器 key )进行加密。

出于合规性和安全性原因,需要定期轮换 key 。您将如何设计/修改系统以定期自动轮换 key 而不使系统脱机?假设有任意数量的表,每个表都有任意数量的列,这些列使用 key 进行加密。

许多问答都与使用哪些算法以及如何保护 key 有关,但很少有人真正解决如何设计和实现允许轮换这些 key 的应用程序,尤其是在共享数据库的动态环境(自动缩放环境)中。

最佳答案

系统中有多个 key

当有多个编码(或加密方案、 key )时,您通常首先要做的是引入某种版本控制方案,因为您需要知道该特定数据使用了哪个 key 。为此,您有多种选择:

  • 时间戳:保存数据已与数据加密的时间戳。然后将时间划分为使用相同 key 的一定长度的间隔。
  • 版本号:您也可以简单地分配增加的版本号。
  • key 指纹:将 key 的指纹与数据
  • 一起存储

    在任何情况下,您都需要存储当前正在使用的所有 key ,以便能够解密数据。读取数据时,只需查找与您的版本标识符匹配的 key 并解密。写入时,使用当前事件的 key 并存储加密数据+您的版本标识符。当您确定数据库中没有使用此 key 加密的数据时,您可以停用(也称为删除) key 。

    部署新 key

    每当您滚动到新 key 时,都必须生成和部署该 key 。您可以以集中方式执行此操作,也可以使用一些分布式 key 协议(protocol)协议(protocol)。

    重新加密数据

    如果需要重新加密数据,可以通过两种方式进行:
  • 后台进程:有一个后台进程,它只检索具有旧版本标识符的 N 个数据项,解密并重新加密并存储结果。在运行之间睡一会儿,以免系统过载。
  • 访问更新:每当您读取数据并注意到它具有旧版本标识符时,请使用当前 key 重新加密并存储结果。根据您的数据访问模式,这可能不会重新加密所有内容,因此可能需要额外的后台进程。

  • 非对称加密

    如果您使用的是非对称加密(我猜例如用于存储信用卡号码,网络服务器只有公钥加密,支付处理器有私钥解密)它会有点棘手,因为只有具有私钥的机器可以重新加密数据。所有其他方面都是一样的。

    关于security - 开发一个 Web 应用程序,该应用程序自动轮换用于加密存储在数据库中的数据的加密 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11094428/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com