多くの企業が導入し始めている”パスキー”。
パスワードがない認証方式だがセキュリティは一体どうなっているのか気になったから色々調べてみた。
できるだけ噛み砕いて説明しているがどうしても専門用語が出てしまう。そんなときはわわわIT用語辞典さんの解説がためになるからぜひ見てもらいたい。→リンク(新しいタブで開きます)
目次
【結論】パスキーはセキュリティ性が高い

まあ数多の大企業が導入するくらいだからセキュリティが高いのは当然。
それに加え、持っているスマホやPCを登録するだけで利用できるため、導入障壁が低いという点も普及が進んでいる理由の一つだったりする。
パスキーの仕組み
まずパスキーの重要ポイントをまとめるとこんな感じ。
- 公開鍵と秘密鍵を使う
- 「本人署名かどうか公開鍵を用いて鑑定する」というのがパスキーの仕組み
一つづつ噛み砕いて説明する。
公開鍵と秘密鍵

さっきまとめたようにパスキーは公開鍵と秘密鍵と呼ばれるものを使用する。
これらは、パスキー登録時にペアとして作成され、公開鍵はログイン先のサーバーに、秘密鍵はユーザーのセキュリティ性が高い場所に保存される。
セキュリティの高い場所というのはデバイスの保護領域や、パスワードマネージャーが提供するセキュリティが確保されたクラウド同期などが当てはまる。
また、公開鍵から秘密鍵を求めることは現状不可能。
ちなみに、パスキーは公開鍵と秘密鍵を用いた公開鍵暗号方式というもの応用しているそうだ。
ざっとした仕組み

事前知識が入ったところでパスキー認証の仕組みを大雑把に解説する。
- ユーザーがパスキー認証を要求
- ログイン先は無意味な文字列(チャレンジ)をユーザーに送る
- ユーザーが秘密鍵にアクセスするため生体認証
- 秘密鍵を用いて無意味な文字列に署名を書き、ログイン先に送信
- ログイン先は公開鍵を用いて鑑定
- 鑑定で本人と確認できたらログイン完了
パスキー認証を使用する際は情報が抜かれないようにHTTPS接続(暗号化)を強制している。
セキュリティ性が高い理由
次になぜセキュリティ性が高いのか解説していく。
パスワードが必要ない

一番大きいのがパスワードが不要な点だ。
現在主流のパスワード方式はかなり危険で、フィッシングサイトや覗き見によって簡単にログインできてしまう。
そんなパスワードが不要となるとセキュリティが強固になることは言うまでもない。
パスキーだけで二段階認証できる

さっきの仕組みを見てもらえればわかるけど、パスキーを使用することでしれっと2段階認証が完了してしまう。当てはまるのは以下の2つ。
- デバイスのロック解除
- 秘密鍵を持っているデバイスか否か
デバイスを持っていてもロック解除ができないと秘密鍵にアクセスできないし、ロック解除してもパスキーが登録されてなければ意味がない。
このようにしれっと2段階認証を挟むことでセキュリティ性を高めている。
漏洩時のリスクが少ない
パスキーの魅力は漏洩時のリスクが少ない点も挙げられる。ログイン先はIDと公開鍵だけ知っているため、漏れたところですぐにログインされるといったことは無い。
公開鍵が漏れても大丈夫なの?と思われるかもしれないが、公開鍵はあくまで署名を鑑定できるだけ。本人と偽ることはできないため安全と言われている。
パスキーの懸念点
ここまで大雑把に解説してきたが、疑問を感じる部分があったから紐解いていく。
公開鍵は悪用されないの?
ちゃんと悪用できない作りになっている。

そもそもパスキーに用いる公開鍵は公開されていない。そのためログイン先からわざわざ公開鍵を盗む必要がある。

次に、公開鍵を盗んだとて悪用は無理。なぜならパスキーを設定する際にURL情報も記録されているからだ。そのため、いくらデザインが似ていようが別URLの時点で利用できない。
また、公開鍵から秘密鍵がバレる心配をする人もいるかも知れないが、今のところ不可能といって大丈夫。
なぜなら、パスキーが使用している暗号化方式は、現在のコンピューターはこれを解読するのが苦手。スパコンでもとてつもない時間がかかってしまう。
量子コンピュータであれば理論上解読できるそうだが実用化に至っていないし、実験も行われていないためまだわからない。しかし、量子コンピューターが台頭する頃には新規格ができていることだろう。
つまり…今のところ大丈夫だから信頼してもらって良い。
署名したものが盗まれたら悪用されるのでは?

HTTPS接続によって暗号化されている時点で盗むことはかなり困難。
仮に盗めたとしても、署名する前の無意味な文字列はログイン試行ごとにランダムだから盗んだものを用いてログイン試行する際、無意味な文字列が被るといったことはほぼ無い。

番号を押す動きが分かったところで、配列がランダムになっていては意味がないのと同じ。
デバイスを失くしたらログインできないのでは?

パスキーはパスワードマネージャー(以後、PM)などを用いて同期することができる。
そのため、同期サービスを提供しているアカウントにさえアクセスさえできれば、以前登録したパスキーを用いて別のアカウントにログインすることができる。
この同期機能はGoogleパスワードマネージャーやiCloudキーチェーンなどの有名なものはもちろん、Bitwarden等のサードパーティー製PMでも利用できる。
また多くのPM(Google PM/iCloudキーチェーン/Bitwarden/Proton Passなど)は暗号化して安全に保管している。
最後に
パスキーを設定して損はない
ここまで見てもらえれば分かる通り、パスキーはセキュリティ製を上げてくれる素晴らしい仕組みだ。そのためパスキー対応のサービスがあるなら、ぜひぜひ設定してほしい。
パスワードの強度も上げるべき

パスキーを設定したところでパスワードがゴミだと意味をなさない。ついでにパスワードの強度も上げるべきだ。
できれば二段階認証(TOTPとか)もオンにしてもらいたいが、利便性も損なわれるため要検討。
パスワードマネージャー使え

「サービスごとにパスワード覚えられないよ」という人におすすめなのが、パスワードマネージャーだ。
PMは難解なパスワードを自動生成&自動保存してくれる。そのため、1つのマスターパスワードを覚えるだけで全てのサービスにログインできる。
PMの話をすると情報漏洩が怖いという声がちらほら聞こえるが、ちゃんと暗号化してから保存するサービスがほとんどだから大丈夫。
大企業が良いならGoogleパスワードマネージャー、セキュリティ性を上げたいならBitwardenまたはProton Passをおすすめする。
もし、Googleパスワードマネージャーを使用するならGoogleアカウントのセキュリティ設定だけはガチガチにしておかないと、乗っ取られたときに終わるのは気をつけるべきだ。
ここまでご覧いただきありがとうございました。

