[Introduction and News]   [Background]   [Download]    [Sourceforge Project Page]   [Links]
[DIRT]    [Forum]    [Examples]    [HowTos]    [Documentation/FAQ]    [Screenshots]   

Digital Invisible Ink Toolkit


Steganography is the art and science of hiding information. Most people have probably used it as a child - writing on a blank sheet of paper using lemon juice. The lemon juice appears "invisible" until the paper is heated - and because it burns before the paper does the invisible writing magically appears. More modern applications have become much more sophisticated, and in the last 10 years there has been more and more people using computers to hide information.

Electronically, the idea is to replace some redundant information in a cover object with the hidden message. With the lemon juice example the paper is the "cover". In this project, images are used as the cover to hide the information. There are programs available that hide in other digital mediums such as email content, word documents, music/sound files, unused diskspace and many others. Regardless of what type of cover is used, the resulting stego-object (the cover containing the hidden information) should have nothing noticeably wrong with it.

When using images it's possible to change the colours a little bit so that the message can be hidden. It's possible to completely overwrite the 4 least significant bits of each colour value (there are 8 possible bits - meaning half of the picture is overwritten) without the picture suffering too much degradation. However, there are techniques known as "steganalysis" which can look at the image and provide a probability of it containing hidden information. If you are using least significant steganography the steganalysis can very often get it right. There is a notion of security here - steganography is secure if even knowing how the message was embedded does not necessarily mean you can retrieve it - or even tell that there is something hidden.

Steganography is often confused with watermarking. Watermarking often uses similar techniques - but there are two big differences. Firstly, watermarking is highly robust. If a watermarked picture is rotated, resized, flipped, recoloured - it should still be possible to retrieve the watermark. If the same is done to a picture that has had steganography applied it is highly unlikely you will be able to get any of the message out at all. Secondly, watermarking isn't necessarily hidden. It may be possible to look at a watermarked item and see the watermark. With steganography we are hiding information - so if it's hidden well, we shouldn't be able to see anything.

In this project, least significant bit steganography is being used. The reason that this method was chosen over others is as follows:
  1. It allows a huge amount of information to be hidden compared to other techniques.
  2. Techniques that hide in the discrete cosine transform coefficients of jpeg's leave a very predictable marking on the file format - because we are changing the colours and not the file format this can be avoided.
  3. If the right algorithm is used, it can be extremely secure.
  4. There are no free user-friendly applications that I've found that implement this technique using a graphical interface and a selection of techniques.

Digital Invisible Ink Toolkit allows you to pick from several different hiding techniques and hide a file of any type (message) inside an image. It can currently handle reading 24-bit colour JPG, PNG and BMP formats, and allows you to save the stego-image as either a 24-bit PNG or BMP. As long as you know what algorithm was used to hide the message (and the password used) it is possible to retrieve the hidden file intact. The toolkit also provides some benchmarking and steganalysis information on any given pictures. There is more information on the documentation page about how this is done.



(c) K. Hempstalk, University of Waikato, 2005