I am asking this question instead of extending the discussion of another question (Perfect Steganography). I did try starting a chat room (https://chat.stackexchange.com/rooms/87636/perfect-steganography) but nobody knew about it ;-(.

I think that I have achieved near perfect steganography

This is an exceptional claim and should be accompanied by exceptional proof, but I am at a loss as to how to quantify/prove this claim. I am asking for help with this validation - a refutation would be an acceptable outcome to this question.

The basic method is as follows: The bulk of the image data in the file represents coefficients to the DC algorithm. These coefficients are routinely pruned to reduce the size and resolution of the image according to the needs of the image compressor. The level of compression is typically constant across an image, and is chosen for its effect upon size/quality rather than on a rigourously defined process. Indeed many programs use a default quality setting, or allow selection of one of a number of predetermined quality settings. These settings have different levels of effect on different parts of the image.

By modulating the quality of the image as the image data is traversed I can create a signal that can be interpreted as an array of bytes. I call this the payload. (The method has a few subtleties that might best be left for offline discussion.)

The byte array payload from an unmodified jpeg is effectively 'random'. By 'random' here I mean that there is no apparent order - the data is obviously not random as it is related to the image - but the relationship is so indirect as to be ignorable. By replacing some of the bytes with an encrypted message (effectively more 'random' data) we can hide the message without increasing the apparent order (decreasing the apparent entropy).

As an example here are three versions of the same image one with no payload, one with a short message ("hello World"), and one with the first sentence of 'Lorem Ipsum'

I cannot see a difference, and I would welcome proof that a difference is detectable. Do not be fooled by the sizes. The modulation of quality is as likely to reduce the size of the image as it is to increase it.

As a further illustration here are two images:

Where the normally 'random' payload has been set to all ones (FF) or all zeroes. I would like to emphasise that this is not an encrypted message containing all ones or zeroes, but the underlying byte array that is inserted into the image. This is the most extreme variation I can imagine in the data, but the effect upon the image is negligeable.....

Now, showing you images is no proof at all. So I provide two apps to play with:

Please can you suggest other ways to test my claim?

Notes as answers to comments:

  • None of the data involved is truly random. Every change to every bit has a theoretically determinable effect upon the image. However the variations in the data that lead to variations from the original are all within the variations that could be expected in the output from some unknown but compliant jpeg compressor (or even the same compressor with slightly different settings).

  • I guess that perfection would require that an examiner with the original and the modified would see no difference. I do not think that this is easily achievable in my scheme. Any change to any bit of any byte can be detected by a byte compare. So can I limit this discussion to whether the modified file in isolation can be shown to differ from the expected format in a way that would indicate that it contains a message?

  • $\begingroup$ empirical testing is no proof either $\endgroup$
    – kodlu
    Jan 4, 2019 at 21:32
  • 1
    $\begingroup$ By 'random' here I mean that there is no apparent order For the steganography to be "perfect", you need to prove with absolute certainty that the background noise you are blending in to is completely random and 100% unpredictable by any means, and that any bias in it can be mimiced perfectly by your steganography. $\endgroup$
    – forest
    Jan 4, 2019 at 22:13
  • $\begingroup$ @forest "Perfect" is trivially proved with .BMP stego. The lower bit(s) of all photographs are truly random due to quantum sensor and quantization effects. All properly encrypted messages are indistinguishable from random. If message entropy < noise entropy, you get perfect stego. Simples. $\endgroup$
    – Paul Uszak
    Jan 5, 2019 at 0:05
  • 5
    $\begingroup$ @PaulUszak I would love to see your proof that the LSBs are 1) unbiased, 2) uniformly distributed, and 3) impossible to predict even in theory. $\endgroup$
    – forest
    Jan 5, 2019 at 0:10
  • 2
    $\begingroup$ "That's easily done for BMPs with small message entropy." That's certainly open to discussion - it's kind of stating that it can be proven without actually proving it. I'm not sure what you mean with "message entropy". Before we get into extended discussions however, remember that the question is asking for a way to assess quality of stenography. If perfect stenography can exist is another - previously asked - question. $\endgroup$
    – Maarten Bodewes
    Jan 6, 2019 at 14:05


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.