本文へスキップ
2FAAuth.Work
言語: 日本語
9分で読める 2faauth.work 著 編集方針

2FAの歴史:ハードウェアトークンからパスキーまで

クリップ式ハードウェアトークンやSMSコードから、今日のフィッシング耐性のあるパスキーへ。二要素認証がどのように進化し、なぜ各段階が起きたのかを解説します。

パスワードだけでは足りなくなった理由

数十年の間、攻撃者とあなたのアカウントの間にあるのはユーザー名とパスワードだけでした。アカウントがオフィスの1台のサーバー上に存在していた頃は、それで通用しました。しかし、銀行、メール、仕事、買い物など、ほぼすべてがオンラインに移行すると、通用しなくなりました。

2つの問題が重なりました。第一に、人々はパスワードを使い回します。小規模なサイトで1回情報が漏えいするだけで、攻撃者はメール受信箱や銀行口座まで開けてしまう可能性のある認証情報を手にします。第二に、情報漏えいは産業規模に達し、盗まれたユーザー名とパスワードの組み合わせが膨大に蓄積され、犯罪者が他のサービスに対して自動的に試すようになりました。

単一要素認証には構造的な欠陥があります。唯一依存している要素である「秘密」は、推測、盗難、使い回し、フィッシングの対象になり得るのです。

セキュリティ研究者は、認証を3つの要素タイプで説明します:

  • 知っていること — パスワードまたはPIN
  • 持っていること — スマートフォン、ハードウェアトークン、セキュリティキー
  • 自分であること — 指紋または顔

異なる2つの要素を組み合わせると、ハードルは一気に上がります。盗まれたパスワードだけではもうドアを開けられません。攻撃者はデバイスか生体情報も盗まなければなりません。このシンプルな考えこそが、この先のすべてを支えています。

ハードウェアトークンの時代(1980年代~2000年代)

最初に広く使われた第二要素は、小型のハードウェアトークンでした。数値コードを表示する小さな画面を備えたキーホルダー型やカードサイズのデバイスです。銀行は法人顧客に支給し、企業は従業員にVPNやネットワークログイン用として配布しました。1980年代に登場したRSAのSecurIDは、最もよく知られた例となりました。

コードがオフラインで機能する仕組み

トークンには接続性が不要でした。時刻ベースの設計では、トークンとサーバーがシークレットシードと時計を共有し、毎分または30秒ごとに、そのシードと現在時刻から両者が同じコードを導出しました。イベントベースの設計では、時計の代わりにカウンターを使用しました。ボタンを押すとカウンターが増加し、両者はその新しい値からコードを計算します。トークンとサーバーが同一の規則に従うため、通信することなく同期を保てたのです。

一般ユーザーに普及しなかった理由

各トークンの製造、出荷、登録、そしてバッテリー切れや紛失時の交換が必要でした。このユーザーごとのコストに在庫管理やヘルプデスクの負担が加わり、ハードウェアトークンは銀行と大企業に限られたものとなりました。

SMSコードが2FAを主流に

2000年代半ばまでに、携帯電話はどこにでもあるものになっていた。銀行はログインや送金の確認のためにワンタイムコードをSMSで送れることに気づき、瞬く間に第二要素が数百万人のもとへ届くようになった。購入するドングルも、インストールするソフトウェアも不要 — ポケットの中の携帯電話がそのまま第二要素になった。

Webサービスもそれに続いた。メールプロバイダー、ソーシャルネットワーク、ショッピングサイトが「電話にコードを送信」をオプションとして追加し、2FAは企業のセキュリティツールであることをやめ、一般ユーザーが数回のタップで有効化できるものになった。

ただし、SMSには現実のトレードオフがあった:

  • SIMスワップ: 携帯キャリアを騙すか賄賂で動かしてあなたの番号を新しいSIMに移行させた攻撃者が、あなたのコードを受け取る。
  • 傍受: コードはモバイルネットワーク上を流れるため、特定の通信攻撃によって捕捉される可能性がある。
  • キャリアへの依存: 電波がなければ、ローミングがなければ、コードは届かない — そして多くの場合、アカウントに入る手段もない。

SMSは2FAを主流にしたが、同時に欠陥も露呈した: 第二要素はあなたのものではなく、キャリアのものだったのだ。

認証アプリとプッシュ承認

スマートフォンはハードウェアトークンを誰ものポケットに収めた。Google Authenticator や Authy などの TOTP アプリは、共有シークレットから 30 秒ごとのコードをオフラインで生成する。生成はローカルで行われるため、コードは機内モードでも機能し、ネットワーク上を一切流れない。キャリアに依存せず、コード自体が盗み取られることもない。

簡単になった登録

初期の設定では、長い base32 キーを手入力する必要があった。QRコードによる登録がそれに取って代わった。スキャンすれば完了。シークレットは数秒で転送でき、打ち間違いやサポート問い合わせを減らした。

