OTP (one-time password) 不像靜態密碼容易被暴力破解。常見的刷卡認證簡訊中的動態密碼就是一種。
HOTP
HOTP 是使用 HMAC 的 OTP。其中 HMAC 使用的 message 為 count。
TOTP
TOTP 是使用 時間
作為 message
的 HOTP。
時間
使用 Unix epoch timestamp
對 30sec(預設值) 取商
計算過程
- 先計算 hmac 值:
hmac = HMAC(key, message)
。 - 取 hmac 的
最後 4 個 bit
的值作為i
。 - 再透過 i 取出 hmac 中的 31 bit,從 bit
8(i-1)+1
到8(i+3)-1
- 轉為十進位去最後 6 位(預設值)