TOTP:每次会议都要改变秘密

时间:2014-08-28 04:17:51

标签: security hmacsha1

我有关于为每个会话更改用户密码以生成OTP的要求。我们决定使用TOTP作为我们的算法。我们将SMS中的OTP发送给用户进行授权验证(无需在客户端生成OTP)。

TOTP = HOTP(WhereSessionCalculate(SecretKey), TC)

因此,明智地改变用户会话的秘密是一种好习惯。如果没有,那么可能产生的后果是什么。如果需要更多信息,请解释并告诉我。

1 个答案:

答案 0 :(得分:2)

双因素(或多因素,更准确)身份验证的基本前提是补充正常的用户名/密码组合 - 这些是您知道的事情 - 具有一个或多个不同类型的其他因素。最常用的是您所拥有的(例如您的手机,带有Google身份验证器应用程序或RSA,金雅拓等令牌)或您的身份(生物识别数据,如虹膜,指纹等)。

有人可以通过肩上冲浪学习用户名和密码(如果密码很短,很容易),甚至可以从不安全的网络连接中嗅探它(希望您使用SSL与AES256或其他人加密会话到你的app!)但是2FA的添加会阻止它。

那么,让我回答您的问题,以及您的方法是否会增加对用户进行身份验证的安全性。一旦用户的OTP密钥被设置并存储在数据库中的用户记录中,并且该密钥用于为TOTP生成器播种,那么用户使用新密钥重新播种的内容将实现什么?是的,生成OTP代码并通过短信发送验证登录的人当时是否有他们的电话,但是那样会使用Google身份验证器;此外,我背叛了我的Apple fanboi偏见(!)传入的短信显示在我的iPhone的锁定屏幕上,因此也会显示您的OTP,而要访问Google身份验证器应用程序,我必须使用我的PIN解锁手机。

另外请记住,大多数系统在网络或系统级别受到攻击,并且用户名和密码的整个数据库被窃取 - 破坏单个用户的访问权限通常不值得麻烦,除非你有一个非常高价值的资产吸引了国家行为者的注意!

我已经为我自己的应用程序探讨了这些问题,我已经使用了用户名和密码初始登录(最少长度为20个字符以复制彩虹表,但没有规定复杂性或频繁更改),最大尝试次数在锁定帐户的时间越长,登录失败的时间越长,使用Google身份验证器进行二次登录(因为它是免费的,在iOS,Android和BB10上运行,并且非常易于使用)。为了改进这一点,我会考虑生物识别技术,但我的应用是商业性的而不是军事性的,所以我所拥有的就足以评估风险。

我希望这有助于您为应用程序制定最佳方法。