プッシュ承認

プッシュ承認は入力そのものを不要にした。通知が届き、ワンタップでサインイン。より速く、間違いにくく、ログイン画面が見えない場面でも機能した。番号マッチング — 画面に表示された番号をプロンプトに入力する方式 — は、後に誤操作による承認への対策として加わった。

この利便性は諸刃の剣だった。攻撃者は、疲れたユーザーが承認をタップするまで承認要求を繰り返し送る手法を編み出した — プッシュ疲れである。番号マッチングとより明確なプロンプトはこのリスクを減らすが、なくすわけではない。そしてパスワードや SMS コードと同じく、ユーザーが騙されてコードを読み上げてしまえば、TOTP コードもフィッシングされ得る。

セキュリティキーと公開鍵認証への移行

2010年代前半までに、FIDO Allianceと呼ばれる団体は、それ以前のすべての方式に共通する弱点——共有シークレット——の排除に乗り出しました。パスワード、SMSコード、さらにはTOTPシードはサーバーとユーザー双方の側に存在するため、サーバー側のコピーを盗めば誰でもログインできてしまいます。FIDOはこのモデルを公開鍵暗号方式に置き換えました。秘密鍵がデバイスの外に出ることはなく、サーバーは公開鍵のみを保存し、自分の秘密鍵でしか答えられないチャレンジを発行します。シークレットがネットワークを流れることは一切ありません。

ハードウェアセキュリティキー

セキュリティキーは、USB、NFC、Bluetoothで接続する小型の物理デバイスです。その最大の特徴はフィッシング耐性です。キーは何かに署名する前にウェブサイトのオリジンを検証するため、類似ドメインの偽ログインページには有効な署名が渡りません。

オリジンバインディングが重要な理由

各署名は厳密なオリジンに紐付いているため、あるサイトから奪った認証情報を別のサイトで、あるいは偽装ドメイン経由で同じサイトで再利用(リプレイ)することはできません。盗んでも再利用できるものが何も存在しないのです。

パスキー:現在の章

パスキーはこの物語の最新の章です。FIDO2フレームワークとそのWebAuthnプロトコルに基づいており、ウェブサイトはブラウザー上で直接ログインを検証できます。パスキーは、パスワードの共有シークレットを暗号鍵ペアに置き換えます。秘密鍵はデバイス上または同期されたアカウント内に残り、ウェブサイトが保存するのは公開鍵の半分だけです。

日常のログインで何が変わるか

  • 入力は不要。 ログインは指紋、顔、またはデバイスのPINでの確認だけ。コードの受信、再入力、傍受の心配はありません。
  • デバイス間で同期。 Apple、Google、Microsoftはアカウントサービス経由でパスキーを同期するため、デバイスを失っても締め出されることはありません。
  • サーバーに秘密は保存されない。 サイトが保存するのは公開鍵だけなので、データベースが漏洩しても、攻撃者がログインに使える情報は何も得られません。

パスキーは設計上、フィッシング耐性も備えています。ブラウザーは各資格情報を正規のウェブサイトのアドレスに暗号学的に紐付けるため、巧妙な偽サイトが、他の場所で使える資格情報を収集することはできません。

歴史が教えること

2FAの各世代は、同じ3つの要素をそれぞれ異なる形でトレードオフしてきました。ハードウェアトークンは安全ですが高価で紛失しやすい。SMSコードは無料で馴染みがあるものの、傍受やSIMスワップに脆弱です。認証アプリは低コストでセキュリティを向上させました。一方、プッシュ承認は利便性を優先し、慎重な判断を犠牲にすることもありました。パスキーはついにセキュリティと使いやすさを両立させましたが、普及には時間がかかります。

本当の弱点はリカバリー

どの時代でも、攻撃者は認証要素そのものを破ることはまれです。リセットします。バックアップメール、秘密の質問、サポートへの説得力のある電話に基づくリカバリーフローは、最も強固な認証すら無効化してきました。リカバリーでバイパスできるなら、パスキーの保護はほとんど意味をなしません。

置き換えではなく共存

ハードウェアトークン、認証アプリ、SMSコード、パスキーは、今後何年も共存し続けます。サービス、予算、ユーザーはそれぞれ異なる速度で動くのです。

実践的な教訓

2FAが提供されている場所ではどこでも有効にしてください。SMSよりもパスキー、セキュリティキー、認証アプリを優先しましょう。バックアップコードはオフラインで保管します。そして、リカバリー設定を見直してください — 多くのアカウントが実際に破られるのはそこだからです。

このガイドを共有

9分で読める

強力な2FAで暗号資産・金融アカウントを守る

認証アプリ、ハードウェアキー、出金保護を活用した2FAの実践ガイド。取引所アカウント、銀行アプリ、暗号資産ウォレットの保護方法を解説します。

続きを読む