共享资源(文本)的良好数据加密策略是什么?

信息安全 加密 公钥基础设施 数据库 软件 行政
2021-09-12 10:29:09

我有一个用例,我需要加密数据库中的一条 PII 信息,然后可以由应用程序中的多个用户角色(例如,它所属的用户、客户服务、工程等)对其进行解密和访问。 .

这类事情的行业标准策略是什么?

更新:发布前请阅读:除了在下面发布我的想法的反馈(我真的很感激),还请提出一个策略。我相信这对当今试图加密任何共享资源的任何人都会非常有帮助。

这是我目前的想法,希望能更好地描述我所指的内容:

全面披露:以下信息也旨在就我提出的当前策略获得意见或同行评审

作为分层防御策略的一部分,我的标准是加密/解密策略至少有 3 个因素,这样,如果任何 2 个部分受到损害,数据仍然无法解密。

3 个因素:访问信息的软件、带有加密数据的数据库(DB1)、带有加密密钥的数据库(DB2)。

加密策略:

  1. 数据被输入到软件中
  2. A、比方说,生成128bit Key
  3. 数据使用该密钥加密
  4. 加密数据存储到数据库中(在上述 3 个因素中表示为 DB1)
  5. 128b 密钥使用软件中硬编码的主密钥进行加密
  6. 加密的 128b 密钥被存储到另一个数据库中(在上述 3 个因素中表示为 DB2)

解密策略是相反的..

关键是软件持有主密钥(因素 1),DB1 有加密的数据(因素 2),DB2 持有加密的加密密钥(是的,单词重复......也是因素 3),只能用主密钥解密钥匙。

在我的脑海中,如果其中任何一个被暴露,它就是无用的信息,不会泄露加密的 PII。

顺便说一句,这假设了可靠的加密算法,例如 AES(.. 最有可能的 AES 仅考虑到 DES、3DES 和 Blowfish 已被弃用)。

更新我意识到我并没有明确说明这三个因素将在哪里重新出现。所有 3 将在 3 台不同服务器上的不同托管环境中我们正在谈论一种大规模策略(也可以在小规模上工作),其中数据库本质上是独立的硬件实体。在我看来,这是一开始的假设。

更新 2这里的很多反馈都正确地表明该软件是这里的致命弱点。这也是我的大话。我想不出任何软件策略,如果软件受到损害,数据不会面临风险,因为该软件始终与数据库有一个开放的连接,并且包含查看/处理该数据的所有业务逻辑。即使在软件中实现 mydiamo,这仍然意味着如果有人控制了软件,数据就会受到损害。

4个回答

闯入您的服务器的人将使用该软件和数据库。有了您的所有因素,他们将能够反向运行解密策略以恢复所有 PII。

在多因素身份验证中,如果附加因素与现有因素同时被盗,则不计算在内。例如,硬件令牌与密码是不同的因素,因为作为软件的键盘记录器(窃取密码的典型方法)无法同时窃取硬件令牌。

如果我正确理解了您的问题,那么您正在尝试强化数据以抵御可能对您的数据中心进行部分控制的攻击者。不要忘记,一旦数据中心的一部分受到破坏,从那里可以管理访问的整个区域都被假定为受到破坏。这意味着仅在 3 台不同的服务器上隔离信息是不够的,而 3 台服务器应该位于 3 个不同的区域,它们之间有严格的防火墙,以确保只有需要的信息才能被交换。或者至少,安全数据库和普通数据库不应该在同一个区域。

特别是,应用程序应该只能通过 Web 服务获取加密/解密密钥,并提供证明它代表授权用户执行此操作的凭据。这意味着您必须建立一个强大的身份验证和授权系统,并彻底检查所有安全隐患。并且您还应该设置代码审核以控制应用程序不会将该密钥保留的时间超过所需的时间

我的意思是必须使用强大的加密系统,但这只是实际提高安全性应该做的可见部分。重要的部分不仅是技术性的,还将涉及组织和对授予谁的权限以及允许哪些服务器与其他服务器通信的精确定义。您还应该考虑如何完成备份,因为它们是安全系统的重要组成部分,因为它们必须健壮但不易访问。恕我直言,您还应该分析数据的价值及其所面临的风险。因为建立一个安全的系统不会没有成本。

TL/DR:你的描述没有明显的缺陷,但缺少的是对不同部分之间的隔离的定义,因为魔鬼会隐藏在这样的细节中。

我知道您已经提到您将两个数据库隔离开来,但是它们显然以某种方式进行通信,因此如果您的网络受到威胁,我会认为它们都处于危险之中,这意味着它们可以被视为只是一个因素。

显然,单独使用物理令牌仍然是一个好主意,但我的信息是使用 2 个数据库可能并不比使用 1 个数据库好多少。

也许提高安全性的一种方法不是在软件中硬编码“主密钥”,而是在运行时从另一台服务器获取。至少这样,攻击者不能只拿走软件和数据库,而是必须创建内存转储来获取主密钥,甚至攻击密钥服务器。