如何用很少的CPU功率在设备上生成足够迭代的秘密



我们的应用程序在Raspberry Pi上运行,并安装在客户网站的许多地方。圆周率对我们来说既便宜又好。然而,我们有一个问题,将用户的登录密码存储在磁盘上,生成一个类似于50.000次迭代的秘密以达到合理的安全性,在缓慢的Pi上花费了太多时间。当用户登录时,必须对密码进行解密,并且必须再次执行50.000次迭代,这在Pi上需要几分钟的时间。web前端会超时,用户无论如何都不会等待几分钟登录。

我的问题是,在CPU处理能力很低的情况下,是否有人知道如何在磁盘上以安全的方式加密和解密密码。

然而,我们遇到了一个问题,即将用户的登录密码存储在磁盘上会生成一个秘密

我希望你的意思是散列(不可逆的篡改(密码

类似于50.000次迭代才能合理安全
必须再次执行50000次迭代,这在Pi 上需要几分钟的时间

我不确定你是从哪里/如何得到50k数字的,但在这种情况下,理解上下文/原因很重要。如果数据库被泄露,迭代的目的是减缓字典或暴力攻击寻找密码的速度,而密码往往很弱(简短、简单、可重复使用、已知(。

实际上,如果你能确保用户密码足够安全(长、随机(,你就不需要任何迭代。

事实上,在物联网设备上,这种迭代很棘手,因为你无法与哈希农场竞争,默认服务器上的可容忍延迟(100-300ms(在低端设备上达到了禁止时间。

我的问题是是否有人知道如何。。。给定处理能力很小的CPU。

我看到两个选项

  • 使迭代次数合理。是的,它降低了暴力/字典攻击的安全边际,但您可以使用强用户密码来弥补这一级别
  • 如果密码用于对web应用程序进行身份验证,您可以将身份验证委托给第三方服务(Azure AD、AWS Cognito、IBM AppId、OAuth0、Okta…(,有很多免费或不太免费的服务

Haved将在这种情况下完成工作。只要让它运行一段时间,它就会产生足够的熵。

最新更新