質問: SSHを使って思ったんですが、現状のID・パスワードの方式をSSHに置き換えた方が便利じゃないでしょうか? アカウント登録の際に、ユーザが自分の公開鍵をサービス提供者に送信して登録してもらい、ログインにはSSHみたいな感じで秘密鍵を使う。 そうすれば、サービスごとにパスワードを変えるという非人間的な(覚えていられないということ)ことをしなくてもよいのでは? 普及してないということは何か問題があるのでしょうか?
回答: SSHと同じような公開鍵認証をブラウザで実現しようとすると、通常のウェブアプリケーション(サーバー側スクリプトとJavaScript)では実現は難しく、ブラウザ側での対応が必要になります。しかし、ブラウザには、すでに、これと似て非なる「クライアント証明書認証」が実装されています。 SSH方式の公開鍵認証と違い、ウェブのクライアント証明書認証の場合は、クライアント証明書はサイト側で用意して配布する形になります。手軽さという点ではSSHのように「ユーザー側で作成してアップロードする」形の方が簡便ですが、クライアント証明書認証の基礎となるTLSには、SSH型にはないサーバーの認証という重要な機能があります。 すなわち、ブラウザにはTLSというサーバーの認証(必須)とクライアントの認証(任意)がセットになった仕組みが標準で導入されているので、似て非なる仕組みを新たに導入する動機に乏しいということになるのだと思います。