Steganographic method and device
First Claim
1. 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 for performing spectral transforms;
c) a memory to contain information representing1) primary mask,2) convolutional mask,3) start of message delimiter,4) a mask calculation buffer,5) a message buffer,6) an integer representing a message bit index,7) an 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, and14) a flag indicating the size of a message which has been decoded;
wherein at least one of the primary mask, the convolutional mask and the start of message delimiter are random or pseudo-random;
d) an input to acquire digital samples;
e) an output to output modified digital samples;
f) an input for inputting the values of (c1)-(c5) and (c11) and (c13);
g) an output to output the message stored in (c5) as the result of a decode process and the value of (c10) 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 (g); and
i) a clock which generates a clock signal to drive (b) and control the operation of the apparatus.
6 Assignments
0 Petitions
Accused Products
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.
-
Citations
44 Claims
-
1. 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 for performing spectral transforms; c) a memory to contain information representing 1) primary mask, 2) convolutional mask, 3) start of message delimiter, 4) a mask calculation buffer, 5) a message buffer, 6) an integer representing a message bit index, 7) an 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; wherein at least one of the primary mask, the convolutional mask and the start of message delimiter are random or pseudo-random; d) an input to acquire digital samples; e) an output to output modified digital samples; f) an input for inputting the values of (c1)-(c5) and (c11) and (c13); g) an output to output the message stored in (c5) as the result of a decode process and the value of (c10) 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 (g); and i) a clock which generates a clock signal to drive (b) and control the operation of the apparatus. - View Dependent Claims (8)
-
-
2. A method of encoding information into a sample stream of data, said method comprising the steps of:
-
A) obtaining 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 delimeter, wherein said mask set are concatenated and manipulated as a single bit stream; B) obtaining a message to be encoded; C) generating a message bit stream to be encoded such that the stream includes 1) a start of message delimiter, 2) an integer representing the number of message bytes to follow the message, and 3) 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 sample bit index, determining whether the message bit index equals the number of message bits, and if its does, 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). - View Dependent Claims (3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 32, 44)
-
-
18. A method of encoding information into a sample stream of data, comprising the steps of:
-
A) obtaining 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 are 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, an integer representing the number of message bytes to follow the message, and 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) resetting the primary mask index and looping through the sample buffer from a first spectral value to a last spectral value incrementing the primary mask index each time a spectral value is visited, such that for each spectral value 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 spectral value 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, wherein if the bit value is true, then encoding the bit of the message indicated by the message bit index into the current spectral value and incrementing the message bit index, if the message bit index equals the number of message bits, setting the message encoded flag, and exiting the loop; J) computing the inverse spectral transform of the spectral values stored in the sample buffer; K) outputting the values in the sample buffer, and if the message encoded flag is set, then clear the flag and jump back to step E); L) incrementing the convolution index and when the convolution index equals the length of the convolution mask in bits resetting the convolution index; and M) jumping back to step F). - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 38, 43)
-
-
34. 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 bytes in the message buffer divided by 8 is greater than or equal to the message bit 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). - View Dependent Claims (36, 37, 41)
-
-
35. 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 said transform samples 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 masks 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 transform message, 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 bit 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). - View Dependent Claims (39, 40, 42)
-
Specification