【図解】パスワード認証、二要素認証、認証アプリの仕組みとは?セキュリティの課題と対策を徹底解説

※ 当サイトではアフィリエイト広告を利用しています。リンクは広告リンクも含みます。

この記事は約8分で読めます。

Webサービスを利用する上で欠かせない「ログイン」。

今回は、一般的な「ID・パスワードによる認証」と、セキュリティを強化するための「メール/SMSによる二要素認証」さらに「認証アプリ」の仕組みについて、図解を交えて解説します。

なぜこれらが必要なのか、そしてどのようなリスク(問題点)があるのかを見ていきましょう。

広告
MINISFORUM日本公式ストア

「パスワード+メール/SNS認証の仕組み」を解説

大きく分けて4つのステップで構成されています。

Step 1:ログインリクエスト(知識認証)

ユーザーはデバイス(スマホやPC)から「ユーザーID」と「パスワード」を入力します。

サーバー側では、データベースに保存されている情報と照合し、「このIDとパスワードの組み合わせは正しいか?」を確認します。

  • ここでの要素: 「知識情報(知っていること)」による認証

Step 2:二要素認証コードの送信(所有物認証)

IDとパスワードが合致した場合、サーバーはすぐにログインさせず、登録されたメールアドレスや電話番号(SMS)宛に「ワンタイムコード(ランダム数字)」を送信します。

  • ここでの要素: 「所有情報(スマホやメアドを持っていること)」による認証

Step 3:コードを送信

ユーザーは手元のスマホに届いたコードを確認し、ログイン画面に入力・送信します。

Step 4:ログイン完了

サーバー側でコードが正しいことが確認されると、初めて「検証成功」となり、ログインが完了します。


従来の「パスワードのみ」の認証における問題点

この図のような「二段階(二要素)認証」が普及する前は、Step 1のみでログインが完了していました。しかし、パスワードだけの認証には以下のような致命的な問題点があります。

パスワードの使い回しによるリスク(リスト型攻撃)

多くのユーザーは複数のサイトで同じパスワードを使い回しています。もし1つのサイトから情報が漏洩すると、他のサイトへも不正ログインされてしまいます。

推測されやすいパスワード

「123456」や「password」、誕生日など、推測されやすいパスワードを設定している場合、攻撃者に容易に突破されてしまいます。

フィッシング詐欺への脆弱性

偽のログインサイト(フィッシングサイト)に誘導され、IDとパスワードを入力してしまうと、その情報は盗まれ、第三者に乗っ取られてしまいます。


図の方式(SMS/メール認証)でも残る問題点

セキュリティを強化するために、図のような「SMSやメールを使った認証」が導入されました。しかし、この方式にもまだ課題(問題点)は残っています。

SMS/メール自体の盗聴・乗っ取り

  • SIMスワップ詐欺: 攻撃者が携帯電話会社を騙して、被害者の電話番号を自分のSIMカードに移し替え、SMS認証コードを盗む手口があります。
  • メールアカウントの乗っ取り: メールアドレス自体(Gmailなど)のパスワードが漏れている場合、認証コードが記載されたメールを第三者に見られてしまいます。

リアルタイムフィッシング(中間者攻撃)

近年増えている手口です。ユーザーが偽サイトに「ID・パスワード」を入力すると、攻撃者が裏で本物のサイトにそれを入力します。本物のサイトからユーザーに「認証コード」が届き、ユーザーがそれを偽サイトに入力してしまうと、攻撃者はそのコードを使ってログインを完了させてしまいます。

つまり、図の仕組みであっても、巧妙なフィッシング詐欺は防げない場合があるのです。


私たちはどう対策すべきか

パスワード認証に「もう一つの鍵」を加えることで、セキュリティを大きく向上させる仕組みを表していました。

しかし、解説した通り「SMS/メール認証」も万能ではありません。現在では、より安全な認証方法として以下のような対策が推奨されています。

  • 認証アプリの利用: Google Authenticatorなどのアプリでコードを生成する(SIMスワップ対策に有効)。
  • パスキー(Passkeys)の導入: パスワードを使わず、指紋や顔認証でログインする最新技術(よく勘違いされるポイントですが、パスワードと同じ感覚で、指紋や顔のデータがサーバーにあって、そのデータを突き合わせて検証しているわけではありません。サーバーには送られません。次回、パスキーの仕組みは解説します。)

Webサービスを提供する側も利用する側も、こうした認証の仕組みとリスクを正しく理解し、適切なセキュリティ対策を行うことが重要です。


認証アプリ(Google Authenticator)とは

認証アプリ(Google Authenticatorなど)を使った二要素認証を解説します。
まず、簡潔に説明しておくと
一度設定してしまえば、対象サイトとスマフォで一定時間ごとに同じコードを生成することができる仕組みです。
なので、ある時刻(ログイン時)に、サイトにスマフォのコードを入力することで、サイトでも同じコードが生成されているので、検証できるというものです。

この方法は、電話番号(SIMカード)に依存せず、「あなたのスマホ端末そのもの」を鍵にするため、セキュリティ強度が格段に上がります。今回は、Google Authenticatorを例に、設定の流れを図解で解説します。

認証アプリ導入の全体像(図解イメージ)


具体的な設定ステップ(4段階)

