2023 年は文句なく「パスキー元年」になりました。非常にたくさんのサービスがパスキーに対応し、2024 年はいよいよパスキー普及の年になりそうです。

本記事では、パスキーの基本を振り返ったうえで、パスキーでみなさんが勘違いしやすい点について解説します。

2023 年は本当にたくさんのウェブサイトがパスキーに対応しました。例を挙げます:

  • Adobe
  • Amazon
  • Apple
  • eBay
  • GitHub
  • Google
  • KDDI
  • Mercari
  • Mixi
  • MoneyForward
  • Nintendo
  • NTT Docomo
  • PayPal
  • Shopify
  • Toyota
  • Uber
  • Yahoo! JAPAN

もちろんこのリストですべてではないですが、これらだけでも、世界人口のかなりをカバーできるはずで、まさに大躍進と言えます。もしまだパスキーを体験していないという方がいたら、ぜひこの機会にお試しください。

とはいえ、現段階では実際に使っているユーザーがカバー人口と同じ数だけいるわけではないですし、開発者目線でも、ユーザー体験や実装面にはまだまだ改善の余地があり、熟れてくるまでに最低 2, 3 年はかかるだろうという感触があります。まずは少しでも多くの人に、より正確なパスキーの知識を得てもらいたいと思い、この記事を書いています。

ログインすることが最新テクノロジーを使う障壁でなくなり、例えば自分の母親などでも、詳しい人に相談することなく、簡単かつ安全にウェブサイトやアプリの機能を使える世界がパスキーで実現できると嬉しいなと思っています。

パスキーの基本 #

まずはパスキーの基本を振り返ってみましょう。パスキーについて短くまとめたビデオを作ったのでぜひご覧ください。英語ですが、翻訳して日本語字幕を出すこともできます。

パスキーはひとことで言うと デバイスの所有者がデバイス内に保存された鍵を使ってウェブサイトやアプリにログインできる仕組み です。

  • パスキーはサイトやアプリごとに複数作ることができる
  • パスキーを作ったりログインする際は、アンロックなどローカルのデバイス認証を行う
  • パスキーはパスワードマネージャーに保存され、デバイス間で同期できる
  • パスワードマネージャーの利用が強制されるので、ユーザーはフィッシング詐欺に引っかかりにくい
  • RP (Relying Party) のサーバーに保存されるのは公開鍵なので、アカウントにログインするための情報がそこから盗まれる可能性は限りなく低い

もう少し詳しいところは、このブログでも 2 回ほど取り上げていますので、そちらも読んでみてください。

パスキーにまつわる誤解を解く #

パスキーの基本を踏まえて、ここからは、巷で見かけたパスキーにまつわる誤解を解いていきます。

  • 2023 年 12 月 19 日:誤解 10 〜 13 を追記しました。

  • 2023 年 12 月 21 日:誤解 10, 11 の内容を分かりやすく修正しました。

誤解 1: パスワードマネージャーを使っていれば十分安全だからパスキーを使う意味はない #

これはある意味間違っていません。パスキーを使う意義は、パスワードマネージャーの利用を強制できるところにもあります。

確かに、パスワードを使い続けていても、パスワードマネージャーを使っていれば、複雑なパスワードを自動生成してくれますし、記憶する必要もないし、適切なドメインに入力してくれるのでフィッシングに引っかかる確率も低いので、うまく使えればその方にパスキーは必要はないかもしれません。

問題は、パスワードマネージャーを使うリテラシーのない人や、使い方の分からない人をどう守るかです。選択すればパスワードマネージャーを利用できる環境は長年存在していますが、未だにパスワードの漏洩やアカウントの乗っ取りが減らないのは、その存在があるだけでは問題が解決しないためです。

サイトやアプリ側としても、できればパスワードを忘れてしまうユーザーや、二要素認証をフィッシングで盗まれてしまうユーザーのサポートにコストをかけたくはないはずですが、ユーザーにパスワードマネージャーの利用を強制することはできません。それができるのがパスキーなのです。

KDDI は、パスキーを導入することで、認証に関する問い合わせが 3 割減ったと報告しています。

誤解 2: デバイスを紛失するとパスキーは使えなくなる? #

同期しているパスキーは、デバイスを紛失しても復旧することができます。

多くの場合、パスキーはパスワードマネージャーのサーバーにバックアップできますので、デバイスを紛失しただけで即座に二度とログインできなくなることはありません。別の (または新しい) デバイスで同じパスワードマネージャーのアカウントにログインできれば、パスキーの復元が可能です。例えば Android 端末を紛失してしまった場合、Google アカウントにさえログインできれば、別の端末から保存していたパスキーを復旧することができます。

