protocol which is developed for streaming audio, video and data over internet, between Flash player and server • Stream was split into fragments. Fragment sizes are: • default: 64 bytes for audio, 128 bytes for video and others • but can change dynamically
session in a light encryption layer. • RTMPE using Anonymous Diffie-Hellman to provide verification mechanism between client and server • Adobe advertises RTMPE as a method for secure content delivery, but this claim is false
4 5 message type id 0x01 Set packet size 0x03 Bytes read 0x04 Type control 0x05 Server bandwidth 0x06 Client bandwidth 0x08 Audio type 0x09 Video type 0
4 5 message type id 0x01 Set packet size 0x03 Bytes read 0x04 Type control 0x05 Server bandwidth 0x06 Client bandwidth 0x08 Audio type 0x09 Video type 0x0F Flex stream send 0x10 Flex shared object 0x11 AMF3 message 0x12 Info message 0x13 Shared object 0x14 AMF0 object 0x16 Flash video 0
Command byte: 0x03 unencrypted (RTMP) 0x06 encrypted (RTMPE) ox09 undocumented Random message 0:3 32-bit system time 4:7 client version 8:11 obfuscated pointer to Genuine FP key 12:1531 random data, 128-bit DH key 1532:1535 obfuscated pointer to 128-bit DH key Generate DH key + Calculate location of DH public key base on last 4 bytes + Generate DH private and public key and replace 16 bytes (128 bit) from the location with public key Generate Client digest + Calculate client digest location base on bytes 8-11 + Generate client digest using HMACsha256 algorithm and replace 32 bytes from digest location with the new one Algorithm was described more details at http://lkcl.net/rtmp/RTMPE.txt Hand shake RTMPE
have 2 types of format Client read server message and calculate server public key Using client private key was calculate at last step, and server public key to generate DHSharedSecret Using DHSharedSecret, ARC4 KeyIn and KeyOut are calculate based on server public key and client public key. KeyIn and KeyOut are used to decrypt and encrypt incoming and outgoing data Second message come after first message was read. Client validate server message using client public key After handshake, ACR4 KeyIn and KeyOut was used for exchange “encrypted” data Hand shake RTMPE