throbber
WO 96/42151
`
`PCT/US96I10257
`
`'26
`
`Joe’s signed it. The Publisher transmits the signed Distribution Agreement to the
`V Authority, Ethical Inc.
`
`Ethical Inc. now combines the signed TIA certificate and the Distribution
`
`Agreement into a single message, and signs the entire message using its private key.
`Ethical has now created 3 Publisher IdentificatiOn message to go into its own stega-
`cipher channel in the content. Ethical Inc. now generates new stega-cipher masks
`and encodes this message into a copy of the content using a stega-cipher encoder.
`
`The Authority saves the masks as a Receipt in a database, along with information
`
`on the details of the transfer, including the title, artist and publisher.
`
`Ethical then transfers this watermarked copy to the Joe's Online Emporium, the
`
`Publisher. Well known encryption methods could be used to protect the transfer
`between the Authority and the Publisher. The Authority may now destroy its copy,
`which the Publisher has received. The Publisher, Joe's Online Emporium now
`
`assumes responsibility for any copies made to its version of the content, which is a
`
`Publisher Master copy.
`
`Finally, the Consumer, John Q. Public wishes to purchase a copy ofthe content
`
`from Joe’s Online Emporium. Joe’s Emporium sends the John Q. Public a short
`
`agreement via an electronic communication link, similar to Publisher’s Distribution
`
`Agreement, only this is a Purchase Agreement, which lists
`
`10
`
`15
`
`20
`
`the cement title ‘
`
`25
`
`consumer identification
`
`the terms of distribution
`
`the consideration pas for the content
`
`a brief statement of agreement with the terms above
`
`30
`
`John Q. Public signs this agreement with his private key and. returns it to the Joe’s
`Online Emporium. The Publisher, Joe’s prepares to encode its own stega-cipher
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0652
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0652
`
`

`

`WO 96/42151
`
`‘
`
`.
`
`PCTIUS96/l 0257
`
`27
`
`watermark onto a copy ofthe content by generating a set ofmasks for the
`
`algorithm. Joe’s Online Emporium then stores these masks (a receipt) in its own
`
`database, indexed by title and consumer. Joe’s Online Emporium signs the
`
`agreement received from John Q. Public with the Emporium’s own private key, and
`forwards it to the Authority, Ethical Inc, along with a copy ofthe masks. It is
`
`important to note that this communication should be done over a secured channel.
`
`The Authority verifies the Publisher and Consumer information and adds its own
`
`signature to the end of the message, approving the transaction, creating a Contract
`
`of Sale. The Authority adds the Publisher’s receipt (mask set) to its database,
`
`10
`
`indexed by the title, the publisher, and the comumer identification. The Authority
`
`signs the Contract of Sale by encrypting it with their private key. So anyone with
`
`the Authority’s public key (any Publisher) could decrypt the Contract of Sale and
`
`verify it, once it was extracted from the content. The Publisher then transmits the
`
`signed Contract of Sale back to the Publisher, who uses a stega-cipher device to
`imprint this Contract as its own watermark over the content. The Publisher then
`
`15
`
`transmits the newly watermarked copy to the Consumer, who is accepting
`
`responsibility for it. The Publisher destroys their version of the consumer’s copy.
`
`Ifthis procedure is followed for all content distribution within such an online system
`
`20
`
`then it should be possible for the Authority to identify the owner of a piece of
`
`content which appears to be unauthorized. The Authority could simply try its
`
`database of stega—cipher keys to decode the watermark in, the content in question.
`
`For instance, if a copy of Seal’s latest single originally distributed with stega-cipher
`
`25
`
`watermarks showed up on an Internet ftp site the Authority should be able to
`extract a'TIA Certificate and Distribution Agreement or a Contract of Sale
`
`identifying the responsible party. If a Publisher sold this particular copy to a
`
`Consumer, that particular publisher should be able to extract a Contract of Sale,
`
`which places responsibility with the Consumer. .This is not a time critical
`
`application, so even if it takes days or weeks, it is still worthwhile.
`
`30
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0653
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0653
`
`

