最終更新: haruyama_seigo 2011年07月15日(金) 17:23:25履歴
https://github.com/haruyama/ssh_client_sample/blob...
private def exchangeNewkeys(transportManager: TransportManager) { // SSH_MSG_NEWKEYS メッセージを交換する // 新しい鍵になったことを知らせあう(当然ながら鍵自体は送らない) // SSH_MSG_NEWKEYS を送信する transportManager.sendMessage(TransportMessageBuilder.buildNewkeys) // SSH_MSG_NEWKEYS を受信する val serverNewkeys = transportManager.recvMessage().asInstanceOf[Newkeys] }
これより後のやりとりで 新しいアルゴリズムと鍵を利用することを示す, SSH_MSG_NEWKEYS メッセージを交換します. この交換のメッセージは暗号化などはされません.
SSH_MSG_NEWKEYS はメッセージ番号のみからなるメッセージです.
byte SSH_MSG_NEWKEYS
上述のコード断片では紹介していませんが, 鍵交換 でクライアントとサーバの間で交換した 交換ハッシュ H と 共有の秘密 K を用いて以下を生成します.
- 暗号化
- クライアントからサーバ方向の初期IV
- サーバからクライアント方向の初期IV
- クライアントからサーバ方向の暗号鍵
- サーバからクライアント方向の暗号鍵
- MAC
- クライアントからサーバ方向のMAC鍵
- サーバからクライアント方向のMAC鍵
これより後のやりとりは, これらを用いて暗号化, MACの付与が行なわれます. 場合によっては圧縮も行なわれます. サンプルプログラムでは, 圧縮は利用していません.
- カテゴリ:
- インターネット
- インターネットセキュリティ
最新コメント