1993-03-16 - Re: HIDE: embeddin msgs into snd & graphics

Header Data

From: Derek Upham <upham@cs.ubc.ca>
To: cypherpunks@toad.com
Message Hash: 48892ebb6d9f187d828f6dacf510d6f12a023d7319929c61863de6939a41ad17
Message ID: <199303140130.AA08704@grolsch.cs.ubc.ca>
Reply To: N/A
UTC Datetime: 1993-03-16 02:27:23 UTC
Raw Date: Mon, 15 Mar 93 18:27:23 PST

Raw message

From: Derek Upham <upham@cs.ubc.ca>
Date: Mon, 15 Mar 93 18:27:23 PST
To: cypherpunks@toad.com
Subject: Re: HIDE: embeddin msgs into snd & graphics
Message-ID: <199303140130.AA08704@grolsch.cs.ubc.ca>
MIME-Version: 1.0
Content-Type: text/plain

> I think Eli is right, too, that lossy compression is pretty much out of the 
> question for this application.  It would be too easy to lose the message 
> that is encoded in the low-order bits.

Uh, unless the JPEG FAQ sheet has seriously mislead me, lossy
compression would be excellent for this sort of steganography.

In the standard JPEG encoding procedure, an image is broken into
square blocks of pixels, eight per side.  These blocks are run through
a 2-D discrete cosine transform, producing a set of cosine waves that
are equivalent to the original blocks (within small errors).  If the
original image was smooth (a natural image, for example), the low-
frequency waves will contain all the information necessary for
reproducing the block; the high-frequency waves will contain nothing
but faint noise.  So the JPEG encoder _dumps_ the high-frequency
cosine waves.  That's how the format gets a lot of its compression.

This is where steganography comes in.  Take these empty wave slots and
stick your data in them.  For example, if the wave magnitudes are
stored as four-byte integers, store one byte of data in the lowest-
order byte in the slot (or go down to four, two, or even one bit per
integer, if necessary; floating-point would be wonderful, here).  As
long as the hidden data representation looks like very tiny values to
the JPEG decoder, the data should be completely unnoticeable on
display---but the steganographic decoder will know where to look for
it and what to do with it.

Anyone have honest-to-god practical experience with JPEG/JFIF to
assess the feasibility of this technique?


Derek Lynn Upham                               University of British Columbia
upham@cs.ubc.ca                                   Computer Science Department
"Ha!  Your Leaping Tiger Kung Fu is no match for my Frightened Piglet Style!"