ここ数年、2要素認証(2FA)のコンセプトは、長い間ギークのものでしたが、主流になりつつあることを発見しました。 しかし、その話はまだ、SMSを使ったワンタイムパスワードの2FAの利用に限定されているのが現状です。 悲しいことに、これは最も信頼できるオプションではありません。

  • ロック画面の通知が有効になっていれば、SMSで送信されたパスワードをこっそり見ることは簡単です。
  • 通知がオフになっていても、SIMカードを取り外して別のスマートフォンにインストールすれば、パスワード付きのSMSメッセージにアクセスすることができます。
  • パスワード付きの SMS メッセージは、スマートフォン内に潜むトロイの木馬によって傍受されます。
  • 犯罪者は、さまざまな裏技(説得、買収など)を使って、被害者の番号の新しい SIM カードを携帯電話ショップから手に入れることができます。 SMSメッセージはこのカードに送られ、被害者の電話はネットワークから切断されます。
  • パスワード付きのSMSメッセージは、メッセージ送信に使用されるSS7プロトコルの基本的な欠陥によって傍受できます。

なお、上記のSMSパスワードを盗む方法(SS7 exploitation)のうち最もハイテクで手間がかかるものですら、すでに実際に使用されています。 あとは、悪人にとっては日常茶飯事です。 とはいえ、私たちが扱っているのは仮説ではなく、現実の脅威です。

全体として、SMS パスワードはあまり安全ではなく、時には非常に安全でないこともあります。

ファイルや紙に書かれたワンタイムコード

SMSベースのワンタイムパスワードを置き換える最も簡単な方法は、そう、ワンタイムパスワードを使用し、事前に準備しておくことです。 特にログインする頻度が低いサービスでは、最悪の選択肢ではありません。 古き良き Facebook でも、この方法は、特にバックアップ プランとして有効かもしれません。 要求に応じて、このサービスは、後でログインを認証するために使用できる、1 回限り使用可能なコードを生成して表示します。 これらのコードはプリントアウトしたり、走り書きして金庫に入れたりすることができます。

コードが物理的またはデジタル形式で保管されるかどうかはそれほど重要ではありません。重要なのは、(1) 紛失しないこと、(2) 盗まれないことです。

そのためのアプリもあります。 Authenticator apps

この文章にあるすべての「もの」に加えて、1 回限りのワンタイムコードのセットには、1 つの欠点があります。 遅かれ早かれ、それは終わりを迎え、あなたは最も都合の悪い瞬間にコードレスになってしまうかもしれないのです。 幸いなことに、もっといい方法がある。 ワンタイムコードは、小さくて(通常は)非常にシンプルな認証アプリを使用して、その場で生成できます。

認証アプリの仕組み

2FAアプリの使用方法は非常に簡単です。

  • 認証アプリをスマートフォンにインストールします。
  • アプリを使用するサービスのセキュリティ設定に進み、
  • 2FAを選択します(オプションがある場合)。

コードは、キー(あなたとサーバーだけが知っている)と現在の時間(30 秒に丸められた時間)に基づいて作成されます。 両方のコンポーネントは、あなたとサービスのために同じであるため、コードは同期的に生成されます。 このアルゴリズムは OATH TOTP (Time-based One-Time Password) と呼ばれ、圧倒的によく使われている。

OATH HOTP (HMAC-based One-Time Password) として知られている代替案がある。 このアルゴリズムでは、現在の時刻の代わりに、新しく作成されたコードごとに1ずつ増加するカウンターを使用します。 しかし、その使用はアプリやサービス側でのコードの同期生成を複雑にするため、実生活で遭遇することはほとんどありません。 簡単に言うと、ちょうど悪いタイミングでカウンターがおかしくなって、ワンタイムパスワードが機能しなくなるリスクが少なからずある。

2FAアプリとサービスの互換性

大部分の 2FAアプリは同じアルゴリズムを使用しているので、認証者をサポートするサービスにはどれでも使用できます。 一部のサービスでは、そのサービスでのみ機能する独自の 2FA アプリを作成することを好むという理由があります。 たとえば、Blizzard Authenticator、Steam Guard が組み込まれた Steam Mobile、Wargaming Auth などは、サードパーティのアプリやサービスとは互換性がありません。 これらのカスタム アプリだけが、関連するゲーム プラットフォームで使用できます。

この奇妙な道は、Adobe も AdobeID アカウントでのみ機能する Adobe Authenticator で踏み出しました。 しかし、AdobeID での認証には他の認証機能を使用できるので、なぜ別のアプリが必要だったのかはまったく不明です。

いずれにせよ、ほとんどの通常の IT 企業では、ユーザーが 2FA アプリを選択することを制限していません。 また、企業が突然独自のアプリを作成することになったとしても、ほとんどの場合、自社のアカウントだけでなく、他のサービスのアカウントの保護にも使用できます。

