首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码管理的安全概念

密码管理的安全概念
EN

Security用户
提问于 2019-09-28 15:53:53
回答 1查看 193关注 0票数 0

目前,我还在为一个至今还没有找到好答案的问题而奋斗。我不想创建一个密码管理器,它将被很多人使用。

已使用的语言: PHP / Javascript (不要认为JS应该用于任何与安全相关的事情)

到目前为止,我的概念是:

  • 只有(框架-)管理员才能分配权限
  • 访问和/或写入权限可以分配给:
    • 用户组
    • 单用户

  • 任何人都可以创建一个条目,只要他对经理本人有权利,然后对他所能看到的特定点有权利。(树结构)
  • 每个条目创建如下:
    1. 密钥由一个salt组成,它使用sha256进行散列。
    2. 我选择了"aes-256-cbc“作为加密方法。
    3. "IV“是随机生成的"openssl_random_pseudo_bytes”。
    4. 然后我使用"openssl_encrypt“函数来获取密码-散列。
    5. 之后,我使用函数hash_hmac (再次使用sha256)来生成散列,该哈希将存储在数据库中。

但是现在我面临的问题是,一旦有人访问php文件,所有密码都会被压缩。

这就是为什么我考虑了以下几点:

我想用相应用户的用户密码对每个密码进行加密。虽然这意味着每个密码必须创建/存储x次,但这不是问题。

密码只能在用户密码的前一个条目中读出这一事实不是问题,而是需要的。但是,这意味着对密码的访问权限只能由已经“解锁”此条目的管理员分配。但是,由于密码也可以由其他管理员创建,甚至由用户创建,这意味着为了对这些密码进行加密,每个希望访问的用户(在默认情况下,管理员都有访问权限)同时需要创建者(或已经拥有此条目的人)的存在以及他或她自己的存在来解密和重新加密条目。

从理论上讲,我也可以从数据库中获取用户密码的存储哈希,但这会让我回到一个问题,即一旦有人拥有文件级访问权限,所有密码都会被泄露。

有一个好的和可靠的替代方案吗?一方面,它将是一个主密码,必须由创建者知道,这样才能创建一个条目,然后使用该条目进行初始存储。但这将是另一种令人不快的选择。

比如证书之类的。我很感谢你的建议。

提前感谢!

EN

回答 1

Security用户

发布于 2019-09-29 03:47:35

如果我正确理解,PHP只会在服务器端执行。如果我在这方面是正确的,那么高价值的用户秘密将被传输到您的服务器,即使在您得到它们之后立即加密它们。

在这一点上,我应该透露,我为一个受欢迎的密码经理工作,但我没有试图阻止竞争。但我建议您看看其他密码管理器是如何工作的。我们中的一些人会记录下我们是如何做事的,以及为什么。我不是告诉你不要尝试构建一个密码管理器,而是要理解它比你想象的要难得多。

我承认我没有仔细研究过您的设计,因为我在PHP上停了下来,但我也看到您提到了CBC模式加密。虽然现在仍然有遗留系统这样做,但是您不应该使用未经身份验证的模式来设计任何东西,特别是CBC。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/218832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档