中国如何动态口令同步?
这个问题问得有点意思。从网络安全的角度来讲,大家一直认为,密码是最不靠谱的保护手段之一(另外不靠谱的还包括用户名/邮箱地址等),而TOTP 这种以时间戳为基础的认证机制才是王道。然而事实真的如此吗?
先给出答案,虽然OATH 协议已经被淘汰,但 TLS 的 1.3 版本以及 FIDO 所推荐的 U2F 都实现了对 OATH 的支持;更重要的是,在现有的互联网环境中,基于短信、邮件和硬件钥匙的 OATH 实现仍然广泛存在而且可以取得很好的实用效果! 这里要提到一个概念叫做“密钥链”(keychain),它是加密领域中一个重要而又令人摸不着头脑的概念。简单地说,它是一个数据库,里面存放着很多重要的信息:
• 一些密钥的副本,用于加密通信
• 一些私钥的副本,用来签名
• 一串随机数,用于产生会话键
• 一个时间戳服务器的 URL,用于获得当前时间和日期信息
• 一些证书文件的副本
如果这些数据丢失或者被篡改,就可以认为这条“链”断裂了,你的数字生活将失去保障。
而 TOTP 和 OATH 都通过时间戳和随机数来生成可永久使用的会话键。由于每次生成的会话键都是不同的,所以即使有人得到了你的会话键,没有时间的流逝和对应的随机数,他也无法重放使用该会话键进行认证。当然这个前提是你的手机没被盗,或者你收到含有随机数的邮件时没点开恶意链接。否则任何一处环节出了问题,都会使你的安全防线崩溃。
也许你会说,我从来不用邮件或短信验证啊,我的账号只有我和我的电脑知道,怎么会被别人得到我的会话键呢? 那么我要告诉你,你的账号被黑客偷窥了,你的文件被远端人控制了……