Security 这个架构有多安全?

Security 这个架构有多安全?,security,encryption,rsa,public-key,Security,Encryption,Rsa,Public Key,我正在构建一个系统,需要通过安全的web连接收集一些用户敏感数据,将其安全地存储在服务器上,以便以后自动解密和重用。系统还应允许用户查看部分安全数据(例如,****ze)和/或通过web完全更改。系统应提供合理的安全级别 我在考虑以下基础设施: 应用程序(Web)服务器1 具有适当TLS支持的Web服务器 用于安全的web连接 使用公钥算法(如RSA)来 加密输入的用户敏感数据 并通过发送至App Server 2 单向出站安全通道 (例如ssh-2)而不存储它 App Server 1或DB上

我正在构建一个系统,需要通过安全的web连接收集一些用户敏感数据,将其安全地存储在服务器上,以便以后自动解密和重用。系统还应允许用户查看部分安全数据(例如,
****ze
)和/或通过web完全更改。系统应提供合理的安全级别

我在考虑以下基础设施:

应用程序(Web)服务器1

  • 具有适当TLS支持的Web服务器 用于安全的web连接

  • 使用公钥算法(如RSA)来 加密输入的用户敏感数据 并通过发送至App Server 2 单向出站安全通道 (例如ssh-2)而不存储它 App Server 1或DB上的任意位置 服务器1

  • 使用依赖于用户密码的密码 对称密钥加密算法 输入数据的某些部分(例如。 最后几个字母/数字)并存储 它将在DB服务器1上运行,以备以后使用 过程中由应用程序服务器1检索 用户网络会话

  • 重复使用步骤2,以便用户通过web修改数据

  • DB服务器1

  • 存储不安全的非敏感用户 数据
  • 储存一些敏感材料 应用服务器1上加密的用户数据 (见上文第3步)
  • 应用服务器2

  • 不要发送任何东西 应用服务器1或数据库服务器1
  • 接收加密的用户敏感信息 从应用服务器1获取数据并将其存储 在数据库服务器2中
  • 检索加密的 来自数据库服务器2的用户敏感数据 根据当地的时间表, 使用私钥解密它 (请参阅应用服务器1,步骤2)已存储 通过正确的密钥管理在App Server 2上本地运行
  • DB服务器2

  • 存储加密的用户敏感数据(请参阅App Server 2,步骤2)
  • 如果应用程序(Web)服务器1或DB服务器1或两者都被破坏,则攻击者将无法获取任何用户敏感数据(无论是否加密)。所有攻击者将有权访问众所周知的公钥和加密算法。攻击者将能够修改Web服务器以获取当前登录的用户明文密码,并解密存储在DB服务器1中的用户敏感数据的一部分(见App Server 1,步骤3),我不认为这是一个大问题。攻击者还可以(通过修改代码)截获用户在潜在攻击期间通过web输入的用户敏感数据。后来我认为这是一个更高的风险,但前提是攻击者修改代码很难(而不是有人注意到),我想我不应该太担心它。 若App Server 2和私钥被泄露,那个么攻击者将可以访问所有内容,但App Server 2或DB Server 2并不是面向web的,所以这不应该是一个问题

    这个架构有多安全?我对加密算法和安全协议如何工作的理解是否正确


    谢谢大家!

    到目前为止还不错。您正在迈向一个非常安全的体系结构。还有其他问题,如防火墙、密码策略、日志记录、监视和警报等,但到目前为止,你所描述的一切都非常牢固。如果数据足够敏感,请考虑第三方对你的安全性的审计。

    < P>我不认为我能给出正确的答复,因为我不确定你的系统的目标是清楚的。虽然我很感激你能得到设计方面的反馈,但如果没有目的的话就有点难了

    不过,我想建议你:

    首先强烈记录并分析您的威胁模型

    您需要列出所有可能的攻击场景的固定列表。本地攻击者等,你想保护谁?你也会说“有适当的密钥管理”;然而,这是最难做到的事情之一。所以,不要以为你能做到这一点;全面规划您将如何做到这一点,具体链接到它将阻止谁的攻击

    你需要做一个威胁模型的原因是,你需要确定你将从什么角度受到攻击;因为情况就是这样

    我还将建议,虽然理论是好的;在加密实现中也是非常关键的。不要仅仅假设你会正确地做事,你真的需要注意随机数的来源,以及其他类似的事情


    我知道这有点含糊不清,但我确实认为,至少提出一个正式的、强大的威胁模型,对您非常有帮助。

    我不建议使用任何形式的公钥从web服务器与应用服务器进行通信。如果你控制这两个系统,那就只是一个常规的加密秘密系统。您知道应用程序服务器的身份,因此保持密钥安全不是问题。如果您需要更改或更新密钥,只需手动更改或更新即可,以防止密钥在连接中泄漏

    我最需要注意的是数据从DMZ中的服务器(只应该是Web服务器)传输到网络内部的那些盒子的方向。将恶意软件分发给访问用户的合法域受到危害的情况越来越普遍。这很糟糕,但如果恶意软件转向你的网络,而不是仅仅向外转向你的用户,那么你的业务将完全被水淹没

    我也没有看到任何关于防止sql注入或系统强化/修补以防止恶意软件传播的内容。这应该是你的第一个也是最重要的考虑。如果安全性对您很重要,那么您的体系结构应该能够灵活地进行服务器间通信和频繁修补的小规模定制。大多数网站,即使是主要的合法企业,即使遭到破坏,也从未修复过它们的安全漏洞。如果你想避免成为一名警察,你必须不断地修补安全漏洞并改变事情,以防止出现漏洞