|Informative Information for the Uninformed|
Media formats in general, and audio formats specifically, tend to be very inaccurate data formats simply because they do not need to be accurate; the human ear is not very adept at differentiating sounds. As an example, an orchestra performance which is recorded with two separate recording devices will produce vastly different recordings when viewed digitally, but will generally sound the same when played back if they were recorded in a similar manner. Due to this inherent inaccuracy, changes to an audio bit-stream can be made so slightly that when played back the human ear won't be able to distinguish the difference between the cover-medium audio and the stego-medium audio.
With many audio formats, the least-significant bit from each audio sample can be used as the medium's redundant bits for the embedding of message data. To illustrate, assume that an audio file encoded with an 8-bit sample encoding has the following 8 bytes of data in it, which will be used as cover-data:
0xb4 0xe5 0x8b 0xac 0xd1 0x97 0x15 0x68
In binary this would result in the following bit-stream:
10110100 11100101 10001011 10101100 11010001 10010111 00010101 01101000
In order to hide the message byte value 0xd6, or 11010110 in binary, each sample word's least-significant bit would be modified to represent all 8 bits of the message byte:
10110101 11100101 10001010 10101101 11010000 10010111 00010101 01101000
The modifications result in the following 8 bytes of stego-data:
0xb5 0xe5 0x8a 0xad 0xd0 0x97 0x15 0x68
When compared to the original 8 bytes of cover-data, it is noticeable that on average only half of the bytes of data have actually changed value, however the resulting stego-data's least-significant bits contain the entire message byte. It is also noticeable that when utilizing this embedding method with a cover-medium with these word size properties, the cover-medium must be at least eight times the size of the message in order to successfully embed the entire message.