算法~totp用作签名防止url被复用

之前写过关于totp的文章,对它的基础有不清楚的同学,可以先看我的这篇文章《TOTP基础一》《TOTP基础二》

想到的问题

因为totp是把时间分成了一个一个小的时间窗口,当生成totp的和校验totp的服务器不在一起时间窗口,就会出现验证失败的问题,这是不可避免的,时间戳是一个long类型的数字,当这个数字进行totp运算后,落在哪个窗口里是确定的,但你的时间戳数字是不确定的,因为你不知道用户在什么时间触发totp这个生产的动作。

时间窗口

从下面的图中可以看到,时间两个窗口总会有一个交叉,谁赶上了都不一定,所以我们要解决这个不一定的问题。
算法~totp用作签名防止url被复用

最多跨一个窗口

我们的生成totp端和校验totp端,他们最多相差一个窗口,当然这也取决于,生产和校验的时间差和你的窗口大小,正常情况下相差1个窗口,所以我们比较上一个和下一个窗口即可。

我们在进行校验时,用这3个totp码与目标totp进行对比,有一个满足,就说明是合法的!即,我们的容错率是前后1个窗口。

作者:仓储大叔,张占岭,
荣誉:微软MVP
:853066980

支付宝扫一扫,为大叔打赏!

算法~totp用作签名防止url被复用

给TA打赏
共{{data.count}}人
人已打赏
其他

Airtest:各平台的剪切板功能汇总

2023-11-18 14:34:06

其他

第七章 数字签名和认证协议 —— 现代密码学(杨波)课后题答案解析

2023-11-18 14:34:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索