首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安全存储辅助密码

安全存储辅助密码
EN

Security用户
提问于 2016-06-01 05:09:22
回答 1查看 261关注 0票数 0

我目前正在为Microsoft Dynamic CRM编写门户站点,门户的工作方式如下:

  • 每个用户都有自己的帐户登录到我的门户。
  • 管理员为每个用户分配一个独立的CRM凭据。目前,CRM站点的用户名和密码都是以明文形式存储的(门户本身的密码被正确地散列、咸化、.使用AspNet标识核心)。
  • 登录到我的门户后,用户将在后台使用CRM站点进行身份验证,并可以开始查看、添加、编辑和删除CRM站点上的记录。
  • 用户可以更改自己的门户密码,但CRM凭据是固定的,只能由管理员更改。

显然,我不想用纯文本存储CRM凭据,但我无法找到解决问题的任何可行的解决方案。我考虑了以下几种选择:

  1. 散列CRM密码并存储哈希。这是不起作用的,因为我需要原始密码来验证与CRM站点。
  2. 从用户密码导出密钥并加密CRM密码,然后存储加密密码(密码管理器样式)。不工作,因为管理员将无法更改CRM密码。
  3. 与2相同,但使用admin密码派生加密密钥。这也不起作用,因为这样我就不能用CRM站点对用户进行身份验证了。
EN

回答 1

Security用户

回答已采纳

发布于 2016-06-01 19:18:24

密码是面向用户的数据。如果您有一个用户既不设置也不使用的“密码”,则称为“密钥”或“机密”(确切的术语因使用而异)。所以你需要研究密钥存储,而不是密码存储。

保护密钥有两部分:

  1. 选择加密安全的随机密钥。CSPRNG中的128位会做得很好。如果要将密钥存储为文本,可以使用base64对其进行编码。
  2. 当不需要密钥时加密,而不是散列。使用像AES 256这样的加密方法。这会导致一个循环问题,因为您需要安全地存储该凭据。最好的地方是在高速切削机。如果这是不可能的,把它存放在某个地方就行了。只是不要将其与密钥放在同一个数据库中,以防攻击者获得DB访问权限。
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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