work01_aifroideさんの投稿一覧
助け合いフォーラムの投稿
2026/02/11
コメント
秘密鍵をサーバーが作成し、クライアントに渡す。でも良い理由。
はい。過去のポストは見ましたが、秘密鍵を送信する、という部分について、やはり納得できません。
https://mondai.ping-t.com/g/posts/2122 の、
クライアントへ安全に持ち運ぶ=利用環境が特定でき、誤った宛先に渡されないことが保証できる
鍵ペアはサーバ上で作成しているので、意図しない鍵を「サーバが」受け入れることはあり得ない
は、理解できます。
ですが、秘密鍵を渡す という行為について、それを容認できる理由にはなりません。
秘密鍵は自分が生成し、誰にも見せない、誰も内容を知らないから秘密鍵なのである。と自分は認識しています。
質問者さんの、
冷静に考えて認証(安全を実現)したいのはサーバー側なので というのも理解できますが、だからといって秘密鍵を渡す行為はおかしいと思います。
それであれば、ユーザーからの公開鍵を受け入れる経路を厳しくすればいい話。
実際、公開鍵を受け取る際に、アカウントの二段階認証などを実行しているサービスはありますよね?(githubなど。)
https://mondai.ping-t.com/g/posts/1816 の、
ユーザを信用するのではなく、管理者が鍵を管理する前提だったらこう言う形もあり得るのかなって感じですかねぇ。
は、管理者が鍵を管理する前提でも、ユーザーの秘密鍵を管理者が知っている。というのは危ないと思うのですが...
管理者が侵害された場合、すべてのユーザーの秘密鍵漏洩もありえますよね。
ユーザーの秘密鍵をサーバーが作って、その秘密鍵をユーザーに渡す。という設問のシチュエーションは理解しています。
https://mondai.ping-t.com/g/posts/742 の先の、
https://ping-t.com/modules/forum/index.php?topic_id=4867
では、鍵を生成する主体が自分のPCなのか通信を行う先のサーバなのかで決まると言っていますが、鍵を生成する主体は自分では?
話がずれますが、TLS(HTTPS)の証明書を発行する際、認証局に送る、これが自分だと証明してくれ!という時の鍵は誰が発行しますか?自分ですよね?自分のサーバー側で秘密鍵を生成するはずです。
自分だ!という証明という点で、TLSもSSHも同じはずです。
なので、秘密鍵を生成する主体はサーバー側でなく、自身のはずです。
なぜサーバー側が生成する主体でいいのか、という説明がありません。
https://mondai.ping-t.com/g/posts/346 の、
設問では
サーバ上で以下のコマンドを使用して公開鍵認証用の鍵ペアを作成した。
とあるので、「サーバに公開鍵と秘密鍵のペアがある状態」であり、「クライアント(サーバに接続する側)には対応する公開鍵も秘密鍵も "無い"」んですよね。そうすると、公開鍵認証したくてもクライアントの情報をサーバ側は知りませんし、クライアントはサーバに接続するための秘密鍵を持っていないので認証してもらえないんですよね。
なので「サーバで作ったペアのうち、秘密鍵をクライアントに持っていく」必要があるんですね。
この、
クライアント(サーバに接続する側)には対応する公開鍵も秘密鍵も "無い"
状態だから移動する。という設問の状況は理解できます。
自身を名乗る手段がないわけですから当然です。
ですが問題なのは、秘密鍵をサーバー側が生成し、外部に渡している点です。
自分の認識では、鍵認証の話での外部とは、自身以外のすべてです。
自分以外の、接続先だろうが接続してくるクライアントだろうが、自分以外は外部で、外部に漏らしてはいけないのが秘密鍵と認識しています。
以上のことから、秘密鍵を生成する主体がサーバー側(自身以外)でもいい理由が分かりません。
秘密鍵を渡す行為がよしとされる理由が分かりません。
長々と申し訳ありません。
どうにも納得できなくて......
2026/02/09
投稿
秘密鍵をサーバーが作成し、クライアントに渡す。でも良い理由。
秘密鍵を(外部に)渡すことをよしとする理由を教えてください。
自分は、
鍵ペアはSSHクライアント上で作成しなければならない。
と回答しました。
自分は、秘密鍵は相手が誰であれ、触れさせてはいけないものだと認識しているため、サーバー側が知っているのはおかしい。と思いました。
そのため、こう回答しましたが、解説には、
鍵ペアの作成はSSHクライアントとSSHサーバのどちらで行っても構いません。SSH接続するユーザが鍵ペアを作成し、クライアントとサーバにそれぞれ必要な鍵を配置しておきます。
とあり、どちらも秘密鍵を知っていても問題がないかのように書かれています。
フォーラムでも、正しくない鍵は受け入れないので、セキュリティ上問題はない。と結論づけられていますが、
解説も、
秘密鍵はその名の通り外部に流出してはならないものなので、物理メディアなどを使用して安全にクライアント側に運ぶ必要があります。
と言っています。
"秘密鍵はその名の通り外部に流出してはならないもの" とある通り、外部に流出させてはいけないものだと、自分も認識しています。
この場合の自分の思う外部、とは自分以外の全てであって、サーバー側も外部の認識なのですが、秘密鍵を渡すという行為はセキュリティ上問題ではないのでしょうか。
秘密鍵とは、誰かに渡してもいいものだと言うのでしょうか。
通信相手ならいいのでしょうか。
そうではないと思っています。
納得がいかないので、解説をお願いします。
合格体験記の投稿
投稿がありません