KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

Linuc 101 Linux - 秘密鍵方式の通信と GitHub を例にした認証

秘密鍵と公開鍵

秘密鍵とは

ja.wikipedia.org

公開鍵暗号(こうかいかぎあんごう、Public-key cryptography)とは、暗号化と復号に別個の鍵(手順)を用い、暗号化の鍵を公開できるようにした暗号方式である。

二つの鍵を用意し、一方の鍵を公開しても良いのとして扱える手法のようだ

LinuxGitHub を使う場合の ssh 通信では自動的に公開鍵暗号を使われる

暗号化したデータの送受信

メッセージのやり取りとして、password zip メールなどより遥かにしっかりしたものとして 共通鍵暗号方式がある。

通信の流れでは

f:id:kei_s_lifehack:20210325211924p:plain

まず、データの受け取り側が 秘密鍵を作り、秘密鍵から公開鍵を生成し、データの送信側に送る。

次に、データの送信側が 公開鍵を受け取り、データを公開鍵で暗号化し、暗号化したデータをデータの受け取り側に送る。

最後にデータを欲しい方が最初に作った自分の秘密鍵で 暗号化を解除する

という流れになる。

認証

認証ではやることが異なる

qiita.com

この「鍵交換」が必要になる。

双方向にお互い鍵ペアを生成して、公開鍵を送り合う。

クライアントが作る鍵のペアが認証鍵

サーバーが作る鍵のペアがホスト鍵

認証鍵

f:id:kei_s_lifehack:20210325213327p:plain

認証では認証データの送信側のユーザーが自分の公開鍵で暗号化させた認証データを送り、その公開鍵も送る。

qiita.com

( GitHub で公開鍵を登録しているのがこれのことだと推量する。)

( GitHub と違って GUI がないサービスでは CUI~/.ssh/authorized_keys に打ち込む)

受け取って認証する側のサーバーが 送信側のユーザーの秘密鍵で「検証」し受け入れる。

とにかく「公開鍵で認証」するのが試験で問われるポイントらしい。

ホスト鍵

qiita.com

ホストでも鍵を作り、逆のことをやる

サーバーが作る鍵のペアがホスト鍵

こちらでは サーバーが作った公開鍵をクライアントの known_hosts にぶち込む!

... しかし、実際に編集することは少ないらしい。

qiita.com

GitHub では 公開されてる SSH フィンガープリントを対話式で初回ログイン時に貼り付けるらしい。確かやった気がする。

秘密鍵方式と認証まとめ

秘密鍵方式を図示しての復習ができて

ツイートした際に記事の作者様に教えてもらったことによって

認証では双方向に公開鍵の送り合いをしてることがわかってよかった!!!

qiita.com

angel_p_57 さんありがとうございます

ssh の公開鍵は主に認証

https://qiita.com/angel_p_57/items/19eda15576b3dceb7608

またこの人の記事が分かりやすかった

上記の公開鍵 秘密鍵の基礎知識があるとさくっと読める

ssh ではクライアント端末を使ってのサーバーでの CUI コマンド実行、ホームページアクセスなどの通信のトンネル作成、などが出来る

どちらも認証しなければ使えないものであり、その認証に ssh と公開鍵 ニアリーイコール 認証鍵が使われる

公開鍵暗号方式での暗号化は実際にはあまり使われず、公開鍵を主に使うのは認証になる