生体認証による自動認証の時代が間もなく到来します。AppleのFace ID、Windows 10のHello、そして近々登場するFIDO2仕様が登場した今でも、パスワードは依然として様々なアカウントへのログインの主な手段です。だからこそ、2要素認証(2FA)は、オンラインデータとサービスを守るための重要な二次的対策なのです。
2 要素認証または多要素認証は、アカウントの追加ログイン コードであり、機密情報に対する第 2 の防御線となります。
基本的な考え方は、重要なアカウントに単一のパスワードを使用するだけでは不十分だということです。パスワードが推測されたり、ハッカーがログイン情報を平文で保存したデータベースを盗んだりした場合、アカウントは格好の標的となります。2要素認証は、アカウントにアクセスする前に、ワンタイムパスワード(OTP)と呼ばれる二次的なコード(通常はスマートフォンアプリで生成される6文字)の入力を求めることで、この脆弱性を解消しようとします。これにより、たとえハッカーがパスワードを入手したとしても、二次的なコードを解読する必要があり、侵入がはるかに困難になります。
2FAを使用するより簡単な方法として、Google、Facebook、その他多くの企業がサポートしているFIDO U2F規格があります。この認証方法では、物理的なセキュリティキーをPCに挿入し、キーのボタンに触れるだけで「自動的に」ログインできます。

Google の Titan セキュリティ キー。
しかし、2FAは完璧ではありません。例えば、SMSで2FAコードを取得する場合、Positive Technologiesの研究者が2017年に実証したように、ハッカーにコードを傍受される可能性があります。とはいえ、SMS認証は何もしないよりははるかに優れています。2019年5月、Googleはニューヨーク大学およびカリフォルニア大学サンディエゴ校と共同で実施した1年間の研究を発表しました。この3つの研究によると、SMS認証は、大量のフィッシング攻撃の96%、Googleアカウントへの侵入を試みる標的型攻撃の76%をブロックしました。
これは悪くない保護対策ですが、Googleのデバイス内プロンプト戦略(後述)はさらに優れており、大量フィッシング攻撃の99%、標的型攻撃の90%をブロックしました。アプリベースの2要素認証は、2段階認証がスマートフォン本体で生成されるという点で似ています。そのため、この調査では2要素認証アプリについては具体的に言及していませんが、デバイス内プロンプトと同等、あるいはそれ以上の結果が得られると予想されます。
実際のところ、所有するデバイス上でソフトウェアベースまたはハードウェアベースの 2FA ソリューションを使用することは、アカウントを保護するための優れた方法であり、単に SMS を使用するよりもはるかに優れています。
ソフトウェアオプション
標準的なOTPによる2FAアプローチをサポートするサービスは、以下のすべてのアプリで利用できます。これには、ほとんどの主要なウェブサイトやサービスが含まれます。ただし、注目すべき例外としてSteamは、モバイルアプリで独自の2FAオプションを提供しています。
Google Authenticator: 総合的に最高

二要素認証の最も一般的な方法の一つは、Google Authenticatorです。これはGoogleが提供する無料のスマートフォンアプリで、AndroidとiOSの両方で利用できます。
使い方は非常に簡単で、初心者でもほとんどの2要素認証アプリの基本原理を理解できます。Facebook、Gmail、Dropboxなどのサービスで2要素認証を有効にするだけです。有効にすると、アプリを使ってQRコードのスナップショットを撮るように求められます。Androidユーザーは、Google Authenticatorを使用するためにQRコード読み取りアプリをダウンロードする必要があります。
注: 場合によっては、2FA は 2 段階認証とも呼ばれますが、ここではその違いについては説明しません。
QRコードが読み取られると、認証システムはコードの生成を開始し、通常は2FAが機能していることを確認するために現在のコードを入力するよう求められます。2FAをサポートしているアカウントであれば、Google 認証システムには好きなだけアカウントを追加できます。
LastPass Authenticator: 準優勝

