动态密码算法介绍与实现

本文介绍了动态密码(OTP)的基本概念、分类及其在安全认证中的应用。动态密码分为计次使用的HOTP和计时使用的TOTP算法,两者都基于事件或时间生成一次性密码。文章详细讲解了HOTP的Truncate截断函数,并提供了Ruby实现示例。同时,讨论了TOTP算法以及Google Authenticator的工作原理,强调了多设备同步和时间窗口的边界问题。
摘要由CSDN通过智能技术生成

动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二步验证机制,那么,技术运用,既要知其然,更要知其所以然,动态密码算法是怎样的?

读前指引

  • 通过这篇文章,你可以了解以下知识:

    • 动态密码的背景知识

    • 动态密码的分类

    • 不同动态密码的生成算法,HOTP 以及 TOTP

    • HOTP 以及 TOTP 的简单的 Ruby 编程语言的实现

    • 两类算法各自注意事项

  • 限于篇幅,我不会讨论以下几点,有兴趣的同学可以参考我文章末尾给出的参考资料了解:

    • 不同动态密码的安全性分析

    • 计时动态密码如何确保有效期间内,密码不被二次使用

动态密码背景介绍

从我的角度理解,动态密码是指随着某一事件(密码被使用、一定的时间流逝等)的发生而重新生成的密码,因为动态密码本身最大优点是防重复执行攻击(replay attack),它能很好地避免类似静态密码可能被暴力破解等的缺陷,现实运用中,一般采用“静态密码+动态密码”相结合的双因素认证,我们也称二步验证。

而动态密码其实很早就出现在我们的生活里了,在移动支付发展起来之前,网银是当时最为流行的在线支付渠道,当时银行为了确保大家的网银账号支付安全,都会给网银客户配发动态密码卡,比如中国银行电子口令卡(按时间差定时生成新密码,口令卡自带电池,可保证连续使用几年),或者工商银行的电子银行口令卡(网银支付网页每次生成不同的行列序号,用户根据指定行列组合刮开密码卡上的涂层获取密码,密码使用后失效),又或者银行强制要求的短信验证码,这些都可以纳入动态密码的范畴。
中行电子口令卡
工行电子银行口令卡

而随着移动互联网的发展以及移动设备的智能化的不断提高,设备间的同步能力大幅提升,以前依赖独立设备的动态密码生成技术很快演变成了手机上的动态密码生成软件,以手机软件的形式生成动态密码的方式极大提高了动态密码的便携性,一个用户一个手机就可以管理任意多个动态密码的生成,这也使得在网站上推动二步验证减少了很多阻力,因为以往客户可能因为使用口令卡太麻烦,而拒绝打开二步验证机制,从而让自己的账号暴露在风险之下。最为知名的动态密码生成软件,当属 Google 的 Authenticator APP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值