`

`wo 96/41151
`
`PCT/US96/10257
`
`28
`
`In a modification to the protocol discussed above, each Publisher might act as its
`
`own Authority. However, in the context of online services, this could open avenues
`
`offiaud committed by the collusion of certain Publishers and Consumers. Using an
`
`Authority, or one of several available Authorities to keep records ofPublisher—
`
`5
`
`Consumer transactions and verify their details decreases the likelihood of such
`events.
`
`It should also be obvious that a similar watermarking system could be used by an
`
`individual entity to watermark its own content for itsown purposes, wether online
`
`10
`
`or in physical media. For instance, a CD manufacturer could incorporate unique
`
`stega-cipher watermarks into specific batches of its compact discs to identify the
`source ofa pirate ring, or to identify unauthorized digital copies made'fi'om its
`
`discs. This is possible because the stega-cipher encoding works with the existing
`formats of digital samples and does not add any new structures to the sample data
`that cannot be handled on electronic or mechanical systems which predate the
`
`15
`
`stega-cipher.
`
`VI.
`
`Increasing Confidence in the Stega-Cipher
`
`20
`
`The addition ofa special pre-encoding process can make stega-cipher certificates
`
`even more secure and undeniable. Hash values may be incorporated which match
`
`exactly the content containing the watermark to the message in the Watermark
`
`itself. This allows us a verification that the watermark decoded was encoded by
`whomever signed it into this precise location in this specific content.
`
`25
`
`Suppose one wants to use a 256 bit (32 byte) hash value which is' calculated with a
`
`secure one-way hash function over each sample in each sample window that will
`
`contain the message. The hash starts with a seed value, and each sample that would
`
`be processed by the encoder when encoding the message is incorporated into the
`hash as it is processed. The result is a 256 bit number one can be highly confident is
`
`30
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0654
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0654
`
`

`

`W0 96/4215]
`
`PCT/U896” 0257
`
`29
`
`unique, or sufiiciently rare to make intentionally duplicating it with another series of
`
`samples diflicult.
`
`It is important that the hash function be insensitive to any changes in the samples
`
`induced by the stega-cipher itself. For instance, one might ignore the least
`
`significant bit ofeach sample when computing the hash function, ifthe stega-cipher
`
`was implemented using a least significant bit encode mode.
`
`Based on the size ofthe non-hash message, one knows the hash-inclusive message
`
`requires 32 more bytes of space. One can now calculate the size of a signed
`
`encrypted copy ofthis message by signing and encrypting exactly as many random
`
`bytes as are in the message, and measuring the size ofthe output in bytes. One now
`
`knows the size ofthe message to be encoded. One can pre-process the sample
`stream as follows.
`
`Proceed through the stega-cipher encode loop as described in the claims. Instead of
`
`encoding, however, calculate hash values for each window series which will contain 4
`the message, as each sample is processed. At the end ofeach instance of“encoding”
`take the resultant hash value and use it to create a unique copy of the message
`
`which includes the hash value particular to the series of sample windows that will be
`used to encode the message. Sign and encrypt this copy ofthe message, and save it
`for encoding in the same place in the sample stream.
`
`A memory efficient version of this scheme could keep on hand the un-hashed
`
`message, and as it creates each new copy, back up in the sample stream tolthe first
`
`window in the series and actually encode each message, disposing of it afterwards.
`
`10
`
`15
`
`20
`
`25
`
`The important result is evident on decoding. The decoding party can calculate the
`
`30
`
`same hash used to encode the message for themselves, but on the encoded samples.
`Ifthe value calculated by the decoding party does not match the value contained in
`
`the signed message, the decoder isalerted to the fact that this watermark was
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0655
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0655
`
`

`

`W0 96/4215!
`
`-
`
`PCP/US96l10257
`
`30
`
`transplanted from somewhere else. This is possible only with a hash function which
`
`ignores the changes made by the stega-cipher afier the hash in the watermark was
`
`generated.
`
`5
`
`This scheme makes it impossible to transplant watermarks, even with‘the keys to
`
`the stega-cipher.
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0656
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0656
`
`

