When looking at the steganographic tools available on the Net, it occurred to
me that nothing had been done to hide information in MP3 files, that is sound
tracks compressed using the MPEG Audio Layer III format. There is a growing
interest world-wide in MP3 files because they offer near-CD quality at
compression ratio of 11 to 1 (128 kilobits per second). This gives a very good
opportunity for information hiding.
MP3Stego will hide information in MP3 files during the compression process.
The data is first compressed, encrypted and then data hidden in the MP3 bit
stream. Although MP3Stego has been written with steganographic applications in
mind it might be used as a watermarking system for MP3 files. Any opponent can
uncompress the bit stream and recompress it; this will delete the hidden
information -- actually this is the only attack we know yet -- but at the
expense of severe quality loss.
The hiding process takes place at the heart of the Layer III encoding process
namely in the inner_loop. The inner loop quantizes the input data and increases
the quantizer step size until the quantized data can be coded with the available
number of bits. Another loop checks that the distortions introduced by the
quantization do not exceed the threshold defined by the psycho acoustic model.
The part2_3_length variable contains the number of main_data bits used for
scalefactors and Huffman code data in the MP3 bit stream. We encode the bits
as its parity by changing the end loop condition of the inner loop. Only
randomly chosen part2_3_length values are modified; the selection is done
using a pseudo random bit generator based on SHA-1.
We have discussed earlier the power of parity for information hiding [1].
MP3Stego is a practical example of it. There is still space for improvement
but I thought that some people might be interested to have a look at it.
DO W N L O A D