我是系统架构和安全方面的新手,所以我只想检查这个计划是否有意义。我正在构建一个网络应用程序,我需要为每个用户存储一个密码。我已经阅读了大量有关散列算法、盐等的内容。我将使用 Argon2,因为它似乎是当前的推荐。我的问题涉及如何根据整体架构存储和检查哈希值。
由于使用 Argon2 的散列故意非常昂贵,因此我想在单独的模块/进程中创建一个服务,以便在需要时可以轻松地将其移动到一个或多个单独的机器上。即使它与主应用服务器位于同一台机器上,监控其 CPU 和内存使用情况以调整散列算法的成本因素也是微不足道的。
我的应用程序将向服务发送 HTTPS POST 请求以创建、更新、删除或验证密码。所有详细信息都将在请求正文中,包括纯文本密码。连接将被加密。响应将只是成功或失败的指示。
该服务将处理数据库操作、哈希密码以及比较哈希是否相等的逻辑。密码将存在于与用户不同的数据库中,因此即使攻击者转储了整个密码数据库,他们实际上仍然不知道任何人的密码,反之亦然。此外,如果我曾经为我的其他数据迁移到不同的存储解决方案,则需要进行的迁移更少,因为密码可以保持原样。
听起来不错?还是它以某种方式打开了更多我不知道的弱点?