経緯:ひょんなきっかけで TOTP の実装機会があった。RFC 文書からは 0→1 でコード実装した経験ないので、せっかくなので RFC だけ見て Rust で実装する事にした。 概要:OATH や 2FA で使われている、TOTP(Time-based One-Time Password)アルゴリズムの概念と実装をメモ。RFC6238準拠。 単語: TOTP: 2011 年に HOTP の拡張として誕生。RFC6238 準拠。「ユーザー&サーバー間で共有されてる秘密 token、時間情報」をもとに OTP を生成する。HOTP と違って時間情報をもとにするからブルートフォースに対する防御力は強い。勿論キーロガーなどされたら即死。またオンラインと通信しながら時刻を調整できる正確なクロックが内蔵されていれば問題ないが、そうでないサーバーの場合もありえるので、RFC では許容幅について言及して