多くのウェブサイトやアプリでは、2要素認証(2FA)を提供しています。2FAでは、ユーザー名とパスワードに加えて、短い数字コード(いわゆる2要素目)の入力が求められます。これらの一時的なコードは、テキストメッセージで送信されるか、認証アプリによって生成されます。iOS 12とmacOS 10.14 Mojaveでは、SMSテキストメッセージで送信されるコードの入力が簡素化され、複数の手順とキーボード入力が1回のタップまたはクリックに短縮されました。
この新機能の仕組みについては後ほど詳しく説明しますが、同時に注意点もお伝えしておきます。SMSはもはや2要素認証の信頼できる方法ではありません。なぜなら、小規模な攻撃者でさえSMSメッセージを傍受するのは非常に容易だからです(「FacebookがSMSが2要素認証に理想的ではない理由を説明」2018年2月19日記事参照)。2要素認証(2FA)を使用しているウェブサイトは、SMSから移行すべき時が来ています。
iOS 12とMojaveのパススルーSMSコード
2FA が有効になっていて SMS ベースのコードを提供しているサイトにログインする場合、通常は次のような手順が実行されます。
- 標準のパスワードベースのログインを完了すると、コードの入力を求められます。
- 通常 6 桁のコードを含むテキスト メッセージがメッセージに届きます。
- 通知を使って着信テキストを表示し、素早ければ、表示されたコードをそのままウェブフォームに入力して送信できます。そうでなければ、メッセージアプリに切り替えてコードを記憶するか、選択してコピーし、サイトに戻って入力します。(iOSでは、メッセージの一部を簡単に選択できないため、さらにイライラさせられます。)
- ログインするにはフォームを送信してください。
iOS 12 では、Safari、メッセージ、キーボードの上にある QuickType バーが連携して動作し、次のようなプロセスになります。

- 上記の手順 1 と同様にユーザー名とパスワードを入力します。
- 2 番目の要素フィールドをタップします。
- テキストメッセージが届くと、iOS 12はコードを抽出し、QuickTypeバーに表示します。タップしてフィールドにコードを入力してください。
- ログインするにはフォームを送信してください。
ここに簡単なビデオデモがあります。
Mojaveでもほぼ同じように動作します。ただし、上記の手順3のQuickTypeバーの代わりに、コードフィールドをクリックすると、その下に自動入力エントリが表示されます。「メッセージから」というラベルで、「コード入力」と短縮コードが続きます。これをクリックすると、フィールドに入力できます。

