公開鍵認証 【public key authentication】
公開鍵暗号は対になる2つの暗号鍵を用いる暗号方式で、一方(秘密鍵)は利用者の手元で秘匿し、もう一方(公開鍵)は通信相手に渡したり広く公開したりする。一方で生成した暗号はペアのもう片方の鍵でしか復号できず、片方からもう一方を推測することもできない。
公開鍵認証では利用に先立ち、サーバへの利用者登録などの際にクライアント側で鍵のペアを生成し、安全な手段でサーバ側に公開鍵を伝送し登録する。秘密鍵はクライアント側で利用者本人のみが呼び出せるように保管し、サーバ側にも知らせない。
認証時にはまず通信経路を暗号化し、セッションIDなどその場限りのランダムな値の生成と共有を行なう。クライアントは秘密鍵とセッションIDからデジタル署名を作成し、利用者名など必要な情報と共にサーバへ送信する。サーバ側では事前に登録したその利用者の公開鍵を用いて署名を検証し、ペアの秘密鍵で作成された署名であると確認できれば認証成功となる。
パスワード認証との違い
パスワード認証の場合、パスワードを知っていれば本人になりすますことができるため、サーバになりすました偽物に誤ってパスワードを教えてしまった場合や、サーバに保管されたパスワードが外部に流出してしまった場合には悪用されることがある。
一方、公開鍵認証の場合には秘密鍵はサーバにも知らせないため、偽物のサーバに署名を送信したり、サーバに保管された公開鍵が流出しても利用者になりすますことはできない。署名の送受信を盗聴して使い回す攻撃手法もあるが、毎回異なるセッションIDを含めて署名を作成するため、過去に作成された署名を複製しても無効となる。
(2022.3.8更新)