LastPassの無料認証アプリは、ワンタッププッシュ通知と呼ばれる機能を使用しており、PCで特定のサイトにコードを入力する代わりにクリックするだけでログインできます。LastPassは、この機能のデモ動画をYouTubeで公開しています。
ワンタップログインはLastPass本体に加え、Amazon(AWSを除く)、Google、Dropbox、Facebook、Evernoteを含む5つのサードパーティサイトでも利用できます。ワンタップ通知を使用するには、ブラウザにLastPass拡張機能をインストールし、有効化する必要があります。つまり、LastPassアカウントが必要ですが、無料アカウントでも構いません。これらのワンタップログインはブラウザ固有の機能であるため、例えばChromeでワンタップログインした場合、Microsoft Edgeをご利用の場合は再度ログインする必要があります。
一見不可解に思えるかもしれませんが、サードパーティのサイトでワンタップログインが実現する裏側では、次のような仕組みが働いています。ユーザーが対応サイトにログインすると、LastPassブラウザ拡張機能がユーザーのスマートフォンにプッシュ通知を送信し、ログインが要求されていることをユーザーに知らせます。ユーザーがスマートフォンで「許可」をタップすると、必要な2FAコードを含む確認メッセージが拡張機能に返されます。拡張機能はこの情報を受け取り、ウェブサイトに提供することで、ユーザーはログインできます。
LastPass Authenticatorは、パスワードマネージャーの親会社であるLogMeInが所有する複数のサイトと連携し、同様のワンタップログインを提供します。これらのサイトには、LastPass、LogMeIn Pro/Central、GotoAssist、LogMeIn Rescue、Xivelyが含まれます。
Microsoft 認証システム

MicrosoftはAndroid、iOS、Windows 10 Mobile向けの無料認証アプリも提供しています。他の認証アプリと同様に、QRコードをスキャンすることでFacebookやDropboxなどのサイトのコードを取得できます。ただし、個人のMicrosoftアカウントの場合は、LastPassと同様のワンタップ通知をサポートしています。
Microsoftの機能を使えば、どのデバイスからでもアカウントにログインできます。ログインを承認するだけで、ショートコードを入力するのと同じくらい簡単です。大幅な時間節約にはなりませんが、少しだけ便利です。
Authy: 最高のマルチデバイスソリューション

2FA を長期間使用したことがある場合は、新しいスマートフォンに切り替えるたびに認証コードを再度有効にする手間がかかるという欠点があることをご存知でしょう。
2要素認証を設定しているアカウントが10個ある場合、QRコードを10回も読み込まなければなりません。1~2年ごとにデバイスを切り替えるようなスマートフォン中毒者にとっては、この作業は面倒な作業となるでしょう。
Authyの無料サービスは、2FAコードを動作させるために必要な裏側で使われるデータである2FAトークンをすべて、クラウド上のサーバーに保存することで、この問題を解決します。この機能を使用するには、まず暗号化されたバックアップを有効にする必要があります。そうすることで、トークンはAuthyのサーバーに保存されます。
こうすることで、スマートフォン、タブレット、WindowsやMacのノートパソコンなど、Authyアプリにログインするだけでコードにアクセスできるようになります。Chrome OSユーザー向けにChromeアプリも用意されています。
2FAコードに複数のデバイスからアクセスできるのは素晴らしいことですが、欠点もあります。Authyによると、バックアップはクラウドにアップロードされる前にスマートフォンに入力されたパスワードに基づいて暗号化されます。つまり、パスコードでしか復号化できないのですが、Authyにはパスコードが保存されていません。パスコードを忘れると、2FAコードが使えなくなるため、アカウントにアクセスできなくなる可能性があります。各アカウントへのアクセスを回復する方法は、各サービスのアカウント復旧ポリシーによって異なります。
2FA を初めて使用する場合は、パスコードを書き留めて安全な場所に保管するなど、Authy へのアクセスを失わないように適切な手順を踏む準備ができていない限り、このアプリは適していない可能性があります。
ハードウェアオプション
二要素認証でアカウントをロックダウンする最も安全な方法は、物理的なセキュリティキーを使用することです。先ほど紹介したGoogleの調査では、セキュリティキーによって大量のフィッシング攻撃や標的型攻撃が100%ブロックされることが分かりました。
ただし、セキュリティ キーを使用することの欠点は、キーを紛失したり壊したりした場合にアカウントがロックアウトされる可能性があることです。その場合、2 要素認証の方法を新しいキーに切り替える必要があります。
Yubico 認証システム