ここでは、最も一般的な「Googleアカウント」に設定する例で解説しますが、X(Twitter)やAmazon、Instagramでも基本的な流れは同じです。

Step 0:アプリのインストール

まずはスマホにアプリを入れましょう。

  • iOS/Android共通: 「Google Authenticator(Google 認証システム)」
  • ※Microsoft Authenticatorなど他のアプリでも代用可能です。

Step 1:PCで「二要素認証の設定」を開く

パソコン(またはスマホのブラウザ)で、設定したいサービスのセキュリティ設定を開きます。

  • メニュー例:「セキュリティ」→「2段階認証プロセス」→「認証システム アプリ」を選択。
  • ポイント: ここで「セットアップ」ボタンを押すと、画面にQRコードが表示されます。

Step 2:スマホアプリでQRコードをスキャン

スマホでGoogle Authenticatorアプリを起動します。

  1. 画面右下の「+」ボタンをタップ。
  2. 「QRコードをスキャン」を選択。
  3. カメラが起動するので、PC画面のQRコードを読み取ります。

Step 3:表示されたコードを入力

スキャンに成功すると、アプリの画面に「Google(またはサービス名)」と「6桁の数字」が追加されます。

この数字は30秒ごとに変化します(ワンタイムパスワード)。

  • PCの画面に戻り、 今アプリに表示されている6桁の数字を入力して「確認」ボタンを押します。

Step 4:設定完了!

これで紐付けは完了です。次回からログインする際は、パスワード入力後に「アプリを開いて、その時表示されている6桁の数字」を入力することになります。

「SMSで送られてくるコード」と「アプリで表示されるコード」、パッと見はどちらも「6桁の数字を入力する」という同じ作業に見えますよね。

しかし、その「裏側の仕組み」が全く異なるため、セキュリティの強さが大きく違います。


SMS認証と認証アプリ:決定的な3つの違い

結論から言うと、最大の安全性の違いは「コードがインターネット(通信網)を通るかどうか」にあります。

通信経路:盗聴のリスク

  • SMS認証: コードはサーバーからあなたのスマホへ「送信」されます。この送信プロセス(携帯電話網)は暗号化が不十分な場合があり、途中で傍受(盗聴)されるリスクがゼロではありません。
  • 認証アプリ: コードはアプリ内で「自動生成」されます。どこからも送られてきません。通信が発生しないため、空中で盗まれる心配が物理的にありません。(機内モードでも使えるのはこのためです)

本人確認の対象:電話番号 vs デバイス本体

  • SMS認証: 「電話番号」に紐付いています。前回解説した「SIMスワップ」のように、電話番号さえ乗っ取れれば、犯人のスマホにコードが届いてしまいます。
  • 認証アプリ: 「特定のスマホ端末(のチップ内にある秘密鍵)」に紐付いています。QRコードを読み取った瞬間に、サイトとあなたのスマホの間だけで通用する「計算式」が共有されます。犯人があなたの電話番号を盗んでも、あなたのスマホ本体を持っていない限り、同じコードは生成できません。

有効期限と更新頻度

  • SMS認証: 一度送られたコードは数分〜10分程度有効なことが多いです。
  • 認証アプリ: 一般的に「30秒」ごとに新しいコードに切り替わります(TOTP方式)。万が一コードが漏れても、30秒後にはゴミ同然の数字になるため、攻撃のチャンスを極端に短くできます。

補足:QRコードは何をしているのか?

「QRコード=専用URLにアクセスしている」と思われがちですが、実は少し違います。

認証アプリでスキャンするQRコードの中身は、URLではなく「シークレットキー(秘密の合言葉)」です。

  1. スキャン時: サイトからアプリへ「これからこの計算式(合言葉)を使って、30秒ごとに数字を作ろうね」というルールを渡します。
  2. ログイン時: サイトとアプリが別々に、同じ合言葉と「今の時刻」を使って計算します。
  3. 照合: 両者が計算した結果(6桁の数字)が一致すれば、「お互い同じ合言葉を知っているね=本人だ」と判定されます。

つまり、「送られてきたものを受け取る(SMS)」のではなく、「あらかじめ決めたルールで、その場で同じ数字を出し合う(アプリ)」という仕組みなのです。

  • SMS認証: 毎回、本部に電話して「今の合言葉を教えて!」と聞き、それを叫んで門を通る(誰かに聞かれるかも)。
  • 認証アプリ: 最初に本部と「共通のルールブック」を共有しておき、時計を見ながらお互い手元のルールブックで合言葉を確認する(誰にも聞かれない)。

まとめ

パスワード認証の欠点は、パスワード自体が盗まれると、どうにもならない。
SMS/メール認証の欠点は、コードがサイトとユーザー間で通信網を通じて、やり取りされるので、電話番号や、メールアカウントが盗まれたら、どうにもならない。
認証アプリは、スマフォが盗まれない限り、大丈夫。(ただし、絶対に安全ではなく、リスクが、低くなるだけという認識でいたほうがいいと思います。)
次回、パスキーによる認証について、かなり突っ込んだ解説をする予定です。執筆中。

この記事を書いたイチゲを応援する(質問でもokです)
Vプリカでのお支払いがおすすめです。

MENTAやってます(ichige)

タイトルとURLをコピーしました