`

`'WO 96/4215]
`
`PCT[0896/10257
`
`31-
`
`Appendix - Psuedo-code
`
`oonst int mommy = 256;
`
`cans: int wmnow_szzs = 128;
`coast int MARKER_BITS = 1024;
`eons: int caumgarrs =- 2048 . 8;
`
`int windw_ofl‘eet;
`int msg_bit_ctl'set;
`
`int fiequency_ofl'set;
`Boolean nseCell;
`
`IO 8 bitsperbye, l byteperchar‘l
`
`unsignw chat frequency__mask[WD~IDOW_SlZF/8];
`
`unsigned chat window_mask[WlNDOW_RESl-3Tl8];
`
`unsigned char msg.stalt_matker[MARl(ER_BlTS/8];
`unsigned char mg_end__markethARKER_BrIS/8];
`
`Int16 unplitude_sample_bufl‘el-[WMDS)W_SIZE];
`float pcwer_frequeney_bufl'er[WNDOW_SlZI-I];
`
`unsigned char menoge_buffer[CPflJNK_BHS/8];
`
`void doFFfmttl 6 ‘amp_sample_bufl'er, float ’power_fmq_bufl’er,int size),
`
`void dolnverseH-‘Tantlé ‘amp_sample_bulfer, float ’power_freq'_bufl‘er,int size);
`void initializeo;
`
`Bit getBMunsigned char ‘bufi‘erjnt bitOfl'set),
`
`Boolean map(Bit window__bit, Bit band_bit, int window. int frequency);
`Boolean getSampleeGnth ’amplitude_sample_bufl‘et,int samples);
`Void eneodeO
`
`void initializoo
`{
`
`/‘ message to beencoded is generated ‘I
`
`l’ message is prefixed with 1024 bit msg_start_marker ‘/
`/‘ message is suffixed with 1024 bit msg_end _marker ‘/
`
`/‘ remaining space at end of message buffer padded with random bits ‘/
`windaw_ofi‘set = 0;
`
`msLbiLoft'set = 0;
`frequency_olfset = 0;
`
`frequency_mask loaded
`window_mask loaded
`zeroAmpSampleBulTetO;
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0657
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0657
`
`

`

`WO 96/42151
`
`‘
`
`PCT/[189010257
`
`32
`
`Boolean getSamplesantl6 'bufl‘crjnt samples)
`{
`
`I' get samples number ofsamples and shin them contiguously into the sample
`bufi'er from right to left‘l
`
`itIsamples < samples available)
`. return like;
`
`else
`
`renim "W.
`
`}
`
`void doFFl'antIG ‘sample_bufi‘er, float ‘spectrurn_bufl‘er, int size)
`{
`
`calculate H-‘l‘ on samplc_but'fer, for size samples
`store result in spectrum buffer
`V
`
`void dolnverseFF’l‘antlé ‘sample_bufl'er,float ‘spectrum_bufl‘er,int size)
`{
`_

`
`calculate inverse FFl‘ on spwuum_bufi‘er
`store result in sampe_bulfer
`
`Bit getBiKunsigncd char ‘bufi‘erjn bitOfl‘set)
`{
`‘
`'
`
`returns value ofspecified bit in specified bufi‘er
`
`either 0 or 1, could use Boolean (true/false) values for bit set of bit off
`
`Boolean map(Bit window_bit,Bit band_bit,int window, int frequency_
`{
`
`I‘ this is the function that makes the information diflicult to find ‘/
`
`_/" the inputs window_blt and band__bit depend only on the mask values
`
`uwd for encoding the information, they are 1) random, 2) mtet '/
`l“ window and frequency values are used add time and frequency band dependent
`complexity to this function ‘I
`
`I‘ this function is equivalent to a Boolean truth table with window ‘ frequency ’ 4
`V possible input combinations and 2 possible output "I
`/‘ for any input combination, the output is either true or false ‘I
`
`/‘ window ranges from 0 to WINDOW_RESET -l ‘l
`
`/' frequency ranges from 0 to WINDOW__SIZE - l ‘l
`return calculated truth value
`
`'
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0658
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0658
`
`

`

`W0 96/4215]
`
`33
`
`PCTIUS96/16257
`
`void eneodeBiKfloat ‘spectmm_but‘i‘er,int fieLoflsetBit theBit)
`l
`
`/’ modifies the value ofthe cell in speetrum_bufl‘er, indexed by freq_offset
`in a manner that distinguishes each ofthe 2 possible values of theBit,
`] or0
`
`.
`
`‘/
`
`P Isuggected method ofsetting the least Significant bit ofthe cell = theBit ‘/
`
`/‘ alternative method of rounding the value ofthe cell upward or doanud to
`certain fractional values proposed
`
`Le. <= 5 fractional remainder signifies 0, > ‘5 fraction remainder
`signifies 1
`
`‘l
`
`, }
`
`void eneodeO
`{
`
`initializeo;
`
`‘10 {
`
`illgetSamples(amplimde_sample_bufl‘er) = false)
`Mum
`
`doFFKamplitude_sarnple_buffer,power_frequency_bulTer,WINDOW_SIZE);
`
`for (frequency_offset = 0, frequency_ofl‘set < WlNDOW_SIZE;
`frequency_ofl‘set-H){
`
`useCell = map(getBit(window_mask,window_ofl'sel),
`
`getBit(l‘requeney_msk,frequency_olfset),
`window_oifset, frequency_ofi'set);
`
`_
`iKuseCell == tme){
`i
`cneodeBit(power_frequency_bufl‘cr,l‘requency_oflset,
`getBit(message_bulTergnsg_bit_othet));
`message__bit_ofl'set ++;
`
`iltmsg_bit_offset '= MESSAGEBITSH
`initializeo;
`
`break; 1‘ exit frequency loop */
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0659
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0659
`
`

