多要素認証によるセキュリティ強化で安全に Web サービスを使う

本記事のゴール

Web サービスやクラウドサービスが普及し、色んなサービスでアカウントを管理されていると思います。これらのサービスはインターネットにつながっており、常時攻撃を受けているのも事実です。

今回は、不正アクセスからアカウントを保護するための、多要素認証について解説します。

多要素認証がなぜ重要か

こちらの Microsoft セキュリティブログによりますと、多要素認証により 99.9% の不正ログインが防げる、とのこと。

多要素認証の導入事態は容易ですので、ぜひとも導入し、不正ログインを防ぎたいところです。

パスワード + 認証システムアプリによる多要素認証の設定

サービスによっては多要素認証が設定できないものもまだまだありますが、可能な限り多要素認証を設定することでセキュリティが強化できます。

また、パスワード認証と組み合わせる別の要素としては、お手軽で、かつ無料で利用できるものとして認証システム アプリによるワンタイムパスワード (所持要素に該当)をおすすめします。スマホ付属の顔認証の活用も有効かもしれません。

以下は Google アカウントに対する多要素認証の設定です。まずは Google アカウントの管理画面に遷移します。
Google アカウントの管理画面へ
「セキュリティ」から「2 段階認証プロセス」を選択します。
セキュリティの項目から「2 段階認証プロセス」を選択
最初に表示されるのは説明画面ですので、「使ってみる」ボタンを押して次の画面へ。ここで電話番号未設定の場合、電話番号設定の手順となります。電話番号を入力し、Google からテキストメッセージもしくは音声で 6 桁の数字が飛んできますので、その数字を設定すると電話番号が登録されます。以下のような画面で、2 段階認証プロセスを「有効にする」を選択します。
Google アカウントで 2 段階認証を有効にする
その後、2 段階認証プロセスから「認証システム アプリ」を選びます。
2 段階認証プロセスで Google 認証システムを選択
この段階で、もう 1 つの要素となる PC、スマホ等の端末をご準備ください。また、認証アプリを予めインストールしておいてください。最初に Android か iPhone かを聞かれますが、どちらと答えても後の工程には変わりないはずで、これはただのアンケートなんですかね・・?もしスマホでの認証を考えているのであれば、 Android か iPhone であれば、正直に答えておきます。
スマートフォンを選択 (どちらでも可)
次に、認証システムの設定画面です。QR コードが表示されますので、スマホ等カメラのついた端末での登録の場合は、認証アプリ経由で QR コードを読み取ってください。
Google 認証で表示される QR コードの読み取り
もし PC 等による設定で QR コードの読み取りができない場合は、「スキャンできない場合」を押して表示されたキーを認証アプリに設定します。
QR コードをスキャンできない場合のキー表示
認証アプリでうまく同期できたら、認証アプリ側で 6 桁のワンタイムパスワードが表示されるようになっているはずなので、今表示されているワンタイムパスワードを入力し、設定を完了します。
Google アカウントでの 2 要素認証の設定の完了

認証システム アプリの例

Google Authenticator, Twilio Authy あたりは、Android でも iPhone でも使えますし、よく使われている認証システム アプリではないでしょうか。特に Twilio Authy は PC や Mac でも利用できるため、サポートされている端末のカバレッジが広いです。

なお、Google Authenticator, Twilio Authy はどちらもワンタイムパスワード認証ができるアプリですが、次のような違いがあります。

Google Authenticator: 後述する狭義の所持要素に該当し、本来の多要素認証のセキュリティが担保可。一方バックアップ、他端末での利用が難しく、マルチデバイスや、スマホの機種変更を控えている方には再度ワンタイムパスワードの設定が必要となり不便

Twilio Authy: バックアップ、他端末での利用が可能で、スマホの機種変更時にワンタイムパスワードの再設定が不要。またマルチデバイスにも対応。ただし、狭義の所持要素に該当しないため、多要素認証のセキュリティが担保できないケースがある (端的なものはバックアップが知らないうちに詐取されているケース)。

ということで、ご自身の利用スタイルに合わせて、適切な方を選ぶのがいいかと思います。実利用上はバックアップできたり多端末対応の Twilio Authy に軍配が上がり、セキュリティ面の穴を疲れにくいのは Google Authenticator といったところでしょうか。

なお、Windows PC で利用できる認証システム アプリに WinAuth というものもあります。

多要素認証に関する解説

概要

そもそも認証とはなのですが、こちらの記事によると広義では対象の正当性を確認することで、IT に限定すると相手が本人であることを確かめること、ということになります。

