YubiKeyでTwitterアカウントを保護する

Yubico社のセキュリティキーYubiKey 5 NFC を購入しました。
とりあえず、Twitter のアカウントを保護することに使ってみたので、その際の手順と、セキュリティキーを紛失・破損した場合の代替手段について解説します。

はじめに

Twitter のログインについて

Twitter にログインする方法は、下記2つのいずれかを選択することができます。

  • Twitter アカウントのID(電話番号/メールアドレス/ユーザー名)とパスワードを使う
  • 他サイト(Google/Apple)のアカウントを使う

今回解説するのは1つ目「Twitter アカウントのID(電話番号/メールアドレス/ユーザー名)とパスワードを使う」の方で、IDとパスワードに加えてセキュリティキーを認証要素として登録するものになります。

Twitter の2要素認証について

Twitter の2要素認証では、2要素目に下記3つの方法を選択できるようになっています。(複数選択も可能)

  • テキストメッセージ
    • 登録した携帯電話番号にSMSで認証コードを通知して入力させる
  • 認証アプリ
    • スマホのGoogle 認証システム等のアプリに表示される認証コードを入力させる
  • セキュリティキー
    • YubiKey やGoogle のTitan Security Key 等のUSBタイプのセキュリティキーをパソコンに物理的に接続してタップ(またはスマホにNFCで無線接続)する

セキュリティキーは物理的にUSBキーを持っていることで当人確認する仕組みなので、セキュリティキーがユーザーの手元にある限り、第三者による不正ログインが成立しないことから、とても安全な仕組みとされています。

セキュリティキーを紛失・破損時の代替手段

セキュリティキーは物理的なUSBキーなので、紛失や破損した場合の代替手段を準備しておく必要があります。

  • バックアップ用の別のセキュリティキーも登録しておく
  • 2要素認証のテキストメッセージも登録しておく
  • 2要素認証の認証アプリも登録しておく
  • バックアップコードを控えておく

バックアップコードは、TOTPのように時間によって変化しない使い捨ての認証コードで、2要素目に使うことができる仕組みとして用意されています。
発行された認証コードは安全な場所に保管しておく必要があるのと、認証コードは使い捨てなので、使用した場合は新しい認証コードを発行して保管するという運用が必要です。

環境

今回使った環境です。

セキュリティキー

  • YubiKey 5 NFC

パソコン

  • Mac
  • Chrome

スマホ

  • Android
  • Twitterアプリ

セキュリティキーの設定(パソコン)

ブラウザでTwitter にログインした状態で、以下の流れでメニューを選択して2要素認証のページを表示します。

  1. サイドメニューの[もっと見る] を開き、[設定とプライバシー] をクリック
  2. [セキュリティとアカウントアクセス] > [セキュリティ] > [2要素認証] をクリック
設定(2要素認証)
※ イメージは認証アプリが既に設定されていた状態

[セキュリティキー] のチェックボックスをクリックします。

設定(パスワードを入力)

パスワードを入力します。

設定(セキュリティキー)ステップ1

[はじめる]をクリックします。

設定(セキュリティキー)ステップ2

[キーを追加] をクリックします。

設定(Chromeの小ウィンドウ)

[USBセキュリティキー] をクリックします。

設定(Chromeの小ウィンドウ)セキュリティキー

セキュリティキーを挿入し、タップしてください” と表示されたら、USB ポートにYubiKey を挿入します。
挿入するとYubiKey 本体が点滅するので指でタップします。

設定(セキュリティキーの名前)

登録したセキュリティキーに付ける任意の名前を入力して[次へ] をクリックすると、”完了しました” のページが表示されます。

どういう名前をつけるか?
・セキュリティキーを1つしか持っていないなら”YubiKey” でよい
・複数持っている場合は、
(1) どのYubiKey か分かる名前にする(例:”YubiKey 5 NFC” 、”Security Key NFC”)
(2) メインで使うものと予備用の使い分けが分かる名前にする(例:”Primary YubiKey”、”Backup YubiKey”)

設定(完了)

上の画像の赤枠の箇所にバックアップコードが表示されるので、安全な場所に保管しておきます。

バックアップコードをどうやって保管するか?
・物理的なノートに手書きする
・スクリーンショットの画像ファイルをパスワードマネージャー(1Password等)に保存する

[完了] をクリックすると設定は終了になります。

[パックアップコードを取得] をクリックすると、バックアップコードのページが表示されます。

