■掲示板に戻る■ 全部 1- 101- 201- 最新50

ssh

24 :asm :2000/12/12(火) 19:34
俺も ssh のソースを読んだわけじゃないから偉そうなことは言えないのだが
>>20 に書いてることがおおむね正しいんじゃないか?

俺は ssh のプロトコルを次のように認識している。

1) まず client はあらかじめ何らかの方法で server のRSA(DSA)公開鍵を
  手に入れ、それを known_hosts(known_hosts2) に書いておく。

2) sshの接続の始めに server は自分のRSA(DSA)公開鍵を client に通知し、
  client はそれを known_hosts(known_hosts2) の内容と比較する。

3) これで、client は server が別のホストのなりすましでないと確認でき、
  また client -> server の片方向の暗号化通信路が確立できる。

4) 次に、このあとの通信に使うための共通鍵暗号の鍵を交換する。
  ssh1 では client が 256 bit のランダムな数を選び、3)の
  片方向暗号化通信路で送る。
  ssh2 では Diffie-Hellman アルゴリズムで共通鍵の交換を行う。
# 正確には、ssh1 ではより安全に鍵交換を行うため server は 2)で
# 1時間毎に再生成されるもう一つのRSA公開鍵も client に送っている。
# 区別のため、この鍵をサーバ鍵、1)の鍵をホスト鍵と呼ぶ。

5) これで client <-> server 間の双方向暗号化通信路が確立される。
  以降、*Authentication の設定に基づいて client の認証が行われる。

この手順だと PasswordAuthentication でも素の password は
暗号化通信路の中でしかやりとりされないから、かなり安全だと思う。
でも、例え暗号化されていても password は送りたくないってのなら
RSAAuthentication を使えばいいわけで。


新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver5.26+ (01/10/21-)