Twitterで2FA使いたいならパスキー"も"使ったらどうかという話

ritouです。

土曜なのに騒がしいですね。

blog.twitter.com

平日じゃないとID猫おっさんがSlackで活躍できないじゃないですか。その辺考慮お願いします。

gigazine.net

gigazineの人はたくさんのTwitterアカウントを持っていることがわかりました。

気を取り直して、まずはこのカオスは何なのかを整理しましょう。

ユーザー認証の特徴

そういえば最近ユーザー認証について振り返る機会がありました。

zenn.dev

今回話題になってる

  • SMS OTP
  • TOTP
  • セキュリティキー

あたりも説明していますので参考にどうぞ。

表題の通り、必ずしも2FAを使わなくてもいいんじゃないのって話もあります。

2FA使わなくてもいいんじゃないかという話

他のサービスとの使い回しを避け、推測不可能なパスワードを安全に管理でき、フィッシングに引っ掛からない自信があれば別に2FA使う必要はないでしょう。

令和の時代でこの辺の要件を満たそうとするとはパスワードマネージャーを利用すれば安全でしょう。 Twitterの普通の使い方ならこれでいいんじゃないかと思いますし、自分も本投稿の検証が終わったら2FA外します。

そういえば、パスワードマネージャーが同期していない端末で使うんじゃという方がいらっしゃいました。 そんな人のためにID連携を使う話もあります。

GoogleAppleアカウントでパスワード認証をショートカットできる

他のサービスとの使い回しを避け、推測不可能なパスワードを思いついて設定できるが自分では安全に管理できなかったり、フィッシングに引っかかってしまうかもしれないと思ったらGoogleAppleのアカウントを使ってログインしてみてもいいと思います。 自分はGoogleどっぷりな人生なので、ログイン画面にこういうのあったら使いたくなります。

既にGoogleにログインしているとこういうのも出るかもしれません。

One-Tap SignInってやつですね。 Twitterの中ではこれはパスワード認証と同じ扱い、つまり1段階というか要素というかにあたる扱いとなるようです。

なんと、これを使うために特に必要な設定はありません。 TwitterGmailのアドレスを登録していたらそのユーザーでログインできます。 (Gmailとかだから何とかなってるけど、ID連携でメアドをキーにしてユーザーの同意なしに紐づけるのはアンチパターンだと言ってるだろ。他のところが真似するからやめろ。)

ここからは2FAの話に入りましょう。

2FAを設定したらバックアップコードを保存するのを忘れずに

TOTPでも何でもいいですが、人生色々なことが起こります。 バックアップコードなるものをもらう機会があったら、いらんと思っても保存しておきましょう。

PCのWebからであればセキュリティキーと言いつつAndroid/iPhoneなどのパスキー使えるんじゃないか疑惑

今日の本題です。

Twitterはセキュリティキーが使えるって言ってますが、PC + モバイル端末を持っている場合はパスキーが使えます。

Androidの場合

自分は普段Androidを使っているのでそこからセキュリティキーを設定しようと思ったら、Webでやれって言われました。 そして、AndroidChromeから設定しようと思ったらこんな感じになりました。

これはセキュリティキーが必要ですね。家にYubiKeyとかいう名前のやつが4つぐらいありますが出してくるの面倒なので諦めました。

PCからやってみましょう。Chromeだとこんな感じのプロンプトになります。

あっ、この「別のデバイス」...QRで繋ぐFIDOの「hybrid transports」とかいうやつです。

まずは手元のAndroidでパスキーを生成して設定してみます。 PCのChromeから使う時は、またQRコード読み取りかpush通知によってAndroidと接続し、パスキーの認証ができます。

Safariからもこんな感じでQRコードを使って接続して使えます。

次に、パスキーが設定されているAndroidでのログインフローを確認してみました。

AndroidChromeTwitterにログインしようとすると、WebAuthnで登録済みのパスキーによる認証が要求されます。 当然ながらAndroidでそのパスキーを管理しているので、これまでのFIDOのフローのようにローカル認証が要求されてそれが終わるとログインできました。(スクショなし)

AndroidTwitterアプリにログインしようとすると、一度ブラウザが開かれてそこで先ほどと同様のローカル認証が要求されました。 そこを突破すると「ログインしますか?(おそらくアプリに)」みたいな画面が出てきてアプリにもログイン成功しました。

Android複数持ちでパスキーが同期されている端末でも同じ挙動になります。

iOS/iPadOS系端末

少し話を戻して、iPadiPhoneでパスキーを生成して登録してみます。この登録のところはAndroidの時と変わりません。

次に、iCloud KeyChainでパスキーが同期されているMacOSSafariでログインをしようとすると、パスワード認証の後にローカル認証が要求されます。MacOSだけで完結するので楽です。

これもだいぶ楽。ってかパスキー使えるならもうパスワードいらない。

まとめ

  • 2FA無理して使わなくてもいいという話はある
  • PCだとセキュリティキーを選んでiPhoneAndroidで繋げられるものがある
  • Androidで生成したパスキーはhybridでPCと繋ぎつつ、Android内ではローカル認証だけで使える
  • iOS/iPadOSで生成したパスキーが同期されている端末であれば、そのままローカル認証で使える

というように、パスキー生成(登録)のところだけモバイル端末を使ってやるとセキュリティキーよりちょっと便利になりそうというお話でした。フィッシング耐性もあってTOTPをガチャガチャコピペよりは楽でしょう?

ご自身の利用環境を踏まえ、便利になりそうだったら試してみてはいかがでしょうか?何かあっても責任は取れません! 不安な時は他の認証方式も設定したりバックアップコードの保存を忘れないようにしましょう。

ではまた! おっとその前に2FAの設定を戻します。

おまけ

この認証方式の関連というか整理をしっかりして理解を深めたいと思った開発者の方に最適なイベントがあります。

openid.connpass.com

この機会に沼に足を踏み入れてみてはいかがでしょうか?