2段階認証とは?2要素認証との違いと、ログインを守る仕組み

GitHubやCloudflareのアカウントを作ると、多くの場合「2段階認証を設定してください」と求められます。
設定を済ませても、パスワードのほかに何を確かめていて、どの方法を選べば安全なのかは分かりにくいものです。本記事では、2段階認証の考え方を順に解説します。
2段階認証とは
2段階認証は、ログインのときに、パスワードの入力に続けてもう1回、別の確認を求める仕組みです。
パスワードだけのログインでは、パスワードが漏れた時点で、誰でもそのアカウントに入れてしまいます。2回目の確認があれば、パスワードを知られても、それだけではログインできません。
2回目の確認には、スマートフォンの認証アプリが表示する6桁の数字(ワンタイムパスワード)、SMSで届くコード、パスキーなどが使われます。
本人であることを確かめる3つの要素
2回目の確認の意味を考えるには、本人の確かめ方の種類(要素)を知っておくと便利です。要素には、知識情報、所持情報、生体情報の3つがあります。
種類の違う要素を組み合わせる方法を多要素認証と呼び、そのうち要素を2つ使うものが2要素認証です。3つの要素の中身と、種類を変えて組み合わせる理由は、多要素認証とはで詳しく解説しました。
2段階認証と2要素認証の違い
2段階認証と2要素認証は、似ていても意味が違います。
2段階認証は、確認の手順が2回あることだけを指す言葉です。何を確かめるかは問いません。2要素認証は、2回の確認がそれぞれ別の種類の要素であることを求めます。
たとえば、パスワードを入れたあとに秘密の質問に答える方法は、2段階ではありますが、どちらも知識情報です。パスワードと秘密の質問の答えを一緒に盗まれれば、両方を突破されてしまうでしょう。
パスワードを入れたあとに、自分のスマートフォンに表示された数字を入れる方法なら、知識情報と所持情報の組み合わせになります。パスワードを盗んだ人も、スマートフォンまでは持っていません。
多くのサービスは、画面では「2段階認証」と表示しながら、実際には2要素認証にあたる方法を求めています。言葉の違いより、2回目に何を確かめているかを見てください。
2回目の確認の手段と強さ
2回目の確認の手段によって、守れる範囲が変わります。違いがはっきり出るのは、本物そっくりの偽サイトにログイン情報を入れさせる、フィッシングへの強さです。
SMSで届くコードは手軽な反面、デジタル庁の本人確認のガイドラインでは、リスクを受け入れられるかを個別に判断すべき手段とされています。電話番号を乗っ取られたり、解約した番号が別の人に割り当てられたりすると、コードが他人に届いてしまうためです。
認証アプリのワンタイムパスワードなら、スマートフォンの中で数字を作るので、SMSより安全性が高まります。ただし、表示された数字を人が書き写す方式なので、偽サイトに数字を入れてしまえば、その数字を使われかねません。デジタル庁の本人確認のガイドラインも、ワンタイムパスワードは、偽サイトが入力を本物のサイトへその場で中継する攻撃には耐えられないと注意しています。
パスキーとセキュリティキーは、ログインする先のサイトを機械が確かめるので、偽サイトでは使えません。日本証券業協会が証券会社のログインに必須とするよう求めた「フィッシングに耐性のある多要素認証」も、パスキーなどこの種類の方法です。
選べるなら、パスキーを使ってください。パスキーに対応していないサービスでは、SMSより認証アプリのワンタイムパスワードを選びましょう。それぞれの仕組みは、ワンタイムパスワードとはとパスキーとはで解説しています。
パスワードマネージャーにコードを保存してよいか
パスワードマネージャーの多くは、パスワードと一緒にワンタイムパスワードも保存できます。ログインのたびにスマートフォンを取り出さなくて済むので便利ですが、2要素認証の考え方からすると気になる点も残るでしょう。
パスワードとワンタイムパスワードの両方が、同じ保管場所に入ることになるためです。パスワードマネージャーの開発元の1つ(1Password社)もブログで、この使い方は2段階認証にはなるものの、厳密な2要素認証ではないと認めました。そのうえで、同じ端末の別の認証アプリに入れても守りの強さは変わらず、端末そのものが乗っ取られた場合はどちらでも守れない、という立場をとっています。
一方で、パスワードだけが漏れた場合や、サービス側からパスワードが流出した場合なら、ワンタイムパスワードがあるので守れるはずです。利便性と、どこまで守りたいかを比べて決めてください。
ただし、パスワードマネージャー自身のアカウントを守る2段階認証のコードは、そのパスワードマネージャーの外に保存してください。保管庫の鍵を保管庫の中に入れるのと同じになり、開けなくなったときに取り出せないためです。開発元のサポートページにも、別の認証アプリに保存するよう書かれています。
製品での使われ方
このサイトでは、次のサービスで2段階認証を設定する手順を解説しています。どちらも、パスワードマネージャーの1つである1Passwordを例に、ワンタイムパスワードを保存する方法です。
GitHubでは、2段階認証とは別にパスキーも登録できます。手順は【GitHub】パスキーを1Passwordに保存する方法にまとめました。
参考にした一次情報
- デジタル庁「DS-511 行政手続等での本人確認におけるデジタルアイデンティティの取扱いに関するガイドライン」(2025年9月30日)
- 日本証券業協会「インターネット取引における不正アクセス等防止に向けたガイドライン」(2025年10月15日)
- NIST SP 800-63B Rev.4「Authentication and Authenticator Management」
- 総務省「国民のためのサイバーセキュリティサイト」安全なパスワードの設定・管理
- 1Password「Use 1Password as an authenticator for sites with two-factor authentication」
- 1Passwordのブログ「1Password and 2FA: Is it wrong to store passwords and one-time codes together?」(2023年6月22日)