`

`wo 96/4215]
`
`'
`
`'
`
`34
`
`PCT/US96I10257
`
`doInversem(amplitude_sample_bufi‘er,power_frequency_bufl'er,
`WINDOW_SIZE);
`
`outputSampIedamplimdejamplejufl‘er);
`
`window_ofl"set++;
`
`itlwindow_ofi‘set W]NDOW_RESET){
`window_ofi‘set = o,
`
`}while(true)',
`
`The encodeo procedure processes an input sample stream using the specified frequency and window'masks as
`well as a pre-fannatted memge to encode.
`
`encodeo processes the sample stream'to windows ofWINDOW_SLZE samples, contiguously distributedtn the
`sample stream, so it advances WINDOWSIZE samples at a time.
`
`For each sample window, encodeo first compute the m- ofthe window, yielding its Power Spectrum Estimation.
`For each oftheoe window PSEs, eneodeO then uses the map() function to determine whereIn each PSE to encode
`_ the bits ofthe message which'it reads from the message butTer, on chit at a time Each time mapo returns true,
`encodeo consumes another sample from the message.
`
`Aflcr each window is encoded, encodeo computes the inverse FFI' on the PSE to generate a modified sample
`window, which is then output as the modified signal. It is important the sample windows NOT overlap in the
`sample stream, since this would potentially damage the pmeding encoding windows in the stream.
`
`Once the message is entirely encoded, including its special end of message marker bit stream, encodeo resets it
`internal variables to begin encoding the message once more in the next window. encodeo promds in this manner
`until the input ample stream is exhausted.
`
`enum {
`
`Synchronizing,
`locked
`
`;; I‘ decode states '/
`
`.
`
`,
`
`A
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0660
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0660
`
`

