Webサービスを利用する上で欠かせない「ログイン」。
今回は、一般的な「ID・パスワードによる認証」と、セキュリティを強化するための「メール/SMSによる二要素認証」さらに「認証アプリ」の仕組みについて、図解を交えて解説します。
なぜこれらが必要なのか、そしてどのようなリスク(問題点)があるのかを見ていきましょう。
「パスワード+メール/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アプリを起動します。
- 画面右下の「+」ボタンをタップ。
- 「QRコードをスキャン」を選択。
- カメラが起動するので、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ではなく「シークレットキー(秘密の合言葉)」です。
- スキャン時: サイトからアプリへ「これからこの計算式(合言葉)を使って、30秒ごとに数字を作ろうね」というルールを渡します。
- ログイン時: サイトとアプリが別々に、同じ合言葉と「今の時刻」を使って計算します。
- 照合: 両者が計算した結果(6桁の数字)が一致すれば、「お互い同じ合言葉を知っているね=本人だ」と判定されます。
つまり、「送られてきたものを受け取る(SMS)」のではなく、「あらかじめ決めたルールで、その場で同じ数字を出し合う(アプリ)」という仕組みなのです。
- SMS認証: 毎回、本部に電話して「今の合言葉を教えて!」と聞き、それを叫んで門を通る(誰かに聞かれるかも)。
- 認証アプリ: 最初に本部と「共通のルールブック」を共有しておき、時計を見ながらお互い手元のルールブックで合言葉を確認する(誰にも聞かれない)。
まとめ
パスワード認証の欠点は、パスワード自体が盗まれると、どうにもならない。
SMS/メール認証の欠点は、コードがサイトとユーザー間で通信網を通じて、やり取りされるので、電話番号や、メールアカウントが盗まれたら、どうにもならない。
認証アプリは、スマフォが盗まれない限り、大丈夫。(ただし、絶対に安全ではなく、リスクが、低くなるだけという認識でいたほうがいいと思います。)
次回、パスキーによる認証について、かなり突っ込んだ解説をする予定です。執筆中。
この記事を書いたイチゲを応援する(質問でもokです)
Vプリカでのお支払いがおすすめです。