As discussed in my previous post, steganography is the art of hiding the fact that communication is taking place. We achieve this by hiding original information inside other information known as carrier files. Many different carrier file formats can be used, but digital images are the most popular because of their frequency of occurrence on the internet. For hiding secret information in images, there exists a large variety of steganographic techniques, some are more complex than others, and all of them have respective strong and weak points. Different applications have different requirements of the steganography technique used. For example, some applications may require absolute invisibility of the secret information, while others require a larger secret message to be hidden. How do we achieve this? How robust is it?
Why image steganography?
With billions of images moving on the internet each year, it is safe to say that digital image steganography is of real concern to many in the security field. Digital images could be used for a number of different types of security threats. In the corporate world, the sending of a harmless looking bitmap file could actually conceal the latest company secrets. JPEG files could be used in defense organizations to conceal and guard deep secrets. The use of digital images for steganography makes use of the weaknesses in the human visual system. The human visual system has a low sensitivity towards random pattern changes and luminance. The human eye is incapable of discerning small changes in color or patterns and because of this weakness, text or graphic files can be inserted into the carrier image without being detected. Each graphic image is made up of pixels. Each pixel’s color is determined by the numerical value that it is assigned, ranging from 0 to 255. The typical digital image is made up of either 8 bit (256 colors) or 24 bit (true color, 8 bits each for red, green and blue) pixels.
What is an image?
No, this is not a philosophical question to discuss the hidden true meaning of the word “image”. More of a rhetorical question as to what it means to a computer! As far as a computer is concerned, an image is a collection of numbers that constitute different light intensities in different areas of the image. This numeric representation forms a grid and the individual points are referred to as pixels. The pixels in an image are displayed horizontally row by row. The number of bits in a color scheme, called the bit depth, refers to the number of bits used for each pixel. The smallest bit depth in current color schemes is 8, meaning that there are 8 bits used to describe the colour of each pixel (corresponding to 2^8 = 256 colors). Monochrome and grayscale images use 8 bits for each pixel and are able to display 256 different shades of gray. Digital color images are typically stored in 24-bit files and use the RGB color model, also known as true color.
Image Steganography Techniques
Now that we know how an image is treated by the computer, let’s see what image steganography can do with this. Image steganography techniques can be divided into two groups, namely Image Domain (also known as spatial domain) and Transform Domain (also known as frequency domain). Image domain techniques embed messages in the intensity of the pixels directly. For transform domain, on the other hand, images are first transformed and then the message is embedded in the image.
Image domain techniques encompass bit-wise methods that apply bit insertion and noise manipulation. The image formats that are most suitable for image domain steganography are lossless and the techniques are typically dependent on the image format. Steganography in the transform domain involves the manipulation of algorithms and image transforms. I have discussed more about transforms here. These methods hide messages in more significant areas of the cover image, making it more robust. I have discussed more about frequency domain analysis here. Many transform domain methods are independent of the image format and the embedded message may survive conversion between lossy and lossless compression.