We present a communication system which enables two or more parties to
secretly communicate through an existing digital channel which has a
primary function other than this secret communication. A first party
receives a series of cover data sets, hides a certain amount of auxiliary
data in the cover data sets, and then relays these cover data sets
containing hidden data to a second party, aware of the hidden data. This
second party may then extract the hidden data and either restore it to
its original state (the state it was in before the first party received
it) and send it along to its original intended destination, or may just
simply extract the hidden auxiliary data. There exist a plethora of
techniques for hiding auxiliary data in cover data, and any of these can
be used for the hiding phase of the system. For example, in a JPEG cover
data set, a Huffman table may be modified in such a way as to have no
impact on the observable nature of the image, and several such schemes
are presented here. Since there are so many ways in which to exploit a
particular cover data set for secret communication, it is necessary that
the first and second parties have pre-established a set of rules by which
they will communicate. There must be agreement on the hiding technique,
cover data type and location of the hidden data within the cover.