追加機能の点で最も気に入った認証アプリを選択するだけで、一般に 2FA アプリに対応しているほとんどのサービスで機能します。

二要素認証のベスト アプリ

2FA アプリの選択は意外に幅があります。 Google PlayやApp Storeで「authenticator」と検索すると、数十の選択肢が表示されます。 最初に目についたアプリをインストールすることはお勧めしません。最も安全とは言えないかもしれません。 このアプリにあなたのアカウントへの鍵を託すことになることを忘れないでください(もちろん、パスワードを知られることはありませんが、パスワードは漏れる傾向があるため、2FAを追加するのです)。 一般に、大手信頼できる開発者が作ったアプリを選ぶ価値があります。

これらのアプリの基本機能は、同じアルゴリズムを使ってワンタイムコードを作成するという点では同じですが、一部の認証ツールには魅力的な追加機能やインターフェイスが備わっています。 ここでは、最も興味深いオプションのいくつかを紹介します。 Google Authenticator

Supported platforms: 設定もありません。 新しいトークン (個々のアカウントのコード ジェネレーターに付けられた名前) を追加したり、既存のトークンを削除したりするだけです。 コードをコピーするには、それをタップするだけです。

しかし、このようなシンプルさには欠点があります。

インターフェイスが気に入らない場合や、より多くの機能が必要な場合は、別の認証アプリをインストールする必要があります。

2. Duo Mobile

サポートするプラットフォーム。 Android、iOS

Duo Mobile も非常に使いやすく、ミニマリストで、追加設定もありません。 Google Authenticator と比較して、1 つの利点があります。 Duo Mobile はデフォルトでコードを非表示にします。コードを表示するには、ユーザーは特定のトークンをタップする必要があります。 私のように、認証機能を開くたびに、すべてのアカウントのコードが公開されるのが嫌な場合、Duo Mobile のこの機能は最適です。

3. Microsoft Authenticator

サポートされるプラットフォーム。 Android、iOS

Microsoft も、その最小限の認証機能で、飾り気のないアプローチを選択しました。 とはいえ、Microsoft Authenticator は、Google Authenticator よりも明らかに機能が豊富です。 まず、デフォルトではすべてのコードが表示されますが、各トークンを個別に設定し、非表示にすることができます。 パスワードを入力した後、アプリ内のボタンをタップしてログインを確認するだけで、ワンタイムコードの入力も必要ありません。

+ コードを隠すように設定可能
+ Microsoft アカウントへのサインインに関する追加機能

4: Android, iOS

Red Hat のこの製品を選ぶ理由は 4 つあります。 まず、ソフトウェアがオープン ソースであること。 iOS 版はわずか 750 KB です (これに比べ、最小限の Google Authenticator は約 14 MB、後述の Authy アプリはなんと 44 MB もあります)。 第四に、FreeOTP では、トークンを非常に柔軟に手動で設定することができます。 もちろん、QR コードをスキャンしてトークンを作成する通常の方法もサポートされています。

+ デフォルトでコードを表示しない+ 750KB しか使用しない+ オープンソース
+ 手動でトークンを作成する際の最大設定値

5. Authy

サポートされているプラットフォーム。 Android、iOS、Windows、macOS、Chrome

Authy は 2FA アプリの中で最もファンシーなもので、すべてのトークンがクラウドに保存されることが最大の利点となっています。 これにより、どのデバイスからでもトークンにアクセスすることが可能になります。 同時に、新しいデバイスへの移行も簡素化される。

クラウド上のトークンは、ユーザー定義のパスワードに基づく鍵で暗号化されているため、データは安全に保存され、盗むことはまったく容易ではありません。

Authy の主な欠点は、携帯電話番号にリンクされたアカウントを設定する必要があることです。
+ 他のデバイスへの移行も同じ理由で非常に簡単です。
+ アプリのログインはPINまたは指紋で保護されています。
+ 最後に使用したトークンのコードのみが画面に表示されます。
+ 他のアプリと異なり、AndroidやiOSだけでなく、Windows、macOS、Chromeにも対応

– 電話番号とリンクしたAuthyアカウントなしでは動作しません

6.Yandex.Key

対応プラットフォーム: Android、iOS

私の考えでは、Yandex.Key の背後にあるコンセプトは、2FA のための最高のアプリにしています。 1 つは、すぐに登録する必要がなく、Google Authenticator と同じように簡単に使い始められることです。

まず、Yandex.Key は PIN または指紋でロックすることができます。 次に、パスワードで保護されたトークンのバックアップ コピーを Yandex クラウドに作成し(この段階では電話番号が必要です)、使用するデバイスで復元することが可能です。 同様に、移行する必要がある場合、新しいデバイスにトークンを転送することも可能です。