困ったことに、Mojaveでは過去にテキストメッセージで入力したコード(今回の場合はTwitterログイン用)がすべて表示されてしまい、「メッセージ送信元」の項目を見つけるにはドロップダウンリストをかなり下にスクロールする必要がありました。また、その項目を選択するには、クリックしてすぐにフォームフィールドから離れた場所に移動しない限り、非常に困難でした。そうしないと、macOSはドロップダウンリスト上でのポインタの動きをスクロールと選択と解釈してしまいます!Appleはこのユーザーエクスペリエンスを改善し、過去の入力内容を消去する必要があります。
これらのショートカットは、数秒の時間と多少の手間を省くだけなので、生産性を大幅に向上させるわけではありませんが、2FAの導入を多くの人にとって負担軽減に繋げることができます。iCloudキーチェーンからパスワードを入力するのとほぼ同じ感覚で、手間を減らし、シンプルなワークフローを実現することで、Appleはより多くの顧客に、より多くのサイトで2FAを有効にしてもらえるよう期待しています。
残念ながら、Apple の楽観的な見通しには暗雲が垂れ込めている。SMS ベースのコードは信頼できるセキュリティ方法ではなく、ここ数年で廃止されるべきだったのだ。
SMSコードの乗っ取りは簡単
「仮想通貨投資家のアカウントがハッキングされ、保有資産が全て盗まれる!」といった見出しを見たことがあるかもしれません。こうした盗難は、攻撃者が電話番号を乗っ取るところから始まります。残念ながら、これは驚くほど簡単です。携帯電話番号は持ち運び可能で、別の携帯電話に簡単に移動できるだけでなく、通信事業者間でも転送可能です。基本的な手口は以下のとおりです。
ステップ1:個人情報を入手する。インターネット上に拡散している「身元調査」サイトや盗難情報を利用すると、電話番号、社会保障番号、銀行口座番号などの個人情報を簡単に入手できます。
ステップ2:電話番号を乗っ取る。電話番号を乗っ取るために、攻撃者は通常、ソーシャルエンジニアリング(言葉で人を騙すという意味)を使います。電話会社に電話をかけ、番号の移行方法を説明し、本人確認に必要な身元情報を提供し、新しい受信側の電話の技術的な詳細を伝えます。
大手通信事業者は、アカウント変更時に顧客が追加のPINを設定できるようにしていますが、ハッカーがPINを知らないふりをして逃げるケースがあることが報道で明らかになっています。また、追加のPINは必須ではないため、実際に使用している加入者がどれくらいいるのかは不明です。
(一部のハイジャッカーは、公衆交換電話網に侵入して情報を盗聴したり、電話番号を乗っ取ったりできることも示しています。単独の攻撃者でもそれができるのであれば、政府機関でも同様にできるのは明らかです。)
ステップ3:パスワードリセットでアカウントを乗っ取る。攻撃者は、乗っ取った電話番号宛てのテキストメッセージを受信できるようになると、誰かがアカウントを持っていると思われるサイトにアクセスし、アカウントを乗っ取ることができます。2FAを提供する多くのサイトでは、携帯電話を物理的に所有するだけで十分なセキュリティを確保できるという前提で、SMSによるパスワードリセットも許可しています。
たとえば、パスワード リセット ページでは次のようなテキストがよく見られます。
アカウントに登録されているメール アドレスにアクセスできず、パスワードをリセットする必要がある場合は、確認済みの電話番号を使用して、パスワード リセット メールを受信するメール アドレスを更新できます。
多くのサイトでは、攻撃者は元の電子メール アドレスも知る必要がありますが、これは電話番号を乗っ取った者にとっては簡単なことです。
攻撃者はメールアドレスの変更をリクエストし、SMSでリンクを受信して変更を完了します。そのページで、新しい不正なメールアドレスを入力し、受信確認を行うことで、アカウントと新しいメールアドレスの関連付けが完了します。その後、パスワードの変更を完了すると、新しいメールアドレスにリンクがメールで送信されます。新しいパスワードを設定すると、2FA用のSMSコードを使用してログインできるようになります。
これらの各ステップは無害ですが、すべてを追加すると、実質的に 2 つの認証情報ではなく 1 つの認証情報 (電話番号) のみが必要になります。
アカウントへの完全なアクセス権を持つ攻撃者は、暗号通貨を流出させたり、電子メールを送信したり、その他の金銭的または評判に損害を与える攻撃を実行できます。
2FAにSMSを使うのはやめよう
当初、サイトは2FAへの障壁を下げるため、SMSベースのコード認証を2FAに採用していました。認証アプリよりもSMSを理解している人が多いためです。また、SMSの脆弱性はさておき、2要素認証はアカウントへの大規模な攻撃を抑止するため、使用しないよりははるかに効果的です。たとえ攻撃者がサービスの復号化されたパスワードすべてにアクセスできたとしても、2FAが有効になっているすべてのアカウントは不正ログインを阻止できます。しかし、SMSベースの2FAは標的型攻撃や個人情報窃盗に対して脆弱です。
AppleのmacOSおよびiOS向け独自2FAシステムは依然として非常に堅牢ですが、信頼できるデバイスが利用できない場合は、SMSや音声通話をバックアップとして使用できます。他の多くのシステムは、1Password、Authy、Google Authenticator、LastPassなど、時間ベースのワンタイムパスワード(TOTP)を生成する認証アプリに依存しています。このアプリベースのアプローチを使用する場合、サービスは通常、静的な緊急用のワンタイムバックアップコードも発行します。これらのコードはTOTPのように時間の経過とともに期限切れになることはありません。
Facebookは人々のプライバシーや個人情報を侵害する新しいポリシーを日常的に隠蔽しているにもかかわらず、電話番号なしで2FAを使用することを許可しています。(研究者がFacebookが2FAに関連付けられた電話番号をマーケティング目的で悪用していたことを発見した今、これはより重要です。)Googleはこの事実を明示していませんが、2FAを設定した後は電話番号も削除し、他の2要素を組み合わせて利用することもできます。
AppleがSMSコード入力を簡素化したことは称賛に値しますが、SMSからの脱却を積極的に進めれば、さらに素晴らしいものになるでしょう。こうした動きは強制する必要はありません。Appleをはじめとする企業が啓発活動を行い、バックアップとしてSMSコードを無効にするスイッチを提供することから始めることができます。SMSベースの2FAコードの使用を止めざるを得なくなるのは避けられないことであり、大規模なハッキングによって危機的状況になる前に、その方向で取り組むのが賢明でしょう。
iOS 12 のセキュリティ機能の管理、ネットワークとプライバシーの理解と設定についてさらに詳しく知りたい方は、私の新しい本『iOS 12 のネットワーク、プライバシー、セキュリティに関する実践ガイド』をご覧ください。TidBITS 読者の方はクーポンコード TIDBITS を入力すると 25% 割引になります。