Saturday, 30 July, 2005

Well, I'm writing a new piece of software, called CloakPng. It's a program that hides information in images. As always, the final copy will be available under the GPL when it's finished. Really, there is no choice but to use a open-source license for such software. Any sane person can't trust a piece of security software without seeing the source code.

So how does it work? Basically, it swaps pixels. First you choose an encryption key. This key is used for the following purposes:

  1. Protecting the information you want to store. Encrypting the data makes it appear like white-noise which makes it easier to hide.
  2. Providing authentication on the information you want to store, so that it can't be changed without detection.
  3. Choosing random positions in the image to change. This is done by seeding a random number generator with the key.

It then goes to a random position in the file and examines the pixel to the right of it. If they're different it orders them in a way that encodes the information. Your friend who has the same key can extract the message from the PNG with ease but everybody else would find it very difficult to detect the message at all.

It's designed for use on Windows computers with the .NET framework. There are no plans to write a linux version but if it gets popular enough, I may well do. A lot of people object to steganography (the art of covertly hiding information in other-wise normal communication) on the grounds that it only aids criminals. I disagree with this position, the technology is natural. It could be used by a drug dealer to arrange a meeting place or a whistle blower. It could be used by pedophiles to hide pictures within pictures, or it could be used by a Chinese person to arrange a pro-democracy meeting. It's these more inspirational applications where I'd like to see CloakPng used.

I have a release date pegged at the 1st of September. I'll probably have some screenshots before then showing off some of the cool features.

Simon.

19:01:30 GMT | #Programming | Permalink
XML View Previous Posts