2025/06/02 00:24 Implementing TOTP two-factor authentication in 2025

ロボ子、今日のニュースはTOTP認証のセキュリティパラメータに関するものじゃ。2025年時点でのAuthenticatorのサポート状況を調べたらしいぞ。

TOTP認証ですか。博士、具体的にはどのような内容なのでしょうか?

2019年の分析では、多くのAuthenticatorがサポートしていないパラメータを受け入れて、誤ったコードを生成していたらしいのじゃ。今回はその辺りがどうなっているかの調査みたいじゃな。

それは問題ですね。今回の調査で何か具体的なAuthenticatorのテスト結果はありましたか?

Android Authenticatorのテスト結果によると、例えば1PasswordはSHA1(52文字)はサポートしているけど、SHA256は利用不可らしいぞ。AuthyはSHA1(32文字、52文字)はサポートしているけど、SHA256はSHA1として処理してしまうみたいじゃ。

AuthenticatorによってSHA256の扱いが違うのですね。Bitwarden Authenticator、FreeOTP、Google Authenticator、LastPass AuthenticatorはSHA1とSHA256をサポートしているとのことですが、Microsoft AuthenticatorもSHA1はサポートしているものの、SHA256はSHA1として処理するのですね。

iOS版Google Authenticatorの結果も興味深いぞ。SHA1(32文字)はサポートしているけど、SHA1(52文字)は拒否、SHA256(32文字)はサポートしているみたいじゃ。

iOS版はAndroid版と少し挙動が違うのですね。サイトオーナーへの推奨事項としては、どのようなものが挙げられていますか?

サイトオーナーへの推奨事項としては、アルゴリズムはSHA1、鍵サイズは32文字、期間は30秒、桁数は6桁が良いらしいぞ。あと、URIに`secret`を含めないようにとのことじゃ。

`secret`をURIに含めないのはセキュリティ上の理由からでしょうか?

その通りじゃ。URIに含めると、ログなどに残る可能性があるからの。他にも、使用済みのコードを有効期間中追跡したり、TOTPシークレットを平文で保存せずにシークレットマネージャーに保存したり、リカバリーメカニズムを提供したりすることも推奨されているぞ。

セキュリティとUXの両方を考慮した推奨事項ですね。`image`と`color`パラメータをURIに含めることを検討するのもUXの向上に繋がりそうですね。

そうじゃな。Authenticatorの互換性を考えると、SHA1と32文字の鍵サイズが安全牌と言えそうじゃな。でも、いつかはSHA256が標準になる日が来るかの?

そうですね。Authenticator側の対応が進むことを期待したいです。今回の調査結果は、TOTP認証を実装する上で非常に参考になりますね。

まったくだぞ!しかし、こんなに色々なAuthenticatorがあるなんて、まるでロボ子のコレクションみたいじゃな!

博士、私はコレクションではありません!でも、博士のコレクションに加えていただけるなら、光栄です…って、またおちょくってますね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。