セキュリティ / 認証

パスキーとは ― サイトごとに作る「鍵のペア」とチャレンジ(問いかけ)

「パスキーの仕組みを図解」では、パスキーを使うとパスワードがネットワークを流れないことを書きました。ここでは、パスキーそのものが何なのかを図で説明します。

パスキーは「サイトごとに作る鍵のペア」

パスキーは、パスワードのような「文字列」ではありません。サイトに登録するときに、スマホがそのサイト専用の鍵を 2 つ 1 組で作ります。

スマホに入るもの = パスキーiPhone なら「パスワード」アプリの「パスキー」
  • 秘密鍵外には出さない。顔認証で使えるようになる
  • どのサイト用かサイトのアドレス(例:example.com)
  • どのアカウント用かユーザー ID
⇔⇕2つで
1組の鍵
サイトに保存されるもの登録のときに受け取る
  • 公開鍵漏れても、これでログインはできない
  • どのアカウントの鍵か
チャレンジ(問いかけ) + サイトのアドレス 秘密鍵で──▶ 署名(答え) 公開鍵で──▶ 確認 OK
たとえるなら:パスキーは「自分だけのハンコ」、公開鍵は「役所に登録した印影」、チャレンジは「毎回ちがう書類」、署名は「その書類に押した印」。サイトは、押された印を登録した印影と見比べて本人だと判断します。ただし本物の印影と違って、公開鍵からハンコを作ることはできません。
  • 秘密鍵:スマホの中にしまっておく鍵。スマホの外には出ません。使うときは顔認証や指紋、スマホのロック解除の番号で本人確認をします。
  • 公開鍵:サイトに渡しておく鍵。秘密鍵で付けた「署名」が本物かどうかを確かめるためだけに使います。これだけを持っていても、ログインはできません。
  • スマホの中のパスキーには、秘密鍵と一緒に「どのサイト用か(サイトのアドレス)」と「どのアカウント用か」も記録されています。

チャレンジ(問いかけ)とパスキーの関係

ログインのたびに、サイトは使い捨ての「チャレンジ(問いかけ)」を出します。スマホは、そのチャレンジと今開いているサイトのアドレスをまとめて、秘密鍵で署名します。これが「答え」です。サイトは、預かっている公開鍵で、その答えが本物か確かめます。

サイトのアドレスも一緒に署名するのが大事なところです。もし偽サイトに誘導されても、アドレスが違うので、スマホは本物のサイト用のパスキーを使いません。だから、パスキーは偽サイトにだまされにくいのです。

「秘密鍵で署名して、公開鍵で確かめる」とはどういうことか、暗号化との違いは「署名の仕組み」で説明しています。

iPhone の「パスワード」アプリで見てみる

iPhone の「パスワード」アプリには、本物のパスワードとパスキーの両方が入っていて、見た目が似ています。でも中身はまったく違います。

グループ入っているものログインのときの使われ方
「パスワード」など本物のパスワード(文字列)ログイン画面の入力欄に、その文字列を自動で入力する
「パスキー」秘密鍵(パスワードではない)文字列は入力しない。サイトからのチャレンジに署名して答える

「パスキー」の項目を開いてみると、パスワードの欄がないはずです。秘密鍵は、持ち主本人にも見せたり取り出させたりしない作りになっています。

よくある疑問

顔の情報はサイトに送られる?

送られません。顔認証は、スマホの中の秘密鍵を使えるようにするための「金庫の鍵」です。確かめるのはスマホの中だけです。

スマホをなくしたら、ログインできなくなる?

多くの場合は大丈夫です。iPhone なら iCloud キーチェーン、Android なら Google パスワード マネージャーで、同じアカウントのほかの端末や、買い替えた新しいスマホにパスキーが引き継がれます。引き継ぐときも暗号化されていて、Apple や Google にも中身は読めない作りです(Apple の説明、Google の説明(英語))。また、多くのサイトでは、パスワードでのログインも残っています。

パスワードはもういらない?

今はまだ、多くのサイトでパスワードも残っています。ただ、パスキーでログインするときは、そのパスワードは使われていません。パスキーを登録したら、パスワードは使い回していない、推測されにくいものにしておくと安心です。

次の記事で

署名そのものの仕組みは「署名の仕組み」で書きました。パソコンの Windows Hello とパスキーの関係は「Windows Hello の仕組みを図解」で書きました。FIDO2・WebAuthn といった用語の整理、パソコンからスマホのパスキーを使う仕組み(QR コードと Bluetooth)などを、別の記事で掘り下げていく予定です。

スポンサーリンク
タイトルとURLをコピーしました