US20100067704A1 - Key management system - Google Patents
Key management system Download PDFInfo
- Publication number
- US20100067704A1 US20100067704A1 US12/623,114 US62311409A US2010067704A1 US 20100067704 A1 US20100067704 A1 US 20100067704A1 US 62311409 A US62311409 A US 62311409A US 2010067704 A1 US2010067704 A1 US 2010067704A1
- Authority
- US
- United States
- Prior art keywords
- keys
- key
- modification
- fixed
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000004048 modification Effects 0.000 claims abstract description 181
- 238000012986 modification Methods 0.000 claims abstract description 181
- 230000015654 memory Effects 0.000 claims description 165
- 238000000034 method Methods 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 6
- 239000003607 modifier Substances 0.000 description 75
- 238000001824 photoionisation detection Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 206010036618 Premenstrual syndrome Diseases 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011057 process analytical technology Methods 0.000 description 2
- 230000000246 remedial effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/167—Systems rendering the television signal unintelligible and subsequently intelligible
- H04N7/1675—Providing digital key or authorisation information for generation or regeneration of the scrambling sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2362—Generation or processing of Service Information [SI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2389—Multiplex stream processing, e.g. multiplex stream encrypting
- H04N21/23895—Multiplex stream processing, e.g. multiplex stream encrypting involving multiplex stream encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/435—Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/438—Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
- H04N21/4385—Multiplex stream processing, e.g. multiplex stream decrypting
- H04N21/43853—Multiplex stream processing, e.g. multiplex stream decrypting involving multiplex stream decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47211—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting pay-per-view content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
- H04L2209/605—Copy protection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/062—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys
Definitions
- the present invention relates to the encryption and decryption of data transmitted between a transmitter and a receiver and, more particularly, to the encryption and decryption of both data and the encryption keys used to encrypt the data.
- Copy protection systems have a number of security goals. For example, copy protection systems are intended to prevent the theft of high quality compressed digital content, to prevent theft of high quality uncompressed digital content, and to limit losses caused by break-ins.
- the copy protection system of the present invention is intended to thwart unauthorized copying of content.
- FIG. 1 illustrates an encryption encoder of a copy protection transmitter according to one embodiment of the present invention
- FIG. 2 illustrates the data encryption block of FIG. 1 in greater detail
- FIG. 3 illustrates the dynamic keys block of FIG. 1 in greater detail
- FIG. 4 illustrates the key expansion block of FIG. 3 in greater detail
- FIG. 5 illustrates portions of FIG. 1 in greater detail
- FIG. 6 illustrates the key modifier of FIG. 5 in greater detail
- FIG. 7 illustrates an example modifier message MM used in the copy protection system of FIG. 1 ;
- FIG. 8 illustrates a control portion of the modifier message MM illustrated in FIG. 7 ;
- FIG. 9 illustrates an example definition of the system control bytes of the modifier message MM illustrated in FIG. 8 ;
- FIG. 10 illustrates an example message segment MS used in the copy protection system of FIG. 1 ;
- FIG. 11 illustrates the program key, modification key, and modifier message MM encryption block of FIG. 1 in greater detail
- FIG. 12 illustrates an example key message that is part of the message segment MS illustrated in FIG. 10 ;
- FIG. 13 illustrates an example pair of message segments MS used to transmit program keys and modification keys
- FIG. 14 illustrates the timing of the transmitter and receiver with respect to message generation and use
- FIG. 15 illustrates an example rotation for applying the program keys PK during encryption of program data
- FIG. 16 illustrates an example of the portions of a program data segment of a field to which the rotation is applied
- FIG. 17 illustrates a decryption decoder of a copy protection receiver according to one embodiment of the present invention
- FIG. 18 illustrates the data decryption block of FIG. 17 in greater detail
- FIG. 19 illustrates portions of the decryption decoder of FIG. 17 in greater detail.
- FIG. 20 illustrates the key and modifier message decryption block of FIG. 17 in greater detail.
- an example encryption encoder 8 of a copy protection transmitter includes a PID filter 10 that receives an MPEG transport stream and that determines which packets in the MPEG transport stream contain data to be encrypted. As discussed below, the PID filter 10 also identifies null packets that are to be replaced with message segments MS that give the receiver sufficient information for decrypting the encrypted program data in the received signal, and the PID filter 10 further identifies packets containing information that is not to be encrypted.
- a dynamic program key and modification key generator 12 dynamically generates program keys PK that are applied by a first encryption engine 14 in order to encrypt the program data in the MPEG transport stream that has been selected for encryption.
- the first encryption engine 14 may be a single wrap encryption engine, and may be arranged to apply the single wrap encryption process specified in the Advanced Encryption Standard (AES).
- AES Advanced Encryption Standard
- the encrypted program data packets are supplied to one input of an output multiplexer 16 .
- the dynamically generated program keys PK are applied through a multiplexer 24 whereupon they are themselves encrypted by a second encryption engine 18 .
- the second encryption engine 18 may be a triple wrap encryption engine, and may be arranged to apply the triple wrap encryption process specified in the Advanced Encryption Standard.
- the keys used by the second encryption engine 18 to encrypt the dynamically generated program keys PK are message segment keys.
- Fixed keys are stored in a memory 20 , these fixed keys are used by a message segment key generator and control 22 to generate message segment keys, and the message segment keys are supplied to the second encryption engine 18 .
- the fixed keys stored in the memory 20 are, for example, 128 bits long, and there are, for example, sixty-four fixed keys stored in the memory 20 .
- the hash values discussed herein are, for example, sixty-four bits each and are derived as selected portions of the fixed keys. Alternatively, hash values may be separately stored in the memory 20 , and the fixed keys and hash values may be of any desired length and number.
- the message segment key generator and control 22 selects the fixed keys to be used by the second encryption engine 18 from the memory 20 , uses them to generate message segment keys, and supplies the message segment keys to the second encryption engine 18 .
- the second encryption engine 18 encrypts the dynamically generated program keys PK based on the message segment keys from the message segment key generator and control 22 .
- a modifier message MM and modification keys MK are also applied through the multiplexer 24 and are encrypted by the second encryption engine 18 .
- the encrypted dynamically generated program keys PK and the encrypted modifier message MM are assembled into program key message segments PKMS that are forwarded to the receiver.
- the encrypted modification keys MK, an encrypted checksum, and the encrypted modifier message MM are similarly assembled into modification key message segments MKMS that are also forwarded to the receiver.
- the modification keys which are dynamically generated by the program and modification key generator 12 , are used with the fixed keys to generate the message segment keys that are used to encrypt the program keys, and the checksum is based on the fixed keys stored in the memory 20 .
- the checksum for example, may comprise 128 bits, and may be generated from all of the fixed keys stored in the memory 20 . Accordingly, the receiver can compare the checksum from the transmitter with a checksum generated from its own fixed keys to check that its fixed keys match the fixed keys of the transmitter. The checksum could also be used to determine errors in transmission.
- the program key message segment PKMS and the modification key message segment MKMS give the receiver the information it requires to decrypt the encrypted program data in the received signal.
- FIG. 2 shows the first encryption engine 14 in additional detail. As shown in FIGS. 1 and 2 , the first encryption engine 14 is coupled between the PID filter 10 and the output multiplexer 16 .
- the first encryption engine 14 has three sections 14 A, 14 B, and 14 C.
- the section 14 A includes a de-multiplexer 30 , memories 32 and 34 , and a multiplexer 36 .
- the section 14 B includes a RAM delay 38 , an encryption block 40 , and a multiplexer 42 .
- the section 14 C includes a de-multiplexer 44 , memories 46 and 48 , and a multiplexer 50 .
- the PID filter 10 passes transport packets in the MPEG transport stream to the de-multiplexer 30 .
- the transport packets are de-multiplexed and are stored in the memories 32 and 34 that operate in a ping-pong fashion.
- the transport packets in the memories 32 and 34 are supplied to the multiplexer 36 .
- the multiplexer 36 passes all packets from the memories 32 and 34 to both the RAM delay 38 and the encryption block 40 . These packets include program packets, null packets, and such non-program packets as PIDs, PSIPs, PMTs, and PATs.
- the encryption block 40 uses the dynamically generated program keys PK to encrypt all packets that it receives and supplies the encrypted packets to the multiplexer 42 .
- the multiplexer 42 selects only the encrypted packets from the encryption block 40 which correspond to the selected program or programs that are to be encrypted. It will be understood that the MPEG transport stream may contain one or more programs and that any one or more of these programs may be flagged for encryption.
- All other packets are selected by the multiplexer 42 from the RAM delay 38 .
- the output of the multiplexer 42 is the input MPEG transport stream except that the packets corresponding to the selected program are encrypted.
- the multiplexer 42 passes the encrypted and non-encrypted packets to the de-multiplexer 44 .
- the encrypted and non-encrypted packets from the de-multiplexer 44 are stored in the memories 46 and 48 that operate in a ping-pong fashion.
- the encrypted and non-encrypted packets in the memories 46 and 48 are supplied through the multiplexer 50 to the output multiplexer 16 .
- the sections 14 A and 14 C of the first encryption engine 14 are controlled so as to maintain proper timing, data flow rates, and synchronization.
- FIG. 3 shows a dynamic program key generator portion 12 A of the dynamic program key and modification key generator 12 in more detail.
- the dynamic program key generator portion 12 A includes a seed generator 60 that supplies a seed to a random number generator 62 .
- the seed generator 60 can select, on any desired basis, the seed from any portion of the MPEG transport stream 61 , such as video and/or audio, in one or more program data packets.
- a de-multiplexer 64 selects four 128 bit random numbers from the random number generator 62 and stores these four 128 bit random numbers as four dynamically generated program keys in a next portion of a memory 66 while the encryption block 40 uses the four dynamically generated program keys previously stored in an active portion of the memory 66 to encrypt program data.
- the de-multiplexer 64 selects another four 128 bit random numbers from the random number generator 62 and stores these additional four 128 bit random numbers as four dynamically generated program keys PK in the next portion of the memory 66 .
- a multiplexer 68 supplies the four dynamic program keys from the active portion of the memory 66 to a key expander 70 such as that shown in FIG. 4 .
- the key expander 70 expands each of the dynamic program keys PK from 128 bit keys to, for example, 1408 bit expanded keys.
- the expanded dynamic program keys PK are supplied to the encryption block 40 of FIG. 2 .
- the key expander 70 as shown in FIG. 4 includes an inverse key block. This inverse key block is enabled during program encryption and is disabled during encryption of the program key message segment PKMS and the modification key message segment MKMS.
- the time between message segments can be made dependent upon the availability of null packets in the incoming MPEG transport stream because message segments are transmitted in place of selected null packets.
- the PID filter 10 detects the null packet and signals output multiplexer 16 to pass a message segment instead of packets from the multiplexer 50 .
- a fixed key selector 80 uses random numbers generated by the random number generator 62 in order to address the memory 20 so as to select fixed keys from the memory 20 .
- each fixed key stored in the memory 20 may be 128 bits, and four 32 bit address words may be used to read each fixed key from the memory 20 .
- These fixed keys are used to encrypt the program keys and modification keys (described in more detail hereinafter) that are sent to the receiver and that are required by the receiver to decrypt the received encrypted program data.
- three fixed keys are selected from the memory 20 by the fixed key selector 80 and are stored as fixed keys K A in a fixed key memory 82 .
- Three more fixed keys are selected from the memory 20 by the fixed key selector 80 and are stored as fixed keys K B in a fixed key memory 84 .
- each of these three fixed keys K A and three fixed keys K B may be 128 bits in length.
- the three fixed keys K A stored in the fixed key memory 82 and the three fixed keys K B stored in the fixed key memory 84 are selected on the basis of random addresses from the random number generator 62 .
- three Hash values A, B, and C are selected by the fixed key selector 80 and are stored in a message segment key and hash value memory 86 .
- the three Hash values A, B, and C are also selected on the basis of random addresses from the random number generator 62 .
- each of the three Hash values A, B, and C may be 64 bits or 1 ⁇ 2 of a fixed key.
- three random numbers from the random number generator 62 are stored in a modification key memory 88 as modification keys K M .
- Each of the modification keys for example, may be 128 bits in length.
- a message segment key generator 90 which is shown in more detail in FIG. 6 , includes latches 92 1 , 92 2 , and 92 3 and a 96 ⁇ 32 look up table 94 .
- the latch 92 1 latches the first 32 bits of a first of the three fixed keys K A stored in the fixed key memory 82
- the latch 92 2 latches the first 32 bits of a first of the three fixed keys K B stored in the fixed key memory 84
- the latch 92 3 latches the first 32 bits of a first of the three modification keys K M stored in the modification key memory 88 .
- These 96 latched bits form a 96 bit address that reads out the first 32 bits of a first message segment key for storage in the message segment key and hash value memory 86 .
- FIG. 6 also shows, in simplified form, four of the look up tables that are stored in the look up table 94 .
- One of the tables is selected to provide the three message segment keys that are stored in the message segment key and hash value memory 86 .
- the simplified form of table 0 in FIG. 6 shows the relationship between the address and the bits that are stored in table 0 . Thus, if the first K M bit of an address is 0 and the first K A bit of an address is 0 and the first K B bit of an address is 0, table 0 will read out a 0 bit for the first bit K 0 of a message segment key.
- table 0 will instead read out a 1 bit for the first bit K o of a message segment key. If the next K M bit of an address is 0 and the next K A bit of an address is 0 and the next K B bit of an address is 0, table 0 will read out a 0 bit for the next bit K o of the message segment key. However, if the next K M bit of an address is 0 and the next K A bit of an address is 1 and the next K B bit of an address is 0, table 0 will instead read out a 1 bit for the next bit K o of a message segment key.
- the bits that are stored in the tables may have any desired relationship to their addresses.
- the relationship may be a random, OR, XOR, AND, NAND, NOT, MUX, ones complement, twos complement, or gray scale relationship, and each table may bear a different relationship between the address and the stored bits.
- the latch 92 1 latches the second 32 bits of the first of the three fixed keys K A stored in the fixed key memory 82
- the latch 92 2 latches the second 32 bits of the first of the three fixed keys K B stored in the fixed key memory 84
- the latch 92 3 latches the second 32 bits of the first of the three modification keys K M stored in the modification key memory 88 .
- These 96 latched bits form a second 96 bit address that reads out the second 32 bits of the first message segment key for storage in the message segment key and hash value memory 86 .
- the third and fourth 32 bits of the first of the three fixed keys K A stored in the fixed key memory 82 , of the first of the three fixed keys K B stored in the fixed key memory 84 , and of the first of the three modification keys K M stored in the modification key memory 88 are used to read out the third and fourth 32 bits of the first message segment key from the look up table 94 .
- These third and fourth 32 bits of the first message segment key are also stored in the message segment key and hash value memory 86 to form all 128 bits of the first message segment key.
- the second and third message segment keys are similarly read out of the look up table 94 and stored in the message segment key and hash value memory 86 .
- These three message segment keys are used to encrypt the program keys.
- Three other message segment keys are used to encrypt a set of modification keys as explained in more detail below.
- a multiplexer 96 appropriately multiplexes the four next dynamically generated program keys PK from the memory 66 , a key control 98 , the modification keys from the modification key memory 88 , the checksum from the memory 20 , and a modifier message MM from a modifier message memory 99 to create the program key message segment PKMS and the modification key message segment MKMS that are discussed more fully below.
- the modifier message MM contains a 64-bit initial value and a 192 bit control. The use of the initial value is described below.
- the control bits of the modifier message MM comprise, for example, four bytes for system control, nine bytes for address pointers that point to memory addresses for the fixed keys and Hash values, and eleven bytes that can be used for any purpose.
- the address pointers discussed above point to the addresses in the memory 20 corresponding to (i) the six fixed keys that are stored in the fixed key memories 82 and 84 and that, in selected combinations, are used by the message segment key generator 90 to generate the message segment keys A, B, and C stored in the message segment key and hash value memory 86 and (ii) the hash values A, B, and C that are also stored in the message segment key and hash value memory 86 .
- These address pointers are sent in the modifier message MM to the receiver so that the receiver can re-generate the message segment keys A, B, and C and corresponding hash values A, B, and C that are required to decrypt the program keys and modification keys, as explained below.
- bits 0 and 1 are used to designate the copy control assigned to the program data.
- Bits 2 - 7 are reserved except that at least one of these reserved bits is set to one value to indicate that the corresponding message segment is a modification key message segment MKMS and is set to another value to indicate that the corresponding message segment is a program key message segment PKMS.
- the bits K M provided to the look up table 94 are set to a predetermined value such as all zeros while the three message segment keys are being produced for storage in the message segment key and hash value memory 86 .
- the message segment keys that are used to encrypt the modification key message segment MKMS are produced with modification keys having a predetermined value known to both the transmitter and the receiver.
- the look up table 94 may pass only the fixed keys K A as the message segment keys.
- the look up table 94 could instead pass only the fixed keys K B as the message segment keys, or the look up table 94 could read out message segment keys on the basis of both the fixed keys K A and K B from the fixed key memories 82 and 84 .
- These alternatives are based on which of the tables in look up table 94 is selected as indicated by bits 8 - 11 of the system control of the modifier message MM as discussed below.
- the message segment keys produced with these modification keys having the predetermined value are used to encrypt the modification key messages MK 1 , MK 2 , and MK 3 and the checksum message CRC.
- the bits K M provided to the look up table 94 are the randomly generated modification keys stored in the modification key memory 88 , and these randomly generated modification keys are used along with the fixed keys K A and K B to produce the three message segment keys stored in the message segment key and hash value memory 86 .
- the message segment keys that are used to encrypt the program key message segment PKMS are produced with the randomly generated modification keys stored in the modification key memory 88 in addition to the fixed keys K A and K B from the fixed key memories 82 and 84 .
- the message segment keys produced with the randomly generated modification keys stored in the modification key memory 88 are used to encrypt the program key messages PK 1 , PK 2 , PK 3 , and PK 4 .
- the fixed keys used to generate the message segment keys that encrypt the program key message segment PKMS may be the same as or different from the fixed keys used to generate the message segment keys that encrypt the modification key message segment MKMS.
- Bits 8 , 9 , 10 , and 11 designate which one of the sixteen possible tables stored in the look up table 94 is used to produce the message segment keys stored in the message segment key and hash value memory 86 .
- Bits 12 - 15 may be used for any purpose such as indicating to the receiver a particular program key rotation, as discussed below.
- Bits 16 - 31 are a checksum produced by a CRC generator of the modifier message memory 99 .
- the CRC generator of the modifier message memory 99 applies a CRC code to bits 0 - 15 of the system control byte shown in FIG. 9 in order to generate a checksum.
- This checksum comprises bits 16 - 31 as shown in FIG. 9 .
- the CRC generator appends this checksum to the unmodified bits 0 - 15 to form the full system control of the modifier message MM.
- This full system control of the modifier message MM is used by the receiver to determine if the program key message segment PKMS and/or the modification key message segment MKMS is not properly received due, for example, to noise in the channel and is described in more detail below.
- a multiplexer 100 receives the message segment keys and hash values stored in the message segment key and hash value memory 86 .
- the multiplexer 100 also receives three fixed keys A′, B′, and C′ and three Hash values A′, B′, and C′ stored in a memory 102 .
- the three fixed keys A′, B′, and C′ stored in the memory 102 each comprises a 128 bit fixed key
- the three Hash values A′, B′, and C′ stored in the memory 102 each comprises a 64 bit Hash value.
- the multiplexers 96 and 100 operate in conjunction with the second encryption engine 18 to encrypt the encrypted portion of the message segments MS shown in FIG. 10 .
- the encrypted portion of the message segment MS shown in FIG. 10 includes the modifier message MM, and four program key messages KM 1 , KM 2 , KM 3 , and KM 4 .
- the modified portion of the message segment MS shown in FIG. 10 includes the modifier message MM, the three modification key messages MK 1 , MK 2 , and MK 3 , and the fixed key checksum CRC.
- the modifier messages MM include the initial value and the 192 bit control as shown in FIGS. 7 and 8 .
- the initial value for example, may include 64 predetermined arbitrary bits.
- the multiplexer 100 passes the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ from the memory 102 through a key expander 104 to the second encryption engine 18 .
- the key expander 104 may be similar to the key expander 70 and expands only the fixed keys A′, B′, and C′.
- the key expander 104 does not expand the Hash values A′, B′, and C′.
- the multiplexer 96 passes the modifier message MM to the second encryption engine 18 .
- the second encryption engine 18 is shown in more detail in FIG. 11 .
- the Hash value A′ is applied to an EXCLUSIVE OR 106
- the Hash value B′ is applied to an EXCLUSIVE OR 108
- the Hash value C′ is applied to an EXCLUSIVE OR 110 .
- the EXCLUSIVE ORs 106 , 108 , and 110 bit-wise process their respective inputs.
- the expanded fixed key A′ is applied to an AES encrypter 112
- the expanded fixed key B′ is applied to an AES encrypter 114
- the expanded fixed key C′ is applied to an AES encrypter 116 .
- the initial value of the modifier message MM is applied to the EXCLUSIVE OR 106 , a first 1 ⁇ 3 of the control bits of the modifier message MM is applied to the AES encrypter 112 , a second 1 ⁇ 3 of the control bits of the modifier message MM is applied to the AES encrypter 114 , and a third 1 ⁇ 3 of the control bits of the modifier message MM is applied to the AES encrypter 116 .
- the AES encrypter 112 encrypts an output of the EXCLUSIVE OR 106 and the first 1 ⁇ 3 of the control bits of the modifier message MM according to the expanded fixed key A′, and supplies half of the encryption result to the EXCLUSIVE OR 108 and the other half as the second 1 ⁇ 4 of the encrypted modifier message MM.
- the AES encrypter 114 encrypts an output of the EXCLUSIVE OR 108 and the second 1 ⁇ 3 of the control bits of the modifier message MM according to the expanded fixed key B′, and supplies half of the encryption result to the EXCLUSIVE OR 110 and the other half as the third 1 ⁇ 4 of the encrypted modifier message MM.
- the AES encrypter 116 encrypts an output of the EXCLUSIVE OR 110 and the third 1 ⁇ 3 of the control bits of the modifier message MM according to the expanded fixed key C′, and supplies half of the encryption result as the first 1 ⁇ 4 of the encrypted modifier message MM and the other half as the fourth 1 ⁇ 4 of the encrypted modifier message MM.
- Each key message in the program key message segment PKMS has the example construction of FIG. 12 .
- a program key message KM 1 includes a 64-bit initial value, which may be same initial value as discussed above or a different initial value, a 64-bit key control 98 , and one of the 128-bit program keys divided into two 64-bit portions.
- the program key messages KM 2 , KM 3 , and KM 4 containing the other three program keys are similarly constructed.
- the key control 98 is used to designate whether the key message contains a program key, a modification key, or the checksum.
- the multiplexer 100 passes the three message segment keys A, B, and C and the three Hash values A, B, and C from the message segment key and hash value memory 86 through the key expander 104 to the second encryption engine 18 .
- the three message segment keys A, B, and C that are used to encrypt the program key messages are the message segment keys read out of the table 94 by use of the randomly generated modification keys K M stored in the modification key memory 88 , the fixed keys K A from the fixed key memory 82 , and the fixed keys K B from the fixed key memory 84 .
- the key expander 104 expands only the message segment keys A, B, and C.
- the key expander 104 does not expand the Hash values A, B, and C.
- the multiplexer 96 passes the first of the four dynamically generated program keys from the next portion of the memory 66 to the second encryption engine 18 .
- the Hash value A is applied to the EXCLUSIVE OR 106
- the Hash value B is applied to the EXCLUSIVE OR 108
- the Hash value C is applied to the EXCLUSIVE OR 110 .
- the expanded message segment key A is applied to the AES encrypter 112
- the expanded message segment key B is applied to the AES encrypter 114
- the expanded message segment key C is applied to the AES encrypter 116 .
- the initial value is applied to the EXCLUSIVE OR 106 , the control word is applied to the AES encrypter 112 , a first 1 ⁇ 2 of the first of the four dynamically generated program keys is applied to the AES encrypter 114 , and a second half of the first of the four dynamically generated program keys is applied to the AES encrypter 116 .
- the AES encrypter 112 encrypts an output of the EXCLUSIVE OR 106 and the control word according to the expanded message segment key A, and supplies half of the encryption result to the EXCLUSIVE OR 108 and the other half as the second 1 ⁇ 4 of the program key message KM 1 .
- the AES encrypter 114 encrypts an output of the EXCLUSIVE OR 108 and the first 1 ⁇ 2 of the first of the four dynamically generated program keys according to the expanded message segment key B, and supplies half of the encryption result to the EXCLUSIVE OR 110 and the other half as the third 1 ⁇ 4 of the program key message KM 1 .
- the AES encrypter 116 encrypts an output of the EXCLUSIVE OR 110 and the second 1 ⁇ 2 of the first of the four dynamically generated program keys according to the expanded message segment key C, and supplies half of the encryption result as the first 1 ⁇ 4 of the program key message KM 1 and the other half as the fourth 1 ⁇ 4 of the program key message KM 1 .
- the other three program key messages KM 2 , KM 3 , and KM 4 are similarly generated.
- Each modification key message in the modification key message segment MKMS also has the example construction of FIG. 12 .
- a modification key message MK 1 includes a 64-bit initial value, which may be same initial value as discussed above or a different initial value, a 64-bit key control 98 , and one of the 128-bit modification keys divided into two 64-bit portions.
- the modification key messages MK 2 and MK 3 containing the other two modification keys are similarly constructed.
- the key control 98 is used to designate whether the key message contains a program key, a modification key, or the checksum.
- the multiplexer 100 passes the three message segment keys A, B, and C and the three Hash values A, B, and C from the message segment key and hash value memory 86 through the key expander 104 to the second encryption engine 18 .
- the three message segment keys A, B, and C that are used to encrypt the modification key messages are the message segment keys read out of the table 94 by use of the modification keys with the predetermined value.
- the fixed keys K A from the fixed key memory 82 may be read out of the table 94 as the message segment keys.
- the fixed keys K B from the fixed key memory 84 can be read out of the table 94 as the message segments keys or a combination of the fixed keys K A and K B can be used to read out the message segment keys from the table 94 .
- the key expander 104 expands only the message segment keys A, B, and C.
- the key expander 104 does not expand the Hash values A, B, and C.
- the multiplexer 96 passes the first of the modification keys from the modification key memory 88 to the second encryption engine 18 .
- the Hash values A, B, and C are applied to the EXCLUSIVE ORs 106 , 108 , and 110 as before. Also, the expanded message segment keys A, B, and C are applied to the AES encrypters 112 , 114 , and 116 as before. The initial value is applied to the EXCLUSIVE OR 106 , the control word is applied to the AES encrypter 112 , a first 1 ⁇ 2 of the first of the three modification keys is applied to the AES encrypter 114 , and a second half of the first of the three modification keys is applied to the AES encrypter 116 .
- the AES encrypter 112 supplies half of its encryption result to the EXCLUSIVE OR 108 and the other half as the second 1 ⁇ 4 of the modification key message MK 1 .
- the AES encrypter 114 supplies half of its encryption result to the EXCLUSIVE OR 110 and the other half as the third 1 ⁇ 4 of the modification key message MK 1 .
- the AES encrypter 116 supplies half of its encryption result as the first 1 ⁇ 4 of the modification key message MK 1 and the other half as the fourth 1 ⁇ 4 of the modification key message MK 1 .
- the output multiplexer 16 of FIG. 1 muxes the encrypted program data, the MPEG PID header from the transport stream, 192 clock bits which may be supplied by a separate generator and which may be the SMPTE time code (if any), and 20 forward error correction bytes from the transport stream with the encrypted program key message segment PKMS and the encrypted modification key message segment MKMS to form the encrypted transport stream.
- Each of the program key message segment PKMS and the modification key message segment MKMS is contained in a corresponding complete ATSC data segment.
- the second encryption engine 18 generates the message segments MS in pairs, i.e., the program key message segment PKMS and the modification key message segment MKMS. This pair of message segments MS is shown in FIG. 13 .
- the modifier message MM in each message segment MS is provided in accordance with FIGS. 8 and 9 .
- the first message segment shown in FIG. 13 is the modification key message segment MKMS and contains an encrypted form of the three modification keys stored in the modification key memory 88 and the checksum (CRC) from the memory 20 .
- the second message segment shown in FIG. 13 is the program key message segment PKMS and contains an encrypted form of the four encrypted new program keys to be applied by the receiver to decrypt the encrypted program data.
- the modifier message MM and the four program key messages KM 1 , KM 2 , KM 3 , and KM 4 of the program key message segment PKMS are encrypted.
- the modifier message MM, the three modification key messages MK 1 , MK 2 , and MK 3 , and the checksum message CRC of the modification key message segment MKMS are encrypted.
- the four byte header of the message segment MS shown in FIG. 10 is the MPEG PID.
- the modifier message MM includes the message control bytes shown in FIG. 9 . This control byte identifies the message segment MS in a pair either as the program key message segment PKMS or as the modification key message segment MKMS, as explained above.
- FIG. 14 shows the relative message pair transmission and reception timing upon which key synchronization is determined.
- event 1 which may be a null packet in the MPEG transport stream
- a program key message segment PKMS as shown in FIG. 14 is transmitted.
- the receiver receives this program key message segment PKMS, decrypts it, and stores the program keys that were contained in the program key message segment PKMS as next program keys. However, the receiver does not start using these next program keys yet.
- the encryption encoder 8 of the transmitter After the transmitter transmits the program key message segment PKMS, the encryption encoder 8 of the transmitter makes the three modification keys and the modifier message MM, and encrypts the modifier message MM and the three modification keys using the message segment keys and the Hash values as described above. The encryption encoder 8 then assembles the modification key message segment MKMS containing the encrypted modifier message MM and the three modification keys as described above.
- the transmitter transmits the modification key message segment MKMS in place of the null packet and, at the same time, the encryption encoder 8 begins using the next program keys stored in the memory 66 as the active program keys to encrypt program data. Thus, the next program keys become the active program keys.
- the receiver receives this modification key message segment MKMS and immediately begins using its previously stored next program keys as the active program keys to decrypt program content. Accordingly, the replacement of the active program keys with the next program keys is made at the same time in the transmitter and receiver so that the transmitter and receiver use the same program keys to encrypt and decrypt the same program content.
- the encryption encoder 8 of the transmitter After the transmitter transits the modification key message segment MKMS and switches program keys, the encryption encoder 8 of the transmitter makes new program keys, and saves the new program keys in the memory 66 as the next program keys.
- the encryption encoder 8 encrypts the new program keys and assembles another program key message segment PKMS containing the new program keys and waits for an opportunity (event 3 such as a null packet) to transmit this program key message segment PKMS.
- the encryption encoder 8 of the transmitter makes new program keys, saves the new program keys, and assembles the next program key message segment PKMS
- the receiver decrypts the modification key message segment MKMS that it has just received, and saves the modifier message MM and the modification keys contained in this message.
- the encryption encoder 8 is using the active program keys to encrypt program data and is transmitting the encrypted program data to the receiver.
- the receiver is using the active program keys to decrypt program data.
- null packets are occurring with an undesirably high frequency. For example, during periods where there is little action in the video, many null packets can occur during a single frame. Therefore, it may be desirable to add a delay function such that message transmission and key switching does not occur more often than a predetermined frequency. For example, this delay function may be set so that message transmission and key switching does not occur more often than once per two or three ATSC frames.
- each program data segment of a field to be transmitted to the receiver includes a non-encrypted four byte MPEG header that identifies the segment as a program data segment, eleven blocks each containing encrypted 128 bits of program data, eight bytes of non-encrypted program data, and twenty bytes of non-encrypted forward error correction data.
- the four active program keys A, B, C, and D are applied in the following order to the eleven blocks of data in the first program data segment: A, B, C, D, A, B, C, D, A, B, C. Accordingly, the active program key A is applied to the first of the eleven blocks of data to be encrypted, the active program key B is applied to the second of the eleven blocks of data to be encrypted, . . . , and the active program key C is applied to the eleventh of the eleven blocks of data to be encrypted.
- This same rotation scheme ABCDABCDABC can be used for the next and subsequent program data segments of a field.
- the next program data segment can continue the rotation.
- the active program keys A, B, C, and D are applied in the following order to the eleven blocks of data to be encrypted in the second program data segment: D, A, B, C, D, A, B, C, D, A, B.
- the active program key D is applied to the first of the eleven blocks of data to be encrypted
- the active program key A is applied to the second of the eleven blocks of data to be encrypted
- the active program key B is applied to the eleventh of the eleven blocks of data to be encrypted.
- the rotation can then be continued for subsequent program data segments as indicated by FIG. 15 .
- Bits 12 - 15 of the system control byte shown in FIG. 9 can be used to indicate to the receiver the particular rotation being used in the transmitter.
- the output multiplexer 16 transmits encrypted program data segments continuously until an opportunity (event) arises for transmitting a message segment MS (either a program key message segment PKMS or a modification key message segment MKMS).
- a message segment MS either a program key message segment PKMS or a modification key message segment MKMS.
- the occurrence of a null packet gives rise to the opportunity for transmitting one of these message segments, the occurrence of the next null packet gives rise to the opportunity for transmitting the other of the message segments MS in the pair, and so on.
- An objective may be established for transmitting a message segment MS on a periodic basis dependent upon the occurrence of a null packet. For example, the objective may be to transmit a message segment MS no more often than once per field of 312 segments.
- the decryption decoder 180 includes a PID filter 182 that, based on PID numbers, detects and forwards encrypted program data to a first decryption engine 184 and detects and forwards program key message segments PKMS and modification key message segments MKMS to a second decryption engine 186 .
- the first decryption engine 184 performs a single wrap decryption process which is complementary to the single wrap encryption process performed by the first encryption engine 14 .
- the second decryption engine 186 decrypts (unwraps) this message segment in order to recover the modification keys and the fixed key and hash value addresses of a memory 188 .
- a fixed key selector and message segment key generator 190 uses these fixed key and hash value addresses to retrieve fixed keys and hash values from the memory 188 .
- the fixed key selector and message segment key generator 190 uses the fixed keys and hash values retrieved from the memory 188 along with the a prior known modification keys, i.e., the modification keys having the known predetermined value, in order to regenerate the message segment keys that were used in the encryption encoder 8 to encrypt the modification keys and the checksum message CRC and that are required by the decryption decoder 180 to decrypt the encrypted modification keys and the checksum message CRC.
- the fixed key selector and message segment key generator 190 uses the fixed keys and hash values retrieved from the memory 188 based on the memory addresses contained in the modifier message of the program key message segment PKMS along with the decrypted modification keys in order to regenerate the message segment keys that were used in the encryption encoder 8 to encrypt the program keys and that are required by the decryption decoder 180 to decrypt the encrypted program key messages KM 1 , KM 2 , KM 3 , and KM 4 .
- the second decryption engine 186 decrypts program keys in the message segment MS using the message segment keys from the fixed key selector and message segment key generator 190 and stores the decrypted program keys in the next portion of a memory 192 .
- the first decryption engine 184 uses the active program keys stored in the memory 192 to decrypt the encrypted data from the program data segments of the field being received.
- the first decryption engine 184 includes three sections 184 A, 184 B, and 184 C.
- the section 184 A includes a de-multiplexer 200 , memories 202 and 204 , and a multiplexer 206 .
- the section 184 B includes a memory 208 , a decryption block 210 , and a multiplexer 212 .
- the section 184 C includes a de-multiplexer 214 , memories 216 and 218 , and a multiplexer 220 .
- the sections 184 A, 184 B, and 184 C are controlled by the PID filter 182 .
- the PID filter 182 passes all packets in the MPEG transport stream to the de-multiplexer 200 . All packets are de-multiplexed and are stored in the memories 202 and 204 that operate in a ping-pong fashion. All packets in the memories 202 and 204 are supplied to the multiplexer 206 .
- the multiplexer 206 passes all packets from the memories 202 and 204 to the memory 208 and to the decryption block 210 . These packets include program packets (one or more of which may be encrypted), message segments, and such non-program packets as PIDs, PSIPs, PMTs, and PATs.
- the decryption block 210 uses the decrypted program keys PK to decrypt all packets that it receives and supplies the decrypted packets to the multiplexer 212 .
- the multiplexer 212 in response to a decryption flag from the PID filter 182 , selects only the decrypted packets from the decryption block 210 which correspond to the selected program or programs that were to be decrypted.
- All other packets are selected by the multiplexer 212 from the memory 208 .
- the output of the multiplexer 212 is the original MPEG transport stream less null packets and including message segments.
- the multiplexer 212 passes the decrypted and non-encrypted packets to the de-multiplexer 214 .
- the decrypted and non-encrypted packets from the de-multiplexer 214 are stored in the memories 216 and 218 that operate in a ping-pong fashion.
- the decrypted and non-encrypted packets in the memories 216 and 218 are supplied through the multiplexer 220 to a null inserter 222 .
- the null inserter 222 is controlled by the PID filter 182 to remove the program key message segments PKMS and the modification key message segments MKMS from the transport stream, and to insert null packets back into the transport stream in place of the removed program key message segments PKMS and the removed modification key message segments MKMS.
- the output of the null inserter is the decrypted MPEG transport stream.
- the sections 184 A and 184 C of the first decryption engine 184 are controlled by the message packets so as to maintain proper timing, data flow rates, and synchronization.
- the fixed key selector and message segment key generator 190 is shown in more detail in FIG. 19 .
- the program key message segments PKMS and the modification key message segments MKMS are supplied to the second decryption engine 186 .
- Each of these message segments has the form shown in FIG. 10 .
- the modifier message MM in the received message segment is decrypted using the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ which are stored in a memory 230 .
- the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ stored in memory 230 are the same fixed keys and Hash values that are stored in the memory 102 .
- the decrypted modifier message MM indicates to the receiver, inter alfa, whether the corresponding message segment is a program key message segment PKMS or a modification key message segment MKMS. If the corresponding message segment is a program key message segment PKMS, the receiver knows to use the decrypted modification keys K M as well as the fixed keys K A and K B to produce that the message segment keys that are required for decryption of the program key messages. If the corresponding message segment is a modification key message segment MKMS, the receiver knows to use the known modification keys having the predetermined value in order to read out the fixed keys K A , K B , or some combination of K A and K B as the message segment keys that are required for decryption of the modification key messages and the checksum message CRC.
- a multiplexer 232 In order to decrypt the modifier message MM in a received one of the modification key message segments MKMS or the program key message segments PKMS, a multiplexer 232 passes the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ from the memory 230 through a key expander 234 to the second encryption engine 186 .
- the key expander 234 may be similar to the key expander 104 and expands only the fixed keys A′, B′, and C′. The key expander 234 does not expand the Hash values A′, B′, and C′.
- the second encryption engine 186 which performs an operation complementary to that performed by the encryption engine 18 is shown in more detail in FIG. 20 .
- the Hash value C′ is applied to an EXCLUSIVE OR 236
- the Hash value B′ is applied to an EXCLUSIVE OR 238
- the Hash value A′ is applied to an EXCLUSIVE OR 240 .
- the EXCLUSIVE ORs 236 , 238 , and 240 bit-wise process their respective inputs.
- the expanded fixed key C′ is applied to an AES decrypter 242
- the expanded fixed key B′ is applied to an AES decrypter 244
- the expanded fixed key A′ is applied to an AES decrypter 246 .
- the first 1 ⁇ 4 of the encrypted modifier message MM is applied to the AES decrypter 242
- the second 1 ⁇ 4 of the encrypted modifier message MM is applied to the AES decrypter 246
- the third 1 ⁇ 4 of the encrypted modifier message MM is applied to the AES decrypter 244
- the fourth 1 ⁇ 4 of the encrypted modifier message MM is applied to the AES decrypter 242 .
- the AES decrypter 242 decrypts the first 1 ⁇ 4 and the fourth 1 ⁇ 4 of the encrypted modifier message MM according to the expanded fixed key C′, and supplies half of the decryption result to the EXCLUSIVE OR 236 and the other half as the third 1 ⁇ 3 of the control bits of the decrypted modifier message MM.
- the AES decrypter 244 decrypts an output of the EXCLUSIVE OR 236 and the third 1 ⁇ 4 of the encrypted modifier message MM according to the expanded fixed key B′, and supplies half of the decryption result to the EXCLUSIVE OR 238 and the other half as the second 1 ⁇ 3 of the control bits of the decrypted modifier message MM.
- the AES encrypter 246 decrypts an output of the EXCLUSIVE OR 238 and the second 1 ⁇ 4 of the encrypted modifier message MM according to the expanded fixed key A′, and supplies half of the encryption result to the EXCLUSIVE OR 240 and the other half as the first 1 ⁇ 3 of the decrypted modifier message MM.
- the output of the EXCLUSIVE OR 240 is the initial value of the modifier message MM. If this initial value is not the same initial value that was used during encryption of the modifier message MM, then the encryption/decryption process has an error that indicates erroneous message decryption.
- a multiplexer 250 applies the control bits of the decrypted modifier message MM to a modifier message decoder 252 .
- the multiplexer 232 After decryption of the modifier message MM, the multiplexer 232 passes the three message segment keys A, B, and C and the three hash values A, B, and C stored in a message segment key memory 254 to the key expander 234 .
- these three message segment keys are produced with the modification keys having the predetermined value.
- the key expander expands only the three message segment keys A, B, and C, it does not expand the three hash values A, B, and C.
- the three expanded message segment keys A, B, and C and the three hash values A, B, and C are used by the second decryption engine 186 to decrypt the modification key message MK 1 in the received modification key message segment MKMS.
- each of the three modification key messages MK 1 , MK 2 , and MK 3 and the checksum message CRC has the format shown in FIG. 12 , and the control of each of the messages is the key control 98 that indicates whether the particular message is a program key message, a modification key message, or a checksum message.
- the Hash value C is applied to the EXCLUSIVE OR 236
- the Hash value B is applied to the EXCLUSIVE OR 238
- the Hash value A is applied to the EXCLUSIVE OR 240 .
- the expanded fixed key C is applied to the AES decrypter 242
- the expanded fixed key B is applied to the AES decrypter 244
- the expanded fixed key A is applied to the AES decrypter 246 .
- the first 1 ⁇ 4 of the encrypted modification key message MK 1 is applied to the AES decrypter 242
- the second 1 ⁇ 4 of the encrypted modification key message MK 1 is applied to the AES decrypter 246
- the third 1 ⁇ 4 of the encrypted modification key message MK 1 is applied to the AES decrypter 244
- the fourth 1 ⁇ 4 of the encrypted modification key message MK 1 is applied to the AES decrypter 242 .
- the AES decrypter 242 supplies half of its decryption result to the EXCLUSIVE OR 236 and the other half as the second 1 ⁇ 2 of the decrypted modification key MK 1 .
- the AES decrypter 244 supplies half of its decryption result to the EXCLUSIVE OR 238 and the other half as the first 1 ⁇ 2 of the decrypted modification key.
- the AES encrypter 246 supplies half of its encryption result to the EXCLUSIVE OR 240 and the other half as the control of the decrypted modification key.
- the output of the EXCLUSIVE OR 240 is the initial value of the modification key message. If this initial value is not the same initial value that was used during encryption of the modification key MK 1 , then the encryption/decryption process has an error that indicates the need for remedial action.
- the decryption engine 186 similarly decrypts the modification key messages MK 2 and MK 3 and the checksum message CRC.
- the multiplexer 250 passes the controls and the checksum as indicated in FIG. 19 , and passes the modification keys for storage in a modification key memory 256 .
- the fixed key selector and message segment key generator 190 can begin generating new message segment keys that will be used to decrypt the programs keys from the next received program key message segment PKMS.
- the modifier message decoder 252 decodes the received and decrypted modifier message MM in each of the message segments to determine the addresses according to the modifier message format and definition shown in FIGS. 8 and 9 .
- the fixed key selector 260 uses these addresses to select, from the memory 188 , the same three K A keys, the same three K B fixed keys, and the same three Hash values A, B, and C that were used to produce the message segment keys A, B, and C that were used to encrypt the message segments PKMS and MKMS in the encryption encoder 8 .
- a first key memory 262 stores the selected three K A keys
- a second fixed key memory 264 stores the selected three fixed K B keys
- the message segment key memory 254 stores the selected three Hash values A, B, and C.
- a message segment key generator 266 may have the same construction as the message segment key generator 90 shown in FIG. 6 . Accordingly, the latch 92 1 latches the first 32 bits of a first of the three fixed keys K A stored in the fixed key memory 262 , the latch 92 2 latches the first 32 bits of a first of the three fixed keys K B stored in the fixed key memory 264 , and the latch 92 3 latches the first 32 bits of a first of the three modification keys K M stored in the modification key memory 256 when message segment keys are being produced to decrypt program keys (otherwise, the modification keys having the predetermined value are used to generate message segment keys to decrypt modification keys). These 96 latched bits form a 96 bit address that reads out the first 32 bits of a first message segment key for storage in the message segment key memory 254 .
- the same table that was selected in the transmitter is selected in the receiver to provide the three message segment keys that are stored in the message segment key memory 254 .
- the latch 92 1 latches the second 32 bits of the first of the three fixed keys K A stored in the fixed key memory 262
- the latch 92 2 latches the second 32 bits of the first of the three fixed keys K B stored in the fixed key memory 264
- the latch 92 3 latches the second 32 bits of the first of the three modification keys K M stored in the modification key memory 256 when message segment keys are being produced to decrypt program keys (otherwise, the modification keys having the predetermined value are used to generate message segment keys to decrypt modification keys).
- These 96 latched bits form a second 96 bit address that reads out the second 32 bits of the first message segment key for storage in the message segment key memory 254 .
- the third and fourth 32 bits of the first of the three fixed keys K A stored in the fixed key memory 262 , of the first of the three fixed keys K B stored in the fixed key memory 264 , and of the first of the three modification keys K M stored in the modification key memory 256 are used to read out the third and fourth 32 bits of the first message segment key from the look up table 94 when message segment keys are being produced to decrypt program keys (otherwise, the modification keys having the predetermined value are used to generate message segment keys to decrypt modification keys.
- These third and fourth 32 bits of the first message segment key are also stored in the message segment key memory 254 to form all 128 bits of the first message segment key.
- the second and third message segment keys are similarly read out of the look up table 94 and stored in the message segment key memory 254 .
- the modifier message MM in the received message segment MS is decrypted as before using the fixed keys A′, B′, and C′ and the Hash values A′, B′, and C′ stored in the memory 230 .
- the multiplexer 232 passes the three message segment keys A, B, and C and the three Hash values A, B, and C from the message segment key memory 254 through the key expander 234 to the second encryption engine 186 .
- the key expander 234 expands only the message segment keys A, B, and C.
- the key expander 234 does not expand the Hash values A, B, and C.
- the Hash value C is applied to the EXCLUSIVE OR 236
- the Hash value B is applied to the EXCLUSIVE OR 238
- the Hash value A is applied to the EXCLUSIVE OR 240 .
- the expanded fixed key C is applied to the AES decrypter 242
- the expanded fixed key B is applied to the AES decrypter 244
- the expanded fixed key A is applied to the AES decrypter 246 .
- the first 1 ⁇ 4 of the encrypted first program key message KM 1 is applied to the AES decrypter 242
- the second 1 ⁇ 4 of the encrypted first program key message KM 1 is applied to the AES decrypter 246
- the third 1 ⁇ 4 of the encrypted first program key message KM 1 is applied to the AES decrypter 244
- the fourth 1 ⁇ 4 of the encrypted first program key message KM 1 is applied to the AES decrypter 242 .
- the AES decrypter 242 decrypts the first 1 ⁇ 4 and the fourth 1 ⁇ 4 of the encrypted first program key message KM 1 message according to the expanded fixed key C, and supplies half of the decryption result to the EXCLUSIVE OR 236 and the other half as the second 1 ⁇ 2 of the first program key of the decrypted first program key message KM 1 .
- the AES decrypter 244 decrypts an output of the EXCLUSIVE OR 236 and the third 1 ⁇ 4 of the encrypted first program key message KM 1 according to the expanded fixed key B, and supplies half of the decryption result to the EXCLUSIVE OR 238 and the other half as the first 1 ⁇ 2 of the first program key of the decrypted first program key message KM 1 .
- the AES encrypter 246 decrypts an output of the EXCLUSIVE OR 238 and the second 1 ⁇ 4 of the encrypted first program key message KM 1 according to the expanded fixed key A, and supplies half of the encryption result to the EXCLUSIVE OR 240 and the other half as the control of the decrypted first program key message KM 1 .
- the output of the EXCLUSIVE OR 240 is the initial value of the first program key message KM 1 . If this initial value is not the same initial value as was used during encryption of the first program key message KM 1 , then the encryption/decryption process has an error that indicates the need for remedial action.
- the other three program key messages KM 2 , KM 3 , and KM 4 are similarly decrypted.
- the multiplexer 250 of FIG. 19 passes these four program keys to the next portion of the memory 192 and passes the control of each of the decrypted program key messages KM 1 , KM 2 , KM 3 , and KM 4 .
- a multiplexer 270 passes the active program keys, using the rotation discussed above in relation to FIGS. 15 and 16 , through a key expander 272 to the decryption block 210 so that the appropriate data can be decrypted.
- the key expander 272 may be constructed in accordance with FIG. 4 .
- the key expander 272 also includes an inverse key block. This inverse key block is disabled during program decryption and is enabled during decryption of the program key message segment PKMS and the modification key message segment MKMS.
- the next program keys are received and stored in the next portion of the memory 192 .
- the modifier message decoder 252 also decodes the full system control of the received and decrypted modifier message MM. As discussed above, the system control of the modifier message MM is shown in FIG. 9 . Accordingly, the modifier message decoder 252 applies the same CRC code as the encoder to bits 0 - 15 of the system control of the modifier message MM in the received message segment PKMS or MKMS in order to recalculate the checksum bits 16 - 31 . The receiver compares the recalculated checksum from bits 0 - 15 to the checksum bits 16 - 31 in the received system control. If the recalculated checksum from bits 0 - 15 and the received checksum bits 16 - 31 do not match, the received message segment is treated as the next message segment expected to be received in the sequence of received message segments.
- the modifier message decoder 252 uses the decoded bits 12 - 15 of the system control to determine the program key rotation that should be used by the decryption block 210 to decrypt the encrypted program packets as shown by the line extending from the modifier message decoder 252 to the control of the multiplexer 270 which selects the next active key to be used.
- the memories as described above may be ROMs, RAMs, non-volatile RAMs, and/or any other suitable memory devices.
- a 96 ⁇ 32 look up table 94 is used to produce the message segment keys. Accordingly, 96 address bits are used to read 32 bits of a message segment key.
- other look up tables and addressing schemes may be used to produce the message segment keys.
- a 384 ⁇ 128 look up table can be used to produce the message segment keys. Accordingly, 384 address bits comprising 128 K M bits, 128 K A bits, and 128 K B bits are used to read a 128 bit message segment key.
- the same look up table and addressing scheme should be used in the receiver.
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Technology Law (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
In a transmitter, data is encrypted by use of a data key, the data key is encrypted based on a first modification key, and the first modification key is encrypted based on a second modification key such that the first and second modification keys are different keys. The encrypted data, the encrypted data key, and the encrypted first modification key are transmitted to a receiver. In the receiver, the encrypted first modification key, the encrypted data key, and the encrypted data are received from the transmitter. The encrypted first modification key is decrypted based on the second modification key, the encrypted data key is decrypted based on the decrypted first modification key, and the encrypted data is decrypted by use of the decrypted data key.
Description
- This application is a division of U.S. patent application Ser. No. 11/137,272, filed on May 25, 2005.
- The present invention relates to the encryption and decryption of data transmitted between a transmitter and a receiver and, more particularly, to the encryption and decryption of both data and the encryption keys used to encrypt the data.
- There are many systems in which the unauthorized copying of data has undesired consequences. For example, in pay-per-view systems such as those offered by hotels, motels, and cable systems, the suppliers offering pay-per-view programming lose substantial revenues if their programs are pirated.
- Many tools are commonly available at hardware stores, hobby shops, university laboratories, and are provided by hackers and experts to enable the reverse-engineering of all aspects of data transmission systems, including pay-per-view systems. Accordingly, pay-per-view suppliers and others interested in copy protection implement various copy protection systems in order to prevent unauthorized copying.
- Copy protection systems have a number of security goals. For example, copy protection systems are intended to prevent the theft of high quality compressed digital content, to prevent theft of high quality uncompressed digital content, and to limit losses caused by break-ins.
- The copy protection system of the present invention is intended to thwart unauthorized copying of content.
- These and other features and advantages will become more apparent from a detailed consideration of the invention when taken in conjunction with the drawings in which:
-
FIG. 1 illustrates an encryption encoder of a copy protection transmitter according to one embodiment of the present invention; -
FIG. 2 illustrates the data encryption block ofFIG. 1 in greater detail; -
FIG. 3 illustrates the dynamic keys block ofFIG. 1 in greater detail; -
FIG. 4 illustrates the key expansion block ofFIG. 3 in greater detail; -
FIG. 5 illustrates portions ofFIG. 1 in greater detail; -
FIG. 6 illustrates the key modifier ofFIG. 5 in greater detail; -
FIG. 7 illustrates an example modifier message MM used in the copy protection system ofFIG. 1 ; -
FIG. 8 illustrates a control portion of the modifier message MM illustrated inFIG. 7 ; -
FIG. 9 illustrates an example definition of the system control bytes of the modifier message MM illustrated inFIG. 8 ; -
FIG. 10 illustrates an example message segment MS used in the copy protection system ofFIG. 1 ; -
FIG. 11 illustrates the program key, modification key, and modifier message MM encryption block ofFIG. 1 in greater detail; -
FIG. 12 illustrates an example key message that is part of the message segment MS illustrated inFIG. 10 ; -
FIG. 13 illustrates an example pair of message segments MS used to transmit program keys and modification keys; -
FIG. 14 illustrates the timing of the transmitter and receiver with respect to message generation and use; -
FIG. 15 illustrates an example rotation for applying the program keys PK during encryption of program data; -
FIG. 16 illustrates an example of the portions of a program data segment of a field to which the rotation is applied; -
FIG. 17 illustrates a decryption decoder of a copy protection receiver according to one embodiment of the present invention; -
FIG. 18 illustrates the data decryption block ofFIG. 17 in greater detail; -
FIG. 19 illustrates portions of the decryption decoder ofFIG. 17 in greater detail; and, -
FIG. 20 illustrates the key and modifier message decryption block ofFIG. 17 in greater detail. - In
FIG. 1 , anexample encryption encoder 8 of a copy protection transmitter includes aPID filter 10 that receives an MPEG transport stream and that determines which packets in the MPEG transport stream contain data to be encrypted. As discussed below, thePID filter 10 also identifies null packets that are to be replaced with message segments MS that give the receiver sufficient information for decrypting the encrypted program data in the received signal, and thePID filter 10 further identifies packets containing information that is not to be encrypted. - A dynamic program key and
modification key generator 12 dynamically generates program keys PK that are applied by afirst encryption engine 14 in order to encrypt the program data in the MPEG transport stream that has been selected for encryption. Thefirst encryption engine 14, for example, may be a single wrap encryption engine, and may be arranged to apply the single wrap encryption process specified in the Advanced Encryption Standard (AES). The encrypted program data packets are supplied to one input of anoutput multiplexer 16. - The dynamically generated program keys PK are applied through a
multiplexer 24 whereupon they are themselves encrypted by asecond encryption engine 18. Thesecond encryption engine 18 may be a triple wrap encryption engine, and may be arranged to apply the triple wrap encryption process specified in the Advanced Encryption Standard. - Unlike the dynamically generated program keys PK that are used by the
first encryption engine 14 to encrypt the program data, the keys used by thesecond encryption engine 18 to encrypt the dynamically generated program keys PK are message segment keys. Fixed keys are stored in amemory 20, these fixed keys are used by a message segment key generator and control 22 to generate message segment keys, and the message segment keys are supplied to thesecond encryption engine 18. - The fixed keys stored in the
memory 20 are, for example, 128 bits long, and there are, for example, sixty-four fixed keys stored in thememory 20. The hash values discussed herein are, for example, sixty-four bits each and are derived as selected portions of the fixed keys. Alternatively, hash values may be separately stored in thememory 20, and the fixed keys and hash values may be of any desired length and number. - Thus, the message segment key generator and
control 22 selects the fixed keys to be used by thesecond encryption engine 18 from thememory 20, uses them to generate message segment keys, and supplies the message segment keys to thesecond encryption engine 18. Thesecond encryption engine 18 encrypts the dynamically generated program keys PK based on the message segment keys from the message segment key generator andcontrol 22. - As discussed below, a modifier message MM and modification keys MK are also applied through the
multiplexer 24 and are encrypted by thesecond encryption engine 18. The encrypted dynamically generated program keys PK and the encrypted modifier message MM are assembled into program key message segments PKMS that are forwarded to the receiver. As further discussed below, the encrypted modification keys MK, an encrypted checksum, and the encrypted modifier message MM are similarly assembled into modification key message segments MKMS that are also forwarded to the receiver. - The modification keys, which are dynamically generated by the program and
modification key generator 12, are used with the fixed keys to generate the message segment keys that are used to encrypt the program keys, and the checksum is based on the fixed keys stored in thememory 20. The checksum, for example, may comprise 128 bits, and may be generated from all of the fixed keys stored in thememory 20. Accordingly, the receiver can compare the checksum from the transmitter with a checksum generated from its own fixed keys to check that its fixed keys match the fixed keys of the transmitter. The checksum could also be used to determine errors in transmission. - As indicated above, the program key message segment PKMS and the modification key message segment MKMS give the receiver the information it requires to decrypt the encrypted program data in the received signal.
-
FIG. 2 shows thefirst encryption engine 14 in additional detail. As shown inFIGS. 1 and 2 , thefirst encryption engine 14 is coupled between thePID filter 10 and theoutput multiplexer 16. - The
first encryption engine 14 has threesections section 14A includes a de-multiplexer 30,memories multiplexer 36. Thesection 14B includes aRAM delay 38, anencryption block 40, and amultiplexer 42. Thesection 14C includes a de-multiplexer 44,memories multiplexer 50. - The
PID filter 10 passes transport packets in the MPEG transport stream to the de-multiplexer 30. The transport packets are de-multiplexed and are stored in thememories memories multiplexer 36. - The multiplexer 36 passes all packets from the
memories RAM delay 38 and theencryption block 40. These packets include program packets, null packets, and such non-program packets as PIDs, PSIPs, PMTs, and PATs. Theencryption block 40 uses the dynamically generated program keys PK to encrypt all packets that it receives and supplies the encrypted packets to themultiplexer 42. In response to an encrypt flag from thePID filter 10, themultiplexer 42 selects only the encrypted packets from theencryption block 40 which correspond to the selected program or programs that are to be encrypted. It will be understood that the MPEG transport stream may contain one or more programs and that any one or more of these programs may be flagged for encryption. All other packets (those that do not correspond to the program to be encrypted) are selected by themultiplexer 42 from theRAM delay 38. Thus, the output of themultiplexer 42 is the input MPEG transport stream except that the packets corresponding to the selected program are encrypted. The multiplexer 42 passes the encrypted and non-encrypted packets to the de-multiplexer 44. - The encrypted and non-encrypted packets from the de-multiplexer 44 are stored in the
memories memories multiplexer 50 to theoutput multiplexer 16. - The
sections first encryption engine 14 are controlled so as to maintain proper timing, data flow rates, and synchronization. -
FIG. 3 shows a dynamic programkey generator portion 12A of the dynamic program key and modificationkey generator 12 in more detail. The dynamic programkey generator portion 12A includes aseed generator 60 that supplies a seed to arandom number generator 62. For example, theseed generator 60 can select, on any desired basis, the seed from any portion of theMPEG transport stream 61, such as video and/or audio, in one or more program data packets. - A de-multiplexer 64 selects four 128 bit random numbers from the
random number generator 62 and stores these four 128 bit random numbers as four dynamically generated program keys in a next portion of amemory 66 while theencryption block 40 uses the four dynamically generated program keys previously stored in an active portion of thememory 66 to encrypt program data. Thus, while the four dynamically generated program keys PK stored in the active portion of thememory 66 are currently being used to encrypt program data, the de-multiplexer 64 selects another four 128 bit random numbers from therandom number generator 62 and stores these additional four 128 bit random numbers as four dynamically generated program keys PK in the next portion of thememory 66. - As explained below in connection with
FIG. 14 , at the time that a modification key message segment MKMS is transmitted, use of the four dynamically generated program keys PK stored in the active portion of thememory 66 is discontinued, and use of the four new dynamically generated program keys PK stored in the next portion of thememory 66 begins. At this transition point, the old next portion of thememory 66 becomes the new active portion of thememory 66, and the old active portion of thememory 66 becomes the new next portion of thememory 66. Also, while these four new dynamically generated program keys PK are being used to encrypt program data, four more program keys PK are dynamically generated and stored in the new next portion of thememory 66. - A
multiplexer 68 supplies the four dynamic program keys from the active portion of thememory 66 to akey expander 70 such as that shown inFIG. 4 . As needed, thekey expander 70 expands each of the dynamic program keys PK from 128 bit keys to, for example, 1408 bit expanded keys. The expanded dynamic program keys PK are supplied to theencryption block 40 ofFIG. 2 . - The
key expander 70 as shown inFIG. 4 includes an inverse key block. This inverse key block is enabled during program encryption and is disabled during encryption of the program key message segment PKMS and the modification key message segment MKMS. - In this manner, four dynamically generated program keys PK are used to encrypt program data while the next four program keys PK are being dynamically generated. The four dynamically generated program keys PK being used from the active portion of the
memory 66 continue to be used until the modification key message segment MKMS is generated. - The time between message segments, for example, can be made dependent upon the availability of null packets in the incoming MPEG transport stream because message segments are transmitted in place of selected null packets. The
PID filter 10 detects the null packet and signalsoutput multiplexer 16 to pass a message segment instead of packets from themultiplexer 50. - As shown in
FIG. 5 , a fixedkey selector 80 uses random numbers generated by therandom number generator 62 in order to address thememory 20 so as to select fixed keys from thememory 20. For example, each fixed key stored in thememory 20 may be 128 bits, and four 32 bit address words may be used to read each fixed key from thememory 20. These fixed keys are used to encrypt the program keys and modification keys (described in more detail hereinafter) that are sent to the receiver and that are required by the receiver to decrypt the received encrypted program data. - More specifically, three fixed keys are selected from the
memory 20 by the fixedkey selector 80 and are stored as fixed keys KA in a fixedkey memory 82. Three more fixed keys are selected from thememory 20 by the fixedkey selector 80 and are stored as fixed keys KB in a fixedkey memory 84. For example, each of these three fixed keys KA and three fixed keys KB may be 128 bits in length. The three fixed keys KA stored in the fixedkey memory 82 and the three fixed keys KB stored in the fixedkey memory 84 are selected on the basis of random addresses from therandom number generator 62. - In addition, three Hash values A, B, and C are selected by the fixed
key selector 80 and are stored in a message segment key and hashvalue memory 86. The three Hash values A, B, and C are also selected on the basis of random addresses from therandom number generator 62. For example, each of the three Hash values A, B, and C may be 64 bits or ½ of a fixed key. Moreover, three random numbers from therandom number generator 62 are stored in a modificationkey memory 88 as modification keys KM. Each of the modification keys, for example, may be 128 bits in length. - A message
segment key generator 90, which is shown in more detail inFIG. 6 , includeslatches latch 92 1 latches the first 32 bits of a first of the three fixed keys KA stored in the fixedkey memory 82, thelatch 92 2 latches the first 32 bits of a first of the three fixed keys KB stored in the fixedkey memory 84, and thelatch 92 3 latches the first 32 bits of a first of the three modification keys KM stored in the modificationkey memory 88. These 96 latched bits form a 96 bit address that reads out the first 32 bits of a first message segment key for storage in the message segment key and hashvalue memory 86. -
FIG. 6 also shows, in simplified form, four of the look up tables that are stored in the look up table 94. One of the tables is selected to provide the three message segment keys that are stored in the message segment key and hashvalue memory 86. The simplified form of table 0 inFIG. 6 shows the relationship between the address and the bits that are stored in table 0. Thus, if the first KM bit of an address is 0 and the first KA bit of an address is 0 and the first KB bit of an address is 0, table 0 will read out a 0 bit for the first bit K0 of a message segment key. However, if the first KM bit of an address is 1 and the first KA bit of an address is 1 and the first KB bit of an address is 0, table 0 will instead read out a 1 bit for the first bit Ko of a message segment key. If the next KM bit of an address is 0 and the next KA bit of an address is 0 and the next KB bit of an address is 0, table 0 will read out a 0 bit for the next bit Ko of the message segment key. However, if the next KM bit of an address is 0 and the next KA bit of an address is 1 and the next KB bit of an address is 0, table 0 will instead read out a 1 bit for the next bit Ko of a message segment key. - The bits that are stored in the tables may have any desired relationship to their addresses. The relationship may be a random, OR, XOR, AND, NAND, NOT, MUX, ones complement, twos complement, or gray scale relationship, and each table may bear a different relationship between the address and the stored bits.
- After the first 32 bits of the first message segment key are read out of the look up table 94 and are stored in the message segment key and hash
value memory 86, thelatch 92 1 latches the second 32 bits of the first of the three fixed keys KA stored in the fixedkey memory 82, thelatch 92 2 latches the second 32 bits of the first of the three fixed keys KB stored in the fixedkey memory 84, and thelatch 92 3 latches the second 32 bits of the first of the three modification keys KM stored in the modificationkey memory 88. These 96 latched bits form a second 96 bit address that reads out the second 32 bits of the first message segment key for storage in the message segment key and hashvalue memory 86. - The third and fourth 32 bits of the first of the three fixed keys KA stored in the fixed
key memory 82, of the first of the three fixed keys KB stored in the fixedkey memory 84, and of the first of the three modification keys KM stored in the modificationkey memory 88 are used to read out the third and fourth 32 bits of the first message segment key from the look up table 94. These third and fourth 32 bits of the first message segment key are also stored in the message segment key and hashvalue memory 86 to form all 128 bits of the first message segment key. The second and third message segment keys are similarly read out of the look up table 94 and stored in the message segment key and hashvalue memory 86. These three message segment keys are used to encrypt the program keys. Three other message segment keys are used to encrypt a set of modification keys as explained in more detail below. - As shown in
FIG. 5 , amultiplexer 96 appropriately multiplexes the four next dynamically generated program keys PK from thememory 66, akey control 98, the modification keys from the modificationkey memory 88, the checksum from thememory 20, and a modifier message MM from amodifier message memory 99 to create the program key message segment PKMS and the modification key message segment MKMS that are discussed more fully below. - An example of the modifier message MM is shown in
FIG. 7 . As shown, the modifier message MM contains a 64-bit initial value and a 192 bit control. The use of the initial value is described below. As shown inFIG. 8 , the control bits of the modifier message MM comprise, for example, four bytes for system control, nine bytes for address pointers that point to memory addresses for the fixed keys and Hash values, and eleven bytes that can be used for any purpose. - The address pointers discussed above point to the addresses in the
memory 20 corresponding to (i) the six fixed keys that are stored in the fixedkey memories segment key generator 90 to generate the message segment keys A, B, and C stored in the message segment key and hashvalue memory 86 and (ii) the hash values A, B, and C that are also stored in the message segment key and hashvalue memory 86. These address pointers are sent in the modifier message MM to the receiver so that the receiver can re-generate the message segment keys A, B, and C and corresponding hash values A, B, and C that are required to decrypt the program keys and modification keys, as explained below. - The 32 bits of the system control of the modifier message MM are shown by way of example in
FIG. 9 .Bits - When this at least one reserved bit is set to the value that indicates that the corresponding message segment is a modification key message segment MKMS, the bits KM provided to the look up table 94 are set to a predetermined value such as all zeros while the three message segment keys are being produced for storage in the message segment key and hash
value memory 86. In effect, the message segment keys that are used to encrypt the modification key message segment MKMS are produced with modification keys having a predetermined value known to both the transmitter and the receiver. - When the modification keys have this predetermined value, the look up table 94 may pass only the fixed keys KA as the message segment keys. Alternatively, when the modification keys have this predetermined value, the look up table 94 could instead pass only the fixed keys KB as the message segment keys, or the look up table 94 could read out message segment keys on the basis of both the fixed keys KA and KB from the fixed
key memories - When this at least one reserved bit is set to the value that indicates that the corresponding message segment is a program key message segment PKMS, the bits KM provided to the look up table 94 are the randomly generated modification keys stored in the modification
key memory 88, and these randomly generated modification keys are used along with the fixed keys KA and KB to produce the three message segment keys stored in the message segment key and hashvalue memory 86. Thus, the message segment keys that are used to encrypt the program key message segment PKMS are produced with the randomly generated modification keys stored in the modificationkey memory 88 in addition to the fixed keys KA and KB from the fixedkey memories key memory 88 are used to encrypt the program key messages PK1, PK2, PK3, and PK4. - The fixed keys used to generate the message segment keys that encrypt the program key message segment PKMS may be the same as or different from the fixed keys used to generate the message segment keys that encrypt the modification key message segment MKMS.
-
Bits value memory 86. - Bits 12-15 may be used for any purpose such as indicating to the receiver a particular program key rotation, as discussed below.
- Bits 16-31 are a checksum produced by a CRC generator of the
modifier message memory 99. Specifically, the CRC generator of themodifier message memory 99 applies a CRC code to bits 0-15 of the system control byte shown inFIG. 9 in order to generate a checksum. This checksum comprises bits 16-31 as shown inFIG. 9 . The CRC generator appends this checksum to the unmodified bits 0-15 to form the full system control of the modifier message MM. This full system control of the modifier message MM is used by the receiver to determine if the program key message segment PKMS and/or the modification key message segment MKMS is not properly received due, for example, to noise in the channel and is described in more detail below. - As shown in
FIG. 5 , amultiplexer 100 receives the message segment keys and hash values stored in the message segment key and hashvalue memory 86. Themultiplexer 100 also receives three fixed keys A′, B′, and C′ and three Hash values A′, B′, and C′ stored in amemory 102. For example, the three fixed keys A′, B′, and C′ stored in thememory 102 each comprises a 128 bit fixed key, and the three Hash values A′, B′, and C′ stored in thememory 102 each comprises a 64 bit Hash value. - The
multiplexers second encryption engine 18 to encrypt the encrypted portion of the message segments MS shown inFIG. 10 . In the case of the program key message segment PKMS, the encrypted portion of the message segment MS shown inFIG. 10 includes the modifier message MM, and four program key messages KM1, KM2, KM3, and KM4. In the case of the modification key message segment MKMS, the encrypted portion of the message segment MS shown inFIG. 10 includes the modifier message MM, the three modification key messages MK1, MK2, and MK3, and the fixed key checksum CRC. The modifier messages MM include the initial value and the 192 bit control as shown inFIGS. 7 and 8 . The initial value, for example, may include 64 predetermined arbitrary bits. - In order to encrypt the modifier message MM, the
multiplexer 100 passes the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ from thememory 102 through akey expander 104 to thesecond encryption engine 18. Thekey expander 104, for example, may be similar to thekey expander 70 and expands only the fixed keys A′, B′, and C′. Thekey expander 104 does not expand the Hash values A′, B′, and C′. Also, themultiplexer 96 passes the modifier message MM to thesecond encryption engine 18. - The
second encryption engine 18 is shown in more detail inFIG. 11 . The Hash value A′ is applied to an EXCLUSIVE OR 106, the Hash value B′ is applied to an EXCLUSIVE OR 108, and the Hash value C′ is applied to an EXCLUSIVE OR 110. TheEXCLUSIVE ORs AES encrypter 112, the expanded fixed key B′ is applied to anAES encrypter 114, and the expanded fixed key C′ is applied to anAES encrypter 116. - The initial value of the modifier message MM is applied to the EXCLUSIVE OR 106, a first ⅓ of the control bits of the modifier message MM is applied to the
AES encrypter 112, a second ⅓ of the control bits of the modifier message MM is applied to theAES encrypter 114, and a third ⅓ of the control bits of the modifier message MM is applied to theAES encrypter 116. - The AES encrypter 112 encrypts an output of the EXCLUSIVE OR 106 and the first ⅓ of the control bits of the modifier message MM according to the expanded fixed key A′, and supplies half of the encryption result to the EXCLUSIVE OR 108 and the other half as the second ¼ of the encrypted modifier message MM. The AES encrypter 114 encrypts an output of the EXCLUSIVE OR 108 and the second ⅓ of the control bits of the modifier message MM according to the expanded fixed key B′, and supplies half of the encryption result to the EXCLUSIVE OR 110 and the other half as the third ¼ of the encrypted modifier message MM. The AES encrypter 116 encrypts an output of the EXCLUSIVE OR 110 and the third ⅓ of the control bits of the modifier message MM according to the expanded fixed key C′, and supplies half of the encryption result as the first ¼ of the encrypted modifier message MM and the other half as the fourth ¼ of the encrypted modifier message MM.
- Each key message in the program key message segment PKMS has the example construction of
FIG. 12 . According to this example, a program key message KM1 includes a 64-bit initial value, which may be same initial value as discussed above or a different initial value, a 64-bitkey control 98, and one of the 128-bit program keys divided into two 64-bit portions. The program key messages KM2, KM3, and KM4 containing the other three program keys are similarly constructed. - The
key control 98 is used to designate whether the key message contains a program key, a modification key, or the checksum. - In order to encrypt the program key message KM1, the
multiplexer 100 passes the three message segment keys A, B, and C and the three Hash values A, B, and C from the message segment key and hashvalue memory 86 through thekey expander 104 to thesecond encryption engine 18. As explained above, the three message segment keys A, B, and C that are used to encrypt the program key messages are the message segment keys read out of the table 94 by use of the randomly generated modification keys KM stored in the modificationkey memory 88, the fixed keys KA from the fixedkey memory 82, and the fixed keys KB from the fixedkey memory 84. Thekey expander 104 expands only the message segment keys A, B, and C. Thekey expander 104 does not expand the Hash values A, B, and C. Also, themultiplexer 96 passes the first of the four dynamically generated program keys from the next portion of thememory 66 to thesecond encryption engine 18. - In the
second encryption engine 18, the Hash value A is applied to the EXCLUSIVE OR 106, the Hash value B is applied to the EXCLUSIVE OR 108, and the Hash value C is applied to theEXCLUSIVE OR 110. The expanded message segment key A is applied to theAES encrypter 112, the expanded message segment key B is applied to theAES encrypter 114, and the expanded message segment key C is applied to theAES encrypter 116. The initial value is applied to the EXCLUSIVE OR 106, the control word is applied to theAES encrypter 112, a first ½ of the first of the four dynamically generated program keys is applied to theAES encrypter 114, and a second half of the first of the four dynamically generated program keys is applied to theAES encrypter 116. - The AES encrypter 112 encrypts an output of the EXCLUSIVE OR 106 and the control word according to the expanded message segment key A, and supplies half of the encryption result to the EXCLUSIVE OR 108 and the other half as the second ¼ of the program key message KM1. The AES encrypter 114 encrypts an output of the EXCLUSIVE OR 108 and the first ½ of the first of the four dynamically generated program keys according to the expanded message segment key B, and supplies half of the encryption result to the EXCLUSIVE OR 110 and the other half as the third ¼ of the program key message KM1. The AES encrypter 116 encrypts an output of the EXCLUSIVE OR 110 and the second ½ of the first of the four dynamically generated program keys according to the expanded message segment key C, and supplies half of the encryption result as the first ¼ of the program key message KM1 and the other half as the fourth ¼ of the program key message KM1.
- The other three program key messages KM2, KM3, and KM4 are similarly generated.
- Each modification key message in the modification key message segment MKMS also has the example construction of
FIG. 12 . According to this example, a modification key message MK1 includes a 64-bit initial value, which may be same initial value as discussed above or a different initial value, a 64-bitkey control 98, and one of the 128-bit modification keys divided into two 64-bit portions. The modification key messages MK2 and MK3 containing the other two modification keys are similarly constructed. - Again, the
key control 98 is used to designate whether the key message contains a program key, a modification key, or the checksum. - In order to encrypt the modification key message MK1, the
multiplexer 100 passes the three message segment keys A, B, and C and the three Hash values A, B, and C from the message segment key and hashvalue memory 86 through thekey expander 104 to thesecond encryption engine 18. As explained above, the three message segment keys A, B, and C that are used to encrypt the modification key messages are the message segment keys read out of the table 94 by use of the modification keys with the predetermined value. Thus, the fixed keys KA from the fixedkey memory 82 may be read out of the table 94 as the message segment keys. Alternatively, as explained above, the fixed keys KB from the fixedkey memory 84 can be read out of the table 94 as the message segments keys or a combination of the fixed keys KA and KB can be used to read out the message segment keys from the table 94. Thekey expander 104 expands only the message segment keys A, B, and C. Thekey expander 104 does not expand the Hash values A, B, and C. Also, themultiplexer 96 passes the first of the modification keys from the modificationkey memory 88 to thesecond encryption engine 18. - The Hash values A, B, and C are applied to the
EXCLUSIVE ORs AES encrypter 112, a first ½ of the first of the three modification keys is applied to theAES encrypter 114, and a second half of the first of the three modification keys is applied to theAES encrypter 116. - The AES encrypter 112 supplies half of its encryption result to the EXCLUSIVE OR 108 and the other half as the second ¼ of the modification key message MK1. The AES encrypter 114 supplies half of its encryption result to the EXCLUSIVE OR 110 and the other half as the third ¼ of the modification key message MK1. The AES encrypter 116 supplies half of its encryption result as the first ¼ of the modification key message MK1 and the other half as the fourth ¼ of the modification key message MK1.
- The other two modification key messages MK2 and MK3 and the checksum message CRC are similarly generated.
- The
output multiplexer 16 ofFIG. 1 muxes the encrypted program data, the MPEG PID header from the transport stream, 192 clock bits which may be supplied by a separate generator and which may be the SMPTE time code (if any), and 20 forward error correction bytes from the transport stream with the encrypted program key message segment PKMS and the encrypted modification key message segment MKMS to form the encrypted transport stream. Each of the program key message segment PKMS and the modification key message segment MKMS is contained in a corresponding complete ATSC data segment. - The
second encryption engine 18 generates the message segments MS in pairs, i.e., the program key message segment PKMS and the modification key message segment MKMS. This pair of message segments MS is shown inFIG. 13 . The modifier message MM in each message segment MS is provided in accordance withFIGS. 8 and 9. The first message segment shown inFIG. 13 is the modification key message segment MKMS and contains an encrypted form of the three modification keys stored in the modificationkey memory 88 and the checksum (CRC) from thememory 20. The second message segment shown inFIG. 13 is the program key message segment PKMS and contains an encrypted form of the four encrypted new program keys to be applied by the receiver to decrypt the encrypted program data. - Thus, as shown in
FIG. 10 , the modifier message MM and the four program key messages KM1, KM2, KM3, and KM4 of the program key message segment PKMS are encrypted. Similarly, the modifier message MM, the three modification key messages MK1, MK2, and MK3, and the checksum message CRC of the modification key message segment MKMS are encrypted. - The four byte header of the message segment MS shown in
FIG. 10 is the MPEG PID. The modifier message MM includes the message control bytes shown inFIG. 9 . This control byte identifies the message segment MS in a pair either as the program key message segment PKMS or as the modification key message segment MKMS, as explained above. -
FIG. 14 shows the relative message pair transmission and reception timing upon which key synchronization is determined. Upon the occurrence ofevent 1, which may be a null packet in the MPEG transport stream, a program key message segment PKMS as shown inFIG. 14 is transmitted. The receiver receives this program key message segment PKMS, decrypts it, and stores the program keys that were contained in the program key message segment PKMS as next program keys. However, the receiver does not start using these next program keys yet. - After the transmitter transmits the program key message segment PKMS, the
encryption encoder 8 of the transmitter makes the three modification keys and the modifier message MM, and encrypts the modifier message MM and the three modification keys using the message segment keys and the Hash values as described above. Theencryption encoder 8 then assembles the modification key message segment MKMS containing the encrypted modifier message MM and the three modification keys as described above. When a null packet is detected (event 2), the transmitter transmits the modification key message segment MKMS in place of the null packet and, at the same time, theencryption encoder 8 begins using the next program keys stored in thememory 66 as the active program keys to encrypt program data. Thus, the next program keys become the active program keys. - At the same time, the receiver receives this modification key message segment MKMS and immediately begins using its previously stored next program keys as the active program keys to decrypt program content. Accordingly, the replacement of the active program keys with the next program keys is made at the same time in the transmitter and receiver so that the transmitter and receiver use the same program keys to encrypt and decrypt the same program content.
- After the transmitter transits the modification key message segment MKMS and switches program keys, the
encryption encoder 8 of the transmitter makes new program keys, and saves the new program keys in thememory 66 as the next program keys. Theencryption encoder 8 encrypts the new program keys and assembles another program key message segment PKMS containing the new program keys and waits for an opportunity (event 3 such as a null packet) to transmit this program key message segment PKMS. - While the
encryption encoder 8 of the transmitter makes new program keys, saves the new program keys, and assembles the next program key message segment PKMS, the receiver decrypts the modification key message segment MKMS that it has just received, and saves the modifier message MM and the modification keys contained in this message. - During segments in which the
encryption encoder 8 is not transmitting program key message segments PKMS and modification key message segments MKMS, theencryption encoder 8 is using the active program keys to encrypt program data and is transmitting the encrypted program data to the receiver. - During segments in which the receiver is not receiving program key message segments PKMS and modification key message segments MKMS, the receiver is using the active program keys to decrypt program data.
- In an embodiment where message transmission and key use is synchronized to the occurrence of null packets, there may be occasions when null packets are occurring with an undesirably high frequency. For example, during periods where there is little action in the video, many null packets can occur during a single frame. Therefore, it may be desirable to add a delay function such that message transmission and key switching does not occur more often than a predetermined frequency. For example, this delay function may be set so that message transmission and key switching does not occur more often than once per two or three ATSC frames.
- During encryption of program data, the
encryption block 40 rotates the four active program keys PK.FIG. 15 shows the rotation. As shown inFIG. 16 , each program data segment of a field to be transmitted to the receiver includes a non-encrypted four byte MPEG header that identifies the segment as a program data segment, eleven blocks each containing encrypted 128 bits of program data, eight bytes of non-encrypted program data, and twenty bytes of non-encrypted forward error correction data. - As shown in
FIG. 15 , the four active program keys A, B, C, and D are applied in the following order to the eleven blocks of data in the first program data segment: A, B, C, D, A, B, C, D, A, B, C. Accordingly, the active program key A is applied to the first of the eleven blocks of data to be encrypted, the active program key B is applied to the second of the eleven blocks of data to be encrypted, . . . , and the active program key C is applied to the eleventh of the eleven blocks of data to be encrypted. - This same rotation scheme ABCDABCDABC can be used for the next and subsequent program data segments of a field.
- Alternatively, the next program data segment can continue the rotation. Thus, the active program keys A, B, C, and D are applied in the following order to the eleven blocks of data to be encrypted in the second program data segment: D, A, B, C, D, A, B, C, D, A, B. Accordingly, the active program key D is applied to the first of the eleven blocks of data to be encrypted, the active program key A is applied to the second of the eleven blocks of data to be encrypted, . . . , and the active program key B is applied to the eleventh of the eleven blocks of data to be encrypted. The rotation can then be continued for subsequent program data segments as indicated by
FIG. 15 . - As a further alternative, other rotation sequences can be used. Bits 12-15 of the system control byte shown in
FIG. 9 can be used to indicate to the receiver the particular rotation being used in the transmitter. - The
output multiplexer 16 transmits encrypted program data segments continuously until an opportunity (event) arises for transmitting a message segment MS (either a program key message segment PKMS or a modification key message segment MKMS). The occurrence of a null packet gives rise to the opportunity for transmitting one of these message segments, the occurrence of the next null packet gives rise to the opportunity for transmitting the other of the message segments MS in the pair, and so on. An objective may be established for transmitting a message segment MS on a periodic basis dependent upon the occurrence of a null packet. For example, the objective may be to transmit a message segment MS no more often than once per field of 312 segments. - An
example decryption decoder 180 of a copy protection receiver is shown inFIG. 17 . Thedecryption decoder 180 includes aPID filter 182 that, based on PID numbers, detects and forwards encrypted program data to afirst decryption engine 184 and detects and forwards program key message segments PKMS and modification key message segments MKMS to asecond decryption engine 186. Thefirst decryption engine 184 performs a single wrap decryption process which is complementary to the single wrap encryption process performed by thefirst encryption engine 14. - When the modification key message segment MKMS is received, the
second decryption engine 186 decrypts (unwraps) this message segment in order to recover the modification keys and the fixed key and hash value addresses of amemory 188. A fixed key selector and message segmentkey generator 190 uses these fixed key and hash value addresses to retrieve fixed keys and hash values from thememory 188. In the case of decrypting the modification key message segment MKMS, the fixed key selector and message segmentkey generator 190 uses the fixed keys and hash values retrieved from thememory 188 along with the a prior known modification keys, i.e., the modification keys having the known predetermined value, in order to regenerate the message segment keys that were used in theencryption encoder 8 to encrypt the modification keys and the checksum message CRC and that are required by thedecryption decoder 180 to decrypt the encrypted modification keys and the checksum message CRC. In the case of decrypting the program key message segment PKMS, the fixed key selector and message segmentkey generator 190 uses the fixed keys and hash values retrieved from thememory 188 based on the memory addresses contained in the modifier message of the program key message segment PKMS along with the decrypted modification keys in order to regenerate the message segment keys that were used in theencryption encoder 8 to encrypt the program keys and that are required by thedecryption decoder 180 to decrypt the encrypted program key messages KM1, KM2, KM3, and KM4. - When the program key message segment PKMS is received, the
second decryption engine 186 decrypts program keys in the message segment MS using the message segment keys from the fixed key selector and message segmentkey generator 190 and stores the decrypted program keys in the next portion of amemory 192. In the meantime, thefirst decryption engine 184 uses the active program keys stored in thememory 192 to decrypt the encrypted data from the program data segments of the field being received. - As shown in
FIG. 18 , thefirst decryption engine 184 includes threesections section 184A includes a de-multiplexer 200,memories multiplexer 206. Thesection 184B includes amemory 208, adecryption block 210, and amultiplexer 212. Thesection 184C includes a de-multiplexer 214,memories multiplexer 220. Thesections PID filter 182. - The
PID filter 182 passes all packets in the MPEG transport stream to the de-multiplexer 200. All packets are de-multiplexed and are stored in thememories memories multiplexer 206. - The
multiplexer 206 passes all packets from thememories memory 208 and to thedecryption block 210. These packets include program packets (one or more of which may be encrypted), message segments, and such non-program packets as PIDs, PSIPs, PMTs, and PATs. Thedecryption block 210 uses the decrypted program keys PK to decrypt all packets that it receives and supplies the decrypted packets to themultiplexer 212. Themultiplexer 212, in response to a decryption flag from thePID filter 182, selects only the decrypted packets from thedecryption block 210 which correspond to the selected program or programs that were to be decrypted. All other packets (those that do not correspond to the program to be decrypted) are selected by themultiplexer 212 from thememory 208. Thus, the output of themultiplexer 212 is the original MPEG transport stream less null packets and including message segments. Themultiplexer 212 passes the decrypted and non-encrypted packets to the de-multiplexer 214. - The decrypted and non-encrypted packets from the de-multiplexer 214 are stored in the
memories memories multiplexer 220 to anull inserter 222. - The
null inserter 222 is controlled by thePID filter 182 to remove the program key message segments PKMS and the modification key message segments MKMS from the transport stream, and to insert null packets back into the transport stream in place of the removed program key message segments PKMS and the removed modification key message segments MKMS. The output of the null inserter is the decrypted MPEG transport stream. - The
sections first decryption engine 184 are controlled by the message packets so as to maintain proper timing, data flow rates, and synchronization. - The fixed key selector and message segment
key generator 190 is shown in more detail inFIG. 19 . As shown inFIG. 19 , the program key message segments PKMS and the modification key message segments MKMS are supplied to thesecond decryption engine 186. Each of these message segments has the form shown inFIG. 10 . Accordingly, as shown inFIG. 20 , the modifier message MM in the received message segment is decrypted using the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ which are stored in amemory 230. The three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ stored inmemory 230 are the same fixed keys and Hash values that are stored in thememory 102. - The decrypted modifier message MM indicates to the receiver, inter alfa, whether the corresponding message segment is a program key message segment PKMS or a modification key message segment MKMS. If the corresponding message segment is a program key message segment PKMS, the receiver knows to use the decrypted modification keys KM as well as the fixed keys KA and KB to produce that the message segment keys that are required for decryption of the program key messages. If the corresponding message segment is a modification key message segment MKMS, the receiver knows to use the known modification keys having the predetermined value in order to read out the fixed keys KA, KB, or some combination of KA and KB as the message segment keys that are required for decryption of the modification key messages and the checksum message CRC.
- In order to decrypt the modifier message MM in a received one of the modification key message segments MKMS or the program key message segments PKMS, a
multiplexer 232 passes the three fixed keys A′, B′, and C′ and the three Hash values A′, B′, and C′ from thememory 230 through akey expander 234 to thesecond encryption engine 186. Thekey expander 234, for example, may be similar to thekey expander 104 and expands only the fixed keys A′, B′, and C′. Thekey expander 234 does not expand the Hash values A′, B′, and C′. - The
second encryption engine 186 which performs an operation complementary to that performed by theencryption engine 18 is shown in more detail inFIG. 20 . As shown inFIG. 20 , the Hash value C′ is applied to an EXCLUSIVE OR 236, the Hash value B′ is applied to an EXCLUSIVE OR 238, and the Hash value A′ is applied to an EXCLUSIVE OR 240. TheEXCLUSIVE ORs AES decrypter 242, the expanded fixed key B′ is applied to anAES decrypter 244, and the expanded fixed key A′ is applied to an AES decrypter 246. - The first ¼ of the encrypted modifier message MM is applied to the
AES decrypter 242, the second ¼ of the encrypted modifier message MM is applied to the AES decrypter 246, the third ¼ of the encrypted modifier message MM is applied to theAES decrypter 244, and the fourth ¼ of the encrypted modifier message MM is applied to theAES decrypter 242. - The AES decrypter 242 decrypts the first ¼ and the fourth ¼ of the encrypted modifier message MM according to the expanded fixed key C′, and supplies half of the decryption result to the EXCLUSIVE OR 236 and the other half as the third ⅓ of the control bits of the decrypted modifier message MM. The AES decrypter 244 decrypts an output of the EXCLUSIVE OR 236 and the third ¼ of the encrypted modifier message MM according to the expanded fixed key B′, and supplies half of the decryption result to the EXCLUSIVE OR 238 and the other half as the second ⅓ of the control bits of the decrypted modifier message MM. The AES encrypter 246 decrypts an output of the EXCLUSIVE OR 238 and the second ¼ of the encrypted modifier message MM according to the expanded fixed key A′, and supplies half of the encryption result to the EXCLUSIVE OR 240 and the other half as the first ⅓ of the decrypted modifier message MM. The output of the EXCLUSIVE OR 240 is the initial value of the modifier message MM. If this initial value is not the same initial value that was used during encryption of the modifier message MM, then the encryption/decryption process has an error that indicates erroneous message decryption.
- As shown in
FIG. 19 , amultiplexer 250 applies the control bits of the decrypted modifier message MM to amodifier message decoder 252. - After decryption of the modifier message MM, the
multiplexer 232 passes the three message segment keys A, B, and C and the three hash values A, B, and C stored in a message segmentkey memory 254 to thekey expander 234. When the modification key message segment MKMS is being decrypted, these three message segment keys are produced with the modification keys having the predetermined value. The key expander expands only the three message segment keys A, B, and C, it does not expand the three hash values A, B, and C. The three expanded message segment keys A, B, and C and the three hash values A, B, and C are used by thesecond decryption engine 186 to decrypt the modification key message MK1 in the received modification key message segment MKMS. As indicated above, each of the three modification key messages MK1, MK2, and MK3 and the checksum message CRC has the format shown inFIG. 12 , and the control of each of the messages is thekey control 98 that indicates whether the particular message is a program key message, a modification key message, or a checksum message. - As shown in
FIG. 20 , the Hash value C is applied to the EXCLUSIVE OR 236, the Hash value B is applied to the EXCLUSIVE OR 238, and the Hash value A is applied to theEXCLUSIVE OR 240. The expanded fixed key C is applied to theAES decrypter 242, the expanded fixed key B is applied to theAES decrypter 244, and the expanded fixed key A is applied to the AES decrypter 246. - The first ¼ of the encrypted modification key message MK1 is applied to the
AES decrypter 242, the second ¼ of the encrypted modification key message MK1 is applied to the AES decrypter 246, the third ¼ of the encrypted modification key message MK1 is applied to theAES decrypter 244, and the fourth ¼ of the encrypted modification key message MK1 is applied to theAES decrypter 242. - The AES decrypter 242 supplies half of its decryption result to the EXCLUSIVE OR 236 and the other half as the second ½ of the decrypted modification key MK1. The AES decrypter 244 supplies half of its decryption result to the EXCLUSIVE OR 238 and the other half as the first ½ of the decrypted modification key. The AES encrypter 246 supplies half of its encryption result to the EXCLUSIVE OR 240 and the other half as the control of the decrypted modification key. The output of the EXCLUSIVE OR 240 is the initial value of the modification key message. If this initial value is not the same initial value that was used during encryption of the modification key MK1, then the encryption/decryption process has an error that indicates the need for remedial action.
- The
decryption engine 186 similarly decrypts the modification key messages MK2 and MK3 and the checksum message CRC. Themultiplexer 250 passes the controls and the checksum as indicated inFIG. 19 , and passes the modification keys for storage in a modificationkey memory 256. - Following decryption of the received modification key message segment MKMS, the fixed key selector and message segment
key generator 190 can begin generating new message segment keys that will be used to decrypt the programs keys from the next received program key message segment PKMS. - The
modifier message decoder 252 decodes the received and decrypted modifier message MM in each of the message segments to determine the addresses according to the modifier message format and definition shown inFIGS. 8 and 9 . The fixedkey selector 260 uses these addresses to select, from thememory 188, the same three KA keys, the same three KB fixed keys, and the same three Hash values A, B, and C that were used to produce the message segment keys A, B, and C that were used to encrypt the message segments PKMS and MKMS in theencryption encoder 8. A firstkey memory 262 stores the selected three KA keys, a second fixedkey memory 264 stores the selected three fixed KB keys, and the message segmentkey memory 254 stores the selected three Hash values A, B, and C. - A message segment
key generator 266 may have the same construction as the messagesegment key generator 90 shown inFIG. 6 . Accordingly, thelatch 92 1 latches the first 32 bits of a first of the three fixed keys KA stored in the fixedkey memory 262, thelatch 92 2 latches the first 32 bits of a first of the three fixed keys KB stored in the fixedkey memory 264, and thelatch 92 3 latches the first 32 bits of a first of the three modification keys KM stored in the modificationkey memory 256 when message segment keys are being produced to decrypt program keys (otherwise, the modification keys having the predetermined value are used to generate message segment keys to decrypt modification keys). These 96 latched bits form a 96 bit address that reads out the first 32 bits of a first message segment key for storage in the message segmentkey memory 254. - The same table that was selected in the transmitter is selected in the receiver to provide the three message segment keys that are stored in the message segment
key memory 254. - After the first 32 bits of the first message segment key are read out of the look up table 94 and are stored in the message segment
key memory 254, thelatch 92 1 latches the second 32 bits of the first of the three fixed keys KA stored in the fixedkey memory 262, thelatch 92 2 latches the second 32 bits of the first of the three fixed keys KB stored in the fixedkey memory 264, and thelatch 92 3 latches the second 32 bits of the first of the three modification keys KM stored in the modificationkey memory 256 when message segment keys are being produced to decrypt program keys (otherwise, the modification keys having the predetermined value are used to generate message segment keys to decrypt modification keys). These 96 latched bits form a second 96 bit address that reads out the second 32 bits of the first message segment key for storage in the message segmentkey memory 254. - The third and fourth 32 bits of the first of the three fixed keys KA stored in the fixed
key memory 262, of the first of the three fixed keys KB stored in the fixedkey memory 264, and of the first of the three modification keys KM stored in the modificationkey memory 256 are used to read out the third and fourth 32 bits of the first message segment key from the look up table 94 when message segment keys are being produced to decrypt program keys (otherwise, the modification keys having the predetermined value are used to generate message segment keys to decrypt modification keys. These third and fourth 32 bits of the first message segment key are also stored in the message segmentkey memory 254 to form all 128 bits of the first message segment key. The second and third message segment keys are similarly read out of the look up table 94 and stored in the message segmentkey memory 254. - When the next program key message segment PKMS is received, the modifier message MM in the received message segment MS is decrypted as before using the fixed keys A′, B′, and C′ and the Hash values A′, B′, and C′ stored in the
memory 230. Then, themultiplexer 232 passes the three message segment keys A, B, and C and the three Hash values A, B, and C from the message segmentkey memory 254 through thekey expander 234 to thesecond encryption engine 186. Thekey expander 234 expands only the message segment keys A, B, and C. Thekey expander 234 does not expand the Hash values A, B, and C. - In the
second encryption engine 186, the Hash value C is applied to the EXCLUSIVE OR 236, the Hash value B is applied to the EXCLUSIVE OR 238, and the Hash value A is applied to theEXCLUSIVE OR 240. The expanded fixed key C is applied to theAES decrypter 242, the expanded fixed key B is applied to theAES decrypter 244, and the expanded fixed key A is applied to the AES decrypter 246. - The first ¼ of the encrypted first program key message KM1 is applied to the
AES decrypter 242, the second ¼ of the encrypted first program key message KM1 is applied to the AES decrypter 246, the third ¼ of the encrypted first program key message KM1 is applied to theAES decrypter 244, and the fourth ¼ of the encrypted first program key message KM1 is applied to theAES decrypter 242. - The AES decrypter 242 decrypts the first ¼ and the fourth ¼ of the encrypted first program key message KM1 message according to the expanded fixed key C, and supplies half of the decryption result to the EXCLUSIVE OR 236 and the other half as the second ½ of the first program key of the decrypted first program key message KM1. The AES decrypter 244 decrypts an output of the EXCLUSIVE OR 236 and the third ¼ of the encrypted first program key message KM1 according to the expanded fixed key B, and supplies half of the decryption result to the EXCLUSIVE OR 238 and the other half as the first ½ of the first program key of the decrypted first program key message KM1. The AES encrypter 246 decrypts an output of the EXCLUSIVE OR 238 and the second ¼ of the encrypted first program key message KM1 according to the expanded fixed key A, and supplies half of the encryption result to the EXCLUSIVE OR 240 and the other half as the control of the decrypted first program key message KM1. The output of the EXCLUSIVE OR 240 is the initial value of the first program key message KM1. If this initial value is not the same initial value as was used during encryption of the first program key message KM1, then the encryption/decryption process has an error that indicates the need for remedial action.
- The other three program key messages KM2, KM3, and KM4 are similarly decrypted.
- The
multiplexer 250 ofFIG. 19 passes these four program keys to the next portion of thememory 192 and passes the control of each of the decrypted program key messages KM1, KM2, KM3, and KM4. - A
multiplexer 270 passes the active program keys, using the rotation discussed above in relation toFIGS. 15 and 16 , through akey expander 272 to thedecryption block 210 so that the appropriate data can be decrypted. Thekey expander 272 may be constructed in accordance withFIG. 4 . As in the case ofkey expander 70, thekey expander 272 also includes an inverse key block. This inverse key block is disabled during program decryption and is enabled during decryption of the program key message segment PKMS and the modification key message segment MKMS. - While the active keys from the active portion of the
memory 192 are being used by thedecryption block 210 to decrypt data, the next program keys are received and stored in the next portion of thememory 192. - The
modifier message decoder 252 also decodes the full system control of the received and decrypted modifier message MM. As discussed above, the system control of the modifier message MM is shown inFIG. 9 . Accordingly, themodifier message decoder 252 applies the same CRC code as the encoder to bits 0-15 of the system control of the modifier message MM in the received message segment PKMS or MKMS in order to recalculate the checksum bits 16-31. The receiver compares the recalculated checksum from bits 0-15 to the checksum bits 16-31 in the received system control. If the recalculated checksum from bits 0-15 and the received checksum bits 16-31 do not match, the received message segment is treated as the next message segment expected to be received in the sequence of received message segments. - Also, the
modifier message decoder 252 uses the decoded bits 12-15 of the system control to determine the program key rotation that should be used by thedecryption block 210 to decrypt the encrypted program packets as shown by the line extending from themodifier message decoder 252 to the control of themultiplexer 270 which selects the next active key to be used. - Certain modifications of the present invention have been discussed above. Other modifications of the present invention will occur to those practicing in the art of the present invention. For example, the memories as described above may be ROMs, RAMs, non-volatile RAMs, and/or any other suitable memory devices.
- Furthermore, as disclosed above, a 96×32 look up table 94 is used to produce the message segment keys. Accordingly, 96 address bits are used to read 32 bits of a message segment key. Instead, other look up tables and addressing schemes may be used to produce the message segment keys. For example, a 384×128 look up table can be used to produce the message segment keys. Accordingly, 384 address bits comprising 128 KM bits, 128 KA bits, and 128 KB bits are used to read a 128 bit message segment key. Whichever look up table and addressing scheme is used in the transmitter, the same look up table and addressing scheme should be used in the receiver.
- Accordingly, the description of the present invention is to be construed as illustrative only and is for the purpose of teaching those skilled in the art the best mode of carrying out the invention. The details may be varied substantially without departing from the spirit of the invention, and the exclusive use of all modifications which are within the scope of the appended claims is reserved.
Claims (30)
1. An encryption method performed by a transmitter comprising:
encrypting data by use of data keys;
encrypting the data keys based on first message segment keys, wherein the first message segment keys are generated from first modification keys and first fixed keys, wherein the first modification keys are randomly generated, and wherein the first fixed keys are randomly selected from a memory;
encrypting the first modification keys based on second message segment keys, wherein the second message segment keys are generated from second modification keys and second fixed keys, wherein the second modification keys have predetermined values known to both the transmitter and a receiver;
transmitting the encrypted data, the encrypted data keys, and the encrypted first modification keys to the receiver.
2. The encryption method of claim 1 wherein the second fixed keys are randomly selected from a memory.
3. The encryption method of claim 1 further comprising transmitting memory addresses for the first fixed keys to the receiver.
4. The encryption method of claim 3 further comprising:
encrypting the memory addresses by use of third fixed keys having predetermined values known to both the transmitter and receiver; and,
transmitting the encrypted memory addresses to the receiver.
5. The encryption method of claim 4 wherein the second fixed keys are randomly selected from a memory.
6. The encryption method of claim 1 wherein the data keys comprises randomly generated data keys.
7. The encryption method of claim 1 wherein the second fixed keys are different than the first fixed keys.
8. The encryption method of claim 1 wherein the first message segment keys are generated from the first modification keys and the first fixed keys in accordance with a logic function.
9. A decryption method performed by a receiver comprising:
receiving encrypted first modification keys, encrypted data keys, and encrypted data from a transmitter, wherein the first modification keys are keys randomly generated by the transmitter;
decrypting the encrypted first modification keys based on first message segment keys, wherein the first message segment keys are generated from second modification keys and first fixed keys, wherein the second modification keys have predetermined values known to both the transmitter and the receiver;
decrypting the encrypted data keys based on second message segments keys, wherein the second message segment keys are generated from the decrypted first modification keys and second fixed keys, wherein the second fixed keys are read from a memory based on randomly generated addresses received from the transmitter; and,
decrypting the encrypted data by use of the decrypted data keys.
10. The decryption method of claim 9 wherein the first fixed keys are read from a memory based on randomly generated addresses received from the transmitter.
11. The decryption method of claim 9 wherein the receiving of encrypted first modification keys, encrypted data keys, and encrypted data from a transmitter comprises receiving the memory addresses from the transmitter, wherein the received memory addresses are encrypted, and wherein the decryption method further comprises decrypting the encrypted memory addresses by use of third fixed keys having predetermined values known to both the transmitter and receiver.
12. The decryption method of claim 11 wherein the first fixed keys are read from a memory based on randomly generated addresses received from the transmitter.
13. The decryption method of claim 9 wherein the encrypted data keys comprise data keys that are randomly generated and encrypted by the transmitter.
14. The decryption method of claim 9 wherein the second fixed keys are different than the first fixed keys.
15. The decryption method of claim 9 wherein the second message segment keys are generated from the decrypted first modification keys and the second fixed keys in accordance with a logic function.
16. An encryption system of a transmitter comprising:
a first encryption engine that encrypts data by use of data keys;
a second encryption engine that encrypts the data keys based on first message segment keys, wherein the first message segment keys are generated from first modification keys and first fixed keys, wherein the first modification keys are randomly generated, wherein the first fixed keys are randomly selected from a memory, wherein the second encryption engine also encrypts the first modification keys based on second message segment keys, wherein the second message segment keys are generated from second modification keys and second fixed keys, wherein the second modification keys have predetermined values known to both the transmitter and a receiver; and,
a transmitter that transmits the encrypted data, the encrypted data keys, and the encrypted first modification keys to the receiver.
17. The encryption system of claim 16 wherein the second fixed keys are randomly selected from a memory.
18. The encryption system of claim 16 further comprising a memory that stores the first fixed keys, wherein the transmitter transmits memory addresses of the memory for the first fixed keys to the receiver.
19. The encryption system of claim 18 wherein the second encryption engine encrypts the memory addresses by use of third fixed keys having predetermined values known to both the transmitter and receiver, and wherein the transmitter transmits the encrypted memory addresses to the receiver.
20. The encryption system of claim 19 wherein the second fixed keys are randomly selected from a memory.
21. The encryption system of claim 16 wherein the data keys comprises randomly generated data keys.
22. The encryption system of claim 16 wherein the second fixed keys are different than the first fixed keys.
23. The encryption system of claim 16 wherein the first message segment keys are generated from the first modification keys and the first fixed keys in accordance with a logic function.
24. A decryption system of a receiver, wherein the receiver receives encrypted first modification keys, encrypted data keys, and encrypted data from a transmitter, wherein the first modification keys are keys randomly generated by the transmitter, and wherein the decryption system comprises:
a first decryption engine that decrypts the encrypted first modification keys based on first message segment keys, wherein the first message segment keys are generated from second modification keys and first fixed keys, wherein the second modification keys have predetermined values known to both the transmitter and the receiver, wherein the first decryption engine also decrypts the encrypted data keys based on second message segments keys, wherein the second message segment keys are generated from the decrypted first modification keys and second fixed keys, and wherein the second fixed keys are read from a memory based on randomly generated addresses received from the transmitter; and,
a second decryption engine that decrypts the encrypted data by use of the decrypted data keys.
25. The decryption system of claim 24 wherein the first fixed keys are read from a memory based on randomly generated addresses received from the transmitter.
26. The decryption system of claim 24 wherein the decryption system receives the memory addresses from the transmitter, wherein the received memory addresses are encrypted, and wherein the first decryption engine decrypts the encrypted memory addresses by use of third fixed keys having predetermined values known to both the transmitter and receiver.
27. The decryption system of claim 26 wherein the first fixed keys are read from a memory based on randomly generated addresses received from the transmitter.
28. The decryption method of claim 24 wherein the encrypted data keys comprise data keys that are randomly generated and encrypted by the transmitter.
29. The decryption method of claim 24 wherein the second fixed keys are different than the first fixed keys.
30. The decryption system of claim 24 wherein the second message segment keys are generated from the decrypted first modification keys and the second fixed keys in accordance with a logic function.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/623,114 US20100067704A1 (en) | 2005-05-25 | 2009-11-20 | Key management system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/137,272 US8189786B2 (en) | 2005-05-25 | 2005-05-25 | Encryption system |
US12/623,114 US20100067704A1 (en) | 2005-05-25 | 2009-11-20 | Key management system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/137,272 Division US8189786B2 (en) | 2005-05-25 | 2005-05-25 | Encryption system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20100067704A1 true US20100067704A1 (en) | 2010-03-18 |
Family
ID=37463386
Family Applications (8)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/137,272 Active 2028-12-06 US8189786B2 (en) | 2005-05-25 | 2005-05-25 | Encryption system |
US11/343,060 Active 2029-05-05 US7929704B2 (en) | 2005-05-25 | 2006-01-30 | Modified triple wrap encryption/decryption system |
US11/342,460 Active 2029-06-25 US7936870B2 (en) | 2005-05-25 | 2006-01-30 | Rotation of keys during encryption/decryption |
US11/342,472 Active 2029-01-18 US8054974B2 (en) | 2005-05-25 | 2006-01-31 | Opportunistic use of null packets during encryption/decryption |
US12/355,323 Active US8442226B2 (en) | 2005-05-25 | 2009-01-16 | Decryption key management |
US12/355,260 Active 2025-06-09 US8401189B2 (en) | 2005-05-25 | 2009-01-16 | Opportunistic use of keys during encryption/decryption |
US12/623,114 Abandoned US20100067704A1 (en) | 2005-05-25 | 2009-11-20 | Key management system |
US12/623,121 Active US8345877B2 (en) | 2005-05-25 | 2009-11-20 | Key management system |
Family Applications Before (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/137,272 Active 2028-12-06 US8189786B2 (en) | 2005-05-25 | 2005-05-25 | Encryption system |
US11/343,060 Active 2029-05-05 US7929704B2 (en) | 2005-05-25 | 2006-01-30 | Modified triple wrap encryption/decryption system |
US11/342,460 Active 2029-06-25 US7936870B2 (en) | 2005-05-25 | 2006-01-30 | Rotation of keys during encryption/decryption |
US11/342,472 Active 2029-01-18 US8054974B2 (en) | 2005-05-25 | 2006-01-31 | Opportunistic use of null packets during encryption/decryption |
US12/355,323 Active US8442226B2 (en) | 2005-05-25 | 2009-01-16 | Decryption key management |
US12/355,260 Active 2025-06-09 US8401189B2 (en) | 2005-05-25 | 2009-01-16 | Opportunistic use of keys during encryption/decryption |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/623,121 Active US8345877B2 (en) | 2005-05-25 | 2009-11-20 | Key management system |
Country Status (3)
Country | Link |
---|---|
US (8) | US8189786B2 (en) |
CN (1) | CN101213839B (en) |
ES (1) | ES2368580T3 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090028078A1 (en) * | 2007-07-23 | 2009-01-29 | Savi Technology, Inc. | Method and apparatus for providing security in a radio frequency identification system |
US20130070925A1 (en) * | 2010-03-17 | 2013-03-21 | Fujitsu Limited | Communication device, recording medium, and method thereof |
US20170237715A1 (en) * | 2014-08-07 | 2017-08-17 | Gurulogic Microsystems Oy | Encoder, decoder and method |
WO2018038730A1 (en) * | 2016-08-25 | 2018-03-01 | Ling Marvin T | Method and apparatus for conducting offline commerce transactions using an encrypted user id barcode |
US11743039B2 (en) * | 2021-04-20 | 2023-08-29 | Coinbase Il Rd Ltd. | System and method for data encryption using key derivation |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8397081B2 (en) * | 2005-06-22 | 2013-03-12 | Freescale Semiconductor, Inc. | Device and method for securing software |
US8542824B2 (en) * | 2006-05-04 | 2013-09-24 | Blackberry Limited | System and method for processing messages with encryptable message parts |
US8532292B2 (en) * | 2006-05-16 | 2013-09-10 | Kyocera Corporation | Stream generation method, broadcast receiving apparatus, and display method |
CN101296358B (en) * | 2007-04-26 | 2011-06-22 | 华为技术有限公司 | Broadcast enciphering and updating system and method |
US20090080659A1 (en) * | 2007-09-21 | 2009-03-26 | Texas Instruments Incorporated | Systems and methods for hardware key encryption |
US8494168B1 (en) * | 2008-04-28 | 2013-07-23 | Netapp, Inc. | Locating cryptographic keys stored in a cache |
JP5654983B2 (en) * | 2008-06-17 | 2015-01-14 | アティヴィオ,インコーポレイテッド | Sequence message processing |
CN101399627B (en) * | 2008-09-27 | 2012-08-29 | 北京数字太和科技有限责任公司 | Method and system for synchronization recovery |
US8595479B2 (en) * | 2009-02-25 | 2013-11-26 | Cisco Technology, Inc. | Aggregation of cryptography engines |
US8520855B1 (en) * | 2009-03-05 | 2013-08-27 | University Of Washington | Encapsulation and decapsulation for data disintegration |
US8789196B2 (en) | 2010-05-28 | 2014-07-22 | Adobe Systems Incorporated | System and method for providing content protection of linearly consumed content with a bidirectional protocol for license acquisition |
US8417966B1 (en) | 2010-05-28 | 2013-04-09 | Adobe Systems Incorporated | System and method for measuring and reporting consumption of rights-protected media content |
US9563751B1 (en) * | 2010-10-13 | 2017-02-07 | The Boeing Company | License utilization management system service suite |
US8769299B1 (en) | 2010-10-13 | 2014-07-01 | The Boeing Company | License utilization management system license wrapper |
US8495656B2 (en) | 2010-10-15 | 2013-07-23 | Attivio, Inc. | Ordered processing of groups of messages |
MY159284A (en) * | 2010-10-20 | 2016-12-30 | Mimos Berhad | A method for encrypting and decrypting data and a system therefor |
CN104115441B (en) * | 2011-09-19 | 2018-04-03 | 电视广播有限公司 | For the synchronous symmetric key management protected to the data exchanged by communication node |
US8874915B1 (en) * | 2011-09-28 | 2014-10-28 | Amazon Technologies, Inc. | Optimized encryption key exchange |
GB2508228A (en) * | 2012-11-27 | 2014-05-28 | Sony Corp | Inserting ancillary content between first content and second content to be streamed over a network in accordance with a playlist |
US9298947B2 (en) * | 2013-02-07 | 2016-03-29 | Qualcomm Incorporated | Method for protecting the integrity of a fixed-length data structure |
US9432390B2 (en) | 2013-12-31 | 2016-08-30 | Prometheus Security Group Global, Inc. | Scene identification system and methods |
US10075288B1 (en) * | 2014-02-28 | 2018-09-11 | The Governing Council Of The University Of Toronto | Systems, devices, and processes for homomorphic encryption |
WO2015145211A1 (en) * | 2014-03-27 | 2015-10-01 | Kam Fu Chan | Token key infrastructure and method for cloud services |
US10691838B2 (en) | 2014-06-20 | 2020-06-23 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
US10169618B2 (en) * | 2014-06-20 | 2019-01-01 | Cypress Semiconductor Corporation | Encryption method for execute-in-place memories |
US10192062B2 (en) | 2014-06-20 | 2019-01-29 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
US10341381B2 (en) * | 2015-04-29 | 2019-07-02 | Entit Software Llc | Inhibiting electromagnetic field-based eavesdropping |
US9819387B2 (en) * | 2015-10-29 | 2017-11-14 | Wichita State University | System and method for channel probability mass function dependent frequency hopping |
US10015009B2 (en) * | 2015-11-25 | 2018-07-03 | Nxp B.V. | Protecting white-box feistel network implementation against fault attack |
CN106790302B (en) * | 2017-03-22 | 2019-08-20 | 无锡紫光存储系统有限公司 | Data ciphering method, data decryption method and system |
US10785193B2 (en) * | 2017-03-30 | 2020-09-22 | Seagate Technology Llc | Security key hopping |
US20190028266A1 (en) * | 2017-07-23 | 2019-01-24 | Cisco Technology, Inc. | Dynamic encryption of cpu registers |
US10778642B2 (en) * | 2017-12-23 | 2020-09-15 | Mcafee, Llc | Decrypting transport layer security traffic without man-in-the-middle proxy |
US10499242B1 (en) * | 2019-05-24 | 2019-12-03 | The Florida International University Board Of Trustees | Method and apparatuses for data integrity and security for communications in smart power systems |
US11456867B2 (en) * | 2019-10-25 | 2022-09-27 | International Business Machines Corporation | Trust-anchoring of cryptographic objects |
TWI791963B (en) * | 2020-03-19 | 2023-02-11 | 瑞昱半導體股份有限公司 | Data decryption system and data decryption method |
US11271735B1 (en) * | 2020-08-26 | 2022-03-08 | Micron Technology, Inc. | Apparatuses, systems, and methods for updating hash keys in a memory |
US11782127B2 (en) | 2021-02-05 | 2023-10-10 | Nxp Usa, Inc. | Stop criterion for greedy target detection algorithms in radar applications using sparse phased arrays |
US11567676B2 (en) | 2021-04-30 | 2023-01-31 | Nxp B.V. | Inline encryption/decryption for a memory controller |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253294A (en) * | 1983-02-22 | 1993-10-12 | At&T Bell Laboratories | Secure transmission system |
US5841873A (en) * | 1995-06-08 | 1998-11-24 | Motorola, Inc. | Methods of detecting decryption errors |
US20020131595A1 (en) * | 2001-03-13 | 2002-09-19 | Kenjiro Ueda | Encryption method, decryption method, and recording and reproducing apparatus |
US20040052379A1 (en) * | 2001-10-03 | 2004-03-18 | Yusei Nishimoto | Content transmission apparatus, content reception apparatus, content transmission program, and content reception program |
US20040141614A1 (en) * | 2003-01-16 | 2004-07-22 | Samsung Electronics Co., Ltd. | Data encryption apparatus and method |
Family Cites Families (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US582430A (en) * | 1897-05-11 | Flushing apparatus for water-closets | ||
US1864840A (en) | 1928-11-26 | 1932-06-28 | Lehner Louis | Adjustable stock support bracket |
US4691610A (en) | 1986-06-13 | 1987-09-08 | William H. Howard | Guitar stand with fold-away, substantially concealable legs |
US4874025A (en) | 1988-05-16 | 1989-10-17 | Cleveland Gary D | Miter saw utility stand |
US4860807A (en) | 1988-10-13 | 1989-08-29 | Ted Vacchiano | Portable workbench and power saw stand |
US4974651A (en) | 1989-02-27 | 1990-12-04 | Carmon Jimmy W | Portable workbench |
US5029207A (en) * | 1990-02-01 | 1991-07-02 | Scientific-Atlanta, Inc. | External security module for a television signal decoder |
US5222137A (en) * | 1991-04-03 | 1993-06-22 | Motorola, Inc. | Dynamic encryption key selection for encrypted radio transmissions |
CA2082760A1 (en) | 1992-02-24 | 1993-08-25 | Douglas G. Break | Portable saw table |
US5193598A (en) | 1992-06-23 | 1993-03-16 | Estrem Jim J | Portable support stand attachable to a sawhorse |
US5320150A (en) | 1992-12-22 | 1994-06-14 | Ryobi America Corp. | Collapsible stand |
US5420866A (en) | 1994-03-29 | 1995-05-30 | Scientific-Atlanta, Inc. | Methods for providing conditional access information to decoders in a packet-based multiplexed communications system |
JPH07295800A (en) * | 1994-04-22 | 1995-11-10 | Advance Co Ltd | Software protecting system |
US8548166B2 (en) | 1995-04-03 | 2013-10-01 | Anthony J. Wasilewski | Method for partially encrypting program data |
US20040136532A1 (en) | 1995-04-03 | 2004-07-15 | Pinder Howard G. | Partial dual-encrypted stream utilizing program map tables |
US5526856A (en) | 1995-06-27 | 1996-06-18 | Pedri; Attilio | Device for supporting workpiece for a portable power tool |
US5592981A (en) | 1995-11-03 | 1997-01-14 | Tracrac, Inc. | Portable work bench having sliding connections for releasably and adjustably attaching accessories thereto |
US5774549A (en) | 1995-12-04 | 1998-06-30 | Sun Microsystems, Inc. | Method and apparatus that processes a video signal to generate a random number generator seed |
EP0786881B1 (en) | 1996-01-29 | 2003-03-05 | International Business Machines Corporation | Method and system for synchronisation of encryption/decryption keys in a data communications network using marker packets |
US5844478A (en) | 1996-05-31 | 1998-12-01 | Thomson Consumer Electronics, Inc. | Program specific information formation for digital data processing |
US5822430A (en) | 1996-11-20 | 1998-10-13 | Technical Communications Corporation | System for encoding encryption/decryption information into IFF challenges |
US6016348A (en) | 1996-11-27 | 2000-01-18 | Thomson Consumer Electronics, Inc. | Decoding system and data format for processing and storing encrypted broadcast, cable or satellite video data |
US6970564B1 (en) | 1998-07-13 | 2005-11-29 | Sony Corporation | Data multiplexing device, program distribution system, program transmission system, pay broadcast system, program transmission method, conditional access system, and data reception device |
US5836365A (en) | 1997-06-19 | 1998-11-17 | Tracrac, Inc. | Portable work bench having multiple accessories |
JP3657396B2 (en) | 1997-07-07 | 2005-06-08 | 株式会社日立製作所 | Key management system, key management apparatus, information encryption apparatus, information decryption apparatus, and storage medium storing program |
US5988243A (en) | 1997-07-24 | 1999-11-23 | Black & Decker Inc. | Portable work bench |
US6123173A (en) | 1997-10-27 | 2000-09-26 | Patros; George | Extendable sawhorse top rail |
EP0926894A1 (en) | 1997-12-23 | 1999-06-30 | CANAL+ Société Anonyme | Scrambling unit for a digital transmission system |
US6215876B1 (en) | 1997-12-31 | 2001-04-10 | Transcrypt International, Inc. | Apparatus for and method of detecting initialization vector errors and maintaining cryptographic synchronization without substantial increase in overhead |
US7035278B2 (en) | 1998-07-31 | 2006-04-25 | Sedna Patent Services, Llc | Method and apparatus for forming and utilizing a slotted MPEG transport stream |
US6697488B1 (en) | 1998-08-26 | 2004-02-24 | International Business Machines Corporation | Practical non-malleable public-key cryptosystem |
US6647356B2 (en) * | 1999-08-23 | 2003-11-11 | General Electric Company | System and method for remote inbound vehicle inspection |
US6477252B1 (en) | 1999-08-29 | 2002-11-05 | Intel Corporation | Digital video content transmission ciphering and deciphering method and apparatus |
US7151832B1 (en) * | 1999-11-18 | 2006-12-19 | International Business Machines Corporation | Dynamic encryption and decryption of a stream of data |
US6771657B1 (en) | 1999-12-09 | 2004-08-03 | General Instrument Corporation | Non real-time delivery of MPEG-2 programs via an MPEG-2 transport stream |
US7213005B2 (en) | 1999-12-09 | 2007-05-01 | International Business Machines Corporation | Digital content distribution using web broadcasting services |
US6834110B1 (en) | 1999-12-09 | 2004-12-21 | International Business Machines Corporation | Multi-tier digital TV programming for content distribution |
US6179024B1 (en) | 1999-12-27 | 2001-01-30 | Mai Yang | Work piece adjustable support |
US6650869B2 (en) | 2000-04-14 | 2003-11-18 | Hughes Electronics Corporation | System and method for managing return channel bandwidth in a two-way satellite system |
US7463582B2 (en) | 2000-04-14 | 2008-12-09 | Hughes Network Systems, Llc | System and method for scaling a two-way satellite system |
US7203311B1 (en) | 2000-07-21 | 2007-04-10 | The Directv Group, Inc. | Super encrypted storage and retrieval of media programs in a hard-paired receiver and storage device |
FR2812504B1 (en) | 2000-07-31 | 2003-01-24 | At Sky | "ON THE FLY" ENCRYPTION / DECRYPTION SYSTEM FOR DATA BROADCAST |
US7242772B1 (en) | 2000-09-07 | 2007-07-10 | Eastman Kodak Company | Encryption apparatus and method for synchronizing multiple encryption keys with a data stream |
GB0026121D0 (en) * | 2000-10-25 | 2000-12-13 | Lsi Logic Europ Ltd | Apparatus and method for detecting a predetermined pattern of bits in a bitstream |
US7254232B2 (en) | 2001-02-14 | 2007-08-07 | Copytele, Inc. | Method and system for selecting encryption keys from a plurality of encryption keys |
US7151831B2 (en) | 2001-06-06 | 2006-12-19 | Sony Corporation | Partial encryption and PID mapping |
US7747853B2 (en) | 2001-06-06 | 2010-06-29 | Sony Corporation | IP delivery of secure digital content |
US7065213B2 (en) | 2001-06-29 | 2006-06-20 | Scientific-Atlanta, Inc. | In a subscriber network receiving digital packets and transmitting digital packets below a predetermined maximum bit rate |
US6745804B2 (en) | 2001-07-11 | 2004-06-08 | Black & Decker Inc. | Portable work bench |
US6575213B1 (en) | 2001-07-13 | 2003-06-10 | Rubbermaid Incorporated | Multi-functional work support |
US20030024604A1 (en) | 2001-08-02 | 2003-02-06 | Derecktor Thomas E. | Portable work bench with an extension assembly having a workpiece support assembly and work stop assembly thereon |
US7463737B2 (en) | 2001-08-15 | 2008-12-09 | Digeo, Inc. | System and method for conditional access key encryption |
US20030058810A1 (en) | 2001-09-26 | 2003-03-27 | Mark Petronic | Hybrid satellite system for providing one-way and two-way communication services |
US6925180B2 (en) | 2001-09-27 | 2005-08-02 | Sony Corporation | PC card recorder |
EP1320006A1 (en) * | 2001-12-12 | 2003-06-18 | Canal+ Technologies Société Anonyme | Processing data |
US7233669B2 (en) | 2002-01-02 | 2007-06-19 | Sony Corporation | Selective encryption to enable multiple decryption keys |
US7376159B1 (en) | 2002-01-03 | 2008-05-20 | The Directv Group, Inc. | Exploitation of null packets in packetized digital television systems |
DE10303115A1 (en) | 2002-01-30 | 2003-08-21 | Wolfcraft Gmbh | Folding structure for a portable cross cut saw stand comprises an elongated bed with folding legs mounting width adjustable plates to support the saw and height and position adjustable material supports |
US7570766B2 (en) | 2002-03-01 | 2009-08-04 | Intel Corporation | Transparently embedding non-compliant data in a data stream |
JP3965126B2 (en) | 2002-03-20 | 2007-08-29 | 松下電器産業株式会社 | Playback device for playing content |
US7356147B2 (en) | 2002-04-18 | 2008-04-08 | International Business Machines Corporation | Method, system and program product for attaching a title key to encrypted content for synchronized transmission to a recipient |
KR100482287B1 (en) | 2002-10-26 | 2005-04-14 | 한국전자통신연구원 | Apparatus and method for injection of synchronized stream data in digital broadcasting environment |
US7092524B1 (en) | 2002-11-15 | 2006-08-15 | The United States Of America As Represented By The National Security Agency | Device for and method of cryptographically wrapping information |
US20040124036A1 (en) | 2002-12-31 | 2004-07-01 | Carl Ulshafter | Portable work stand |
US7587051B2 (en) * | 2003-01-13 | 2009-09-08 | Denis Bisson | System and method for securing information, including a system and method for setting up a correspondent pairing |
US7062048B2 (en) | 2003-01-27 | 2006-06-13 | Wegener Communications, Inc. | Apparatus and method for single encryption with multiple authorization of distributed content data |
US20040181811A1 (en) | 2003-03-13 | 2004-09-16 | Rakib Selim Shlomo | Thin DOCSIS in-band management for interactive HFC service delivery |
US7292692B2 (en) | 2003-03-25 | 2007-11-06 | Sony Corporation | Content scrambling with minimal impact on legacy devices |
US7206411B2 (en) | 2003-06-25 | 2007-04-17 | Wegener Communications, Inc. | Rapid decryption of data by key synchronization and indexing |
US7210510B2 (en) | 2003-07-10 | 2007-05-01 | Tracrac, Inc. | Work bench |
US7366302B2 (en) * | 2003-08-25 | 2008-04-29 | Sony Corporation | Apparatus and method for an iterative cryptographic block |
US20050097597A1 (en) | 2003-10-31 | 2005-05-05 | Pedlow Leo M.Jr. | Hybrid storage of video on demand content |
US8352726B2 (en) | 2003-11-07 | 2013-01-08 | Netapp, Inc. | Data storage and/or retrieval |
KR100636150B1 (en) * | 2004-07-01 | 2006-10-19 | 삼성전자주식회사 | Multimedia device having encryption module |
KR100755684B1 (en) * | 2004-08-07 | 2007-09-05 | 삼성전자주식회사 | Three dimensional motion graphic user interface and method and apparutus for providing this user interface |
US20060031873A1 (en) * | 2004-08-09 | 2006-02-09 | Comcast Cable Holdings, Llc | System and method for reduced hierarchy key management |
US7409558B2 (en) | 2004-09-02 | 2008-08-05 | International Business Machines Corporation | Low-latency data decryption interface |
US7496753B2 (en) | 2004-09-02 | 2009-02-24 | International Business Machines Corporation | Data encryption interface for reducing encrypt latency impact on standard traffic |
US7555123B2 (en) | 2005-04-29 | 2009-06-30 | Scientific-Atlanta, Inc. | Processing an MPEG elementary stream in a conditional access overlay environment |
US20070258586A1 (en) | 2006-04-28 | 2007-11-08 | Chien-Chung Huang | Personal video recorder having dynamic security functions and method thereof |
US8046839B2 (en) | 2007-04-13 | 2011-10-25 | Qualcomm Incorporated | Mobile unit parental control |
-
2005
- 2005-05-25 US US11/137,272 patent/US8189786B2/en active Active
-
2006
- 2006-01-30 US US11/343,060 patent/US7929704B2/en active Active
- 2006-01-30 US US11/342,460 patent/US7936870B2/en active Active
- 2006-01-31 US US11/342,472 patent/US8054974B2/en active Active
- 2006-05-18 ES ES06760123T patent/ES2368580T3/en active Active
- 2006-05-18 CN CN2006800240615A patent/CN101213839B/en active Active
-
2009
- 2009-01-16 US US12/355,323 patent/US8442226B2/en active Active
- 2009-01-16 US US12/355,260 patent/US8401189B2/en active Active
- 2009-11-20 US US12/623,114 patent/US20100067704A1/en not_active Abandoned
- 2009-11-20 US US12/623,121 patent/US8345877B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253294A (en) * | 1983-02-22 | 1993-10-12 | At&T Bell Laboratories | Secure transmission system |
US5841873A (en) * | 1995-06-08 | 1998-11-24 | Motorola, Inc. | Methods of detecting decryption errors |
US20020131595A1 (en) * | 2001-03-13 | 2002-09-19 | Kenjiro Ueda | Encryption method, decryption method, and recording and reproducing apparatus |
US20040052379A1 (en) * | 2001-10-03 | 2004-03-18 | Yusei Nishimoto | Content transmission apparatus, content reception apparatus, content transmission program, and content reception program |
US20040141614A1 (en) * | 2003-01-16 | 2004-07-22 | Samsung Electronics Co., Ltd. | Data encryption apparatus and method |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090028078A1 (en) * | 2007-07-23 | 2009-01-29 | Savi Technology, Inc. | Method and apparatus for providing security in a radio frequency identification system |
US20090028329A1 (en) * | 2007-07-23 | 2009-01-29 | Savi Technology, Inc. | Method and Apparatus for Providing Security in a Radio Frequency Identification System |
US8116454B2 (en) | 2007-07-23 | 2012-02-14 | Savi Technology, Inc. | Method and apparatus for providing security in a radio frequency identification system |
US8204225B2 (en) | 2007-07-23 | 2012-06-19 | Savi Technology, Inc. | Method and apparatus for providing security in a radio frequency identification system |
US8547957B2 (en) | 2007-07-23 | 2013-10-01 | Savi Technology, Inc. | Method and apparatus for providing security in a radio frequency identification system |
US20130070925A1 (en) * | 2010-03-17 | 2013-03-21 | Fujitsu Limited | Communication device, recording medium, and method thereof |
US20170237715A1 (en) * | 2014-08-07 | 2017-08-17 | Gurulogic Microsystems Oy | Encoder, decoder and method |
US10237248B2 (en) * | 2014-08-07 | 2019-03-19 | Gurulogic Microsystems Oy | Encoder, decoder and method |
WO2018038730A1 (en) * | 2016-08-25 | 2018-03-01 | Ling Marvin T | Method and apparatus for conducting offline commerce transactions using an encrypted user id barcode |
US11743039B2 (en) * | 2021-04-20 | 2023-08-29 | Coinbase Il Rd Ltd. | System and method for data encryption using key derivation |
Also Published As
Publication number | Publication date |
---|---|
ES2368580T3 (en) | 2011-11-18 |
US20090208009A1 (en) | 2009-08-20 |
US20060269063A1 (en) | 2006-11-30 |
US8054974B2 (en) | 2011-11-08 |
US8189786B2 (en) | 2012-05-29 |
US20060280298A1 (en) | 2006-12-14 |
US20090169002A1 (en) | 2009-07-02 |
US20080013731A1 (en) | 2008-01-17 |
US20070058813A9 (en) | 2007-03-15 |
US8345877B2 (en) | 2013-01-01 |
US20100067700A1 (en) | 2010-03-18 |
US20060269067A1 (en) | 2006-11-30 |
US8442226B2 (en) | 2013-05-14 |
CN101213839B (en) | 2010-06-30 |
US8401189B2 (en) | 2013-03-19 |
US7929704B2 (en) | 2011-04-19 |
US7936870B2 (en) | 2011-05-03 |
CN101213839A (en) | 2008-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8345877B2 (en) | Key management system | |
JP3655921B2 (en) | Method and apparatus for uniquely encrypting multiple services at a transmission point | |
US8144868B2 (en) | Encryption/decryption of program data but not PSI data | |
KR100930036B1 (en) | Duplicate stream password information in the next packet of encrypted frames | |
CA2854952C (en) | Encryption/decryption of program data but not psi data | |
KR20060003328A (en) | Improved cfm mode system | |
JP2003087240A (en) | Ciphering device, deciphering device, ciphering/ deciphering device, and program recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |