Facebookが数億人のパスワードを平文、SMS認証の仕組みと危険性、「TOTP」とは?「所有物認証」のハナシ

SMS認証の仕組みと危険性、「TOTP」とは? 「所有物認証」のハナシ

 ほとんどの人が日常的に行っている、ログイン、サインインなどの認証作業。認証で利用したパスワードが漏えいして第三者からの不正アクセスを受けたりするなど、認証をめぐるセキュリティの問題は後を絶ちません。こうした課題を解決するには、サービス提供者側だけで対策するだけでなく、サービスの利用者も正しい知識を持っておくことが必要でしょう。

 本連載記事では、認証の仕組みや課題、周辺の情報について、できるだけ分かりやすくお伝えしていきます。

●本題の前に一言「パスワードの平文保存は絶対ダメ!」

 先日、Facebookが一部の利用者(数億人!)のパスワードを平文、つまり誰でも読める状態で保存していたというニュースがありました。この事件の何がどのくらいマズイのか、利用者側ではどうするべきなのかに関するコラムも掲載されています。

 要は、Facebook利用者のパスワードはFacebook社員に筒抜けだったということです。「誰かが意図的に悪用したり、不正にアクセスした形跡も見つかっていない」と発表されていますが、「2万人いる従業員全員に悪意がなく、絶対に悪用しない」というのは、どうにも信用しづらいのではないでしょうか。何とも残念で、恐ろしい状況です。

 そして、この「パスワードデータの平文保存」は、以前に報じられた「宅ふぁいる便」の事件のように、他のサービスでも発生しています。

 サービス側にも改善を進めてほしいのですが、それを待っていても、らちがあきません。上記のコラムにあるように、私たちのパスワードはもはや「既に知られているもの」と考えて、自ら対策すべきでしょう。

●サービス提供者が打ち出す対策

 サービスの利用者側で自主的に行うべき対策は、何度も言いますが「パスワードを使い回さないこと」です。対して、サービス側でも先進的な大手インターネットサービスや、顧客の資産を預かる銀行のインターネットバンキングでは、利用者が任意(もしくは強制)で利用する対策方法を用意しています。

 それが「二段階認証(もしくは二要素認証)」です。パスワードだけに頼らず、別の認証方法を追加し、二段階で認証することで不正ログインを防ぎます。

 現状では大抵、この二段階目に利用される要素は「認証の3要素」のうちの「あなたが持っているモノ」つまり「所有物」要素となっています。

 今回は、所有物認証の中で現状のサービスに採用されている方式について、その仕組みと扱う際の注意点をメリットとデメリットを交えて紹介します。これから自社サービスに二段階認証を導入しようと考えている方だけでなく、リモートワークの実現にあたって業務システムの認証を強化したい情報システム部門などにも役立つ内容が含まれていると思います。

●SMSメッセージを利用した「SMS認証」

 電話番号にひも付いた携帯電話(スマホ・フィーチャーフォン)にメッセージを送る「SMS」。このメッセージを利用した認証方式がSMS認証です。携帯電話の普及とともに二段階認証の導入が進み、よく見られるようになりました。

 パスワードでの認証の後に、携帯電話に届くSMSメッセージに書かれた数字や文字列を入力したり、URLをタップしたりすることで認証します。

 SMSメッセージは電話番号に対して送られてきます。そして電話番号はSIMカードに割り当てられています。つまり、特定のSIMカードの所有が認証要素となります。

 携帯電話が破損しても中のSIMカードが無事であれば、端末を変えてもそのSMS認証は有効なままです。逆に誰かにSIMカードが抜きとられて、別の携帯電話に挿し替えられてしまうと、以降に届くSMSメッセージの内容は見られてしまいます。

 またスマホの場合、「通知」の設定によっては、SMSメッセージ受信時にスマホにロックが掛かっていても画面にメッセージが表示されてしまいますので、ご注意ください。

 サービス提供側への情報としては、米国立標準技術研究所(NIST)の認証に関するガイドライン「NIST Special Publication 800-63B」の策定において、SMS認証について議論され、表現が変更された経緯があります。

 草稿の時点では「非推奨」とされていたSMS認証は、決定稿公開時には「条件付き」(なら使用しても良い)という表現になりました。その条件を簡単に書くと、「他の認証方式と併せて利用すること」「危険性について評価し、その結果を利用者に公表すること」「代替の方法を用意しておくこと」です。

 当初は単に「非推奨」と書かれていたのが、具体的な対策を必須とするような表現になったのです。SMS認証を採用したサービスへの不正アクセス事件は、国内ではまだ聞きませんが、海外では発生しています。

 この事件で不正侵入者がどのような手口でSMS認証を突破したのかは、まだ明らかにされていません。フィッシングなのか、電話回線の脆弱性を利用したのか、SIMスワップの不正利用(※1)なのか、それとも他の手口なのか。海外では不正アクセスが発生しており、突破の手口が検証されている状況だと留意しておきましょう。

