■掲示板に戻る■ 全部 1- 101- 201- 最新50ssh
- 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 最新50read.cgi ver5.26+ (01/10/21-)