views:

60

answers:

3

After reading a couple of tutorials on Steganography using Java/.NET I'm under the impression that you grab each individual pixel from the secret image and then place it in the lowest bit of each individual pixel from the cover image.

Am I correct in this?

A: 

Yes, the lowest (redundant/noisy) bits are used.

Esteban Araya
+1  A: 

Steganography is the hiding of information inside another peice of information. The goal here is to keep the information hidden.

One method of doing so it to hide the secret information in an image by storing the secret in the lowest bit of each pixel. While this might fool your kid brother it is a very poor way of hiding the information because:

  • Anyone who cares knows about it, thus will know to check the lowest bit.

  • It changes the probablistic properties of the image, it will throw up a red flag to another looking for 'secrets'. For example see Stegdetect - an automated tool for detecting steganographic content in images.

Safer forms of steganography could take the form of writing a note in which some of the positions of letters contain a secret message. The trick is to use steganography to hide messages in things which computers are bad at analyzing (human langauge, the meaning or significance of symbols, songs). Bit manupulation is very easy to computers to detect.

Remember to encrypt the secret information before putting it in a steganographic message. That way, if they find the message they don't learn what you were attempting to send and because most ciphers produce fairly random outputs from very unrandom inputs (human langauge, images, etc) if someone is investigating the message they may mistake it for random noise.

If you'd like to learn more here are some good papers on steganography:

e5
A: 

Steganography is really about data hiding, regardless of whether the data being hidden, or the thing providing cover is an image. Any data format that has enough redundancy can be used. The X86 instruction set is a good example. Other places include unused portions of a file system.

You are correct that in using an image to store hidden data that the low order color bits are the right place to store them. However, I would recommend against trying to correlate pixels between the images though. Most image formats offer some sort of compression from raw pixel presentations. It would be better to read the bit stream of the hidden image directly from the file system, and correlate those bits with pixels in the host image. That will require smaller host images.

Scott Wisniewski