安全保存远程服务密码

时间:2016-10-29 15:32:53

标签: php security encryption passwords

我计划实施一个能够连接多个远程服务并在一个服务中实现组合功能的系统。

我的系统将使用php / symfony实现,这将帮助我管理所有用户相关的问题。然而,我的问题是针对更一般的想法,而不仅仅是具体的实施。

以下是我已经考虑过的一些事情:

想法

远程密码和用户名使用AES对称加密。 此加密的关键应该是本地密码的盐渍哈希和本地文件系统中的密钥的组合。这有两个好处:

  • 无法再对远程密码表进行彩虹表攻击。
  • 即使是暴露的本地密码也不会泄露远程密码。

本地文件系统中的密钥不应该是硬编码的,而不是通过安装生成的。

远程服务的身份验证过程主要使用会话密钥,必须使用用户名和密码进行请求。

只有当用户输入密码时才能请求和保存会话密钥,然后可以对其进行验证并用于解密远程页面的密码和用户名。每次会话密钥到期时,用户都会收到再次输入密码的通知。

会话密钥也使用AES加密,使用存储在本地文件系统中的加密密钥。这也应该通过安装生成。这样,暴露的数据库就不会提供所有会话密钥。

可能的漏洞

如果攻击者可以访问数据库和文件系统,则可以轻松解密会话密钥。

如果数据库被黑客攻击并且使用暴力攻击找到密码。攻击者也可能解密远程页面的所有密码。

缺陷

用户必须定期重新输入密码,这是不舒服的。

会话可以经常过期。如果它们每天或甚至在较短的时间段后过期,系统将无法使用。

当用户忘记密码并且必须申请新密码时,他也必须输入所有远程凭证。

在新安装中,必须再次请求所有会话密钥。

我现在的问题是,是否有技术可以克服这些缺陷甚至是系统的漏洞。如果从道德的角度来看,我选择了正确的行动来保存用户数据。

0 个答案:

没有答案
相关问题