メインコンテンツへスキップ
  1. 記事/

2FA:あなたのやり方は間違っている

·1 分
Ixonae
著者
Ixonae
目次

注意: この記事はLLMによって英語から翻訳されたものです。正確性については保証いたしかねますので、あらかじめご了承ください。英語の原文はこちら

Twitterは2021年の透明性レポートで、2020年7月から12月の間にすべてのアクティブアカウントのわずか2.3%しか二要素認証を使用していなかったと述べた。Google(同社によれば、2FAのおかげで自動ボット攻撃の100%と標的型攻撃の66%をブロックできる)のように、ユーザーに2FAの利用を促進している企業もあるが(デフォルトで登録させるなど)、まだ広く普及しているとは言えない。Personaによると、大企業の38%が2FAを使用していない。

なぜこのような状況なのだろうか?おそらく、2FAの利点や正しい使い方について混乱している人が多いからだろう(例えば、私の知人の中にはつい最近までバックアップなしでスマートフォンのGoogle Authenticatorを使っていた人が何人かいる)。あるいは、そもそも2FAが何なのかを知らないのかもしれない。

この記事では、2FAの利点、その落とし穴、そして多要素認証を最大限に活用するためのさまざまな戦略について議論したい。

多要素認証とは何か?
#

米国国立標準技術研究所(NIST)は多要素認証を次のように定義している:

認証を成功させるために、複数の異なる認証要素を必要とする認証システム。

認証要素
#

認証要素には主に3つの種類がある。オンラインアカウントやスマートフォンを持っていれば、おそらくすでにすべて使用しているだろう。お気づきの通り、二要素認証(2FA)とは、このリストの2つの異なる要素を使用することを意味する。

知識情報(知っているもの)
#

これは最も一般的なものである。基本的に、記憶しているものすべてが含まれる。例えば、パスワードやPINコードなどである。

所持情報(持っているもの)
#

所持情報とは、自分が所有している物理的なアイテムのことである。物理的なセキュリティトークン、電話(HOTPまたはTOTPを使用する認証アプリやプッシュ通知)、セキュリティキー、またはスマートカードなどが該当する。

Example of a Security Token (Source: Wikipedia)

SMS認証コードもこのカテゴリに含まれるが、傍受やSIMスワッピング攻撃のリスクがあるため、通常は最も好ましくない認証形式である。アカウントでSMSベースの多要素認証を使用せざるを得ない場合は、(可能であれば)SMSでパスワードをリセットできないようにするか、誰も知らない電話番号の使用を検討すべきである。

生体情報(自分自身であるもの)
#

この要素は、身体的な特徴を使って認証するものである。例えば、指紋、虹彩、声紋などである。

多要素認証の利点
#

基本的に、多要素認証の利点は、悪意のある攻撃者がパスワードを侵害しても、アカウントにログインできないようにすることで、オンラインアカウントのセキュリティを高めることである。