多要素認証とは、そんな本人確認について要素と呼ばれる 2 つ以上の観点から確認を行うということで、より本人であることの確からしさを高めることになります。

要素には、以下の 4 つがあります。

  1. 知識要素
  2. 所持要素
  3. 固有要素
  4. 場所

これらの要素のうち、複数を組み合わせて認証を行うことが多要素認証であり、それに対し同一の要素であっても一度に複数の方法で本人確認を行うことを多段階認証と区別したりします。後者の方はセキュリティが強化されないことが、こちらの記事で言及されています。複数の手段で認証させてもそれらが同じ要素であれば、攻撃者が一方の手段について「盗んでいる」もしくは「複製している」場合に、他方の手段も同様に「盗んでいる」もしくは「複製している」可能性が高いため、です。

知識要素

知識要素とは、こちらの Wikipedia 記事のとおり、本人のみが知っている、記憶している秘密を認証に使うものです。

最もよく使われている「パスワード認証」や「 (クレジットカード等で使われる) PIN」、「秘密の質問」がこちらに該当します。

ログインが必要な Web サービスのほとんどが知識要素にあたる、パスワード認証を使っています。認証にパスワードを使わないケースといえば、保有しているスマホを顔認証のような固有要素で認証するとか、そのような一部のみかと思います。

パスワードに必要な強度だったり、パスワードは使い回しすべきでない等、パスワード管理には課題があるかと思います。加えて Web サービスによっては多要素認証に対応していないものもあるので、これらを踏まえるとパスワード管理はパスワードマネージャーを使うべきです。これについては別記事にまとめます。

所持要素

こちらでは、所持要素は認証を行う本人が持つものによる認証、とあります。

さらに調査を調べていくと、こちらのQAの中で、所持要素については攻撃者がその要素について詐取できた場合、すでに本人の手元からはなく、攻撃者の攻撃に気づけるもの、とあります。つまり、複製できるようなもの (たとえば SSH の秘密鍵) は所有要素に当たらない、ということです。納得感は高い説明かと思います。本記事ではわかりやすさのために複製できない、ただ 1 つだけのものを狭義の所持要素、複製可能なものまでを含めたものを広義の所持要素とし考えてみます。前者が必ずしもセキュリティ効果が高い、とまでは言い切れませんが、多少の相関関係はありそうにも見えます。

こうした場合、YubiKeyGoogle Authenticator は狭義の所持要素になりうるかと思います。Google Authenticator は指定したスマホなり PC なりの端末でのみ同期され、バックアップしたり、他の端末に移行したりできません。これは不便である反面、セキュリティに直結している、という見方もできそうです。

一方、X.509 証明書 や SSH 秘密鍵は複製可能なため明らかに広義の所持要素ですし、Twilio Authy は Google Authenticator と同様ワンタイムパスワードを発行するツールですがバックアップが可能だったり複製可能なため、こちらも広義の所持要素に分類できます。

固有要素

固有要素の定義は、こちらによると本人自身の生物としての固有の情報を指します。攻撃者は認証の手段を「盗む」もしくは「複製する」ことでなりすましを行うのですが、この要素は「盗む」ことが困難である点が特徴的です。

指紋や声紋、虹彩、顔といった生体情報による認証は、こちらの固有要素に該当します。クレジットカード購入時に行う署名等も、こちらの固有要素に該当します。

2021 年 5 月時点で、筆者は Pixel 4 の顔認証を使っていますが、非常に精度が高く、便利に使っています。また、指紋認証が搭載されているスマホも使ったことがあるのですが、当時は少なくとも認証精度が高くなく、何度も認証のやり直しが必要だったため不便に感じました。

固有要素については、認識させるデバイス、システムの認証への対応等の課題があり、Web サービス上で見かけることはまだ多くないように思います (WebAuthn のような標準も定められているようなのですが)。

場所

認証の文脈での「場所」とは、物理的に安全な場所を指します。社内ネットワーク等がそうですね。

ファイアウォールで接続元のグローバル IP を社内ネットワークのものに制限する、はこちらの場所に該当するものかと思います。

こちらの要素は個人のプライベートで利用している Web サービス等では活用しにくい要素かと思います。

まとめ

本記事では、多要素認証の導入方法、多要素認証を実現するためのアプリを解説しつつ、多段階認証との違い含む多要素認証について説明しました。ぜひ皆様も多要素認証を設定してセキュリティを高めてみてください。

タイトルとURLをコピーしました