Steganography Greek: Steganos (covered) + graphein (to write) Art of concealing the existence of a message (as opposed to cryptography, which is concealing the meaning) Lots of colorful classical forms * Under wax on wooden tablets * Tattoo on shaved head (Greek * Writing on silk cloth, folded into small, wax-covered balls, and swallowed * Writing on hard-boiled eggs with alum and vinegar * "invisible" ink (between lines of innocuous letter) * subtly marked letters in more extensive text (e.g. pinpricks in book or newspaper, subtle changes in font or spacing) * cleverly constructed texts (e.g. taking second letter of every word, or every third letter, spells a hidden message) * Grammatical techniques: Use set of synonyms (big, large; method, technique; hide, obscure; construct, build; character, letter). Whenever on of these words appears, use of first element indicates a binary 0, use of the second indicates a 1. (rather low bandwidth, but might be useful) * photographic microdots, stuck on top of periods. General principles and desirable characteristics * Cover data should not be significantly degraded * Message should be encrypted as well as hidden. * Message should be encoded into media rather than header * Message should be as immune as possible to degradation from filtering or re-sampling, either as transmission artifact or a deliberate attack * Self correcting codes can be used to minimize distortion of message if it is corrupted. * Message encoding technique should be "self clocking" i.e. you can still see (most of it) even if part of the cover is missing. More modern methods Digital watermarking of textual documents. * Basic idea is to make a particular copy of some document identifiable using some hidden information, analogous to a serial number. * Want robustness under photocopying, under copying of electronic document format (ps, pdf or word file), and under copying of bit-map versions of printer output. * Line shift: Encode 1 or 0 by shifting every other line up or down slightly (e.g. by 1/300 of an inch) * Word shift: Shift words lightly right or left from positions in some reference original. * Character variation: slightly change length of stems on characters such as b,d, h, p. Hiding information in digital images * Basic observation: Visual images are highly redundant as far as human perception is concerned - many different images are perceived as "essentially identical" * Digital images are represented by arrays of "pixels" (picture elements) each of which has a color specified by some set of numbers. * Image representations: Direct mapped (24-bit true-color, 8-bit grayscale) 8 bit palette (gif), compressed (jpeg). Simplest method is to use least significant bit of each digital value to store message in direct-mapped a color or grayscale image. Because values differing in lsb differ only slightly in color/grayscale, such changes are usually imperceptible to human eye. Variation: embed data only in parts of image that already have lots of variation. Such uncompressed images are large, and not usually transmitted, so transmitting such an image does attract attention Lossless compression will not effect such a message Lossy compression techniques (e.g. jpeg) would destroy a message hidden directly in the lsb. * Tampering with a color palette representation by changing the lsb of the palette entry will generally produce a more noticeable effect. One solution is to change the palette numbering so that colors differing in the lsb do not differ by much. This amounts to solving a variation of the traveling salesman problem, where we want to find a tour of the palette entries (cities) so that the longest stretch between cities is minimized. Another solution is just to match up the existing colors into close pairs. The use of one element of each pair indicates a binary 0, the use of the other a binary 1. Map the "0" colors onto even palette indices, the "1" onto odd indices, (e.g. by mapping pairs to adjacent values) and lsb decoding recovers the hidden message. Other methods might introduce entirely new colors into the palette. * Methods do exist for hiding information in compressed formats such as jpeg, but are somewhat more complicated. For example hide each bit n times by selecting n (random) pairs of image points (a,b) incrementing (the brightness of) a and decrementing b by a minimal amount of a "0", and vice versa for a "0" Compare recovered image to original, and make statistical guess about message bit to recover information. * Encrypting information before hiding it provides an additional layer of security. * Lots of software packages exist for embedding messages in images, many freely available on the net. Similar approaches can be used with digital audio, though specifics differ due to differing sensitivity of human audio system compared to human visual system. More general digital watermarking Use steganographic techniques to embed some secret information in, say, a copyrighted image, which will allow copies to be efficiently detected. If the message is short and distinctive, an entire collection can be marked and checked without the checker having to store every image in its entirety. Technological challenge is to create watermarks that are robust to lossy compression and noise associated with analog transmission, but still visually (or auditorially) imperceptible. Detection and countermeasures. * detection can be difficult, especially if message is encrypted, as it looks like noise. * One approach is to use the fact that "noise" in images and other forms of data is hardly ever truly "white", and look for deviation from expected noise characteristics (e.g. in autocorrelation) as an indicator that some information has been added. * Countermeasures are sometimes easier. Re-randomizing the lsb will destroy any data embedded using simple lsb methods, as will (frequently) lossy compression and re-expansion.