rtmfp协议四次握手
日期:2014-10-26 10:34:54
最后更新日期:2014-11-28 11:23:13
1.rtmfp包服务端解密 server接收到一个服务包后,根据前三个unsigned int类型的整数,计算sessionid。rtmfp协议利用sessionid来分用会话。若sessionid为0,则为握手包。否则则已经建立的会话。用已知的密钥-“Adobe Systems 02”从第4个字节开始解密。接着跟一个short(两个字节),做crc效验。后面描述的就是平坦格式的包。加密算法为cbc模式的aes。
2.客户端连接服务端的四次握手 整体框架图,该图来自rtmfp协议rfc文档:

2.1 Ihello包

2.2Rhello包

2.3Ikey包

这里计算加密和解密的密钥计算方法,客户端发过来public key和临时数据块,利用客户端的public key用Diffie-Hellman方法计算出共享的shared key。
然后对服务端而言,就有了shared key ,客户端的临时数据块,当然还有自己产生的临时数据块,
服务端的加密密钥,可以通过两次hash得到:
1.用客户端的public key做密钥,服务端自己的临时数据块,用sha256算法算出hash值。 2.用shared key做密钥,步骤1的hash值为数据块,用sha256算法得到的即加密密钥。 服务端的解密密钥,也是两次hash得到的:
用客户端临时数据块做密钥,客户端的public key做数据,sha256算一次hash
用shared key做密钥,前一步骤hash值,用sha256算一次hash值即为解密密钥
最后,服务端发Rkey包时,将自己的特定数据块发给客户端,即完成了密钥传输的任务。
2.4Rkey包
