SSIS - Spread Spectrum Image Steganography

We point out this technique as an example for spread spectrum data-hiding methods. Spread spectrum techniques are now widely used in military radio communications, due to their very high robustness to detection and extraction.

SSIS is a quite mature process, and its aim is to achieve low detectability, ease of extraction, high data rate and good robustness to removal.

It is based on spread spectrum techniques, but it enhances them by adding other encoding steps, acquiring better performance.

Technique basics

The core of SSIS is a spread spectrum encoder. These devices work by modulating a narrow band signal over a carrier. The carrier's frequency is continually shifted using a pseudorandom noise generator feeded with a secret key.

In this way the spectral energy of the signal is spread over a wide band, thus decreasing its density, usually under the noise level.

To extract the embedded message, the receiver must use the same key and noise generator to tune on the right frequencies and demodulate the original signal.

A casual observer won't be able even to detect the hidden communication, since it is under the noise level.

the SSIS encoder adds more steps in order to push spread spectrum to its limits:

  1. It optionally encrypts the message m to be embedded with key1, getting e
  2. The data stream passes through a Low-Rate ECC (Error Correction Code) encoder, to acquire better robustness against destruction attacks and unwanted noise, becoming c.
  3. Spread spectrum modulation, using a pseudorandom noise generator fed with key2, and get s
  4. An interleaver and spatial spreader processes s using key3 obtaining i
  5. The output of the interleaver is added to the image f, getting g
  6. A quantization process is used to preserve the initial dynamic range of the cover image. We'll call it still g

We assume that the stego-image is sent through a noisy channel to the receiver and will become g'

The decoding process fairly repeats the same steps backwards:

  1. It gets an optimal approximation f' of the original image f using image restoration techniques
  2. f' is subtracted from the stego image g' to reveal an estimate of the embedded data i'.
  3. i' is fed into a keyed deinterleaver, that uses key3 to construct an approximation of the hidden signal, s'.
  4. s' is demodulated with key2 to get an estimate of the encoded message, c'
  5. c' is decoded through the low-rate ECC to get e'
  6. if m was encrypted, then e' is decrypted with key1 and this will give m'

Data Rate

The data rate for this technique can be fairly high, but it depends on the choices made for the different parameters of the encoding.

We can assume that the message will be compressed before embedding to allow for a higher capacity.

The ECC encoder instead is going to insert redundant data into the stream to be able to correct the errors. The more errors we want to correct, the more bits will be added. Then, we have a tradeoff between good retrieval and capacity. If we can allow for small glitches in the recovered message, then we can use a weaker encoding.

Moreover, the more data we want to insert in the image, the more noise we are going to add to it. Then, if our cover is not noisy, we will be able to hide very little data, while if we choose a noisy one, its capacity will be higher.

Experiments with 512x512 grey scale images (256 KB) could embed from 500 bytes to 5KB, depending on the cover. These experiments used a spread spectrum signal powerful enough to give almost total error-free retrieval, because the compression method adopted didn't allow for any errors.

This means a data rate varying from 1 hidden_bytes/50 cover_bytes to 10 hidden_bytes/50 cover_bytes, a rate suprassed only by LSB insertion.


Spread spectrum techniques are usually quite robust. Every transformation that adds noise to the image isn't able to destroy the message. Anyway, a determined attacker can quite easily compromise the embedded data using some digital processing, like for example noise reduction filters, the same that are used in decoding to estimate the original cover.

Ease of detection/extraction

Spread spectrum encoding is widely used in military communications for its robustness against detection. An attacker can't usually even know if the message was embedded, and anyway it will be very hard for him to extract it without knowing the right key2 and key3.

Suitability for steganography or watermarking

Due to its fairly high capacity and low ease of detection and extraction, SISS is very good for steganography.

Problems and possible solutions

The basic tradeoff in using SSIS is between the error rate we can afford and the amount of informations we want to embed, that varies in turn the power of the added noise. The ECC is used to allow for a lower power without increasing the Bit Error Rate as well.

Further improvements will deal with improving the original cover estimate stage, so that it'll lead to a lower Bit Error Rate in the recovered signal, allowing to use less redundant ECCs.

Alexander Herrigel et alii have developed additions to spread spectrum techniques that can give higher robustness against cropping and geometrical modifications [HRP98].

The first is redundant encoding by dividing the cover into blocks, and embedding the same message in each of them, so that the hidden data can be extracted even from a part of the image as big as one block, but the more of it we have, the more certain we can be about the result.

Moreover, they added to the spectrum a template that can, through a log-polar transform applied to the spectrum of the stego-image, determine the original scale factor and orientation of the image, rendering the stego-message virtually immune to scaling and rotation. [HRP98].

Finally, spread spectrum techniques can add an adaptive perceptual masking filter before the insertion of the signal, so that the added noise is quite sure to be under perceptual limits. This, however, will increase the error rate in the retrieval, because it reduces the power of the embedded signal. [HP98].



Previous: LSB insertion

Next: texture block coding

Matteo Fortini