TOTP算法与HOTP算法

1、算法定义

TOTP (Time-based One-Time Password)和 HOTP(HMAC-based One-Time Password)是两种常见的动态口令生成算法,均基于哈希运算生成一次性密码。两者的相同点和差异如下:

两者相同点:

**1)​​基于HMAC的哈希运算​:**两者均使用 ​​HMAC(Hash-based Message Authentication Code)​​ 作为核心算法,通常采用 ​​SHA-1​​(或其他哈希算法如SHA-256)生成一次性密码。

**2)​​共享密钥​​:**都需要预先在客户端(如令牌/App)和服务端之间共享一个 ​​静态密钥(Secret Key)​​,用于生成和验证密码。

3)一次性密码​​:生成的密码均为一次性有效,使用后即失效,增强安全性。

4)标准化实现​ ​:均遵循 ​​RFC标准​​(HOTP: RFC 4226;TOTP: RFC 6238),兼容性高。

两者差异:​

​特性​ ​HOTP​ ​TOTP​
​触发机制​ 基于事件(计数器递增) 基于时间(当前时间窗口)
​动态因子​ 计数器(Counter) 时间戳(Timestamp)
​同步要求​ 需同步计数器(客户端和服务端一致) 需时间同步(允许±时间容差)
​使用场景​ 硬件令牌、无网络环境 软件令牌(如Google Authenticator)
​防重放攻击​ 依赖计数器递增,需服务端记录最新值 时间窗口过期后密码失效

2、算法应用

2.1、HOTP(基于计数器)的应用​

HOTP 主要用于 ​​事件触发的动态口令​​,适用于需要离线生成或手动触发

1)硬件令牌(OTP设备)

如 ​​YubiKey(部分模式)​​、RSA SecurID(早期版本)等物理设备,用户按下按钮生成密码,计数器递增;适用于无网络环境(如企业内网)。

2)银行动态口令卡

部分银行的实体令牌(如华夏银行的动态口令牌),每次交易需生成新密码,依赖计数器同步。

2.2、​TOTP(基于时间)的应用

TOTP 主要用于 ​​时间敏感的动态口令​​,依赖时间同步,适合互联网服务。

1)软件认证器

Google Authenticator​​、Microsoft Authenticator、Authy 等App均采用TOTP,为账户生成30秒刷新的6位数密码。

2)企业VPN/云服务登录

如 ​Cisco VPN​​、阿里云、腾讯云等,通过TOTP实现双因素认证。

3)智能家居与IoT设备

部分智能设备(如NAS系统)通过TOTP实现安全配置访问。

智能门锁中还可以应用TOTP生成短时离线开锁的数字密码。

相关推荐
geats人山人海1 小时前
数据结构第六章c语言 树的存储下二叉树的概念和存储
c语言·数据结构·算法
Lumos6fly1 小时前
《ESP32 物联网全栈实战-07》BLE 蓝牙
物联网
漂流瓶jz1 小时前
UVA-12627 奇怪的气球膨胀 题解答案代码 算法竞赛入门经典第二版
算法·图论·递归·aoapc·算法竞赛入门经典·uva·12627
影视飓风TIM2 小时前
Linux下C语言缓冲区原理 + Git版本控制
linux·c语言·git
jarvisuni2 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
kobesdu2 小时前
流形上的优化:SO(3)与SE(3)的广义加减法在FAST-LIO中如何简化状态估计
人工智能·算法·fastlio
白狐_7982 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
乐观勇敢坚强的老彭2 小时前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
万亿少女的梦1682 小时前
基于STM32、RFID与OneNET的开放性实验室电源节点设计
stm32·物联网·onenet·rfid·esp8266