Authentication 如何使用6位数字设计安全令牌身份验证协议?
我有一个安全号码发生器,小到可以放在钥匙圈上,它有一个六位数的液晶显示器和一个按钮。在在线表单上输入我的帐户名和密码后,我按下安全设备上的按钮并输入显示的安全代码 我每次按下按钮都会得到一个不同的号码,号码生成器背面有一个序列号,我必须在帐户设置过程中输入该序列号 我想在我的网站中加入类似的功能。据我所知,这些是主要的组成部分:Authentication 如何使用6位数字设计安全令牌身份验证协议?,authentication,encryption,cryptography,Authentication,Encryption,Cryptography,我有一个安全号码发生器,小到可以放在钥匙圈上,它有一个六位数的液晶显示器和一个按钮。在在线表单上输入我的帐户名和密码后,我按下安全设备上的按钮并输入显示的安全代码 我每次按下按钮都会得到一个不同的号码,号码生成器背面有一个序列号,我必须在帐户设置过程中输入该序列号 我想在我的网站中加入类似的功能。据我所知,这些是主要的组成部分: 在注册期间生成唯一的N位aplha数字序列并分配给用户(永久) 允许用户远程生成N(或M?)位aplha数字序列 现在,我不关心硬件方面,我只想知道如何选择一个合适的算
- 我是否确定了此类认证系统中所需的所有步骤?如果没有,请指出我遗漏了什么,以及为什么它很重要
- 对于步骤1到3,我可以使用哪些最健壮的加密/解密算法(最好使用64位)
此基本协议有一些扩展:例如,您可以在服务器和客户端上使用同步时钟,而不是计数器(值每N秒更改一次,而不是每次按下按钮)。您所描述的是基于HMAC的一次性密码。实现在中进行了描述,除非您有令人信服的理由不这样做,否则我强烈建议按原样实现它,因为它已经过密码学家的审查,并且被认为是安全的。使用此功能还将使您与现有系统兼容-您应该能够找到与HOTP兼容的令牌和软件应用程序,如Google Authenticator for Android。我不确定您是否会从随机数字中识别用户。你们会给用户一个唯一的随机发生器,你们知道它会产生什么,所以不是随机的。或者这个钥匙环设备是通过蓝牙连接的吗?在大多数情况下,仅仅使用用户名和p-word就足够了。就存储一个随机数而言,这不是一个问题,如果你只在服务器上保存数据,它就在服务器上(除了被黑客攻击)。有些人认为,钥匙圈必须是可预测的,否则就是噪音。更多想法,请看RFC 2289:GregS:谢谢,我投票支持你的评论警告:6位数字的可能值空间非常小。如果您仅依赖此数字,您的系统将受到暴力攻击和碰撞攻击。