4
votes

I am trying to implement a steganographic algorithm where hidden message could survive jpeg compression.

The typical scenario is the following:

  1. Hide data in image
  2. Compress image using jpeg
  3. The hidden data is not destroyed by jpeg compressiona nd could be restored

I was trying to use different described algorithms but with no success. For example I was trying to use simple repetition code but the jpeg compression destroyed hidden data. Also I was trying to implementt algorithms described by the following articles: http://nas.takming.edu.tw/chkao/lncs2001.pdf http://www.securiteinfo.com/ebooks/palm/irvine-stega-jpg.pdf

Do you know about any algorithm that actually can survive jpeg compression?

4
How big is your message and would it be rendered useless if a part of it was altered? JPEG steganography generally deals with lossy storage/retrieval of a message. What compression ratio did you use?Reti43
Now I don't care about capacity. Firstly I would like to see an example or algorithm that could survive JPEG compression or recompression to understand it. Is is possible to use steganography that survive any compression ratio? Do you know about something?user1563721

4 Answers

3
votes

You can hide the data in the frequency domain, JPEG saves information using DCT (Discrete Cosine Transform) for every 8x8 pixel block, the information that is invariant under compression is the highest frequency values, and they are arranged in a matrix, the lossy compression is done when the lowest coefficients of the matrix are rounded to 0 after the quantization of the block, these zeroes are arranged in the low-right part of the matrix and that is why the compression works and the information is lost.

2
votes

Quite a few applications seem to implement Steganography on JPEG, so it's feasible:

http://www.jjtc.com/Steganography/toolmatrix.htm

Here's an article regarding a relevant algorithm (PM1) to get you started:

http://link.springer.com/article/10.1007%2Fs00500-008-0327-7#page-1

0
votes

Perhaps the answer is late,but ... You can do it in compressed domain steganography.Read image as binary file and analysis this file with libs like JPEG Parser. Based on your selected algorithm, find location of venues and compute new value of this venue and replace result bits in file data. Finally write file in same input extension. I hope I helped.

0
votes

What you're looking for is called watermarking.

A little warning: Watermarking algorithms use insane amounts of redundancy to ensure high robustness of the information being embedded. That means the amount of data you'll be able to hide in an image will be orders of magnitude lower compared to standard steganographic algorithms.