個人的にはこれが一番のお気に入りです。YubicoのYubiKeyは、ハードウェアベースの2要素認証ソリューションです。小型のカード型デバイスで、片方の端を標準のType-A USBポートに差し込むことができます。短いコードを手動で入力する代わりに、ボタンを押すだけで認証できます。また、YubiKeyは非常に耐久性と防水性に優れているため、壊れにくいのも魅力です。
このワンタップ方式は、GoogleやGitHubなど、前述のFIDO U2F規格をサポートするアカウントでのみ機能します。この規格をサポートしていないサービスの場合、YubiKeyは2FAトークンを保存し、Yubico Authenticatorアプリでコードを表示することもできます。
Yubico Authenticatorを使って2FAコードを取得する方法は、認証アプリをPCで使用しているかAndroidスマートフォンで使用しているかによって異なります。デスクトップ版では、YubiKeyをUSBポートに挿入するだけで、認証アプリにショートコードがすぐに表示され、新しいコードを追加できます。YubiKeyを取り外すと、アプリはすぐにコードの表示を停止します。デスクトップ版のYubico Authenticatorは、基本的なFIDO U2Fキーを除くほとんどのYubiKeyモデルで動作します。
Androidでは、NFC対応のYubiKeyとYubico Authenticatorアプリが必要です。この記事の執筆時点では、YubiKey 5 NFC(45ドル)と、現在は販売終了となっている(ただしまだサポートされています)YubiKey Neoが対象です。これらのキーがあれば、スマートフォンでAuthenticatorアプリを開き、スマートフォンのNFCチップの近くでキーをタップするだけで、アプリにコードが表示されます。また、27ドルのSecurity Key NFC Remove non-product link(非製品リンク)もありますが、これはFIDO U2F認証(およびFIDO2パスワードレスログイン)のみをサポートしており、ワンタイムパスワード機能はサポートしていません。
Authy と同様に、YubiKey の優れた点は、認証コードをデバイス間で簡単に転送できることです。
Titan セキュリティキー
Googleは2018年に独自のハードウェアセキュリティキーであるTitan Security Key Remove non-product linkを発表しました。このキーは2つの物理デバイスがセットになった50ドルのバンドルで販売されています。1つ目はYubiKeyに似たUSB-A挿入口付きのキーです。2つ目はスマートフォンにワイヤレスで接続できるBluetoothドングルです。Titan Security Keyにはいくつか欠点があります。まず、FIDOとFIDO2F標準を使用するサイトにしか対応していないため、2FAはサポートしていてもFIDOワンタッチエントリには対応していないサイトではOTPコードに頼ることができません。またGoogleは最近、重大なセキュリティ上の欠陥が発見されたため、Bluetoothドングルをリコールせざるを得ませんでした。比較すると、YubicoはセキュリティキーのBluetoothバージョンをまだリリースしていません。この技術が十分に安全だとは考えていないためです。
ボーナス: Googleのデバイス内プロンプト

Google のデバイス上のプロンプトの例。
2FAの世界に飛び込むのは今ちょっと大変という方は、Googleのデバイス上のプロンプトを試してみてはいかがでしょうか?これは、Googleアカウントを保護するためのシンプルなセキュリティ対策です。
新しい端末でGoogleにログインするたびに、AndroidまたはiOSデバイスでワンクリックで認証する必要があります。Androidでこれを機能させるには、Google Play開発者サービスの最新バージョンが必要です。ほとんどのユーザーは自動的にインストールされているはずです。iOSデバイスをご利用の場合は、GoogleアプリまたはGmailアプリの最新バージョンが必要です。
二要素認証は、重要なアカウントを可能な限り保護するための重要なステップです。デバイスごとに1回、あるいは30日に1回しか入力しなくても済むため、追加のコードを入力するのは面倒に感じるかもしれませんが、オンラインアカウントのセキュリティを強化するために支払う価値は十分にあります。