Linuc 101 Linux - 秘密鍵方式の通信と GitHub を例にした認証
秘密鍵と公開鍵
秘密鍵とは
公開鍵暗号(こうかいかぎあんごう、Public-key cryptography)とは、暗号化と復号に別個の鍵(手順)を用い、暗号化の鍵を公開できるようにした暗号方式である。
二つの鍵を用意し、一方の鍵を公開しても良いのとして扱える手法のようだ
Linux や GitHub を使う場合の ssh 通信では自動的に公開鍵暗号を使われる
暗号化したデータの送受信
メッセージのやり取りとして、password zip メールなどより遥かにしっかりしたものとして 共通鍵暗号方式がある。
通信の流れでは
まず、データの受け取り側が 秘密鍵を作り、秘密鍵から公開鍵を生成し、データの送信側に送る。
次に、データの送信側が 公開鍵を受け取り、データを公開鍵で暗号化し、暗号化したデータをデータの受け取り側に送る。
最後にデータを欲しい方が最初に作った自分の秘密鍵で 暗号化を解除する
という流れになる。
認証
認証ではやることが異なる
この「鍵交換」が必要になる。
双方向にお互い鍵ペアを生成して、公開鍵を送り合う。
クライアントが作る鍵のペアが認証鍵
サーバーが作る鍵のペアがホスト鍵
認証鍵
認証では認証データの送信側のユーザーが自分の公開鍵で暗号化させた認証データを送り、その公開鍵も送る。
( GitHub で公開鍵を登録しているのがこれのことだと推量する。)
( GitHub と違って GUI がないサービスでは CUI で ~/.ssh/authorized_keys
に打ち込む)
受け取って認証する側のサーバーが 送信側のユーザーの秘密鍵で「検証」し受け入れる。
とにかく「公開鍵で認証」するのが試験で問われるポイントらしい。
ホスト鍵
ホストでも鍵を作り、逆のことをやる
サーバーが作る鍵のペアがホスト鍵
こちらでは サーバーが作った公開鍵をクライアントの known_hosts
にぶち込む!
... しかし、実際に編集することは少ないらしい。
GitHub では 公開されてる SSH フィンガープリントを対話式で初回ログイン時に貼り付けるらしい。確かやった気がする。
秘密鍵方式と認証まとめ
秘密鍵方式を図示しての復習ができて
ツイートした際に記事の作者様に教えてもらったことによって
認証では双方向に公開鍵の送り合いをしてることがわかってよかった!!!
angel_p_57 さんありがとうございます
ssh の公開鍵は主に認証
https://qiita.com/angel_p_57/items/19eda15576b3dceb7608
またこの人の記事が分かりやすかった
上記の公開鍵 秘密鍵の基礎知識があるとさくっと読める
ssh ではクライアント端末を使ってのサーバーでの CUI コマンド実行、ホームページアクセスなどの通信のトンネル作成、などが出来る
どちらも認証しなければ使えないものであり、その認証に ssh と公開鍵 ニアリーイコール 認証鍵が使われる
公開鍵暗号方式での暗号化は実際にはあまり使われず、公開鍵を主に使うのは認証になる