設定(バックアップコード)

バックアップコードのページには、完了しましたのページに表示されていたのと同じバックアップコードが表示されます。
バックアップコードのページは、2要素認証のページにある[バックアップコード] をクリックして表示できるので、後で見ることができます。

青字の”新しいコードを生成” をクリックして新しいコードを発行することができます。新しいコードを発行すると古いコードは使えなくなるので、クリックした場合は新しいコードを保管しておく必要があります。

設定(2要素認証)

2要素認証のページに戻ると、[セキュリティキー] のチェックがONになっています。これで設定は終了です。

複数のセキュリティキーを登録したい場合は、青字の”セキュリティキーを管理” をクリックして表示されるセキュリティキーを管理のページで”別のキーを追加” から追加の登録をすることができます。

設定(セキュリティキーを管理)

セキュリティキーを使ってログイン(パソコン)

ブラウザでTwitter のログインページを表示します。

Twitterログイン

電話番号/メールアドレス/ユーザー名 を入力して[次へ] をクリックします。

Twitterログイン(パスワードを入力)

パスワードを入力して[ログイン] をクリックします。

Twitterログイン(Chromeの小ウィンドウ)
Chromeの小ウィンドウ

twitter.comで本人確認を行う” と表示されたら、[USBセキュリティキー] をクリックします。

なお、既にUSB ポートにYubiKey を挿入していると、このChrome の小ウィンドウが表示された時点でYubiKey 本体が点滅するので指でタップします。これでログインが完了します。
この場合、次の小ウィンドウは表示されないです。

Twitterログイン(Chromeの小ウィンドウ)セキュリティキー
Chromeの小ウィンドウ

セキュリティキーを挿入し、タップしてください” と表示されたら、USB ポートにYubiKey を挿入します。
挿入するとYubiKey 本体が点滅するので指でタップします。これでログインが完了します。

セキュリティキーを使ってログイン(スマホ)

Twitter アプリを起動してログインページを表示します。

Twitterログイン(スマホ)

電話番号/メールアドレス/ユーザー名 を入力して[次へ] をタップします。

Twitterログイン(パスワード入力)

パスワードを入力して[ログイン] をタップします。

Twitterログイン(Chromeのウィンドウ)

twitter.comでセキュリティキーを使用する” と表示されたら、イメージのようにスマホの背面にYubiKey を添えるようにくっつけます。

Twitterログイン(完了)

成功” と表示されたら[ログイン] をタップします。これでログインが完了します。

バックアップコードを使ってログイン(パソコン)

前述「セキュリティキーを使ってログイン(パソコン)」でパスワード入力後に表示されるChromeの小ウィンドウ(*)で[キャンセル] をクリックすると”別の認証方法を選択” のページが表示されます。

ログイン(別の認証方法を選択)

[バックアップコードを使用] のチェックボックスをクリックして[次へ] をクリックします。

ログイン(バックアップコードを入力)

バックアップコードを入力して[次へ] をクリックするとログインが完了します。

あとがき

  • 使用するセキュリティキーについて
    • 今回使用したのは高機能のYubiKey 5 シリーズ(最安モデル$45 USD)
    • 個人向けのSecurity Key シリーズ(最安モデル$25 USD)でも同じことはできる
  • テキストメッセージや認証アプリの2要素認証で十分では?
    • それらは追加費用が掛からないので誰でも手軽に導入できる点はいい
    • ユーザが入力したID・パスワードと2要素目の認証コードを入力させて、裏で自動で正規のサイトに入力する偽サイトがあるので、その方式だとそのような仕掛けを用意したフィッシング攻撃に引っかかると攻撃者に不正アクセスされてしまうので、十分とは言い切れない
  • 個人用のTwitter アカウントでそこまでする必要あるか?
    • 分かりません
  • 法人用のアカウントはセキュリティキーを使った方がよい?
    • セキュリティキーを使えば、専用のスマホを法人が用意する必要ない。セキュリティキーの方が低コスト、管理しやすいと思われる
    • スマホが必要な方式で個人のスマホが使われると何かが起こる(スマホの紛失、担当者が退職してログインできなくなる等)
  • セキュリティキーを紛失してバックアップコードもどこかにいってしまった。予備の2要素認証も設定していない。。
    • パスワードを忘れた場合はこちら” を使ってリカバリしましょう!(今回の調査範囲外)

参考