`

`wo 96/4215]
`
`35
`
`PCT/US96l10257
`
`unsigned char message_end_bufi'er[MARKBR_BlTS];
`
`Bit dwodeBiKfloat 'spectrum_butfer,int freq_offset)
`{
`
`/‘ reads the value ofthe cell in speeuum_buffer, indexed by fieq_offset
`in a manner thet distinguishes each ofthe 2 possible values ofan
`encoded bit, 1 or 0
`
`3/ ‘
`
`I‘ suggested method oftesting the Least Significant bit ofthe cell ‘/
`
`/’ altunative method ofehecking the value ofthe cell versus certain fractional
`remainders propomd.
`
`i.e. <- .5 fractional remainder signifies 0, > .5 fraction remainder
`Ignitiesl
`'
`
`‘I
`
`return either I or 0 as appropriate
`
`Boolean decodeo
`{
`
`'
`
`l' Initialization ‘/
`
`state = Synchronizing
`windaw_ofi‘set, = 0,
`
`set frequency mask
`set window mask
`
`clear sample buffer
`
`int neKtSamplee = 1',
`
`int msg_start_omet =' 0',
`clear message_end_bufl‘er
`Bit aBig
`
`Boolean bitsEqual;
`
`do(
`
`iitsmte '=* Synchronizingfl
`nextSamples = l;
`
`window_ofl‘set '= 0;
`
`else
`
`nextSamples = W1NDOW_SIZE;
`
`ifigetSampleqamplitudeJamplgbutfer) == false)
`return false;
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0661
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0661
`
`

`

`wo 96/4215;
`
`PCP/US96l10257
`
`36
`
`doFFT(amplimde__sample__bufl'er,pow¢r_frequency_bufl'et,
`‘ WINDOW_SIZE)‘, /‘ 2 1’l
`
`for (fiequéncyfimet = 0; frequmcy_ofi‘sct <W1NDOW_SIZE;
`Muencyyffsetfix
`
`useCell = map(getBit(Mndow_mask,window_othct),
`getBinrequcnchaskfrcquency_ofl‘set),
`window_offsct, fiequmcy_ofl‘s:t);
`
`museCell == max
`
`aBit =' dwochiKpowchrcqucncLbufi‘er, '
`flequency_ofi‘set);
`
`setBit(mcssagc_bufl‘er,mcssage_bit_ofisct,aBit);
`message_bit_offset H;
`
`} e
`
`lse
`
`continue;
`
`if(stalc == Synchronizing){
`bitsEqua! ==
`
`commeitdmessage_starl_marker,mmage_bufl‘cr,
`message_bit_ofl'set);
`imbilsEquam
`
`mmggbigoffset = 0;
`misaligned = true,
`
`break, /‘ exit frequency loop '/
`
`} e
`
`lse if (Inmage_bit_ofl'sct =. MARKER_BITS)
`state = Locked;
`
`/' lockcd onto encoded stream ‘/
`
`shill aBit into right side ofmcssage_cnd_bufl‘er
`bitsEqual = co:nmeits(messagc_end_butTcr,
`
`msg_end_market,MARKER_BITS);
`'
`iKbitsEqual)
`
`return true;
`
`)whilc (true);
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0662
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0662
`
`

`

`‘ WO 96/42151
`
`‘PCT/US96/10257
`
`37
`
`The decodeo procedure scans an input sample stream using specified window and frequency masks, tmtil it either
`dwodes a valid message block, storing it in a message buffer, or exhausts the sample stream. 1
`
`The decodeo procedure starts in state Synchronizing, in which it does not know where in the sample stream the
`encoding windows are aligned. The procedure advances the sample window through the sample stream one
`
`sample at a time, performing the m calculation on each window, and attempting to decode valid message bits
`from the window. As it enacts each bit using the mapO function, the decodeO procdure compares Mesa bits
`ayinst the start ofmeasage "lurker. As soon as a mismatch is detected, the decodeO procedure knows it is notyet
`properly aligned to an encoding window, and immediately eedses decoding bits from the current window and
`moves to the next window. offset by l ample. The deeodeO procedure continues in this manner until it matches
`
`successfully the complete bitstream of a start ofmessage marker. At this point the decodeO pmdure assumes it is
`aligned to an encoded message and can then decode bits to the memge hufl‘er quickly, advancing the sample
`window fully at each iterations. It is now in Locked mode. lior each bit it stores in the message buffer when in
`Locked mode, the decodeO procedure also shifts the same bit value into the least significant bit ofthe
`
`messagc_end_bufl'er. Atter each bit is decoded in Locked mode, the decodeo procedure checks compares the
`
`muga_end_bufl‘er with the msg_cnd_marker in a bit by bit manner. When a complete match is found, decodeo
`
`is finished and returns true. Ifthc sample stream is exhausted before this occurs, decodeO returns false. Ifdecodeo
`returns true, a valid message is stored in the message bufl‘er, including the start and end ofmeesage markers.
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0663
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0663
`
`

`

