您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

解读登录双因素认证(MFA)特征背后的TOTP原理 《源码交易平台》

  • 时间:2022-08-11 00:02 编辑: 来源: 阅读:324
  • 扫一扫,手机访问
摘要:解读登录双因素认证(MFA)特征背后的TOTP原理 《源码交易平台》
随着互联网密码泄露事件的频繁发生,越来越多的产品开始支持多因素认证(MFA),TOTP是MFA领域最常见的实现方式。本文详细介绍了TOTP的原理和华为云的实践经验。 原理TOTP(time-based one-time password)算法是一种基于时间的一次性密码算法,根据预共享密钥和当前时间计算一次性密码。 它已被互联网工程任务组接受为RFC 6238标准,成为主动开放认证的基石,并被应用于许多多因素认证系统中。 TOTP实际上并不是一个全新的算法,而是HOTP(基于HMAC的One-Tme密码)算法的一个具体场景。 HOTP算法可以在RFC 4226中详细描述,所以与HOTP算法相比,TOTP的RFC文档看起来非常简洁。 以上是HOTP算法的公式,参数k代表共享密钥,参数c代表计数器。 TOTP算法实际上是以时间变量为参数c的HOTP算法,所以TOTP算法的公式应该是参数k仍然代表共享密钥,而参数t代表时间变量。 时间变量TTOTP的核心和实用方案也是围绕时间变量T展开的,但T不是简单的时间戳,X代表步长,默认值为30秒。T0代表UTC时间的起始时间戳,即1970年1月1日。下限函数向下取整。 t必须是大于32位的整数,才能在2038年之后支持它。 比如X=30时,59对应的T是1,60对应的T是2。 TOTP在MFA中的应用MFA(Multi-Factor Authentication),多因素认证,是计算机系统中身份认证的一种方法。客户需要通过两种或两种以上认证方法的验证才能访问系统和资源。 一般需要在登录认证系统中绑定客户的身份和客户的物理设施才能开通MFA。在登录过程中,除了输入密码(客户已知)之外,您还需要输入客户的物理设施(由客户持有)上显示的访问代码,以完成整个身份验证。 注意:并非所有MFA验证流程都要求客户主动输入访问代码。 上图所示的流程是MFA的一般流程。比如我们使用网银转账,在银行窗口开户时需要拿出银行提供的一个u盾,按下按钮,u盾上就会显示出一串数字。将该号码输入网银软件完成转账。 但上图所示的MFA流程存在一个工程问题,即在步骤4中,认证系统的后台需要对MFA设施(或MFA设施的后端系统)进行验证。这种验证过程限制了MFA的应用场景,运行在企业数据中心的认证服务器一般不允许访问公网,即使访问公网也会因为网络延迟而导致登录体验变差。TOTP算法的应用很好地解决了这个问题。 使用TOTP算法,只有客户端(验证者)和服务器(验证者)保持相同的时钟,双方事先设置一个共享密钥,在同一时间段内计算出的值相同。 基于这一原理,在认证系统中,将客户端的身份与共享密钥绑定,然后将共享密钥放在物理设施中。在认证过程中,物理设备和认证系统根据共享密钥和时间戳通过TOTP算法计算出访问码,只有访问码一致才能确认客户端持有物理设备。在整个认证过程中,物理设施和认证系统不需要交互,非常灵活。 基于TOTP算法的设备可以分为虚拟(软件)MFA和硬件MFA。 虚拟MFA虚拟MFA通过软件模拟硬件MFA设施,在手机上安装一个支持TOTP协议的APP,如Google Authenticator、微软Authenticator、华为云APP等,也支持标准的TOTP协议。 虚拟MFA通过扫描二维码图片或手动输入的方式放置验证者生成的共享密钥,可以同时关联多个验证者,非常方便实用。 硬件MFA下图显示了一个信用卡形状的硬件MFA,可以放在钱包中。必要时可以按下卡上的按钮显示六位数字,非常便携。 安全注意事项1。哈希算法TOTP算法的强弱取决于底层的HOTP算法,但HOTP的哈希函数是HMAC-SHA1,这不是我公司推荐的安全算法。 TOTP算法在具体实现上也可以使用HMAC-SHA256或者HMAC-SHA512,但是HMAC-SHA1仍然是最通用兼容的实现,Google Authenticator只是使用了HMAC-SHA1。 2.密钥随机性对TOTP算法最有可能的攻击手段是暴力破解,因此共享密钥必须具有足够的密码学安全性和随机性。 密钥的长度应尽可能与哈希算法的长度相匹配。 此外,验证者必须将密钥存储在安全区域,使用加密来防止泄露,并且只有在需要验证OTP时才解密。 同时需要限制最低权限,只有验证者才能得到密钥。 3.通信安全验证器和验证器应该使用安全通道通信,如SSL/TLS。 4.抗暴力破解一般在MFA中使用TOTP时,验证者只要求6位数,所以很容易被暴力破解。在工程实践中,第二个因素失败一定次数后,可以锁定用户。 5.在同一时间段(如30s)内,保持一次性TOTP算法的输出不变。如果同一个TOTP验证已经成功验证了一次,则应拒绝验证码的第二次尝试,以确保一次性口令的一次性。 6.时间段时间段越长,被破解的风险越高,但考虑到验证方需要手动输入验证码,应该留有足够的操作时间。 建议使用30秒作为默认时间段,以实现安全性和易用性之间的平衡。 考虑可用性1。“向后兼容”。由于验证者和被验证者都是基于时间来计算OTP的,如果验证者在一个时间段的最后时刻发送OTP,那么当请求到达验证者时,就会进入下一个时间段。如果验证者使用当前时间计算OTP,匹配会失败,导致正失败率,影响可用性。 验证者不仅要使用收到请求的时间,还要使用最后一个时间段来计算TOTP,以加强容错性。 但容错窗口越长,被攻击的风险越高,“向后兼容”一般建议不超过一个时间段。 2.验证方和支持校准的验证方的时钟可能不完全一致,特别是由于TOTP认证已经很久没有进行了,时钟偏移导致匹配失败。 验证者的认证系统可以提供重新同步的能力,这允许验证者输入TOTP验证码。验证机向前计算两个时间段(60s),向后计算一个时间段(29s),通过匹配结果记录验证机时钟的偏差值,完成时钟校准。 当验证者稍后发起验证时,验证者直接使用该偏差值来计算TOTP。 但是,如果厂商已经支持了足够的“向后兼容性”,就不一定支持校准了。 点击关注,第一时间了解华为云鲜科技~


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【域名/主机/服务器|】qq邮箱提醒在哪里打开(2024-06-04 18:58)
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部