Nova Patents
WO9642151A2

Steganographic method and device

Abstract

An apparatus and method for encoding and decoding additional information into a stream of digitized samples in an integral manner. The information is encoded using special keys. The information is contained in the samples, not prepended or appended to the sample stream. The method makes it extremely difficult to find the information in the samples if the proper keys are not possessed by the decoder. The method does not cause a significant degradation to the sample stream. The method is used to establish ownership of copyrighted digital multimedia content and provide a disincentive to piracy of such material.

Term

No projected expiry on record.

  1. Priority and filed
  2. Published
  3. Today

32 claims: 6 independent, 26 dependent

  1. 1
    Claims 1. A steganographic method comprising the steps of :using random keys in combination with steganography to encode additional information into digitized samples such that a signal generated from the modified sample stream is not significantly degraded and such that the additional information cannot be extracted without the keys and such that the signal generated from the modified sample stream will be degraded by attempts to erase, scramble, or otherwise obliterate the encoded additional information.
  2. 2
    An apparatus for encoding or decoding a message, represented as series of data bits into or out of a series of digitized samples, comprising:a) a sample buffer for holding and accessing and transforming digitized samples;b) a digital signal processor capable of performing fast fourier transforms;c) a memory to contain information representing 1) primary mask, 2) convolutional mask, 3) start to message delimiter, 4) a mask calculation buffer, 5) a message buffer, 6) an integer representing a message bit index, 7) a position integer M representing message size, 8) an integer representing an index into said primary mask, 9) an integer representing an index into said convolution mask, 10) an integer representing the state of a decode process, 11) a table representing a map function;12) a flag indicating a complete message has been decoded or encoded, 13) a positive integer S representing a number of samples to read into said sample buffer, and 14) a flag indicating the size of a message which has been decoded;d) an input to acquire digital samples;e) an output to output modified digital samples;f) an input for inputting the values of (cl) - (c5) and (cl 1) and (cl3);g) an output to output the message stored in (c5) as the result of a decode process and the value of (clO) to an attached digital circuit;h) at least one data bus to transfer information from (d) to (a), (a) to (b), (b) to (a), (a) to (e), (f) to (c), and (c) to (e);and i) a clock which generates a clock signal to drive (b) and control the operation of the apparatus.
  3. 3
    A method of encoding information into a sample stream of data, said method comprising the steps of:A) generating a mask set to be used for encoding, said set including: a random or pseudo-random primary mask, a random or pseudo-random convolution mask, a random or pseudo-random start of message delimiter, wherein said mask set can be concatenated and manipulated as a single bit stream;B) obtaining a message to be encoded;C) generating a message bit steam to be encoded such that the stream includes 1) a start of message delimiter, and 2) an integer representing the number of message bytes to follow the message;D) loading the message bit stream, a map table, the primary mask, the convolution mask, and the start of message delimiter into a memory;E) resetting a primary mask index, a convolution mask and message bit index, and setting the message size integer equal to the total number of bits in the message bit stream;F) clearing a message encoded flag;G) reading a window of samples from a sample input device and storing them sequentially in a sample buffer;H) resetting the primary mask index and looping through the sample buffer from a first sample to a last sample incrementing the primary mask index each time a sample is visited, such that for each sample position, a value of the mapping function is computed, which is either true or false, by using a bit of the primary mask representing a current sample and a bit of the convolution mask indicated by the convolution index to calculate an offset in the map table;I) obtaining the bit value stored in the map table and encoding the bit of the message indicated by the message bit index into the current sample if the bit value obtained from the map table is a certain value and incrementing the message bit index, determining whether the message bit index equals the number of message bits, and if it does re-performing step A), setting the message encoded flag, and exiting the loop;J) outputting the modified samples in the sample buffer, and if the message encoded flag is set jumping back to said step E);K) incrementing the convolution index, wherein if the convolution index equals the length of the convolution mask in bits then set the convolution index to 0;and L) jumping back to step G).
  4. 4
    A method of encoding information into a sample stream of data, comprising the steps of:A) generating a mask set to be used for encoding, including: a random or pseudo-random primary mask, a random or pseudo-random convolution mask, and a random or pseudo-random start of message delimiter, wherein said mask set can be concatenated and manipulated as a single bit stream;B) inputting a message to be encoded;C) generating a message bit stream to be encoded including a start of message delimiter, and an integer representing of number of message bytes to follow the message;D) loading the message bit stream, a map table, and the mask set into a memory;E) resetting a primary mask index, a convolution mask and message bit index, setting the message size index equal to the number of bits in the message bitstream, and clearing a message encoded flag;F) reading a window of samples of the inputted message and storing the samples sequentially in a sample buffer;G) computing a spectral transform of the samples in the buffer;H) obtaining the bit value stored in the map table, wherein if the bit value is true, then encoding the bit of the message indicated by the message bit index into the current sample and incrementing the message bit index, where the message bit index equals the number of message bits, and then reperforming step A), setting the message encoded flag, and exiting the loop;I) computing the inverse spectral of the spectral values stored in the sample buffer;J) outputting the values in the sample buffer, and if the sample encoded flag is set, then clear the flag and jump back to step E);K) incrementing the convolution index and when the convolution index equals the length of the convolution mask in bits resetting the convolution index;and L) jumping back to step F).
  5. 7
    A method of decoding information from a sample stream of data, comprising the steps of:A) obtaining a mask set including: (1) a random or pseudo-random primary mask, (2) a random or pseudo-random convolution mask, and (3) a random or pseudo-random start of message delimiter;B) loading a map table, and the mask set into a memory;C) resetting a primary mask index and convolution mask index and setting a message size integer equal to 0;D) clearing a message decoded flag;E) setting a state of the decode process to SYNCHRONIZED;F) checking the state of the decode process and if the decode state is UNSYNCHRONIZED, setting a number of samples to equal 1 and resetting the convolution index to 0;otherwise, setting the number of samples to equal S (S>1);G) reading the number of samples specified in step F) into a sample buffer;H) resetting the primary mask index, and looping through the sample buffer from the first sample to the last sample, incrementing the primary mask index each time, and for each sample position, computing the value of a mapping function to calculate an offset into the map table;I) obtaining the bit value in the map table, and if the value is true, decoding the bit of the message indicated by the message bit index, storing the bit into the message buffer at the message bit index, and incrementing the message bit index;J) comparing the decoded bits in the message buffer to the start of message delimiter, and if the number of bits in the message buffer is less than or equal to the number of bits in the start of message delimiter and the bits match, then setting the state of the decode process to SYNCHRONIZED;otherwise setting the state of the decode process to UNSYNCHRONIZED;K) if the state of the decode process is SYNCHRONIZED and the number of bits in the message buffer is greater than or equal to the sum of the number of bits of the start of delimiter and the message size, then setting the state of the decode process to SYNC-AND-SIZE and copying certain bits from the message buffer to a message size integer container;L) if the state of the decode process is SYNC-AND-SIZE and the number of bits in the message buffer divided by 8 is greater than or equal to the message size, then setting the message decoded flag, outputting the message and the message decoded flag and ending the method;M) incrementing the convolution index, and if the convolution index equals the number of bits in the convolution mask resetting the convolution index;and N) jumping to step F).
  6. 8
    A method of decoding information from sampled data, comprising the steps of:A) Obtaining a mask set including (1) a random or pseudo-random primary mask, (2) a random or pseudo-random convolution mask, and (3) a random or pseudo-random start of message delimiter;B) loading a map table, and the mask set into a memory;C) resetting a primary mask index and convolution mask index and setting a message size integer equal to 0;D) clearing a message decoded flag;E) setting a state of the decode process to SYNCHRONIZED;F) checking the state of the decode process and if the decode state is UNSYNCHRONIZED, setting a number of samples to equal 1 and resetting the convolution index to 0;otherwise, setting the number of samples to equal S (S>1);G) reading the number of samples specified in step F) into a sample buffer;H) computing a spectral transform of the samples stored in the sample buffer;I) resetting the primary mask index and looping through the sample buffer from the first sample to the last sample, incrementing the primary mask index each time, and for each sample position, computing the value of a mapping function by using the bit of the primary mask corresponding to the primary mask index and the bit of the convolution masks indicated by the convolution phase to calculate an offset into the map table representing the mapping function;J) obtaining a bit value stored in the map, and if the value is true, decoding the bit of the message indicated by the message bit index from the current sample, storing the bit into the message buffer at the message bit index, and incrementing the message bit index;K) comparing the decoded bits in the message buffer to the start of message delimiter, and if the number of bits in the message buffer is less than or equal to the number of bits in the start of message delimiter and the bits match, then setting the state of the decode process to SYNCHRONIZED;otherwise, setting the state of the decode process UNSYNCHRONIZED;L) if the state of the decode process is SYNCHRONIZED, and the number of bits in the message buffer is greater than or equal to the sum of the number of bits of the start of delimiter and the message size, then setting the state of the decode process to SYNC-AND-SIZE and copying certain bits from the message buffer to a message size integer container;M) if the state of the decode process is SYNC-AND-SIZE and the number of bits in the message buffer divided by 8 is greater than or equal to the message size, then setting the message decoded flag, outputting the message and the message decoded flag and ending the method;N) incrementing the convolution index, wherein if the convolution index equals the number of bits in the convolution mask, then resetting the convolution index;and O) jumping to step F).