分享好友 最新动态首页 最新动态分类 切换频道
提升账户安全:一次性密码生成原理与实践
2024-12-28 16:59
 

​ 此工具提供基于时间的一次性密码(Time-based One-time Password,简称TOTP,只需要在手机上安装密码生成应用程序,就可以生成一个随着时间变化的一次性密码,用于帐户验证,而且这个应用程序不需要连接网络即可工作。

提升账户安全:一次性密码生成原理与实践

客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道。此外,客户端和服务器各有一个计数器C,并且事先将计数值同步。

进行验证时,客户端对密钥和计数器的组合(K,C)使用HMAC(Hash-based Message Authentication Code)算法计算一次性密码,公式如下

 
 

​ 介绍完了HOTP,Time-based One-time Password(TOTP)也就容易理解了。TOTP将HOTP中的计数器C用当前时间T来替代,于是就得到了随着时间变化的一次性密码。非常有趣吧

虽然原理很简单,但是用时间来替代计数器会有一些特殊的问题,这些问题也很有意思,我们选取几个进行一下探讨。

​ 首先,时间T的值怎么选取?因为时间每时每刻都在变化,如果选择一个变化太快的T(例如从某一时间点开始的秒数,那么用户来不及输入密码。如果选择一个变化太慢的T(例如从某一时间点开始的小时数,那么第三方攻击者就有充足的时间去尝试所有可能的一次性密码(试想6位数字的一次性密码仅仅有10^6种组合,降低了密码的安全性。除此之外,变化太慢的T还会导致另一个问题。如果用户需要在短时间内两次登录账户,由于密码是一次性的不可重用,用户必须等到下一个一次性密码被生成时才能登录,这意味着最多需要等待59分59秒!这显然不可接受。综合以上考虑,Google选择了30秒作为时间片,T的数值为从Unix epoch(1970年1月1日 00:00:00)来经历的30秒的个数。

​ 第二个问题是,由于网络延时,用户输入延迟等因素,可能当服务器端接收到一次性密码时,T的数值已经改变,这样就会导致服务器计算的一次性密码值与用户输入的不同,验证失败。解决这个问题个一个方法是,服务器计算当前时间片以及前面的n个时间片内的一次性密码值,只要其中有一个与用户输入的密码相同,则验证通过。当然,n不能太大,否则会降低安全性。

​ 事实上,这个方法还有一个另外的功能。我们知道如果客户端和服务器的时钟有偏差,会造成与上面类似的问题,也就是客户端生成的密码和服务端生成的密码不一致。但是,如果服务器通过计算前n个时间片的密码并且成功验证之后,服务器就知道了客户端的时钟偏差。因此,下一次验证时,服务器就可以直接将偏差考虑在内进行计算,而不需要进行n次计算。

引入依赖

 

书写工具类( GoogleAuthenticator

 

生成验证码

如果用户是要进行绑定二次验证的话,使用 generateSecretKey() 方法生成密钥,返回给用户,用户使用这个密钥在验证器终端进行绑定,就可以获取六位数字。此方法返回的是字符串,用户只能手动输入的。也可以生成一个二维码,用验证器终端扫。

生成二维码的方式

文件中打印

 

其中《test@demo》 可以用登录名@产品名称给用户固定好 (自己测试可通过在线转换二维码,然后通过谷歌验证器扫描二维码添加到应用中,比如:https://cn.online-qrcode-generator.com/)

校验验证码

直接调用 check_code 方法即可。参数分别为 密钥,六位验证码,当前时间戳。


最新文章
把握关键词推广技巧 有效提升网站推广质量
seo的任务是提升关键词的排名,然而对商家来说,几个关键词排名的提升带来流量在有限的转化率下并不能为销售业绩带来质的飞跃。我们做网络推广,一方面要想办法提高网站的流量,例如加大力度做网站的seo,另
漫蛙漫画无广告弹窗打扰下载-漫蛙漫画无广告弹窗打扰纯净清爽无广告漫画软件下载链接页面入口
漫蛙漫画无广告弹窗打扰内置的漫画评分系统,让用户能够为自己的阅读体验打分,同时也为其他漫迷提供了宝贵的参考意见。而且会定期举办漫画创作大赛,为优秀的创作者提供展示机会和丰厚奖励,激发创作热情。喜欢的小伙伴欢迎点击下载,让自
百度蜘蛛池程序设计,提升网站SEO的利器,百度蜘蛛池程序设计
百度蜘蛛池程序设计是一种提升网站SEO的利器,通过模拟搜索引擎爬虫的行为,吸引更多的百度蜘蛛访问网站,提高网站的抓取和收录效率。这种程序设计可以模拟多个IP地址和浏览器环境,增加爬虫访问的多样性,提高网站的权重和排名。它还可以
炎晶光伏电站100MW接入山西国际能源集团新能源投资管理有限责任公司运营数据中心项目二次采购公告
****电站100MW****集团新能源****公司****中心项目二次采购公告项目所在地区:**省.**市.**县 ****(以下简称“招标代理”)受****(以下简称“采购人”)的委托,****电站100MW****集团新能源****公司****中心项目谈判采购文件进行国内公
无锡推广网络技术参考价格
无锡推广网络技术的参考价格会根据多种因素有所不同,例如推广渠道、推广方式、项目规模、服务内容以及推广的具体目标等。以下是一些常见网络推广服务的参考价格区间,供您参考: 1. 搜索引擎营销(SEM) - 关键词竞价:在百度、Google等搜
库里2015常规赛mvp赛季(库里2015年总决赛命中率)
1、15年总决赛库里场均26分6.3助攻,格林,汤普森,伊戈达拉呢?2、2015nba得分王和mvp3、14-15nba常规赛mvp是谁4、库里几次mvp总决赛欧文受伤之后德拉维多瓦成为防守库里主要人选,德拉维多瓦是一名防守著称的控卫,总决赛库里面对骑士队防守
“一起黑客网”揭开盗号集团内幕
  ◆ 600元终身学习盗号教程  批量盗各类网游帐号演示、制作钓鱼网站,每天收获上千QQ、600元终身学习盗号教程近日,一位对黑客技术一知半解的读者晓峰向记者介绍了一起黑客网(http://www.17hack.com),称无意中进入后一看是黑客技术
硬盘分区怎么改成mbr
在计算机领域,硬盘分区格式的转换是一个常见的操作,特别是在需要将GPT分区转换为MBR分区时。GPT(GUID分区表)和MBR(主引导记录)是两种不同的磁盘分区样式,各自具有不同的特点和适用场景。本文将详细介绍如何将硬盘分区从GPT改为MBR。
五种选择的可视化工具,用于探索Kafka
Apache Kafka是一个分布式流处理平台,能够处理大量实时数据。它广泛用于构建实时数据管道、消息队列和事件驱动的应用程序。Kafka的可视化工具可以帮助用户监控和管理Kafka集群,并更好地理解Kafka数据流。以下是对五种流行的Kafka可视化工
数智赋能 融合创新:数字化转型激发教育变革新动能丨IFIE2022·分论坛二
  2022年,教育部启动教育数字化战略行动,推出国家智慧教育公共服务平台,以推进技术与教育深度融合。教育数字化转型将通过创新教学模式、丰富资源供给、改革评价方式、优化教育治理等路径重塑数字化人才培养体系,重构智慧教育发展生态
相关文章
推荐文章
发表评论
0评