2要素認証
認証には知識認証、生体認証、所有物認証があって、それらの二つを組み合わせるのが2要素認証(two-factor authentication、2FA)、あるいは多要素認証です。2段階認証もほぼ同じことです。
パスワードは知識認証ですが、管理が悪いと他人に漏れます。他人がそのパスワードで例えばネット銀行にログインしようとした場合に、自分の持っているスマホにショートメールで6桁の番号を送ってきて、それをネット銀行のサイトに入力しないとログインできない、という仕組みが典型的な2要素認証です。パスワードが漏れても、スマホという所有物を持っていない他人はログインできません。
ところが、スマホが盗めなくても、スマホの電話番号だけを盗むという手口があります。他人が免許証やマイナンバーカードを偽造して自分になりすまして「スマホを紛失したので機種変したい」と言って、本人確認の甘いショップが電話番号を他人のスマホに移してしまう、という事件が実際に起きています。
そこで、電話番号ではなくスマホのアプリ(Google Authenticatorなど)を使う方法も考え出されました。アプリに表示されたワンタイムパスワードをサイトに入力しないとログインできない仕組みです。
これで安心!でしょうか。実はまったく安心ではないのです。
悪者は、本物そっくりの偽サイトを立ち上げ、メールで騙して偽サイトにアクセスさせます(フィッシング)。そこにID・パスワードを入力すると、悪者は入力されたID・パスワードをそのまま本物のサイトに入力します。本物のサイトがワンタイムパスワードを要求すると、偽サイトもワンタイムパスワードを要求します。騙された人が自分のスマホに表示されたワンタイムパスワードを偽サイトに入力すると、悪者はそれをそのまま本物のサイトに入力します。結局、悪者は本物のサイトにログインできてしまいます(中間者攻撃)。この悪者の役割はコンピュータのプログラムでも可能です。
このように、2要素認証はフィッシング耐性に欠けるのが問題です。2要素認証を使わなくても、パスワード管理ソフトを使うだけのほうが、フィッシング耐性が強いのです。パスワード管理ソフトはURLで本物のサイトかどうかを判断できるからです。