首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DIY:使用PBKDF2 / HMAC的密码密钥派生工具

DIY:使用PBKDF2 / HMAC的密码密钥派生工具
EN

Cryptography用户
提问于 2022-01-18 13:55:42
回答 1查看 230关注 0票数 0

首先,我不想重新发明轮子,我只想自己造一辆车。非产品环境;仅为娱乐和娱乐。

目标是使用单个私有(从未发布)主密码为每个网站帐户(twitter.com、reddit.com等)创建唯一的密码(令牌)。

以下方法是否与这些目标一致?

代码:

代码语言:javascript
复制
HOST_HASH = SHA512( LOGIN + SERVER )

USER_HASH = SHA512( USER_NAME + HOST_HASH )

PWD_HASH = SHA512( USER_PASSWORD )

KEY = PBKDF2_SHA256( USER_HASH, PWD_HASH, ITERATIONS_300000, LENGTH_512BITS )

DIGEST = HMAC_SHA512( HOST_HASH, KEY )

TOKEN = BASE64( SHA1(DIGEST) ) #-- just for convenient output

输入:

  • USER_NAME =用户全名(即:琼斯·史密斯)
  • USER_PASSWORD =用户秘密主密码(或密码)
  • LOGIN =用户别名或电子邮件或任何用于登录的内容(即: jsmith123)
  • SERVER =网站或域名(即: stackoverflow.com)

输出:

  • TOKEN =强且唯一的密码,很容易重建,但很难猜测(?)
EN

回答 1

Cryptography用户

发布于 2022-01-19 02:59:39

你用哈希哈希。在你的计划中它是安全的。见这里的细节

您使用PBKDF2,从而保护派生密码不受暴力胁迫。

但是,您的方法可能会导致可用性问题。假设您拥有网站、电子邮件服务、社交网络、视频/音频服务、网络商店、银行等的100-200个帐户。请考虑以下情况:

  • 一个网站要求你每年更改一次密码,另一个网站要求每三个月更改一次密码。
  • 一个网站以简单的形式保存密码。他们的密码数据库被泄露了。他们要求你在3天内更改密码。
  • 错误地,你使用了另一个网站的密码。经过几次尝试,您的帐户被锁定了。解锁后,您将被要求提供一个新密码。

要更改一个网站的密码,您必须更改基本密码。这将改变所有其他网站的派生密码。这就是为什么你必须去每一个网站,并改变你的密码。

  • 这需要很长时间。
  • 你可以忘记一些网站,因为你自动获得密码,也许你没有保留这个列表。稍后,您会感到惊讶的是,这些被遗忘的网站不接受密码。
  • 某些网站可能在您想要更改密码时不可用。或者你只是没有时间一次性更改所有网站的密码,比如区块,今天10个网站,明天10个网站等等。稍后,你将不知道你在哪里已经更改了密码,因此你应该使用什么样的基本密码。

你决定这对你是否可以接受。

但是,如果您使用密码管理器,您将得到可靠的保护密码,例如使用AES-256加密,使用可配置的迭代次数进行密码派生,您仍然需要记住一个好的密码,比如基于dicewire的密码,但优点是,不同资源的所有密码都是相互独立的,并且不会出现上述可用性问题。

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

https://crypto.stackexchange.com/questions/98173

复制
相关文章

相似问题

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