初めて質問させていただきます。

パスキーの仕組みについてわからないことがあります。

巷で解説されているパスキー認証の仕組みサイトを読むと、

①サーバーからデバイスにチャレンジが送られる

②デバイスが秘密鍵でチャレンジに署名をして送り返す

③サーバーが署名を公開鍵で復号してチャレンジと同じか検証する

というような事が書かれています。

そしてその仕組みは「公開鍵暗号方式」が使われていると書かれています。

けれども、基本情報技術者の教科書を読むと、公開鍵暗号方式は

①受信者の公開鍵で暗号化し

②受信者の秘密鍵で復号する

とあります。

過去問を見てもそれ以外はすべて誤りです。

件のパスキーの説明サイトの流れは、どちらかというとデジタル署名の鍵の組合せだと思います。

パスキーの様に、先に秘密鍵で暗号化し、あとで受信者が公開鍵で復号化する場合も

つまり公開鍵を使った仕組み(PKIに支えられた仕組み)はすべて公開鍵暗号方式と呼んでいいのでしょうか。

あと、話がずれますが、パスキーがなぜ安全か、という解説サイトの中には、

生体認証だから安全だ、と書いてあるサイトもありました。

これは暗号化の仕組みとはまったく異なるので、間違いだと思っています。

Profile Photo

まことにもっともな疑問だと思います。公開鍵暗号には、狭義の公開鍵暗号と、広義の公開鍵暗号があります。パスキーで使われているのは、広義の公開鍵暗号です。

狭義・広義だと紛らわしいので、狭義の方をPublic Key Encryption(PKE)、広義の方をPublic Key Cryptography(PKC)と表記する場合があります。光成さんのブログ記事がわかりやすいです。

https://blog.cybozu.io/entry/2021/12/28/080000

あなたの「公開鍵暗号」はPKE? それともPKC? - Cybozu Inside Out | サイボウズエンジニアのブログ

初めに サイボウズ・ラボの光成です。 いきなりですがクイズです。次のうち正しい説明はどれでしょう。 SSHやFIDO2などの公開鍵認証はチャレンジを秘密鍵で暗号化し、公開鍵で復号して認証する。 ビットコインでは相手の公開鍵を用いてハッシュ値を暗号化して相手に送る。 TLS1.3ではサーバ公開鍵を用いてAESの秘密鍵を暗号化する。

blog.cybozu.io

この記事からスライドを以下に引用します。

パスキーで使うのは公開鍵と秘密鍵を用いたデジタル署名でして、暗号化・復号を行うわけではありません。そのあたりも、光成さんの記事にはクイズとして書かれています。

サイボウズ・ラボの光成です。 いきなりですがクイズです。次のうち正しい説明はどれでしょう。

  • SSHやFIDO2などの公開鍵認証はチャレンジを秘密鍵で暗号化し、公開鍵で復号して認証する。

  • ビットコインでは相手の公開鍵を用いてハッシュ値を暗号化して相手に送る。

  • TLS1.3ではサーバ公開鍵を用いてAESの秘密鍵を暗号化する。

答えはどれも間違いです。 公開鍵認証は、(デジタル)署名を使って相手先の正しさを検証するものであり、暗号化は行われません。

ご質問に戻りますが、

つまり公開鍵を使った仕組み(PKIに支えられた仕組み)はすべて公開鍵暗号方式と呼んでいいのでしょうか。

公開鍵を用いた仕組みとして、Public Key Cryptography(PKC)の方は、暗号化・復号に加えて署名や鍵共有を含めた広い概念です。日本語だと公開鍵暗号技術と書いたりしますが、紛らわしいことには変わらないですね。ちなみに、パスキーではPKIは使いません。PKIを使うかどうかにかかわらずに、公開鍵と秘密鍵を用いた、あるいはこれらに関連する暗号化・復号、署名、鍵共有をPublic Key Cryptography(公開鍵暗号技術)と称します。

あと、話がずれますが、パスキーがなぜ安全か、という解説サイトの中には、

生体認証だから安全だ、と書いてあるサイトもありました。

これは暗号化の仕組みとはまったく異なるので、間違いだと思っています。

そのとおりです。これはよくある間違いでマスコミなどでは「パスキーは生体認証だから安全」と説明している場合が多いですが、パスキーはデジタル署名を用いた認証です。

利用規約プライバシーポリシーに同意の上ご利用ください

徳丸 浩さんの過去の回答
    Loading...