`W0 96/421 51
`
`Claims
`
`38
`
`. PCT/US96110257
`
`l.
`
`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.
`
`10
`
`An apparatus for encoding or decoding a message, represented as
`‘
`2.
`series ofdata bits into or out ofa series of digitized samples, comprising:
`a)
`
`a sample bufi‘er for holding and accessing and transfomiing
`
`digitized samples;
`
`15
`
`transforms;
`
`n b)
`
`C)
`
`a digital signal processor capable of performing fast fourier
`
`a memory to contain information representing
`
`20
`
`25
`
`30
`
`1)
`
`2)
`
`3)
`
`4)
`
`5)
`
`6)
`
`7)
`
`8)
`
`9)
`
`10)
`
`11)
`
`12)
`
`primary mask,
`
`convolutional mask,
`
`start to message delimiter,
`
`a mask calculation buffer,
`
`a message buffer,
`
`an integer representing a message bit index,
`
`a position integer M representing message size,
`
`an integer representing an index into said primary
`mask,
`
`an integer representing an index into said convolution
`
`. maslg
`
`an integer representing the state of a decode process,
`
`a table representing a map firnction;
`
`a flag indicating a complete message has been
`
`decoded or encoded,
`
`Diéi—T-BIue Spike-842
`Exhibit 1004, Page 0664
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0664
`
`

`

`wo 96/42151
`
`PCT/US96/10257
`
`39
`
`13)
`
`a positive integer S representing a number of samples
`
`to read into said sample bufi‘er, and
`
`.
`
`14)
`
`a flag indicating the size of a message which has been
`
`decoded;
`
`an input to acquire digital samples;
`
`an output to output modified digital samples;
`
`an input for inputting the values of (cl) - (c5) and (c1 1) and
`'
`
`d)
`
`e)
`
`i)
`
`‘
`(cm;
`
`an output to output the message stored in (CS) as the result
`g)
`ofa 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),
`
`(t) to (c), and
`
`(c) to (e); and
`
`5
`
`10
`
`15 '
`
`20
`
`control the operation of the apparatus.
`
`i)
`
`a clock which generates a clock signal to drive (b) and
`
`3.
`
`A method ofencoding 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
`
`25
`
`'
`
`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;
`
`30
`
`B)
`
`obtaining a message to be encoded;
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0665
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0665
`
`

`

`wo 95142151
`
`40
`
`'
`
`PCT/0896110257
`
`C)
`stream includes
`
`generating a message bit steam to be encoded such that the
`
`1) a start of message delimiter, and
`
`2) an integer representing the number ofmessage
`
`5
`
`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
`
`10 .
`
`message bit index, and setting the message size integer equal to the total number of '
`bits in the message bit stream;
`
`6
`
`F)
`
`G)
`
`clearing a message encoded flag;
`
`reading a window of samples from a sample input device
`
`and storing them sequentially in a sample bufi‘er;
`
`15
`
`'
`
`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 ofthe
`
`primary mask representing a current sample and a bit ofthe convolution mask
`
`20
`
`indicated by the convolution index to calculate an ofi'set in the map table;
`II)
`V
`obtaining the bit value stored in the map table and encoding
`
`the bit ofthe 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
`
`25
`
`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 ifthe
`
`30
`
`convolution index equals the length of the convolution mask in bits then set the
`
`convolution index to O, and
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0666
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0666
`
`