※1:利用者がSIMカードを紛失・破損したときに通信事業者に連絡し、別のSIMカードに電話番号を移してもらうことを「SIMスワップ」といいます。これを悪用し、標的の利用者の情報を入手して、本人に偽装して通信事業者に連絡し、電話番号を別のSIMカードに移し替えることで標的の電話番号を奪う「ポートアウト詐欺」「SIMハイジャック」などと呼ばれる手口があります。海外では、通信事業者スタッフを買収・恐喝し、移し替えさせる手口も発生しています。

●連携したスマホアプリへの通知を利用した認証

 スマホにそのサービス専用のアプリをインストールして、サービス利用開始時に、メールやSMS、郵便などで、その登録時のみ有効なパスワードを利用してサービス側のサーバとアプリを連携します。以降は認証のたびに連携したアプリに通知が送られ、その通知をタップしてログインする方式です。

 専用のアプリに送られるメッセージは暗号化(※2)されているため、SMSやメールよりも、メッセージを経路上で傍受する中間者攻撃に強いといえます。

 デメリットとしては、スマホが必要なことと、専用アプリをインストールして設定する手間がかかることです。とはいえ、重要な情報や資産を守るためであれば、最初の手間くらいは許容してもよいのではないでしょうか。

 隠れたリスクとしては、スマホアプリなのでスマホのOS上で動いているということです。OSがアップデートした結果、動作しなくなる可能性はゼロではありません。また、iOSの場合はアプリをアップデートするのにAppleの審査を通過する必要があります。つまり、アプリメーカーだけでなく、Appleの対応にも左右される恐れがあるということです。

※2:二段階認証を用意するセキュリティ意識の高いサービスであれば、きちんと暗号化されているものと思われます。しかし、全てのサービスを確認しているわけではありません。

●「経路外通信(Out Of Band)」による認証

 ここまでで紹介したSMS認証、専用スマホアプリへの通知による認証、そして前回紹介したメールによる認証は、「経路外認証」「帯域外認証」「アウトオブバンド認証」などと呼ばれています。

 ある端末で、とあるサービスに認証する際に、認証しようとしている端末とは別の端末(スマホなど)にメッセージが届く、もしくは同じ端末にメッセージが届くにしても別の経路をたどって届くので、このような呼称となっています。

●「ソフトウェアトークン」と「ハードウェアトークン」

 都市銀行のインターネットバンキングでよく利用されているワンタイムパスワードが「ソフトウェアトークン」と「ハードウェアトークン」です。いずれもスマホアプリや機器上に、一定の時間経過(大抵は30秒ごと)で変化していく、その時しか使えないワンタイムパスワード(数列)が表示され、それを入力することで認証する仕組みです。

 ワンタイムパスワードを表示する媒体がスマホアプリだと「ソフトウェアトークン」、専用のカード型・キーホルダー型・電卓型の機器だと「ハードウェアトークン」と呼びます。

