金融機関を中心にFIDOやパスキーへの移行が急務とされていますが、これは一体何なのでしょうか。パスワードレスや生体認証が強調されることが多いのですが、重要なのはそこではなく、公開鍵暗号方式という点です。この記事では、認証と暗号の基本概念から、FIDOとパスキーについて分かりやすく解説します。合わせて、それ以外の認証用語についても解説します。
FIDO、パスキーを理解するための基本概念
共通鍵暗号方式、公開鍵暗号方式を中心に、FIDO・パスキーの前提となる概念について解説します。
認証とは
「認証(Authentication)」とは、本人かどうかを確認し、「なりすまし」を防ぐ仕組みのことです。
「なりすまし(Impersonation)」と「不正利用(Unauthorized Use / Abuse)」は、よく似た概念ですが、厳密に言えば異なります。
なりすましは、他人の振りをすることです。
不正利用は、なりすましを含み、本来許可されていない行動をすることです。
例えば、正当に認証されたユーザーが、禁止されているデータを持ち出すことは、不正利用と言えます。
したがって、認証はなりすましを防ぐことはできるが、(全ての)不正利用を防ぐことはできないということになります。
不正利用を防ぐことは、「認可」の範囲となります。
認可とは
「認可(Authorization)」とは、何をできるかの権限設定をすることです。
認可は認証の後に行われます。(誰だか分からないので)
認証の三要素
認証には様々な方式があり、大別すると以下の3種類となります。
知識情報(何を知っているか)
本人だけが知っている情報を使い認証する方法です。
パスワード、暗証番号、秘密の質問に対する応え、などが該当します。
所持情報(何を持っているか)
本人だけが所有している物を使い認証する方法です。
物理的な鍵、ICカード、PCやスマホ、などが該当します。
生体情報(あなたは何か)
本人の身体的特徴や行動を使って認証する方法です。
指紋、声紋、顔などが該当します。
二要素認証、多要素認証
より安全な認証のために、複数の認証方式を組み合わせることが一般的です。
この際に、上記の3つのカテゴリの中から、「知識+所持」「知識+生体」など異なるものを組み合わせるようにします。
2つを組み合わせることを「二要素認証(Two Factor Authentication、2FA)」、2つ以上を組み合わせることを「多要素認証(Multi Factor Authentication、MFA)」と言います。
一般的なセキュリティレベルでは二要素であることが多いですが、最新の方式では三要素が使われることもあります。
ローカル認証とリモート認証
初期のコンピュータの認証は、物理的な端末の中で、パスワードを照合するだけのシンプルなものでした。
しかし、コンピューターネットワーク越しにリモート認証が始まると、通信経路内でパスワードを盗み見されたり、乗っ取られたりする危険性が出てきました。
そこで、通信データの暗号化が必要となりました。
認証と暗号の違い
「暗号(Encryption)」とは、情報を読めないようにすることで、第三者に盗み見されることを防ぐ技術です。
例えばあるウェブサイトにログインする場合、リモート認証のために「パスワード(鍵)」を送信する必要がありますが、このままでは誰かに見られてしまいます。
そのため、別の「鍵」を使用して通信を暗号化し、その中でパスワードをやり取りします。
このように認証と暗号は異なる概念ですが、密接に関係しており、しかもほとんどの処理が自動化されているため、何のために何が行われているのかが、とても分かりにくくなっています。(この記事ではそれを解説しています)
共通鍵暗号
「共通鍵暗号(Symmetric encryption、対象暗号)」は、暗号化と復号化で同じ鍵を使用する暗号方式です。
送信者は、メッセージを「共通鍵」で暗号化して送信します。
受信者は、受信したメッセージを同じ「共通鍵」で復号化します。
古代ローマ時代から使われている暗号方式ですが、その「共通鍵」をどうやって相手に渡せばよいのかという根本的な問題があります。
公開鍵暗号
「公開鍵暗号(Asymmetric encryption、非対称暗号)」は、暗号化と復号化で異なる鍵を使用する暗号方式です。
まず、メッセージの受信者が「公開鍵」と「秘密鍵」のペアを作成し、「公開鍵」のみを公開します。
送信者は、メッセージを「受信者の公開鍵」を使って暗号化し送信します。
受信者は、受信したメッセージを「自分の秘密鍵」を使って復号化します。
ここでのポイントは、復号化できるのは秘密鍵だけであり、公開鍵では復号化できないという点です。
秘密鍵は自分だけが持っていれば良いので、鍵を受け渡す必要がなく、盗み見られる心配がありません。
一方で、複雑な計算が必要となるため処理が遅く、鍵を通信相手ごとに管理しなければいけないという問題があります。
このため、共通鍵を公開鍵で暗号化して送信し、実際の通信は共通鍵で暗号化するというハイブリッド方式が取られています。
また、鍵の管理もシステムが自動的に行なっています。
公開鍵暗号方式は1970年代に開発され、人類最大の発明の一つとも言われていますが、複雑な処理が自動的に行われているので、一般的には理解されにくい仕組みとなっています。
パスワード
「パスワード(password)」は、幅広い概念で、「本人であることを証明するために、本人だけが知っている情報」を意味します。
狭義には、アルファベット、数字、記号を組み合わせた文字列のことを指します。
広義には、知識情報を使用した認証方式全般を指します。
パスフレーズ
「パスフレーズ(passphrase)」は、パスワードと同じ意味で使うこともありますが、パスワードが無意味な文字列であることに対し、パスフレーズは意味のある単語の組み合わせ(apple horse mars yellow、等)として区別されることもあります。
PIN
「PIN(Personal Identification Number)」は、パスワードの一種と言えますが、特に決まった定義はありません。
文脈により、次の2つの意味で使われることが多いです。
- パスワードがランダムな英数字+記号なのに対し、PINは数字のみ
- パスワードがサーバーで認証を行うのに対し、PINはローカルで認証する
トークン
「トークン(token)」にも決まった定義がある訳ではありませんが、以下のようにパスワードと区別されることがあります。
- パスワードはユーザーが自分で決めるのに対し、トークンはシステムが自動発行する
- パスワードが認証の入口で使われるのに対し、トークンは認証後に状態を維持するために使われる
- パスワードが認証に使われるのに対し、トークンは認可に使われる
パスワードレス
「パスワードレス(passwordless)」とは、ユーザーが文字列を覚えて入力する方式以外の認証方式全般を指します。
多くのユーザーは、同じパスワードを使い回す傾向にあり、1つのパスワードが漏洩すると、広範囲に影響が及ぶことになります。
また、スマホのロック画面の解除など、繰り返し入力を求めると、利便性のために簡単なパスワードにしてしまうという問題もあります。
そのため、パスワード入力が必要ない認証方式とすることが、セキュリティを高めることにつながるとされています。
セキュリティキー、ハードウェアトークン
「セキュリティキー(security key)」にも決まった定義はありませんが、USBやNFCを使用した、物理的な認証デバイスを指すことが多いです。
これらの認証デバイスは、「ハードウェアトークン」と呼ばれることもあります。
なぜ「ハードウェアキー」ではなく「ハードウェアトークン」なのかは、歴史的な経緯でそうなっているだけで、深い理由はないように思えます。
FIDO、パスキーとは
FIDO、パスキー、およびYubikeyについて解説します。
FIDO、FIDO2
「FIDO(Fast IDentity Online)」は、パスワードを使わず、公開鍵暗号方式で認証を行うための規格です。
ユーザー端末とサーバー間で、公開鍵と秘密鍵のペアを作成し、認証を行います。
これにより、以下のようなメリットがあります。
- パスワードが存在しないため、漏洩する心配がない
- サーバーごとに使用する鍵のペアが異なるため、フィッシングサイトに騙されない
- 端末内に鍵が保存されるので、別の端末からなりすましをすることが不可能
一方で、端末自体を奪われると完全に乗っ取られることになるので、端末内の鍵を保護するために、生体認証などが組み合わされます。
「FIDOは生体認証だからパスワードレス!」と説明されることがあるのですが、生体認証が本質ではなく、公開鍵暗号方式という点が重要です。
FIDOの最新規格「FIDO2」では、内部的に「WebAuthn」「CTAP2」が使われます。
WebAuthn
「WebAuthn(Web Authentication)」は、FIDO2規格の一部で、Webサイトとブラウザ間のプロトコルのことです。
主要なブラウザは全て、WebAuthnに対応済みです。
CTAP2
「CTAP2(Client To Authenticator Protocol v2)」は、FIDO2規格の一部で、ブラウザと認証器間のプロトコルのことです。
認証器とは、PCやスマホ、セキュリティキー(ハードウェアトークン)のことを指します。
つまり、以下のような流れです。
【スマホ】- (CTAP2) - 【ブラウザ】- (WebAuthn) - 【Webサイト】
パスキー
FIDO2が技術的な規格なのに対し、「パスキー(Passkey)」はApple、Google、Microsoftが合同で推進している具体的な実装です。
FIDO2とパスキーの違い
FIDO2では、秘密鍵が端末内にのみ保存されるので、奪われる心配がなくて安心ということでした。
しかし端末が故障したり、紛失してしまった場合に、二度とサイトにログインできなくなるという問題があります。
また、複数端末で利用する際に不便です。
パスキーでは、鍵をクラウド同期することで、その問題を解決します。
その際に、エンドツーエンドで暗号化してクラウドに保存するので、サーバー管理者であっても復号できず、安全であるとされています。
docomoのパスキー認証は?
NTTドコモも「dアカウント パスキー認証」を提供しています。
FIDO2準拠であることは確かですが、クラウド同期されるかについては分かりませんでした。
U2F
「U2F(Universal 2nd Factor)」は、初期のFIDO Allianceが標準化した、セキュリティキー(ハードウェアトークン)でFIDOを使うための規格です。
FIDO2ではU2Fも取り込まれ、より幅広い規格体系となりました。
YubiKey
「YubiKey(ユビキー)」は、スウェーデンのYubico社が発売する、セキュリティキーです。
FIDO2、U2F、TOTP、HOTP、PGPなど、多様な規格に対応しています。