`

`WO 96/42151
`
`Per/U896/10257
`
`41
`
`L)
`
`_ jumping back to step G).
`
`4.
`
`A method of encoding information into a sample stream of data, comprising
`
`the steps of:
`
`5
`
`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 ofmessage
`
`delimiter, wherein said mask set can be concatenated and manipulated as a single bit
`
`10
`
`stream;
`
`B)
`
`C)
`
`inputting a message to be encoded;
`
`generating a message bit stream to be encoded including
`
`a start of message delimiter, and
`
`an integer representing of number of message bytes to
`
`15
`
`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
`
`20
`
`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 ifthe
`
`25
`
`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 reperfonning step
`
`t
`
`A), setting the message encoded flag, and exiting the loop;
`
`I)
`
`computing the inverse spectral of the spectral values stored
`
`30
`
`in the sample buffer;
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0667
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0667
`
`

`

`W0 96/4215]
`
`'
`
`PCT/U596/10257
`
`42
`
`J)
`
`outputting the values in the sample buffer, and ifthe 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 ofthe convolution mask in bits resetting the
`convolution index; and
`
`L)
`
`jumping back to step F).
`
`5.
`
`The method of claim 3 wherein the encoding of the message bit into the
`
`sample in step I includes encoding a single bit ofthe sample to match the message
`bit.
`
`6.
`
`The method of claim 4 wherein the encoding of the message bit into the
`
`sample in step H includes altering the sample value such that said sample value falls
`
`within a prespecified range ofvalves relative to its original value.
`
`A method ofdecoding information from a sample stream ofdata,
`7.
`comprising the steps of:
`
`A)
`
`obtaining a mask set including:
`
`(1) a random or pseudoorandom primary mask,
`(2) a random or pseudo-random convolution mask, and
`(3) a random or pseudo~random start of message delimiter;
`
`B)
`
`C)
`
`loading a map table, and the mask set into a memory;
`
`resetting a primary mask index and convolution mask index
`
`and setting a message size integer equal to 0;
`
`D)
`
`E)
`F) .
`
`clearing a message decoded flag;
`
`. setting a state ofthe decode process to SYNCHRONIZED;
`checking the state ofthe decode process and ifthe decode
`
`5
`
`10
`
`' 15
`
`20
`
`25
`
`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
`($21);
`
`30
`
`'
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0668
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0668
`
`

`

`WO 96/42151
`
`PCT/0896" 0257
`
`43
`
`G)
`
`reading the number of samples specified in step F) into a
`
`sample bufl'er,
`resetting the primary mask index, and leaping through the
`. H)
`sample bufi‘er from the first sample to the laSt sample,‘mcrementing the primary
`mask index each time, and for each sample position, computing the value of a
`mapping function to calculate an offsetmm the map table;
`I) obtaining the bit value in the map table, and ifthe value is true,
`decoding the bit ofthe message indicated by the message bit index, storing the bit
`into the message buffer at the message bit index, andincrementing the message bit
`
`index;
`
`comparing the decoded bits in the message bufl'eritothe start
`I)
`ofmessage delimiter, and ifthe number ofbits in the message bufi‘er is less than or
`equal to the number ofbits in the start ofmessage delimiter and the bits match, then
`setting the state ofthe decode process to SYNCHRONIZED; otherwise setting the
`state ofthe decode process to UNSYNCHRONIZED;
`.
`I K)
`ifthe state ofthe decode process is SYNCHRONIZED and
`the number ofbits in the message buffer is greater than or equal to the sum ofthe
`number ofbits ofthe start ofdelimiter and the message size, then setting the state
`ofthe decode process to SYNC-AND-SIZE and copying certain bits from the
`message buffer to a message size integer container;
`
`ifthe state ofthe decode process is SYNC-AND-SIZE and
`L)
`the number ofbits 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 ifthe convolution index
`equals the number ofbits in the convolution mask resetting the convolution index;
`and
`
`N)
`
`jumping to step F).
`
`8.
`of:
`
`A method ofdecoding information from sampled data, comprising the steps
`
`10
`
`15
`
`20
`
`25
`
`30
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0669
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0669
`
`

