傳輸層 (Transport Layer)
- SSH抓包與驗(yàn)證
> tcpdump host <host-ip> -s 65535 -w <dump-file-path>
結(jié)束后,CTRL + C 結(jié)束tcpdump,然后用wireshark打開pcap文件就好了。
對(duì)于前面的協(xié)商流程和協(xié)商結(jié)果可以用這個(gè)來做個(gè)驗(yàn)證,方便、高效。
- 密鑰交換與通信的解釋
Key Exchange
其中列出了密鑰交換時(shí)的算法,ssh中所有的密鑰交換方式都是diffie-hellman算法,只是選擇的計(jì)算生成元和HASH的算法不一樣Cipher
密鑰交換之后加密的算法,都是對(duì)稱加密的算法。注意其中aesxxx-gcm中的gcm也決定了HMAC的算法HMAC
對(duì)加密前的數(shù)據(jù)進(jìn)行摘要計(jì)算,保證通信數(shù)據(jù)不被篡改。注意如果選擇了aesxxx-gcm@openssh.com,那么在協(xié)商過程中HMAC就是None,因?yàn)閍es-gcm本身在加密結(jié)束后就包含的HMAC的結(jié)果HostKey
SSH server會(huì)用HostKey對(duì)交換的密鑰值做簽名,在client端計(jì)算完交換的密鑰之后,需要用HostKey中的PublicKey以及簽名之后的數(shù)據(jù)對(duì)自己計(jì)算的密鑰值做檢驗(yàn)
- ssh client 選擇特定的Kex、Host-Key與Cipher
> ssh -o KexAlgorithms=ecdh-sha2-nistp521 -o HostKeyAlgorithms=ecdsa-sha2-nistp256 \
> -c aes128-ctr <username>@<host-ip>
- 移除已知Host證書
ssh-keygen -f <path> -R <host-ip>
- AES-GCM 與 AES-GCM@openssh.com的區(qū)別和注意事項(xiàng)
- HMAC 是否使用
- Packet Length的加密與否
- invocation_counter 的問題
- block_counter 的問題