HTML5 SSH 开发备忘录 -- 传输层
2017-07-12 本文已影响56人
李书文
传输层 (Transport Layer)
- SSH抓包与验证
> tcpdump host <host-ip> -s 65535 -w <dump-file-path>
结束后,CTRL + C 结束tcpdump,然后用wireshark打开pcap文件就好了。
对于前面的协商流程和协商结果可以用这个来做个验证,方便、高效。
- 密钥交换与通信的解释
-
Key Exchange
其中列出了密钥交换时的算法,ssh中所有的密钥交换方式都是diffie-hellman算法,只是选择的计算生成元和HASH的算法不一样 -
Cipher
密钥交换之后加密的算法,都是对称加密的算法。注意其中aesxxx-gcm中的gcm也决定了HMAC的算法 -
HMAC
对加密前的数据进行摘要计算,保证通信数据不被篡改。注意如果选择了aesxxx-gcm@openssh.com,那么在协商过程中HMAC就是None,因为aes-gcm本身在加密结束后就包含的HMAC的结果 -
HostKey
SSH server会用HostKey对交换的密钥值做签名,在client端计算完交换的密钥之后,需要用HostKey中的PublicKey以及签名之后的数据对自己计算的密钥值做检验
- 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的区别和注意事项
- HMAC 是否使用
- Packet Length的加密与否
- invocation_counter 的问题
- block_counter 的问题