Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combining semacodes and steganography?

Update I asked this question quite a while ago now, and I was curious if anything like this has been developed since I asked the question?

I don't even know if there is a term for this kind of algorithm, and I guess there won't be if nobody has invented it yet. However it also makes googling for this a bit hard. Does anybody know if there is a term for this algorithm/principle yet?


This is an idea I have been thinking about, but I do not quite know how to solve it. I would like to know if any solutions like this exists out there, or if you guys have any idea how this could be implemented.

Steganography

Steganography is basically the art of hiding messages. In modern days we do this digitally by e.g. modifying the least significant bits in a image as the one below. Thus for every pixel and for every colour component of that pixel we might be able to hide a byte or two.

This alternation is not visibly by the naked eye, but analysing the least significant bits might reveal patterns that exposes the existence and possibly content of a hidden message. To counter this we simply encrypt the message before embedding it in the image, which keeps the message safe and also helps preventing discovery of the existence of a hidden message.

Thus, in principle, steganography provides the following:

  • Hiding encrypted message in any kind of media data. (Images, music, video, etc.)
  • Complete deniability of the existence of a hidden message without the correct key.
  • Extraction of the hidden message with the correct key.


(source: cs.vu.nl)

Semacodes

Semacodes are a way of encoding data in a visually representation, that may be printed, copied, and scanned easily. The Data Matrix shown below is a example of a semacode containing the famous Lorem Ipsum text. This is essentially a 2D barcode with a higher capacity that usually barcodes. Programs for generating semacodes are readily available, and ditto for software for reading them, especially for cell phones. Semacodes usually contains error correcting codes, are generally very robust, and can be read in very damaged conditions.

Thus semacodes has the following properties:

  • Data encoding that may be printed and copied.
  • May be scanned and interpreted even in damaged (dirty) conditions, and generally a very robust encoding.

Combining it

So my idea is to create something that combines these two, with all of the combined properties. This means it would have to:

  • Embed a encrypted message in any media, probably a scanned image.
  • The message should be extractable even if the image is printed and scanned, and even partly damaged.
  • The existence of a embedded message should be undetectable without the key used for encryption.

So, first of all I would like to know if any solutions, algorithms or research is available on this? Secondly I would like to hear any ideas/thoughts on how this might be done?

I really hope to get a good discussion going on the possibilities and feasibility of implementing something like this, and I am looking forward to reading your answers.

Update

Thanks for all the good input on this. I will probably work a bit more on this idea when I have more time. I am convinced it must be possible. Think about research in embedding watermarks in music and movies.

like image 583
Bjarke Freund-Hansen Avatar asked Aug 07 '09 09:08

Bjarke Freund-Hansen


1 Answers

I imagine part of the robustness of a semacode to damage/dirt/obscuration is the high contrast between the two states of any "cell". The reader can still make a good guess as to the actual state, even with some distortion.

That sort of contrast is not available in a photographic image, and is the very reason why steganography works - the lsb bit-flipping has almost no visual effect on the image itself, while digital fidelity ensures that a non-visual system can still very accurately read the embedded data.

As the two applications are sort of at opposite ends of the analog/digital spectrum (semacodes are all about being decipherable by analog (visual) processing but are on paper, not digital; steganography is all about the bits in the file and cares nothing for the analog representation, whether light or sound or something else), I imagine a combination of the two will extremely difficult, if not impossible.

Essentially what you're thinking of is being able to steganographically embed something in an image, print the image, make a colour photocopy of it, scan it in, and still be able to extract the embedded data.

I'm afraid I can't help, but if anyone achieves this, I'll be DAMN impressed! :)

like image 149
Matt Sach Avatar answered Sep 16 '22 23:09

Matt Sach