同期の仕組みをもう少し詳しく説明すると、例えば Android で Google Password Manager を使った場合、保存したパスキーはその端末の PIN またはパターンを使って暗号化した上で Google のサーバーにバックアップされます。新しい端末に移行する場合、まずは Google アカウントにログイン、その後古い端末の PIN またはパターンを入力することで、パスキーを同期・復号し、ログインに利用することができます。Apple デバイスでも似たような感じです。

端末を紛失し、悪意ある人の手に渡ったと感じた場合は、端末ごとリモートワイプしておくと安心かもしれません。

誤解 3: パスキーだって〜したらアカウント盗めるでしょ? #

皆さん、パスキーが脆弱な理由を考えて、色々なアイディアを提案してきてくれます。もちろん、解決すべき問題、解決できる問題は議論されていますが、例えば「端末を盗まれたら?」とか「指を切り取られて認証されたら?」という類のツッコミの場合、多くは「パスキーは物理的な犯罪を防ぐものではありません」という回答になります。これらを理由にパスキーを使うべきではないというのは、ちょっと乱暴です。

考えてみてください。

サーバーからの漏洩、フィッシング攻撃、リスト攻撃など、遠隔地から正体の分からない攻撃を延々と受ける可能性のあるパスワードを使い続けるのと、曲がりなりにもデバイスが手元にないと攻撃のしようがないパスキー、どちらがマシか?

二要素認証にして SMS やメールで受け取ったワンタイムパスワードを要求することで、セキュリティと引き換えにログイン体験を悪くしたうえ、ユーザーを遠隔地からのフィッシング被害に会う可能性を残したパスワードと、デバイスのアンロック動作だけで、正当なドメインに対してのみログインできるパスキー、どちらがマシか?

完璧ではないにしろ、パスキーによって守られるユーザーの数は圧倒的に多そうです。

誤解 4: 自分の大切な認証を完全に Big Tech に依存することになってしまうので、パスキーは使いたくない #

パスキーは、OS ベンダーの提供するデフォルトのパスワードマネージャー以外の、サードパーティーのパスワードマネージャーに保存・同期・利用することが可能です。

パスキーは、Apple デバイスでは iCloud Keychain、Android では Google Password Manager にデフォルトで保存されます。しかし幸い、Apple も Google も、OS のバージョンによっては、ユーザーがパスキーをサードパーティー パスワードマネージャーに保存し、使うことができる手段を提供しています。すでに 1Password や Dashlane などがパスキーに対応し、実際に使えるようになっているので、必要な方はそちらを選択することもできます。

(Microsoft はまだパスキーの同期に対応していないため、サードパーティー パスワードマネージャーを利用できるようにするかは不明です。)

ちなみに、Google や Apple のアカウントをバンされたらパスキーも使えなくなるのではという話がありますが、多くの場合、パスキーはローカルに同期されているため、それを使ってログインし続けられるのではないかと思います (要確認)。

誤解 5: パスワードマネージャーのアカウントが乗っ取られたらすべてのパスキーも乗っ取られる #

これは間違いではありません。ただ、もう少し詳しいことを理解しておく価値はあると思います。

パスキーを同期するパスワードマネージャーのアカウントが乗っ取られてしまったら、保存されてるパスキーもすべて盗まれてしまうから危険、というのはもっともな懸念です。

Google アカウントが乗っ取られてしまう可能性はゼロではありませんし、iCloud アカウントについても同様です。サードパーティー パスワードマネージャーである 1Password や Dashlane などに関しても、「絶対」という言葉は使うべきでないと思います。

先述のように、Google Password Manager では (おそらく iCloud Keychain も) パスキーはデバイスの PIN もしくはパターンを使って暗号化した上でバックアップされます。他のパスワードマネージャーも独自の類似した仕組みがあるものと思います。そのため、仮にそれらのアカウントが盗まれてしまっても、それが直ちにパスキーも同時に漏洩、というわけではありません。利用しているパスワードマネージャーがどういう作りになっているかは、念のため確認した方が良いかもしれません。

それなら、パスキーを同期しなければ問題解決では?と思われるかもしれません。その通りですが、それはそれで問題点もあります。例えば新しい端末に移行した場合、その端末でパスキーを作ったサイトごとに、新たなパスキーを作り直す必要があります。しかし、その前に一度認証しなければ、アカウントに紐付けることはできません。どうやってパスキーを使わず認証すればいいでしょう?

気をつけなければならないのは、パスキーと同等か、それ以上の認証方法でログインできなければ、そこが穴になってしまうということです。

また、もし仮にパスキーを 100 個作っていた場合、パスキー以外による認証と、新しいパスキーの登録を 100 回繰り返さなければなりません。セキュリティキーを壊したことがある方は、この苦行がどういうものか分かるのではないかと思います。

そういった意味で、パスキーを同期することは、一定のセキュリティを保ちつつ、ユーザー体験を悪化させずに実現できる絶妙なソリューションなのではないかなと思います。

なお、パスキーの同期とデバイスへの紐付けのいいとこ取りを実現する仕様 Supplemental Public Key が作られました。これは以前の記事で紹介した Device Public Key の代わりに考えられた汎用版的なものですが、今後この機能の実装も進めば、より高いセキュリティのパスキーも実現可能になります。

誤解 6: パスキーがパスワードよりも安全なのは生体情報を使うから? #

見た目から、パスキーを生体認証と紐付けて考える人が結構います。その中から生まれる誤解の一つがこれです。

パスキーは、多くてもせいぜい数十文字で表されるパスワードと比較して、複雑な生体情報を使うためエントロピーが高く安全である、というものですが、これは間違いです。パスキー認証における生体認証の役割は、公開鍵暗号の署名を発行するトリガーです。

パスキーは公開鍵暗号ベースで、公開鍵を RP (Relying Party) のサーバーに保存、秘密鍵はパスワードマネージャーに保存することで作られます。ちなみにこの時パスキーとは、この秘密鍵とそのメタデータを指します。

U2F に対応したセキュリティキーで二要素認証を行う際、表面のメタルチップを手で触れることをトリガーとしますが、これは物理的に触れなければならない制約を設けることで、リモートからソフトウェアで偽装することができないようにするという意味があります。一部スマートフォンを使った二要素認証で、画面タップではなく音量ボタンを押さなければいけないのも同じことです。ボタンが端末内のセキュリティチップに繋がっているため、物理的に押されたことが証明できるのです。

このように、U2F の場合、そこに「誰かがいる」ことを証明して二要素目としていましたが、FIDO2 (パスキー) の場合、端末の生体認証を使うことで、少しでも本人、つまりデバイスのオーナーであることを確かめようとしているのが、この生体認証の持つ意味です。生体認証でなくても、PIN やパスコード、パターンなど、デバイスをアンロックできる方法を知っていれば認証できるのはそのためです。これを User Verification といい、デバイスの所有の証明と組み合わせてワンステップの認証で二要素認証が構成できる、というのは先日のブログ記事で述べたとおりです。

ちなみに、Android や iPhone では、生体情報を Secure Enclave などの安全なハードウェアに保存するため、そのデータを取り出したり、ネットワークに送ったりできない仕組みになっています。

誤解 7: パスキーはあらゆるデバイスで同期できる #

パスキーは様々なデバイス間で同期する世界を目指しています。しかし、技術的な理由から、まだすべてのパスキーが同期できる状況になっているわけではありませんし、「エコシステム (プラットフォーム) ごとに同期する」というのが元々の表現です。実際に同期する条件は下記の通りです。

Safari #

Apple はブラウザである Safari や対応アプリがほぼすべて Apple デバイス上でしか動かないエコシステムですので、macOS でも、iOS でも、iPadOS でも、作ったパスキーはデフォルトで iCloud Keychain に保存、同期され、他の Apple デバイスでも使うことができ、話がとてもシンプルです。iOS アプリなども同様です。

Chrome #

Chrome は、macOS、iOS、iPadOS、Windows、Android、Linux など、複数のプラットフォームをまたがって動きます。

macOS を含む Apple デバイス上で作られたパスキーは、基本的に iCloud Keychain に保存されるため、Safari とほぼ同じ同期の仕方をします。

Android で保存したパスキーはデフォルトで Google Password Manager に保存され、Android 同士で同期し、まもなく Chrome OS もサポート予定です。

Windows の場合、Windows Hello という Microsoft の仕組みに依存していますが、残念ながら Windows Hello のパスキーはまだ同期されていません。

このように、Chrome の同期サポート状況は、現時点では動いている OS に依存します。これについては Google のドキュメントにまとめています

Firefox #

3 つの主要ブラウザエンジンのもうひとつである Gecko を使った Firefox では、パスキーが正式にサポートされていないため、どのようにパスキーを同期するのかはまだわかりませんが、2024 年の早期には実現されそうな様子です。

サードパーティーのパスワードマネージャー #

ちなみに、サードパーティー パスワードマネージャーの場合、プラットフォームを跨いで利用できるものが多いため、同期が非常に柔軟です。多くの場合、すべての環境での同期が期待できると思います。

QR コードを使ったパスキー認証 #

なお、パスキーが同期しておらず使えない環境でも、QR コードをスキャンすることで、他の端末のパスキーを使ってログインすることが可能です。

このあと新しくパスキーを作れば、その環境で次からは、そのパスキーを使ってログインすることができます。

誤解 8: パスキーとは、同期する FIDO クレデンシャルのこと? #

パスキーの定義については若干の混乱がありますが、僕個人は Discoverable なクレデンシャルをパスキーと呼びます。

FIDO Alliance 公式では当初、「パスキー」を同期する FIDO クレデンシャル、言い換えると Discoverable な FIDO クレデンシャルであると定義していました (Discoverable クレデンシャルとは、ユーザー名の保存されたパスキーで、Android の場合同期のトリガーにもなります) 。しかしその後、すべての FIDO クレデンシャルと書き換えられました。そして、同期するパスキーをシンクパスキー (synced passkey)、デバイスに紐付くパスキーをデバイスバウンドパスキー (device-bound passkey) と言い分けるようになりました。

誤解 9: パスキーを実装したらパスワードは完全に不要になる? #

パスキーはパスワードなしで認証できるし同期されるため、サイト運営者はパスキーを実装したら、なるべく早くパスワードをなくすのが理想的です。残しておけば、そこから攻撃される可能性が残るからです。しかし、パスワードをなくすには、考えるべきことがまだまだ多くあります。

例えば、ひとつしかないパスキーを自分で削除してしまうユーザーが絶対にいないとは言い切れません。もしそうなった場合、どうやってアカウントを復旧させるかは慎重に検討すべきです。

パスワードを使わなくても、例えば SMS にワンタイムパスワードを送るとか、メールに認証できるマジックリンクを送るとか、サポート窓口に電話で問い合わせしてもらうなど、いくつか方法が考えられます。こういった作業をアカウントリカバリーと呼びます。

もうお気付きと思いますが、パスキーでいくらセキュリティが向上しても、アカウントリカバリーが攻撃者から狙われやすいものだと、パスキーを導入した意味が半減してしまいます。

パスキーの実装と同時に、認証機能全体の底上げもぜひ検討してください。

誤解 10: パスキーはひとつしか作れない #

作ったパスキーがウェブサイトやアプリとどう紐付くかについては、誤解を生みやすいトピックのひとつです。

パスキーはひとつだけ存在して、登録するとあらゆるウェブサイトやアプリケーションで同じパスキーが使われる、というのは誤解です。

パスキー (公開鍵ペア) はウェブサイト、アプリのアカウントごとに都度作られます。

パスキーはパスワードと同じようにウェブサイト、アプリのアカウントごとにひとつしか作れないというのは誤解です。

パスキーはひとつのアカウントにつき、何個作っても構いません。そのため、Android 用にひとつ、Windows 用にひとつ、iCloud Keychain 用にひとつ、1Password 用にひとつなど、複数作っておくことで、どこからでもすぐにログインできるような環境が作れますし、事故でいずれかひとつにアクセスできなくなったとしても、ほかをバックアップとして使うことができます。

ただし、同じアカウントとウェブサイト、アプリの組み合わせだと、パスワードマネージャーの多くはひとつしか保存できません。同じパスワードマネージャーに複数作るメリットはないので、通常これを試みるとエラーが返ってきます。

誤解 11: 同期に使っている Google アカウントや iCloud アカウントにアクセスできなくなるとパスキーが使えなくなる #

誤解 4 にも書きましたが、多くの場合パスキーはローカルに同期されているため、パスワードマネージャーのアカウントにアクセスできなくなっても、パスキーがローカルに残っていればログインできるはずです。特に Google アカウントや iCloud アカウントであれば、基本的にローカルに残っているはずです (ただし実際にアカウントをバンされたことはないので、要確認)。

もし実際にそういった場面に遭遇し、ローカルにのみパスキーが残っている場合は、他のパスワードマネージャーで新しくパスキーを作ることをおすすめします。

誤解 12: パスキーはスマホでしか使えない #

パスキーはスマホが前提と考えている方が思ったより多そうですが、これは誤解です。

パスキーはデスクトップやノートパソコンもサポートしています。生体認証がサポートされていないデバイスも多くあると思いますが、その場合は Windows であれば PIN、macOS であればシステムパスワードを入力することで、ローカル認証を行いパスキー認証できます。

スマホにしかパスキーがない場合は、QR コードで認証できると書きましたが、その後デスクトップ環境で新しくパスキーを作れば、以降毎回 QR コードをスキャンしなくても、パソコン環境だけでログインできるようになります。

誤解 13: パスキーを作ったら他の認証方法が使えなくなる #

今まで見ていた中で、パスキーを利用できるようにする代わりに他の認証方法をすべて廃止したサービスはありません。

そのため、パスキーを作って締め出されるという心配はありません。多くの場合、今まで通りのログイン方法も引き続き使えるはずです。まずは試してみるのはいかがでしょうか。

まとめ #

この記事で少しでもパスキーに関する疑問点がクリアになれば嬉しいです。ここに書いてないことで、何か質問がある場合は、@agektmr までお知らせください。この記事に追記するかもしれません。

最後に、パスキーの情報を追いかけたいという人たちのため、リソースをいくつか挙げておきます。

Google 関連 #

FIDO Alliance 関連 #

Photo by Tierra Mallorca on Unsplash