パスキーはなぜすごい?
― ねこ博士とうさ美の10分講座 ―
1ページ講座

パスキーはなぜすごい?

合言葉をやめて、鍵のペアでログインする
🎯 このページのゴール
「パスキーは秘密を一度も送らない」「偽サイトには反応しない」「サーバーから漏れても使えない」の3つを、理由つきで人に説明できるようになる。
うさ美
博士、スタジオの予約サイトにログインしたら「セキュリティ強化のため、パスキーを登録してください」と出ました。パスワードはちゃんと長くして記号も混ぜているのに、何が足りないんですか?
ねこ博士
足りないのはきみの努力ではなくて、パスワードという仕組みそのものなんだ。パスワードは合言葉だよ。きみが知っている秘密を、ログインのたびにサイトへ送って確かめてもらう。つまり、きみは毎回その秘密を相手に渡している。
うさ美
送るから、途中で誰かに見られたら終わり、ということですか?
ねこ博士
その通り。見られる場所は3つある。1つ目は入力する画面。本物そっくりに作った偽サイトに打ち込めば、そのまま盗まれる。これをフィッシングという。2つ目は通信の途中。ここは今では暗号化でほぼ守られている。3つ目はサイトのサーバー。預かった情報がサーバーごと盗まれる事件は、ニュースで見ているね。
うさ美
サーバーから漏れたパスワードが、同じパスワードを使っている別のサイトにも効いてしまうんですね。
ねこ博士
アクスタBJは、パスワードをそのままではなく暗号化して元に戻せない形に変えて預かっている。だから、サーバーから盗まれても、すぐにほかのサイトで使われることはない。それでもパスワードは、ログインのたびにネットを通して送る秘密だ。偽サイトに打ち込めば、その場で盗まれてしまう。まとめると、パスワードの弱点は「ログインのたびに秘密を相手に渡す」ことと、「同じ秘密を何か所にも置く」ことにある。
あなた 秘密 ●●●● サイトのサーバー 変換した値 ▲▲ ログインのたびに同じ秘密を送る ① 偽サイトに打ち込む ② 通信の途中(今は暗号化) ③ サーバーごと漏れる (元に戻せない形で保存) パスワード:ログインのたびに秘密そのものを送る
パスワードは、ログインのたびに秘密そのものを送る仕組み。サーバーには元に戻せない形で預けるので、漏れてもすぐには使えないが、偽サイトに打ち込んだ秘密はそのまま盗まれる
ねこ博士
パスキーはこの2つを根本から変える。使うのは鍵のペアだ。鍵は2本で1組。片方は秘密鍵といって、きみのスマホの中から絶対に出ない。もう片方は公開鍵といって、サイトに預ける。この2本には不思議な関係があって、秘密鍵で作った「署名」を、公開鍵で確かめることができる。
うさ美
署名というのは、ハンコのようなものですか?
ねこ博士
役割はハンコだけれど、中身は計算だ。署名とは、ある文章と秘密鍵から計算して作った数のこと。性質が3つある。①秘密鍵がないと作れない。②公開鍵を持っていれば、誰でも本物かどうか確かめられる。③文章が1文字でも違えば、確かめに失敗する。
うさ美
③は、署名が「その文章に対するもの」だから、別の文章には使い回せない、ということですか?
ねこ博士
その通り。だからログインはこう進む。サイトは毎回、今回限りのでたらめな数を送ってくる。これをチャレンジという。きみのスマホは、Face IDで「持ち主本人だ」と確かめてから、秘密鍵でチャレンジに署名して送り返す。サイトは預かっていた公開鍵で署名を確かめる。合えば本人だ。
うさ美
秘密鍵は一度も送っていませんね。送ったのは署名だけです。
ねこ博士
そこがいちばん大事な点だ。しかも署名は「今回のチャレンジ」に対するものだから、途中で誰かが盗んで次回使おうとしても、チャレンジが変わっていて役に立たない。
パスキー:秘密鍵はスマホから出ない あなたのスマホ 🔑 秘密鍵(出ない) Face IDで本人確認 署名を計算 サイトのサーバー 🔓 公開鍵(預かる) 公開鍵で確かめる ① チャレンジ(今回限りの数) ② チャレンジへの署名 ✕ 秘密鍵・顔のデータは一度も通らない ✓ 署名が合えば本人。次回はチャレンジが変わるので使い回せない
サイトは「今回限りの数」を出し、スマホは秘密鍵でそれに署名する。サーバーは預かった公開鍵で署名を確かめるだけで、秘密そのものは受け取らない
うさ美
でも、偽サイトがチャレンジを送ってきたら、スマホはそれにも署名してしまいませんか?
ねこ博士
いい質問だね。パスキーには「どのサイト用か」が住所として焼き込まれている。インターネット上のサイトの住所をドメインという。たとえば acst-bj.com がそうだ。スマホは、いま開いているページのドメインと、パスキーに書かれたドメインが一致するときだけ署名する。偽サイトは本物と同じドメインを名乗れないから、スマホは署名を拒む。
うさ美
人間が見分けるのではなく、スマホが住所を見比べてくれる、ということですか?
ねこ博士
そう。人間は「acst-bj.com」と「acst-bj.co」の違いを見落とすけれど、機械は見落とさない。これがパスキーがフィッシングに強いと言われる理由だ。
パスキーには「使ってよい住所」が書いてある 🔑 用途:acst-bj.com 開いているページ:acst-bj.com 一致 → 署名する ✓ 開いているページ:acst-bj.co(偽) 不一致 → 署名しない ✕
パスキーは作られたときのドメインに結び付いている。似た名前の偽サイトでは、本人が気づかなくてもスマホが署名を拒む
うさ美
サーバーが丸ごと盗まれた場合はどうなりますか?
ねこ博士
サーバーにあるのは公開鍵だけだ。公開鍵でできるのは「署名を確かめること」だけで、「署名を作ること」はできない。だから盗んでも、きみになりすますことはできない。錠前のコピーを盗んでも、鍵は作れないのと同じだ。
うさ美
公開鍵から秘密鍵を計算で求めることはできないんですか?ペアなら、片方からもう片方が出せそうな気がします。
ねこ博士
秘密鍵から公開鍵は簡単に作れるけれど、逆向きは一方向にしか進めない計算になっている。身近な例でいうと、2つの大きな素数を掛け算するのは簡単だけれど、掛けた結果だけを見て元の2つを見つけ出すのはとてつもなく難しい。パスキーが使う計算はこれとは別の種類だけれど、考え方は同じで、公開鍵から秘密鍵を求めるには、世界中のコンピューターを集めても現実的な時間では終わらない。
うさ美
では、「秘密を渡さない」と「漏れても困らない」の両方が同時に成り立つんですね。
ねこ博士
その通り。もう1つある。パスキーはサイトごとに別の鍵が自動で作られる。覚える必要も、使い回す余地もない。それからFace IDや指紋は、スマホの中で「持ち主が本人か」を確かめるためだけに使われる。顔のデータがサイトに送られることはない。
うさ美
ということは、サイト側は私の顔も指紋もパスワードも知らなくて、知っているのは公開鍵だけ、ということですか?
ねこ博士
そう。パスワードと違って、秘密鍵はきみのスマホの中にしか無い。スマホを盗まれるか、乗っ取られでもしない限り、ネット上のどこにもその鍵は無い。だから、漏れようがないんだ。
うさ美
いいことばかりに聞こえます。弱いところはないんですか?
ねこ博士
ある。秘密鍵はスマホの中にあるから、スマホをなくすと使えなくなる。だから同じApple IDやGoogleアカウントの端末どうしで鍵を同期させたり、複数の端末に登録したりしておく。もう1つ。パスキーを使うたびにFace IDや指紋で本人確認が入るけれど、Face IDが失敗したときはスマホのパスコードで代わりに本人確認できる仕様になっている。つまり、端末を盗まれ、なおかつパスコードを知られると、パスキーも使われてしまう。パスコードは推測されにくいものにして、人前で入力するときは隠すこと。
うさ美
だから予約サイトは、パスワードでのログインも残してあるんですね。スマホを失ったときの入口として。
ねこ博士
そう。そして、複数の端末に登録して安心できたら、「パスワードでのログインを拒否する」設定にすればいい。そうすれば、パスワードが漏れても、誰もきみにはなりすませない。
💡 用語のおさらい 秘密鍵=スマホの中から出ない方の鍵。公開鍵=サイトに預ける方の鍵。署名=文章と秘密鍵から作る数で、公開鍵で本物か確かめられる。チャレンジ=サイトが毎回出す今回限りの数。ドメイン=サイトの住所。パスキーはこの住所に結び付いている。

まとめ:パスキーはなぜすごい?

  1. 1秘密を一度も送らない。送るのは「今回限りのチャレンジへの署名」だけ。盗まれても次回には使えない。
  2. 2偽サイトには反応しない。パスキーはドメインに結び付いていて、住所が違えばスマホが署名を拒む。人が見分ける必要がない。
  3. 3サーバーから漏れても無意味。サイトが持つのは公開鍵だけで、署名は作れない。秘密鍵を逆算することも現実的にはできない。
© ACST-BJ アクロバットスタジオ / 会員ページでのパスキー登録は こちら