what's the best practice for image steganography resistant to various attacks? [closed]
Asked Answered
B

1

6

I'm really curious about that because nowadays every channel could modify or compress images some way which could be considered as a attack on steganography.

We can divide steganography to two basic types, first operates on spatial domain of image and second operates on some kind of transform domain.

The following types of attacks are of my interest because it is everywhere around us (if you want to save image on facebook or if you want to create a thumbnail of image or if you are going to save the image on mobile platform, etc.):

  1. Compression or recompression of image - mainly for JPEG images or PNG images with alpha premultiplication.
  2. Resizing or scaling images and geometric manipulation - I mean the transformation of image other than compressing it, e.g. rotation of image, changing the scale etc.

I would like to ask:

  1. What is the best way according you people to protect embedded message in image from compression like in JPEG? What about "infinte" recompression of image after embedding message with steganographic mechanism? Would it be still the message readable?
  2. Where is the threshold for embedded messages in connection with the resizing of images if there is any? In my opinion steganography is much more sensitive to resizing of image then compression or rotation or adding a noise to images. What is the best way for steganography resistant to resizing of image by you? I mean there is always an edge where we can't go without losing the message but there should be some threshold.
  3. What about the combination of image manipulation through first and second point?

I was reading many papers regarding compression resistant image steganography and basically they are always using error-correcting codes and Hamming distance to get the threshold of what we are able to hide without lossing information (or how to get the information in lossy channel). Then the first step is to hide redundantly our message to spatial domain using Hamming distance. With RGB image we are going to choose for example one triple as a one bit carrier and modifies our triple of colours is a way that the Hamming distance would be "in a center" of edges. We could do this as a repetition error-correcting code or any other (best practice is the Hamming codes like in the F5).

The idea behind this is that our error-correcting code with computed Hamming distances on JPEG compressed images would ensure that embedded information would be still there after many applications of JPEG compression. Of course all of this is at the expense of capacity of image while we are using redundancy through error correcting codes.

Example link on that method is here: http://www.cs.unibo.it/babaoglu/courses/security/resources/documents/Steganography.pdf

I don't know much about watermarking techniques on digital image but probably we could find there a guidance on that topic because the aim of watermarking is almost the same as of steganography. We are trying to retain copyright information in digital images or we are trying to protect our hidden message in image in various situations like above.

I would like to discuss and ask you about today mechanisms of protect information in digital images through steganography. We can share our ideas or sample codes to make world better.

Ballistics answered 2/6, 2013 at 19:11 Comment(0)
V
1
  1. Your 1st question pertains to lossy methods removing the 'noise' (which are of course, the hidden bits) in your image. You may have to scatter it with redundancy. The LSB may not work as well as the position of the bits has to be distributed. Which means, the bits may have to be at various parts of the bits repetitively, so that, you can recover the message even when the other copies are corrupted. You may like to add a hash to ensure that the message is not corrupted (though the probability of the hash itself may). But redundancy and wider distribution may give you a good chance to survive the bits.

  2. An idea may be to use proven cryptographic methods like AES or ECC (key management would be another topic). This will make your data bits "noise like". The position indices may also be determined via similar way. The principle is to create uniform distributions to deter predictability or pastern correlation for both data and location of the bits.

I hope this may give some guides to your steganographic design considerations.

Vanguard answered 28/12, 2013 at 1:50 Comment(8)
I was trying to implement a simple algorithm that would be resistant to JPEG compression. First of all I tried to modify all LSBs in image pixels to 1 and save it as JPEG. After that I tried to recover 1s with repetition code to see if this simple code added enough redundancy to image in order to get these 1s back. But it doesn't, repetition code using for this purpose is not robust and can't be used.Ballistics
Another algorithm that I've tried is the one described in the following article: http://nas.takming.edu.tw/chkao/lncs2001.pdf. But I haven't reached results as authors of that article. The results was better than using repetition code but also it can't be used as a reliable algorithm for compression gateways across internet. Everytime the image is compressed or recompressed the message would be with high probability destroyed.Ballistics
I think that there is no way how to construct reliable steganographic algorithm where the hidden message could survive the various JPEG compression options because there will always be a relation between the algorithm and the compression method used. And when I build the compression gateway and every image that will come to me will go through it then I will destroy every hidden message in it regardless the algorithm that was used. Or do you know about some algorithm that works and could survive?Ballistics
@user1563721, You may have to consider calculate the robustness if you want to take that approach. Steganography's resistance to various attacks usually depends on redundancy. The paradox is also that the data hiding depends on the availability of redundancy. The redundancy provides the attack resistance in the case where some data are corrupted. If, for example, I want to ensure that there is no data hidden, I can clean off 3 to 4 bits of each pixels and see if the distance image quality is acceptable. Your 'covet recoverable data has to survive that'.Prostate
I would also recommend to understand the image in nature, eg. 1st order distribution. Check uncertainty: I(X) = log(1/P(X)) = -log(p(X)); I(x) -> 0 signifies high certainty. If image has high entropy, you can hide more details. With that,check entropy,H(X) = sum(p(X)*I(X)) from X = 1 to 2^B, where B :=numberOfResolutionBits. Also check entropy against human perception, ie. to the point of unacceptable image degradation, entropy remains high to contain target image or data.Prostate
This means you can keep more information bits. Attacker should have difficulties clearing out hidden bits without corrupting image for the human view.Prostate
Thank you for your replies and proposed views on that. I was able to achieve my goal through discrete wavelet transform in combination with error correcting codes. Also it is very dependent on image type where should be different algorithms applied but generally without leveraging the redundancy it is not possible.Ballistics
You hide the details in the wavelet domain (coefficients). Do also note that there is also redundancy there. Depending on the wavelets you use and number of levels, attackers can also do likewise to truncate the coefficients, hence, the same issue occurs.Prostate

© 2022 - 2024 — McMap. All rights reserved.