I am working now on a design for steganographic markov chains, intended for plausible and quiet encryption.
First of all, here is a rough design
- Implement a JSON-backed database for markovian statistics about words (partially implemented, backed currently by Pickle)
- Implement an encoder (currently I am planning nibble/word). That works already.
- Implement a decoder (that works already)
- Implement break-document-into-words for quality input into the db (implemented naive algorithm)
- Add “smarts” about sentences/paragraphs to the encoder
- Add compression/encryption layers, in order to supply better hiding (I’ll probably use 256-AES)
- Design a key exchange scheme — if I know someone’s PGP public key, could I still steg. the encrypted key in the beginning without skewing statistics?
I plan to be able to use it for e-mail (markov chaining would hopefully, at worst, look like spam), blogs (wrap it with a nice interface for uploading to wordpress/lj, and think about a firefox extension for auto decryption (if you put a marker in the compressed plain text, you could opportunistically decrypt and check for the marker) and IM (wrap it with libpurple, and a public interface for key negotiation — ideally implement it as a plugin to pidgin which can be made to work without hassle).