`

`WO 96/42151
`
`_
`44
`
`_
`
`PCT/U896”0257
`
`A)
`
`Obtaining a mask set including
`
`(1)
`
`(2)
`
`(3)
`
`a random or pseudo-random primary mask,
`
`a random or pseudo-random convolution mask, and
`
`a random or pseudo-random start of message
`
`delimiter,
`
`B)
`
`C)
`
`loading a map table, and the mask set into a memory;
`
`resetting a primary mask index and convolution mask index
`
`and setting a message size integer equal to 0;
`
`D)
`
`E)
`
`F)
`
`clearing a message decoded flag;
`
`setting a state of the decode process to SYNCHRONIZED;
`
`checking' the state ofthe decode process and ifthe decode
`
`state is UNSYNCHRONIZED, setting a number of samples to equal 1 and resetting
`
`the convolution index to 0; otherwise, setting the number ofsamples to equal S V
`(S>1);
`
`G)
`
`reading the number of samples specified in step F) into a
`
`sample buffer;
`
`sample bufi'er;
`
`H)
`
`computing a spectral transform ofthe samples stored in the ‘
`I
`>
`
`resetting the primary mask index and looping through the
`V
`I)
`sample buffer from the iirst sample to the last sample, incrementing the primary
`mask index each time, and for each sample position, computing the value of a
`
`mapping fimction by using the bit ofthe 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 fimction;
`
`J)
`
`obtaining a bit value stored in the map, and ifthe value is
`
`true, decoding the bit ofthe 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;
`'
`I
`
`comparing the decoded bits in the message bufi‘er to the start
`K)
`ofmessage delimiter, and ifthe number of bits in the message buffer is less than or
`
`equal to the number ofbits in the start of message delimiter and the bits match, then
`
`10
`
`15
`
`20
`
`25
`
`30
`
`DISH-Blue Spike-842
`
`Exhibit 1004, Page 0670
`
`DISH-Blue Spike-842
`Exhibit 1004, Page 0670
`
`

`

`wo 96/4215]
`
`.
`
`‘
`
`45
`
`'
`
`PCT/US96/10257
`
`5
`
`10
`
`setting the state ofthe decode process to SYNCHRONIZED; otherwise, setting the
`state ofthe decode process UNSYNCHRONIZED;
`
`L)
`
`ifthe state ofthe decodeprocess is SYNCHRONIZED, and
`
`the number ofbits in the message buffer is greater than or equal to the sum ofthe
`
`number ofbits ofthe start ofdelimiter and the message size, then setting the state
`ofthe decode process to SYNC-AND-SIZE and copying certain bits Earn the
`message buffer to a message size integer container,
`7
`
`M)
`
`ifthe state ofthe decode process is SYNC-AND-SIZE and
`
`the number-ofbits in the message buffer divided by 8 is greatet: 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 ifthe
`
`convolution index equals the number ofbits in the convolution mask, then resetting
`the convolution index; and
`
`~ 15
`
`O)
`
`jumping to step F).
`
`9.
`
`The method of claim 7 wherein the decoding ofthe message bit from the
`
`sample in step I includes reading a single bit of the sample.
`
`20
`
`10.
`
`The method of claim 7 wherein the decoding of the message bit from the
`
`sample in step I includes mapping a range of sample values onto a particular
`
`message bit value.
`
`The method of claim 4 wherein the map table is defined such that any index
`11.
`ofthe map table directs the process to encode information.
`
`25
`
`The method ofclaim 1 wherein the samples are obtained from a sample
`12.
`stream representing d

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket