「パスキーの仕組みを図解」では、パスキーを使うとパスワードがネットワークを流れないことを書きました。ここでは、パスキーそのものが何なのかを図で説明します。
パスキーは「サイトごとに作る鍵のペア」
パスキーは、パスワードのような「文字列」ではありません。サイトに登録するときに、スマホがそのサイト専用の鍵を 2 つ 1 組で作ります。
- 秘密鍵外には出さない。顔認証で使えるようになる
- どのサイト用かサイトのアドレス(例:example.com)
- どのアカウント用かユーザー ID
1組の鍵
- 公開鍵漏れても、これでログインはできない
- どのアカウントの鍵か
- 秘密鍵:スマホの中にしまっておく鍵。スマホの外には出ません。使うときは顔認証や指紋、スマホのロック解除の番号で本人確認をします。
- 公開鍵:サイトに渡しておく鍵。秘密鍵で付けた「署名」が本物かどうかを確かめるためだけに使います。これだけを持っていても、ログインはできません。
- スマホの中のパスキーには、秘密鍵と一緒に「どのサイト用か(サイトのアドレス)」と「どのアカウント用か」も記録されています。
チャレンジ(問いかけ)とパスキーの関係
ログインのたびに、サイトは使い捨ての「チャレンジ(問いかけ)」を出します。スマホは、そのチャレンジと今開いているサイトのアドレスをまとめて、秘密鍵で署名します。これが「答え」です。サイトは、預かっている公開鍵で、その答えが本物か確かめます。
サイトのアドレスも一緒に署名するのが大事なところです。もし偽サイトに誘導されても、アドレスが違うので、スマホは本物のサイト用のパスキーを使いません。だから、パスキーは偽サイトにだまされにくいのです。
「秘密鍵で署名して、公開鍵で確かめる」とはどういうことか、暗号化との違いは「署名の仕組み」で説明しています。
iPhone の「パスワード」アプリで見てみる
iPhone の「パスワード」アプリには、本物のパスワードとパスキーの両方が入っていて、見た目が似ています。でも中身はまったく違います。
| グループ | 入っているもの | ログインのときの使われ方 |
|---|---|---|
| 「パスワード」など | 本物のパスワード(文字列) | ログイン画面の入力欄に、その文字列を自動で入力する |
| 「パスキー」 | 秘密鍵(パスワードではない) | 文字列は入力しない。サイトからのチャレンジに署名して答える |
「パスキー」の項目を開いてみると、パスワードの欄がないはずです。秘密鍵は、持ち主本人にも見せたり取り出させたりしない作りになっています。
よくある疑問
顔の情報はサイトに送られる?
送られません。顔認証は、スマホの中の秘密鍵を使えるようにするための「金庫の鍵」です。確かめるのはスマホの中だけです。
スマホをなくしたら、ログインできなくなる?
多くの場合は大丈夫です。iPhone なら iCloud キーチェーン、Android なら Google パスワード マネージャーで、同じアカウントのほかの端末や、買い替えた新しいスマホにパスキーが引き継がれます。引き継ぐときも暗号化されていて、Apple や Google にも中身は読めない作りです(Apple の説明、Google の説明(英語))。また、多くのサイトでは、パスワードでのログインも残っています。
パスワードはもういらない?
今はまだ、多くのサイトでパスワードも残っています。ただ、パスキーでログインするときは、そのパスワードは使われていません。パスキーを登録したら、パスワードは使い回していない、推測されにくいものにしておくと安心です。
次の記事で
署名そのものの仕組みは「署名の仕組み」で書きました。パソコンの Windows Hello とパスキーの関係は「Windows Hello の仕組みを図解」で書きました。FIDO2・WebAuthn といった用語の整理、パソコンからスマホのパスキーを使う仕組み(QR コードと Bluetooth)などを、別の記事で掘り下げていく予定です。