Yandex.Key は、Google Authenticator のシンプルさと Authy の拡張機能を組み合わせることができ、好みに応じて選択することができます。 このアプリの唯一の欠点は、トークンの数が多い場合、インターフェイスがそれほど使いやすくないということです。
+ アプリへのログインはPINまたは指紋で保護されます。
+ 最後に使用したトークンのコードのみが画面に表示されます。
+ Yandexアカウントの永久パスワードを置き換えます。

– 多くのトークンがあり、必要なものを見つけるのはそう簡単ではありません。

FIDO U2F ハードウェア認証ツールです。

ワンタイムコードを生成するアプリは、アカウントを保護するための薄っぺらで無形の方法であり、文字通りポケットに入るキーでアカウントをロックする、より堅実で信頼できるものを求めているなら、FIDO アライアンスによって作成された U2F (Universal 2nd Factor) 標準に基づくハードウェア トークンは、もう探す必要はないでしょう。

How FIDO U2F tokens work

U2F ハードウェア トークンはセキュリティ専門家の寵児ですが、それは主にユーザーの観点から、非常に簡単に機能するためです。 始めるには、U2F トークンをデバイスに接続し、互換性のあるサービスに登録するだけです。

その後、サービスへのログインを確認するために、U2F トークンをログイン元のデバイスに接続し、トークン ボタンをタップします(デバイスによっては、PIN または指紋スキャンが必要ですが、これは追加機能です)。 複雑な設定やランダムな文字列の入力など、暗号という言葉から連想されるような難解なことは一切ありません。 トークンをサービスに登録する際、秘密鍵と公開鍵のペアが作成されます。 公開鍵はサーバーに保存され、秘密鍵は U2F トークンの心臓部である Secure Element チップに保存され、デバイスから離れることはありません。

秘密鍵はログイン確認の暗号化に使用され、サーバーに渡され公開鍵で復号化されます。

どのような種類の U2F デバイスがあるか

最も有名で一般的な U2F の例は、Yubico の YubiKey です。 同社は本質的にこの標準を先導してきましたが、それをオープンにすることを選択し、そのために FIDO アライアンスが設立されました。 そして、規格がオープンであるため、選択肢が制限されることはない。 U2F互換デバイスはさまざまな企業によって製造・販売されており、オンラインストアではさまざまなモデルが販売されている。

YubiKey – Perhaps the most popular U2F token

例えば、Googleは最近Google Titan Security Keysというブランドで一連の認証手段を発表しています。 実際、これらは Feitian Technologies 社(U2F トークンのメーカーとしては Yubico に次いで 2 番目に有名)が製造した鍵で、Google が独自のファームウェアを開発しました。

もちろん、U2F 標準に対応したハードウェア認証機能は、この標準に対応したサービスでも同様に機能します。 ただし、相違点があり、最も重要なのは、キーがサポートするインターフェイスです。

USB:PC 接続用(Windows、Mac、Linux のいずれでも、ドライバをインストールせずに動作します)。

NFC: Androidスマートフォンおよびタブレットでの使用に必要。

Bluetooth: NFCを搭載していないモバイルデバイスに必要。 たとえば、iPhone 所有者は、依然として Bluetooth ベースの認証機能を必要とします。 iOS では、アプリで NFC を使用できるようになりましたが (今年以前は Apple Pay のみ許可されていました)、ほとんどの U2F 対応アプリ開発者は、まだこの機能を利用していません。 Bluetooth 認証装置にはいくつかの欠点があります。1 つは充電が必要なこと、2 つ目は接続に時間がかかることです。

U2F トークンの基本モデルは通常 U2F のみサポートし、価格は $10 ~ $20 です。 その他の高価なデバイス(20~50ドル)は、スマートカードとしても動作し、ワンタイムパスワード(OATH TOTPおよびHOTPを含む)を生成し、PGP暗号化キーを生成して保存し、Windows、macOS、Linuxなどにログインするために使用することもできます。 SMS、アプリ、それともYubiKey?

では、二要素認証は何を選べばいいのでしょうか? この問いに対する普遍的な答えはありません。 サービスによって、さまざまな2FAのバージョンや組み合わせが可能です。 たとえば、最優先のアカウント(他のアカウントにリンクしたメールボックスなど)は、徹底的に保護する必要があります。つまり、ハードウェアU2Fトークンでロックし、他の2FAオプションをすべてブロックするのです。

良い方法は、車のキーと同じように、2つのキーをアカウントにリンクすることです。1つは常にポケットに入れ、もう1つは紛失した場合に備えて安全な場所に置いておきます。 さらに、鍵の種類を使い分けることもできます。 たとえば、スマートフォンの認証アプリをメインにし、U2Fトークンやワンタイムパスワードを書いた紙をバックアップとして金庫に保管するなどです。

いずれにせよ、主なアドバイスとしては、SMSベースのワンタイムパスワードはできる限り使用しないようにすることです。 確かに、常に可能というわけではありません。 たとえば、金融サービスは保守的であることで知られており、SMS 以外の方法で認証を提供することはほとんどありません

コメントを残す

メールアドレスが公開されることはありません。