パスワードが漏れても、もう一つの確認が残る
パスワードだけでログインできる仕組みでは、第三者にパスワードを知られると、その人を本人と区別できなくなります。漏えいの原因は、同じパスワードの使い回し、偽のログイン画面への入力、端末への不正なプログラムの侵入などさまざまです。人の心理や行動を利用して情報をだまし取る方法は、ソーシャルエンジニアリングと呼ばれます。
多要素認証では、パスワードとは性質の異なる証拠も要求します。仮にパスワードが知られても、登録済みの端末や本人の身体的特徴まで相手が用意できなければ、そこでログインを止められます。重要なのは、確認回数をただ増やすことではなく、破られ方の異なる要素を組み合わせることです。一つの対策にすべてを任せず、失敗したときの次の壁を用意する「多層防御」の一例と考えられます。
三つの要素は「本人が何を示すか」で分かれる
認証に使う証拠は、主に次の三種類に分けられます。
- 知識要素:パスワードや暗証番号のように、本人が知っている情報です。
- 所持要素:スマートフォン、ICカード、セキュリティキーのように、本人が持っている物です。
- 生体要素:指紋や顔など、本人の身体に結び付いた特徴です。生体認証では、読み取った特徴を登録済みのデータと照合します。
例えば、パスワードの後に登録済みスマートフォンで確認するなら、知識要素と所持要素の組合せです。一方、パスワードと暗証番号は、二つ入力していても、どちらも知識要素です。指紋と顔も、方法は異なりますが、どちらも生体要素です。異なる種類を二つ以上使って初めて、多要素認証になります。「秘密情報を二つ」にするより「秘密情報と持ち物」に分けるほうが、一度の漏えいで両方を失いにくくなります。
ログイン要求から本人確認までを追う
代表的な流れでは、まず利用者がIDとパスワードを送ります。サービス側が知識要素を確認すると、次に登録済み端末へ通知を送り、承認操作を求めたり、認証アプリが表示する一時的なコードを求めたりします。両方の確認が成功してから、サービスの利用が許可されます。通信中の情報を読まれにくくする役割は暗号化が担いますが、暗号化と本人確認は別の役割です。
認証アプリのコードは、一定時間だけ使えるように設計されたものがあります。コードが短時間で変わっても、偽サイトへ入力したコードを攻撃者がすぐ転送する攻撃まですべて防げるわけではありません。承認通知を何度も送り、利用者の誤操作を狙う攻撃もあります。通知に表示されたサービス名やログイン場所などを確認し、自分が始めていない要求は承認しないことが大切です。
「二段階」と「二要素」は数え方が違う
名前がよく似ていますが、二段階認証は手続きの回数に注目した言い方で、二要素認証は証拠の種類に注目した言い方です。パスワードを入力した後、別の秘密の質問に答える方式は二段階でも、両方が知識要素なので二要素ではありません。反対に、一回の操作に見えても、端末の所持と指紋の照合を内部で組み合わせている場合は、所持要素と生体要素を使っています。
この違いは、画面の数だけでは安全性を判断できないことを示します。「コードも入力したから多要素だ」と決めつけず、そのコードを受け取る仕組みが何を証明しているのかを見る必要があります。多要素認証を英語で表した multi-factor authentication の頭文字から、MFAと略されることもあります。設定画面で「MFA」と表示されていたら、複数種類の認証要素を指しています。
多要素認証にも残る弱点と、先に決めたい復旧方法
多要素認証を有効にしても、端末の紛失、偽サイト、端末自体の乗っ取り、不注意な承認を完全にはなくせません。スマートフォンを画面ロックで保護する、OSやアプリを更新する、ログイン先のドメイン名を確かめるといった基本対策は引き続き必要です。認証は、情報を許可された人だけが利用できるようにする仕組みであり、情報セキュリティの3要素のうち、特に機密性を守るための入口になります。
また、認証用端末をなくしたときの復旧方法も重要です。サービスが発行するバックアップコードは安全な場所に保管し、通常のパスワードと同じ場所へむき出しで保存しないようにします。古い電話番号や使っていない端末が登録されたままなら、削除や更新が必要です。復旧手続きが弱いと、通常のログインを強くしても、そこが回り道になります。多要素認証は「設定して終わり」ではなく、要素の管理、通知の確認、紛失時の復旧までを一つの仕組みとして扱うことで効果を発揮します。