Uninformed: Informative Information for the Uninformed

Vol 8» 2007.Sep



Embedding System

The embedding system that was developed for the SteganRTP reference implementation is a generalized least-significant-bit (LSB) steganographic data embedding method. It is generalized such that when provided with a cover-medium buffer, its length, the size of each word value within the cover-medium buffer, and the message buffer to be embedded, it is then able to perform the LSB embedding operation. In this way, any audio Codec which uses a linear grouping of fixed-length audio samples should be able to be utilized as cover-medium by the embedding system.

For the purpose of discussion of the SteganRTP embedding system, the term word value used in this context is equivalent to audio sample. The example used here, as well as the only Codec currently supported by the reference implementation, is G.711. G.711 is a Codec which encodes audio as a linear grouping of 8-bit audio samples. This encoded data is transported by RTP packets as their payload and will serve as cover-medium.

Using the generalized LSB embedding method, the LSB of each word value in the cover-medium is modified to be equivalent to a single bit from the message data buffer, in order. The properties of the RTP packet, such as its payload length and payload type header value, determine how much message data can be embedded into the packet's payload. The RTP packet's payload size is determined by subtracting the size of the RTP packet's header from the value of the UDP packet header's Length field[5]. The wordsize is equivalent to the sample size used by the RTP packet's Codec, indicated by the RTP packet header's payload type field. Modifying 1 bit from each word value requires 8 word values to embed a single byte of message data. Thus, the amount of available space within an RTP packet's payload for embedding is found by multiplying the word value size by 8, then dividing the RTP packet payload size by the result.

The resultant value is defined here as the RTP packet's available_space for embedding and is described by Equation [*] below.

$\displaystyle available\_space = RTP\_payload\_size / (wordsize \cdot 8 )$ (3.4)

The space available for user data after prepending the SteganRTP communication protocol's message header is defined here as the SteganRTP message's payload_size and is described by Equation [*] below.

$\displaystyle payload\_size = available\_space - sizeof( message\_header )$ (3.5)

Thus, payload_size bytes of user data can be packaged as a SteganRTP message and embedded into an RTP packet payload cover-medium of available_space bytes. If an RTP packet is too small to contain a valid message, it is passed along unmodified.

If a message being embedded is smaller than the available space in the cover-medium, the message is padded out to the available size with random data. This ensures a more uniform distribution of modified values throughout the cover-medium.