・三菱UFJ銀行「ワンタイムパスワード」

・三井住友銀行「パスワードカードについて」

・みずほ銀行「ワンタイムパスワード」

・りそな銀行「ワンタイムパスワード」

 経路外認証とは異なり、各トークンは通信をせずにワンタイムパスワードを表示しています。認証するサーバ側と、表示するトークン側のそれぞれにおいて、連携時に設定される「シード」(利用者の登録情報を基にした値)や「シークレット」と呼ばれる値と、その値が作られた時刻からの経過時間をかけ合わせて計算し、ワンタイムパスワードを生成しています。それぞれの計算結果が一致していればログインできるというわけです。

 時間によってワンタイムパスワードが計算される仕組みから「Time-based One-Time Password」省略してTOTPと呼ばれています。

 TOTPのトークンを既に利用されている方で、ワンタイムパスワードを入力しても認証できない場合は、スマホやハードウェアトークンの時刻がズレている可能性があります。ソフトウェアトークンの場合はスマホの「設定」で、現在時刻を調整してみてください。

 ハードウェアトークンの場合は、サービスのページに時刻補正用のページが用意されているはずです。そこでトークンに表示されている数値を1~2回入力すると補正されます。トークン側の時刻を直すことはできないので、トークン側が現在、どの数値になっているかをサーバ側に知らせることで、サーバ側の数値を補正する仕組みです。

 電池切れの場合はどうしようもありません。電池切れの前にサービス側から交換の案内が来ることがほとんどだと思いますが、もし切れてしまったら新たなトークンを用意してもらいましょう。

 サービス提供者側はどうでしょうか。このTOTPを利用したソフトウェアトークンで近年、よく使われてきているのが、Googleが提供する「Google Authenticator(Google認証システム)」です。マイクロソフトもソフトウェアトークン「Microsoft Authenticator」を、他にも各社がソフトウェアトークンやハードウェアトークンを提供しています。

 これらは「OATH規格」(initiative for Open AuTHentication)というTOTPの共通規格を採用しており、サービス側でもOATH規格に対応すれば、各社のOATH規格対応トークンによる認証が導入できます。

 OATH規格の登場でTOTPをサービスに導入しやすくなりました。OATH規格が登場する前から提供されている主な製品として「RSA SecureID」や「DIGIPASS」がありますが、銀行ではこれらが多く使われているようです。

 TOTPは最初はハードウェアトークン型が登場し、主にビジネス用に活用されてきました。その後の携帯電話の普及とスマホの登場や、ソフトウェア化とそれに伴う配布の簡便化により、ソフトウェアトークンが一般向けにも使われるようになったという歴史があります。

 ソフトウェアトークンよりも古い方式のハードウェアトークンは、ハードウェアの調達が必要で、紛失・破損・故障の対応が必要な点など、導入・管理コスト面で不利ではあります。しかし、スマホを持っていなくても使える、スマホの状態に左右されない、利用者にインストール・設定方法を教える手間がなく「ボタンを押して出てきた数字を入力するだけ」なので分かりやすい、といった点では優れているといえます。

 同じ通信を行わないワンタイムパスワードの方式で、時間ではなく、サーバと連携してからの「認証回数」をシードと掛け合わせてワンタイムパスワードを生成する「HOTP」(HMAC-based One-Time Password)という方式もあります。しかし、サーバ側とトークン側の回数のズレによる不具合が発生しやすいため、現在ではTOTPのほうが主流になっています。

 ここまで、経路外認証やソフトウェア&ハードウェアトークンを用いるワンタイムパスワードを紹介しました。一般のインターネットサービスで使われているものは、これで大体カバーできていると思います。

 今回紹介した以外にも、ビジネス利用が中心の方式や、過去にはよく使われていた方式など紹介しきれていないものもあります。次回は、それらの方式を紹介しようと思います。

🍎たったひとつの真実見抜く、見た目は大人、頭脳は子供、その名は名馬鹿ヒカル!🍏