4つの二要素認証の方法、それぞれの利点と欠点
二要素認証の代表的な方法には、次の4つがある。
- 電話番号を利用したワンタイムパスワード
- Emailアドレスを使ったワンタイムパスワード
- Time-Based One-Time Password(TOTP)
- アプリのPush通知
二要素認証はそれぞれに利点があり、またセキュリティの強度も異なる。どれが優れていて、どれが劣っているということはなく、導入するときは総合的に考えて判断する必要がある。
電話番号を利用した二要素認証は、IDとパスワードの認証後に登録している電話番号へSMSや電話でワンタイムパスワードを送信する。電話番号を利用した二要素認証は、追加のソフトウェアを必要としない、電話番号の乗っ取りが難しいといったメリットがある。ユーザーが所有するデバイスへ送信されるという安心感もある。
ただし、偽サイトでIDとパスワードを入力すると正規のサイトへ送信され、二要素認証のワンタイムパスワードが所有するデバイスへ送信されるSMSフィッシングという脅威がある。電話番号を使った二要素認証にも脆弱性があるのだ。
Eメールアドレスを使ったワンタイムパスワードによる二要素認証もよく利用されている。電話番号のワンタイムパスワードとは、送信する手法と受け取る側のメディアが違うだけである。サイトでIDとパスワードを入力すると、登録しているEメールアドレスにワンタイムパスワードが届く仕組みだ。
Eメールアドレスによる認証の問題点は、指定したアドレスにワンタイムパスワードを送信して入力してもらっているだけなので、本人かどうかの判断はできないことだ。
TOTP(Time-based One-time Password)とは、ある一定の時間で変わる、一度しか使えないパスワードを利用して認証する方法だ。TOTPではIDとパスワードを入力したら、事前に登録しているGoogle AuthenticatorやMicrosoft Authenticatorといったアプリで発行されるパスワードを入力することで認証が完了する。
実装する側としては、運用コストを抑制できるという特性がある。欠点はユーザーがアプリを導入するのに手間がかかることだ。アプリを導入した経験のある池原氏は「この方法で本当に合っているのかな」と不安を感じたことを話した。提供するサービスによっては、ユーザーにこの手間を負担させられるかどうかの見きわめも必要だ。
アプリのPush通知の認証は、IDとパスワードの入力をしたあとに、ほかのソフトウェア「ログインしましたか?」と、本人かどうかの認証を行う。このPush通知の認証方法は、FacebookやGoogleアカウントなどで導入されている。
ただし、初回のアカウント生成で認証済みのデバイスがないため、初回をどうするのかという課題が残る。また、何度もPush通知を連続して送り続けることでユーザーを疲れさせ、認証させる悪質な手口も存在する。