Steganography is defined as "the art and science of writing hidden messages such that no one apart from the intended recipient knows of the existence of the message" (en.wikipedia.org/wiki/Steganography). In implementing steganography applications, you can embed information in both the image domain itself and in one of the image's transformed domainsfrequency, cosine, or wavelet. In this article, I describe a steganography technique based on Bit-Plane Complexity Segmentation (BPCS) and visual cryptography. To test its viability, I implemented the technique in Python.
Bit-Plane Complexity Segmentation, a lossy image-compression technique first proposed at the Kyushu Institute of Technology, lets you embed large amounts of data in images. But to do so, you need visual cryptography to decompose a message in two shares with a highly random character.
Generally, visual cryptography is considered a visual form of secret sharing; see Doug Stinson's article "Visual Cryptography and Threshold Schemes" (www.ddj.com/184410530) and my article "Extended Visual Cryptography Schemes" (www.ddj.com/dept/architect/184406280). In its simplest form, a (2,2) visual cryptography scheme "splits" the original image into two "shadow images" called "shares." Every pixel in the original image is expanded to a 2x2 pixel matrix with a different version in any of the two shares. Any share contains uniformly distributed random black-and-white pixels. By analyzing only a single share, you can't obtain information about the original image, no matter how much computing power or analysis method is used. The whole point of visual cryptography is that in the decryption process, the original image has to be visually reconstructed. Each share is printed on a separate transparency and passed to a participant at the scheme. When the two participants come together, the secret can simply (and theoretically instantaneously) be reconstructed by stacking the two transparencies.
To build the shares, the visual cryptography scheme my application uses only considers diagonal matricessee Versions 1 and 2 in Table 1. Figure 1 is an example of the visual cryptography scheme implemented by the application.