HTML5 SSH 开发备忘录 -- 传输层

传输层 (Transport Layer)

  1. SSH抓包与验证
> tcpdump host  -s 65535 -w 

结束后,CTRL + C 结束tcpdump,然后用wireshark打开pcap文件就好了。
对于前面的协商流程和协商结果可以用这个来做个验证,方便、高效。

  1. 密钥交换与通信的解释
  • Key Exchange
    其中列出了密钥交换时的算法,ssh中所有的密钥交换方式都是diffie-hellman算法,只是选择的计算生成元HASH的算法不一样

  • Cipher
    密钥交换之后加密的算法,都是对称加密的算法。注意其中aesxxx-gcm中的gcm也决定了HMAC的算法

  • HMAC
    对加密前的数据进行摘要计算,保证通信数据不被篡改。注意如果选择了[email protected],那么在协商过程中HMAC就是None,因为aes-gcm本身在加密结束后就包含的HMAC的结果

  • HostKey
    SSH server会用HostKey对交换的密钥值做签名,在client端计算完交换的密钥之后,需要用HostKey中的PublicKey以及签名之后的数据对自己计算的密钥值做检验

  1. ssh client 选择特定的Kex、Host-Key与Cipher
> ssh -o KexAlgorithms=ecdh-sha2-nistp521 -o HostKeyAlgorithms=ecdsa-sha2-nistp256 \
> -c aes128-ctr @
  1. 移除已知Host证书
ssh-keygen -f  -R 
  1. AES-GCM 与 [email protected]的区别和注意事项
  • HMAC 是否使用
  • Packet Length的加密与否
  • invocation_counter 的问题
  • block_counter 的问题

你可能感兴趣的:(HTML5 SSH 开发备忘录 -- 传输层)