FIDO、パスキー以外の認証用語
混同しやすい認証用語について解説します。
ワンタイムパスワード
「ワンタイムパスワード(One Time Password、OTP)」とは、一回限り有効の使い捨てのパスワードです。
SMS認証やメール認証で使われることが多いです。
SMS認証
「SMS認証(Short Message Service Authentication)」は、携帯電話・スマートフォンにSMS(ショートメッセージ)でワンタイムパスワードを送信する認証方法です。
二要素認証の一部として使われることが多いです。
ただしSMS認証は、セキュリティが低いため、世界的に廃止される流れとなっています。
下記のような、様々な攻撃方法があります。
SIMスワップ
入手した個人情報を用いて、通信会社でSIMの交換手続きをし、完全に乗っ取ります。
SMS転送
通信会社の設定サイトに不正ログインし、SMSを第三者に転送します。
偽基地局
IMSIキャッチャーを用いて通信を傍受し、パスワードを盗み見ます。
フィッシング、中間者攻撃
偽の認証画面にパスワードを入力させ、それをリアルタイムに正規サイトに入力します。
電話誘導
銀行やカスタマーサポートを装って、通話でパスワードを聞き出します。
メール認証
「メール認証」は、登録したメールアドレスにワンタイムコードや、URLを送信し、本人確認をする手法です。
ただし、次の2つの問題があるため、廃止される流れとなっています。
- メールを盗み見られる可能性がある
- メール認証の存在自体が、偽メールでフィッシングサイトに誘導する要因となっている
マジックリンク
「マジックリンク(Magic Link)」は、URLをクリックするだけで認証が完了する方式です。
主にメールやSMSでリンクが送信されます。
上記のメール認証で送られるリンクは2FAの一環ですが、マジックリンクはそれ単体で認証が完了します。
高いセキュリティが不要で、ユーザー体験を重視するサービスで使用されます。
認証アプリ
認証アプリとは、ワンタイムパスワードを生成するアプリのことです。
主に二要素認証の一部として使用されます。
認証アプリは実質的に、TOTPアルゴリズムに基づいたワンタイムパスワードを生成するアプリ、と言えます。
TOTP以外に、HTOPというアルゴリズムもありますが、ほぼ使われていません。
TOTP
「TOTP(Time Based One Time Password)」とは、秘密鍵と現在時刻から、30秒間隔で6桁の数字を生成するアルゴリズムです。
サーバーで生成した秘密鍵を、QRコード経由でアプリに転送する手法が一般的です。
サーバーとアプリで同じ数字が生成されるので、それが一致するかで認証されます。
-
無料でオープンソースの二段階認証アプリEnte Authの使い方
Ente Authはエンドツーエンド暗号化され、複数デバイスで同期ができる二段階認証アプリです。Google認証システムからの移行を考えているのであれば、有力な候補となります。この記事では、そもそも二 ...
パスワードマネージャー
パスワードマネージャーは、IDやパスワード等のログイン情報を管理するためのアプリです。
パスワード管理だけでなく、パスワード生成や、自動入力機能を備えていることが多いです。
また、TOTPの認証アプリと一体になっていることもあります。
-
安全性を考慮したパスワードマネージャー Bitwarden無料版の使い方
2024/11/26 アメリカ, パスワードマネージャー
Bitwardenは、エンドツーエンドで暗号化され、オープンソースかつ無料で使用できるパスワードマネージャーとして、人気を集めています。この記事では、Bitwardenの有料版と無料版の違いと、基本的 ...
ワンパスワード
「ワンパスワード(1Password)」は、カナダのAgileBits社が提供するパスワードマネージャーです。
稀に、ワンタイムパスワードと混同されていることがあります。
シングルサインオン、SSO
「SSO(Single Sign On)」は、一度のログインで、複数のサービスにアクセスできる仕組みのことです。
SSOは概念であり、実装方式としては「ブラウザのCookie」「SAML」「OIDC」などがあります。
SAML
「SAML(Security Assertion Markup Language)」は、ユーザーが認証済みであることをサーバー間で共有するための仕組みです。
以下の3つの構成要素があります。
- IdP(Identity Provider): 認証サーバー
- SP(Service Provider): 実際のサービス
- SAMLアサーション: 認証されたことを証明するXML文書
IdPとSP間で、SAMLアサーションを検証することで、SSOを実現できます。
SAMLは古い規格のため、OIDCへの移行が進んでいます。
OAuth、SNSログイン
「OAuth(Open Authorization)」は、第三者に限定的なアクセスを許可する仕組みです。
「Googleでログイン」「Facebookログイン」「LINEログイン」などが該当し、「SNSログイン」と呼ばれることもあります。
実際には「OAuth」と「OIDC」が組み合わさっていることが多いです。
OIDC
「OIDC(OpenID Connect)」は、OAuthを拡張し、「認証」情報を付与する仕組みです。
OAuthは「認可」であり、ユーザーが本人かどうかという確認を行っていません。
OIDCは、そのユーザーが「認証」された本人であることを保証します。
認証自体は、パスワードなどで別途行われます。
QRコード認証
「QRコード認証」は、意味が曖昧ですが、QRコードを用いたOAuth+OIDC認証のことを指していることが多いです。
例えばPCでLINEを利用する際に、PC側で生成したQRコードを、スマホのLINEアプリで読み取る、という使われ方がされます。
または、TOTPのことを指している場合もあります。
スマホ認証
「スマホ認証」という言葉は曖昧ですが、SBI証券が「FIDO認証」を「スマホ認証」という名前で提供しているので、それを指している可能性もあります。
デバイス認証
「デバイス認証」という言葉も曖昧で、使う人により意味が異なります。
ちなみにSBI証券が提供する「デバイス認証」は、FIDOのような公開鍵暗号方式ではなく、ブラウザのCookieのような仕組みのようです。(Cookieを削除すると別デバイスと認識されるため)
プッシュ通知型認証
「プッシュ通知型認証(Push Notification Authentication)」は、主にAppleやGoogleが、スマホやタブレットにログイン通知を送り、そこで「承認/拒否」をさせる仕組みです。
アカウントに紐づいたログイン済みデバイスを管理していることが前提となります。
なりすましに強く、操作が簡単であることが強みですが、通知が未達となったり、誤タップしたりする危険性もあります。
まとめ FIDO認証、パスキーとは
FIDO認証とは、サーバーとユーザー端末(PC、スマホ、セキュリティキー)間で、公開鍵暗号方式を用いて、パスワードレスで認証を行う仕組みです。
秘密鍵はユーザー端末内に保存されるので、外部に漏れる心配がありません。
また、サーバーごとに鍵のペアを作成するので、フィッシング詐欺やなりすましに強いとされています。
さらに、秘密鍵へのアクセスを保護するために、生体認証等が併用されます。
パスキーは、Apple、Google、Microsoftが推進するFIDOの実装で、鍵のペアをエンドツーエンドで暗号化してクラウド保存することで、複数端末で使いやすくしたものです。
利便性とセキュリティの両立が図られています。