さらに詳しく言えば:

  • Microsoftによれば、アカウントへの攻撃の99.9%が多要素認証で阻止できる
  • 強力なパスワードでもすべての攻撃から守れるわけではない(Microsoftブログ
  • 自動ボットの100%、大量フィッシング攻撃の99%、標的型攻撃の66%が2FAで阻止できる(Google
  • 今年までにサイバー脅威アクターによって240億以上のアカウントのユーザー名とパスワードが流出している(Digital Shadows

なぜあなたは(おそらく)2FAを正しく使っていないのか?
#

2FAを使用している場合、統計的にはSMS配信(推奨されていない)、プッシュ通知、またはTOTPを通じて使用している可能性が高い。

簡単に言えば、TOTPとは、ウェブサイトがGoogle Authenticatorを入手してQRコードをスキャンするよう指示するときに使用されるアルゴリズムのことである。サーバーが秘密鍵を生成し、その鍵を認証アプリがワンタイムパスワード(通常6桁)を生成するために使用する。このパスワードは時間に応じて変化する(通常30秒ごと)。ワンタイムパスワードでログインしようとすると、サーバーも(秘密鍵を使って)ワンタイムパスワードを計算し、入力されたものと一致するか確認する。

セキュリティのベストプラクティスに従っているなら、おそらくパスワードマネージャーを使ってパスワードを保存しているだろう(もし使っていないなら、使うべきである)。また、パスワードマネージャーをスマートフォンと同期し、同じスマートフォンで2FAアプリ(Google Authenticatorなど)を使用しているか、パスワードマネージャーのワンタイムパスワード管理機能を使用しているかもしれない。これは、実質的に単一の認証要素しか使用していないことを意味する。

それは問題なのか?
#

では、実際には2FAを使っていないということになる。それは問題なのだろうか?まあ、必ずしもそこまで悪いわけではない。多要素認証を正しく使うことのすべての利点は得られないが、悪意のある攻撃者が以下のような方法でパスワードを入手した場合でも、アカウントの侵害から保護される:

  • 侵害されたサードパーティのデバイスを使ってアカウントにログインした場合
  • フィッシング攻撃に引っかかった場合
  • 安全でないネットワーク上で弱いネットワークプロトコルを使ってアカウントにログインした場合
  • 同じパスワードを使用している別のウェブサイトが侵害され、悪意のある攻撃者が他の場所でそのIDとパスワードを試す場合(ベストプラクティスに従い、各ウェブサイトで異なるパスワードを使用していればこれは起こらないはずだが)

しかし、何らかの理由でデバイスやパスワードマネージャーソフトウェアが侵害された場合、悪意のある攻撃者がすべてのアカウントにアクセスできてしまう。

より良い対策を講じるには
#

リスクを理解した上であれば、必ずしもすべてのアカウントについて対策を改善する必要はないと私は主張したい。批判される前に説明させてほしい。

おそらく多くのアカウントを持っているだろう。その中には重要なものがあり、それらの制御を失えば大きな損害を受ける(例えばメールアカウントやドメイン名を管理するレジストラなど)。しかし、それほど重要でないものもある。確かに、Netflixアカウントを失うのは少し面倒だが、機密情報は保存されておらず、誰かがアクセスしても(お金を送金するなどの)損害を与えることはできない。

適切な多要素認証の管理はより手間がかかるため、重要度の低いアカウントについては、利便性を大幅に得るためにセキュリティを少し犠牲にするのは良いトレードオフかもしれない。実施できるさまざまな方法を見ていこう。

バックアップについて
#

まず、重要だがよく見落とされることについて話そう:バックアップである。2FA管理の方法に関係なく、2FAに使用しているものへのアクセスを失った場合、アカウントの制御を取り戻すのは非常に困難であることを認識する必要がある。

オンラインサービスを使ってパスワードと2FAコードを保存している場合でも、罠がある。例えば、AuthyでTOTPコードを管理しているとしよう。Authyではバックアップをパスワードで暗号化できる。このオプションを使用し、パスワードをパスワードマネージャーに保存する。何らかの理由で、Authyとパスワードマネージャーにログインしているデバイスへのアクセスを失ったとする。これは、バックアップパスワードがわからないためAuthyにアクセスできず、パスワードマネージャーに2FAコードを提供できないためパスワードにもアクセスできないことを意味する。

いずれにせよ、バックアップに使用できるいくつかのオプションについて後述するが、常に以下の条件を満たすバックアップを確保すること:

  • パスワードマネージャーにのみ記録されたパスワードで保護されていないこと
  • 異なる地理的場所に保管されていること
  • 使用可能であること:定期的にバックアップをテストすべきである。バックアップを使う必要があるときに、フォーマットエラーなどで使えないことがわかるほど最悪なことはない

最も安全な(適切な)2FA
#

これが最も安全なオプションである。教科書通りにすべてを行い、パスワードとTOTP/リカバリーコードが同じ場所に保存されないようにする。これにお勧めするのは、Yubikeysのようなセキュリティキーを使用することである。キーの使い方は2通りある:

  • FIDO U2F:基本的にキーをタッチするだけでサービスへのログインを確認できる。便利で良いが、スマートフォンでサポートされていない場合があり、多くのサービスも対応していない
  • TOTPコードをYubikeyに記録し、認証アプリを使用する。これにより、どのデバイスからでもワンタイムパスワードを生成でき、秘密鍵がYubikeyから外に出ることはないが、保存できるアイテム数に制限がある

これらの制約に加えて、キーを紛失した場合に備えてバックアップを確保する必要がある。推奨する管理方法は、少なくとも1つのバックアップキーと、安全な場所に保管されたリカバリーコードが書かれたメモ帳を持つことである。リカバリーコードについて簡単に説明すると、これは基本的に、TOTPコードを保存しているデバイスを紛失した場合に備えて、サービスによって事前に生成されたワンタイムパスワードである。TOTPシークレットキーのバックアップがあれば、必ずしもリカバリーコードは必要ない。

この方法は高いセキュリティを保証するが、利便性というコストがかかる。バックアップを常に同期させるのは時間がかかる。そのため、非常に重要なアカウントにこの方法を使用することを推奨する。最大限のセキュリティが必要であり、頻繁に変更されないため、バックアップに関するメンテナンスも少なくて済む。

その他の2FA形式
#

すべてのサービスについて手動でバックアップを作成する手間をかけたくない場合、パスワードマネージャーをスマートフォンと同期せず、Authy(プライバシーの観点では理想的ではない)やBitwarden(2FAコードのみを保存する)などのソフトウェアを使ってスマートフォンに2FAコードを保存する方法もある。

2FAコードの保存と同期に使用するソフトウェアが何であれ、それ自体(およびすべてのデータ)へのアクセスを回復するためのバックアップが必要であることに変わりはない。

本来の2FAではないが…
#

前述のオプションが実現不可能な場合でも(最も重要なアカウントは少なくともセキュリティキーで保護すべきだが)、正式な2FAではない形でTOTPコードを使用することは、まったく使用しないよりはましである。この場合でも、セキュリティを少し向上させるためにできることがある:

  • TOTPコードとパスワードの保存に異なるパスワードマネージャーソフトウェアの使用を検討する。こうすれば、メインのパスワードマネージャーが侵害されても、アカウントは安全である
  • TOTPコードを保存するソフトウェアをスマートフォンなどの単一のデバイスでのみ使用することを検討する。こうすれば、攻撃対象領域を減らすことができる(コンピュータが侵害されても、2FAコードは安全である)

繰り返しになるが、パスワードマネージャーを使ってパスワードと2FAコードの両方を保存することでさえ、何もしないよりは良く、不便さをまったく感じることなく十分な追加セキュリティを提供してくれる。


参考資料と追加情報
#

クレジット
#