|\ /|     scroll down for older posts.
= o.o =

Montag, 22. August 2016

Steganography: A Visual Comparison Of Least Significant Bit Embedding Methods In Images

Bonbon for reading this: here is an image of a Beluga whale. It contains the whole novel "Moby Dick" by Herman Melville, which is in the public domain and was taken from Project Gutenberg:

This image can be decrypted with the current stable version of pepperpickle, v0.0.3.
The decryption password is: mobydick

Credits: taken from Wikipedia; original photo by Steve Snodgrass, licensed under CC-by-SA

I've been adding more flexibility to my development version of pepperpickle, and made some tests. Here are a few results.
I recommend scrolling down first, to get an overview of the changes in image quality.

The original images I used are as follows:

Baboon, Lena and sweet peppers, each 256x256 pixels in size.

I have embedded random data in the whole available storage space. When using only the Least Significant Bit (LSB) for embedding, an additional storage space of 24576 bytes for each image can be achieved, which is quite a lot:

As can be seen, there is no visual difference between the stego images and the originals. Using the second LSB and the first LSB, an additional storage capacity of 49152 bytes per image can be achieved. Yet, I had to slightly turn down the most intensive color values to compensate for an integer overflow I am currently weeding out:

Apart from being slightly brighter, there is also no visual difference between the images. This will change drastically later on, but first, let's try the method of threshold-based embedding I wrote about earlier.
This gives us varying storage capacity, 41278 bytes for Baboon, 43434 bytes for Lena and a whopping 63528 bytes for the peppers:

Still an excellent image quality...
With 3 LSBs we get 73728 bytes per image:

Nothing critical, yet.
Let's try 4 LSBs. 98304 bytes per image are used for data storage:

Apart from some artefacts due to the aforementioned overflow bug, the image quality is still quite acceptable.
Let's go for 5 LSBs (122880  bytes):

We're losing quite some quality now, but the noisy Baboon image is a good carrier.
6 LSBs (147456 bytes):

The image quality is now unacceptably low. The noise dominates the image information.
For completeness' sake here are 7 LSBs (172032 bytes):

Using an additional bit would completely destroy the image and result in random noise:

random noise or encrypted data? Who can tell...

When we zoom into the noise, we get something that resembles some newer artwork by Bridget Riley, whose art I honestly admire (hint for art historians and steganalysts alike: maybe she embedded something in her paintings...):

Keine Kommentare:

Kommentar veröffentlichen