System and method for decryption of content including partial-block discard

Embodiments may include receiving a protected version of content that includes multiple encryption chains each including encrypted blocks of content. The protected version of content may include one or more initialization vectors for decrypting the encrypted blocks of content and discard information that specifies non-content portions of one or more data blocks to be discarded after decryption. Embodiments may also include performing chained decryption on the multiple encryption chains using the initialization vectors specified by the decryption information. The chained decryption may result in a sequence of decrypted data blocks. Embodiments may also include, based on the discard information, locating and removing the non-content portions of one or more data blocks in the sequence of decrypted data blocks. Embodiments may also include generating the protected version of content. Embodiments may also include performing any of the aforesaid techniques on one or more computers.

BACKGROUND

1. Field of the Invention

The present invention is directed to computer systems. More particularly, it is directed to the protection of electronic content within a computing environment.

2. Description of the Related Art

To combat unauthorized consumption of content, some content owners have adopted an approach to protecting their content known as digital rights management (“DRM”), which may include various techniques for limiting access of electronic content to authorized individuals and/or enforcing other restrictions on the use of such content. Typically, clear content that is to be protected by DRM is encoded and packaged into an encrypted form. At packaging time, the packaging unit responsible for packaging content may utilize various types of encryption algorithms for encrypting content. In some cases, these encryption algorithms may encrypt content based on a cryptographic key, which may be selected or generated in a random fashion. At some point, the encrypted content may be provided to an electronic device associated with a content consumer. For instance, the consumer may pay a one-time fee or a recurring subscription fee to access the content electronically. To view the content in unencrypted form on the consumer's electronic device, the device may be required to obtain a respective content license that includes the correct cryptographic key for decrypting the content or means to securely acquire the cryptographic key.

In some cases, the decryption of content by client devices may not be an inconsequential undertaking. For instance, some lightweight devices (e.g., some handheld devices and mobile phones) may expend a significant quantity of available computing resources when decrypting and consuming content.

SUMMARY

Various embodiments of a system and method for decryption of content including partial-block discard are described. Embodiments may include receiving content to be protected and packetizing the content into multiple packets that each include content information and non-content information. Embodiments may also include generating a protected version of the content by performing chained encryption on the multiple packets. The chained encryption may result in a sequence of encrypted blocks, at least some of which include both content information and non-content information. One non-limiting example of such the protected version of the content may include encrypted frames of video and/or audio that are encrypted according to a chained encryption standard. In various cases, to prevent a break in at least one encryption chain of the sequence of encrypted blocks within the protected version of the content, embodiments include inserting discard information within the protected version of the content. The discard information may specify the location of non-content information to be discarded from one or more of the encrypted blocks after chained decryption. For instance, when a client receives such content and after the client decrypts the content, the client may utilize the discard information to locate and remove the non-content information marked for discard.

Embodiments may also include receiving a protected version of content that includes multiple encryption chains each including encrypted blocks of content. The protected version of content may include initialization vectors for decrypting the encrypted blocks of content and discard information that specifies non-content portions of one or more data blocks to be discarded after decryption. Embodiments may also include performing chained decryption on the multiple encryption chains using the initialization vectors specified by the decryption information; the chained decryption may result in a sequence of decrypted data blocks (e.g., decrypted video and/or audio). Embodiments may also include, based on the discard information, locating and removing the non-content portions of one or more data blocks in the sequence of decrypted data blocks. For example, a data block may include media content and non-media content; the non-media content portion may be removed according to the discard information.

DETAILED DESCRIPTION OF EMBODIMENTS

Various embodiments include various encryption and/or decryption keys, any of which may be generated via a key derivation function (KDF). Key derivation functions may include the completion of one or more iterations or instances of cryptographic operations in order to generate an encryption or decryption key. Examples of key derivation function may include but are not limited to any key derivation functions specified by Public Key Cryptography Standards (PKCS) (e.g., PKCS-5 or PKCS-12) or Adobe® Password Security. In various embodiments, KDFs may be utilized by any of the various components described herein to generate encryption keys for symmetric encryption.

Various portions of this detailed description may refer to “client(s)” and “server(s)” or similar terminology. For instance, various embodiments may include (among other elements) a client system or client device (or simply a “client”). It should be understood that the terms “client” and “server” do not impose any limitation on the operation, configuration, or implementation of such elements. It should be understood that these terms are used only as convenient nomenclature. Indeed, various embodiments are need not be limited by the principles of a conventional client-server architecture.

In various instances, this detailed description may refer to content items (which may also be referred to as “content data,” “content information” or simply “data” or “information”). In some instances, content items may include any information or data that may be licensed to one or more individuals (or other entities, such as business or group). In various embodiments, content may include electronic representations of video, audio, text and/or graphics, which may include but is not limited to electronic representations of videos, movies, or other multimedia, which may include but is not limited to data files adhering to Adobe® Flash® Video (.FLV) format or some other video file format whether such format is presently known or developed in the future. In various embodiments, the content items described herein may include electronic representations of music, spoken words, or other audio, which may include but is not limited to data files adhering to the MPEG-1 Audio Layer 3 (.MP3) format, Adobe® Sound Document (.ASND) format or some other format configured to store electronic audio whether such format is presently known or developed in the future. In some cases, content may include data files adhering to the following formats: Portable Document Format (.PDF), Electronic Publication (.EPUB) format created by the International Digital Publishing Forum (IDPF), JPEG (.JPG) format, Portable Network Graphics (.PNG) format, Adobe® Photoshop® (.PSD) format or some other format for electronically storing text, graphics and/or other information whether such format is presently known or developed in the future. In some embodiments, content items may include any combination of the above-described examples.

In various instances, this detailed disclosure may refer to consuming content or to the consumption of content, which may also be referred to as “accessing” content, “viewing” content, “listening” to content, or “playing” content, among other things. In some cases, the particular term utilized may be dependent on the context in which it is used. For example, consuming video may also be referred to as viewing or playing the video. In another example, consuming audio may also be referred to as listening to or playing the audio.

In various instances, this detailed description may refer to a devices configured to perform content consumption, such as client system140. In various embodiments, such a device may include but is not limited to a computing system (e.g., a desktop or laptop computer), a set-top television box, a digital audio or multimedia player (e.g., an MP3 player), a personal digital assistant (PDA), a mobile phone, a smartphone, a touchscreen phone, an e-book reader, a digital photo frame, or any other device or system configured to access, view, read, write, and/or manipulate any of the content data described herein. Any of such devices may be implemented via a computer system similar to that described with respect toFIG. 13.

Note that in various instances the description presented herein may refer to a given entity performing some action. It should be understood that this language may in some cases mean that a system (e.g., a computer) owned and/or controlled by the given entity is actually performing the action.

Note that in various instances the description presented herein may refer to a public key being associated with a private key or a public key corresponding to private key. It should be understood that such statements may mean that such a public key forms a public key-private key pair with such a private key. Additionally, in some cases, a public key-private key pair may be referred to as simply a “key pair.” Note that in various embodiments, public key-private key pairs may be generated via one or more key derivation functions, such as those described above.

FIG. 1illustrates a flow diagram of a framework in which various embodiments of the system and method for decryption of content including partial-block discard. In the illustrated embodiment, content105may represent a media object, which may include any type of media program that may be represented and/or stored as electronic content (e.g., electronic representations of audio, video, images, presentations or some combination thereof). In various embodiments, a media program may include prerecorded content including but not limited to movies or motion pictures, television programs, video clips or snippets, audio productions, as well as live content including but not limited to content conveying real-time or near-real time events (e.g., a live sporting event or competition). One or more encoder systems110may be configured to input content105and generate an encoded content item115corresponding to content105. In various embodiments, encoder systems may encode or compress content105according to one or more codecs or standards for video compression in order to generate encoded content item115. One non-limiting example of such a standard includes the H.264 standard.

For clarity of illustration, only a single encoded content item115is presented in the illustrated embodiment. However, it should be understood that the illustrated system may create multiple encoded content items. For instance, in various embodiments, different encoded content items may represent different temporal segments of the same media object. For example, if the media object were a movie, each encoded content item may represent a different temporal segment of that movie. Each temporal segment may be specified by a different time period of the movie, a different set of frames within the movie or a different scene within the movie, for example.

In the illustrated embodiment, encoded content item115may be processed by a packager component125. In various embodiments the packager component may be implemented on a packaging system120, which may in some cases be implemented by a computer system, such as that illustrated inFIG. 13described below. As illustrated, the packager component125may package and encrypt encoded content item125to generate a corresponding encrypted content item130. Additional details of the manner in which encrypted content items130are generated are described below with respect toFIGS. 2-3. Generally, to support different client systems, platforms or configurations, packager component125may be configured to generate a single encrypted content item130that may be assembled into multiple different content formats for different client systems without encrypting the content multiple times. As described in more detail below, the manner in which packager component125generates the encrypted content item may save time and/or processing resources because embodiments may require only one instance of encryption to support different content formats for different clients. In another example, the manner in which packager component125generates the encrypted content item may save storage resources (or reduce utilization of existing storage resources) by enabling multiple client content formats to be supported by the same encrypted content stored in a data store.

In various embodiments, the encrypted content item130may be provided directly to content delivery system(s)140and/or stored in a content data store(s)135. In one non-limiting example, real-time or near real-time content (e.g., content for a live sporting event) may be provided to content delivery system(s)140whereas other content may be stored in content data store(s)135and retrieved by content delivery system(s)140at a later time. Once assembler component145receives the encrypted content item130, the assembler component may assemble the encrypted content item into any of a number of formats supported by client systems155a-b; this process may be performed without re-encrypting the content. In other words, the manner in which the packaging and assembling process is performed may preserve bit compatibility among the encrypted content of different content formats.

In the illustrated embodiment, only two client systems155a-bare presented for clarity of illustration. It should be understood that in various embodiments, any number of client systems or devices may be supported. As illustrated, each client system155a-bmay be provided with a different version of the encrypted content item. In the illustrated embodiment, protected content item150aand protected content item150bmay adhere to different file formats, standards or specifications. Differences between the two versions of content items are described in more detail below.

To obtain the decryption key for decrypting a protected content item, each client system may perform a license acquisition165with license server160. For instance, each encrypted content item may have a metadata portion that includes an encrypted version of the content encryption key used to encrypt that content item. This encrypted content encryption key may have been encrypted with the public key of license server160. At165, the client system may submit this encrypted content encryption key to license server160as part of a license request. After the license server160positively authenticates the client system (if required), the license server may use its own private key to decrypt the encrypted content encryption key to determine the unencrypted version of the content encryption key. The license server may then re-encrypt the content encryption key with the client system's public key (or a public key of the application that is to consume the content) such that only that client system can properly decrypt that content encryption key. The result of this key re-encryption is provided within a response sent from the license server160to the client system. The client system may decrypt the encrypted content decryption key from that response with the corresponding private key. This content encryption key may be used to decrypt the protected content item received by that client system. In various embodiments, the client system may use this same content encryption key to decrypt subsequent ones of encrypted content items130. Of course, in various embodiments, decryption keys may change over time and license acquisition can be performed again when this happens. In other embodiments, other techniques for protecting the content encryption may be utilized. For instance, in some embodiments, when the client receives the content license, the content license may already include the content encryption key protected (e.g., encrypted) for that particular client. In other embodiments, the client systems may utilize other techniques for license acquisition or content decryption key acquisition, whether presently known or developed in the future. Note that the aforesaid techniques are non-limiting. In general, any technique by which the license server provides the license (including a decryption key) back based on the content identifier may be utilized. Each client system may consume (e.g., play) the decrypted content, such as by playing the content within a media player application. For instance, decrypted video and/or audio may be played through a media player application and human-perceptible visual and/or audio representations of the audio/video may be generated on an electronic display and/or audio transducer (e.g., a speaker) coupled to the client system.

FIG. 2illustrates an example process for generating multiple protected versions of content without redundant encryption and storage of the content. In various embodiments, the illustrated process may be performed by packager component125and/or assembler component145described above. In various embodiments, the illustrated process may be implemented on a computer system, such as computer1300ofFIG. 13. As illustrated at packetization250, encoded content200, such as encoded content item115ofFIG. 1, may be packetized into packetized content202. In some embodiments, packetizing may include parsing the encoded content into packets, each of which may include packet header information and a packet payload that includes content. In one non-limiting example, packetizing the encoded content may include generating a transport stream (TS) according to one or more standards, such as the MPEG-2 standard. In other cases, other standards or formats may be utilized to packetize the content. As illustrated at252, an aggregation process may be performed in which sets of packets may be grouped into disparate files204. In various embodiments, such files may be sized to provide streaming-like performance when such content is provided to a client system over one or more networks. For instance, the files may be large enough to house multiple packets but small enough such that multiple Hypertext Transfer Protocol (HTTP) requests may be submitted by a client system in order to obtain the files in a streaming-like fashion. In the illustrated embodiment, only two files204a-bare presented for clarity of illustration. However, it should be understood that in various embodiments the packetized content may be grouped into any number of files. In some embodiments, grouping the packetized content into different files204may be optional.

As illustrated at254, a chained encryption process may be performed on files204to create multiple encrypted blocks206that represent the files. In some embodiments, encrypted blocks206may serve as a first protected version of the content. For example, encrypted blocks206may represent protected content150aofFIG. 1described above.

Referring collectively toFIGS. 2 and 3, the chained encryption of files204is described in further detail.FIG. 3illustrates one example of chained encryption. As illustrated, files204may be parsed into a series of blocks. In various embodiments, these blocks may have a fixed width (e.g., 128 bits) dependent upon the type of encryption performed. In some embodiments, the encryption utilized may be Advanced Encryption Standard 128 bit Cipher-block chaining mode (AES-128 bit CBC mode) encryption. In other cases, other types of chained encryption may be utilized. In the illustrated embodiment, encryption may be generally performed in a sequential manner from the left to right of the Figure beginning with the first block B0and first initialization vector IV0. In various embodiments, the first initialization vector IV0may be randomly or pseudo-randomly generated. However, as described in more detail below, initialization vectors for subsequent blocks may be generated such that the encryption of each subsequent block is dependent upon the previously encrypted block. In the illustrated embodiment, initialization vector IV0(which may be the same width as the block to be encrypted) and the first block to be encrypted B0may be processed by a bit-wise exclusive-or operation. In other cases, other logic operations may be utilized in place of the exclusive-or operation. The result of the exclusive-or operation may be encrypted with a content encryption key302using block cipher encryption300. The result may be an encrypted block EB0having a size equal to that of the input block (e.g., 128 bits in this example).

In various embodiments, each subsequent block may be encrypted such that it is chained to the previous block. In other words, to encrypt (and thus also to decrypt) a given block, the encryption mechanism may be required to have knowledge of the previous encrypted block, according to some embodiments. The manner in which this aspect is implemented in various embodiments includes, for a given block, using the previous encrypted block as the initialization vector for the encryption of the given block. For instance, in the illustrated embodiment, the first encrypted block EB0may also be used as the second initialization vector IV1. Similar to the encryption of the first block, an exclusive-or operation may be performed on IV1/EB0and the second block B1, the result of which may be encrypted by block cipher encryption300using content encryption key302. The above described processes may be repeated as illustrated in order to encrypt all blocks of files204. Returning toFIG. 2, these encrypted blocks are illustrated as encrypted blocks206, which may represent encrypted versions of files204aand204b.

As illustrated at256, content samples may be generated from encrypted blocks206. In various embodiments, a content sample may correspond to a defined portion of content, such as an audio or video frame. However, in some embodiments, a sample may correspond to some other granularity of the content. As noted above, encrypted files206may be an encrypted version of files204, which may include both content information (e.g., data representing the actual content, such as audio or video data) as well as non-content information, such as packet header (e.g., a transport header, such as that defined by the MPEG-2 standard or another standard defining a media transport stream) or file header information. However, in various embodiments, such non-content information may serve no meaningful role within the context of a sample-based file format that is not packetized or formatted according to the format of files204. For various reasons (e.g., to avoid unnecessary overhead within the sample-based content208), sample generation256may extract the encrypted blocks206that correspond to actual content information while disregarding non-content information. The extracted blocks may be assembled into a sample208as illustrated. While only one sample is presented for clarity of illustration, it should be understood that multiple samples may be generated in various embodiments. In various embodiments, this extraction process, by virtue of discarding some or all of the encrypted blocks206that correspond to non-content information, may break the encryption chain(s) described above. For instance, performing block-based decryption (described below with respect toFIG. 5) on the blocks of a sample that omits one or more of blocks206may result in an incorrect determination of initialization vectors (e.g., since initialization vectors may be dependent upon previous blocks) and thus an incorrect decryption result. However, in various embodiments, this situation may be avoided by storing the appropriate initialization vectors in the illustrated sample header210of one or more of the samples. For example, sample208is illustrated as including three different sets of encrypted blocks denoted as encryption chains260,262, and264. In various embodiments, while the content of these encrypted blocks may represent a contiguous (or near contiguous) portion of content, there may exist encryption boundaries where the encryption is non-continuous (e.g., due to broken chains during the extraction of content blocks from encrypted blocks206). Accordingly, for the first block of each encryption chain260-264in a given sample, the sample generation process may store the initialization vectors necessary to start the chained decryption of each chain within the sample header of that given sample. In this way, when a decryption process (e.g., on the client system) encounters an encryption boundary between the encryption chains, the encryption process may access the appropriate initialization vector from the sample header and decryption may resume.

In embodiments, the sample generation process may select the initialization vectors that are included in the sample header through the following techniques. When analyzing encrypted blocks206, for each content block that is immediately preceded by a non-content block (e.g., a block containing non-content information, such as packet header or file header information), the sample generation process may store that non-content block as an initialization vector within the sample header of the sample being generated. As described in more detail below, the initialization vectors stored in the sample header may be utilized to decrypt different chains of encrypted blocks in the respective sample.

FIG. 4illustrates an example client system including decryption and consumption components, according to various embodiments. In the illustrated embodiment, client system400may be implemented by a computer system or other electronic devices, such as those described below with respect to the computer system ofFIG. 13. In various embodiments, the client systems described above (e.g., client systems155a-155b) may be configured in a manner similar to that of client system400.

As illustrated, client system400may receive one or more encrypted samples402, which may be configured in a manner similar to the samples described above. For example, client system400may receive multiple samples that represent audio and/or video frames, such as frames representing a media program (described above). For clarity of illustration, only one sample402is illustrated inFIG. 4. However, it should be understood that in various embodiments, the decryption and consumption techniques described below may be performed on multiple samples.

In various embodiments, decryption component404may be configured to perform block-based decryption on each encrypted sample. In various embodiments, to decrypt a given sample, decryption component404may be configured to perform the process illustrated inFIG. 5, which is described in more detail below. Generally, decryption component404may be configured to perform decryption on multiple blocks from a sample by using the initialization vectors from the sample header. The decrypted blocks are illustrated as decrypted content sample(s)406, which may be consumed (e.g., played) by content consumption component408. Content consumption component408may be configured to generate one or more representations of the content, such as by generating a graphical and/or audio representation of the content (e.g., on a display, speaker, and/or other device used for content consumption).

FIG. 5illustrates a block diagram of the process for decrypting a given sample, according to various embodiments. The techniques ofFIG. 5may be implemented by the client systems described above. For instance, decryption component404may utilize the illustrated techniques to decrypt samples received on the client system. For clarity of illustration, only one sample500is illustrated inFIG. 5. However, it should be understood that in various embodiments, the decryption and consumption techniques described below may be performed on multiple samples. Similarly, while only two different encryption chains504and506are illustrated, any number of encryption chains may be present within a given sample in various embodiments. In the illustrated example, each encryption chain includes three blocks of encrypted content. However, in various embodiments, a given encryption chain may include any quantity of blocks, which may or may not be equal to the quantity of blocks in other encryption chains of the sample.

In the illustrated embodiment, the first encrypted block in the sample EB0may be extracted and decrypted with content encryption key510. In various embodiments, the encrypted blocks may be symmetrically encrypted. Accordingly, content encryption key510may be the same as the key originally utilized to encrypt the content. In various embodiments, key510may be obtained through a license acquisition process, such as that described above with respect toFIG. 1. As illustrated, the first encrypted block EB0of the sample may be decrypted using the content encryption key510. Furthermore, in accordance with chained decryption, the appropriate initialization vector IV0may be applied to the decryption result to determine the first decrypted block B0of decrypted blocks512. In the illustrated embodiments, this is performed through an exclusive-or operation. The particular operation utilized will typically match the operation utilized to apply the initialization vector during the encryption process. As illustrated, the first initialization vector may be obtained from sample header502. The decryption of the second and third blocks EB1and EB2to generate decrypted blocks B1and B2may be performed in a similar manner with the exception being that the initialization vectors IV1and IV2used to decrypt these blocks may be equivalent to the previous encrypted block, which is consistent with the techniques used to encrypt the blocks, such as described above with respect toFIG. 3. However, as illustrated, encrypted block EB3belongs to the second encrypted chain506. Accordingly, block EB2cannot be utilized to as the initialization vector to decrypt block EB2. In this case, the correct initialization vector IV3may be extracted from sample header502. (As described above with respect to sample generation256, the initialization vectors need to start chained decryption of each chain may be stored in the sample header of each sample). In this way, the decryption process may be correctly performed across different encryption chains within the same sample.

In various embodiments, sample header500may include additional information to be used during decryption. For instance, for each set of blocks that represents a distinct encryption chain, sample header500may specify the size (e.g., in blocks or bits) and/or position of that set within the sample. Such information may be utilized by the client system for determining which initialization vectors apply to which blocks in the sample. In embodiments utilizing partial encryption, some sets of blocks may be unencrypted. For instance, in some embodiments, it may not be necessary for all sets of blocks to be encrypted. In one example, samples may be partially encrypted such that content consumption (e.g., playback) will be sufficiently disrupted for unauthorized clients (e.g., clients lacking the appropriate license and/or decryption keys), thus providing a deterrent to trying to consume the content without the proper license and/or decryption keys while also conserving computing resources and/or time. For instance this technique may conserve computing resources and/or time on the packaging side (because at least some sets of blocks are left unencrypted) and on the client side (e.g., because at least some sets of block do not need to be decrypted). As one example, consider an alternate configuration for sample208described above. If sample208were encrypted using partial encryption, at least some of the blocks may remain in the clear form whereas other blocks remain encrypted. For instance, instead of three encryption chains260,262, and264, the sample may alternatively include encryption chain260, encryption264and the remaining set of blocks could be left unencrypted (e.g., blocks corresponding to encryption chain262may be left unencrypted). In various embodiments, sample header502may also include information that identifies unencrypted blocks. For instance, sample header205may identify one or more blocks or a range of blocks that are not encrypted. Such information may be utilized by the client system for determining blocks that do not require decryption, thereby saving processing resources and/or time as described above. Any of the aforesaid information may be captured during the sample generation process256and stored as part of a given sample's header information.

Various implementations of the chained decryption described herein may include multiple phases, such as the initial set up of the initialization vector for decryption, the actual decryption of the encrypted block, and a finalization step to account for any padding as well as the purging of residual information. In various embodiments, some portions of chained decryption may be more costly from a performance perspective than other portions of chained decryption based on which block in an encryption chain is being decrypted. For instance, the setup actions of loading an initialization vector from a sample header into the block cipher and the corresponding block decryption may be more taxing from a time and/or processing (e.g., processing cycles) perspective relative to the decryption of a subsequent block in the encryption chain. For example, the decryption of block EB0may require more time and/or processing cycles relative to the decryption of block EB1as the decryption of EB0is the first block in encryption chain504. Accordingly, various embodiments may utilize decryption techniques that reduce or minimize the time and/or processing impact of beginning the decryption of a new decryption chain.FIG. 6illustrates a block diagram of an optimized process for decrypting a given sample, according to various embodiments. The techniques ofFIG. 6may be implemented by the client systems described above. For instance, decryption component404may utilize the illustrated techniques to decrypt samples received on the client system. For clarity of illustration, only one sample600is illustrated inFIG. 6. However, it should be understood that in various embodiments, the decryption and consumption techniques described below may be performed on multiple samples. Similarly, while only two different encryption chains604and608are illustrated, any number of encryption chains may be present within a given sample in various embodiments. In the illustrated example, each encryption chain includes three blocks of encrypted content. However, in various embodiments, a given encryption chain may include any quantity of blocks, which may or may not be equal to the quantity of blocks in other encryption chains of the sample.

As illustrated at610, the decryption component may generate a sequence of encryption chains with interleaved initialization vectors. For instance, sequence610includes encryption chain604, followed by the initialization vector (IV4) for the next encryption chain608. As illustrated, this initialization vector is actually inserted inline with the data and, as described below, will be decrypted in the same (or similar) manner as the blocks of the encryption chains. As described in more detail below, due to the nature of chained decryption, this may enable the decryption component to avoid the overhead (e.g., time and/or processing cycles) associated with the set up aspect of chained decryption for one or more subsequent decryption chains.

In various embodiments, the first block of the sequence, EB0, may be loaded into block cipher612and decrypted with content encryption key614and a first initialization vector IV0retrieved from sample header602of sample600. The result of this decryption process may be decrypted block B0. Next, encrypted block EB1from sequence610is decrypted using CEK614and an initialization vector IV1that is equivalent with the previous encrypted block EB0to generate decrypted block B1. Encrypted block EB2is decrypted in a similar manner. Also illustrated, the initialization vector IV4for the second encryption chain608is also decrypted as if it were an encrypted block of a decryption chain. For instance, IV4is retrieved from sequence610and decrypted with CEK614and an initialization vector IV3that is equal to the previous encrypted block EB2. The initialization vector IV4will decrypt to “garbage” in the sense that it does not represent any actual content (e.g., audio or video) where as the decrypted blocks of the encryption chains will be partially or entirely comprised of content. Accordingly, the decrypted initialization vector is illustrated as a discard block616in the illustrated embodiment. The decryption component may discard or exclude this block from the sequence of unencrypted blocks628that are consumed by a playback component, such as content consumption component408ofFIG. 4.

While decrypting IV4to generate a discard block that is discarded may incur some overhead (e.g., time and/or processing cycles), this aspect of the decryption also provides performance enhancements that outweigh the costs of decrypting IV4. For instance, because IV4is actually decrypted during chained decryption, the decryption component is relieved of performing the set up process for decrypting the subsequent encryption chain606. Instead, the current instance of chained decryption may proceed with the decryption of block EB6with CEK614and IV4, which is equivalent to the previous encrypted block (in this case, also IV4). As illustrated, instead of the set up process of retrieving the initialization vector of the second encryption chain (i.e., IV4) is streamlined due to its position as the previous encrypted block. By enabling the encryption component to continue the chained decryption in this manner, as opposed to performing a new set up process to decrypt the second encryption chain (similar to the process illustrated inFIG. 5), embodiments may improve the performance of the decryption component (e.g., via reduced time and/or processing cycles for decryption). By creating the sequence of encryption chains with interleaved IVs610and using the techniques described above, the decryption component may simply decrypt the entire sequence610as if it were one contiguous encryption chain even though the sequence comprises multiple, different encryption chains from the sample.

As described above, in some embodiments, samples may be partially encrypted such that content consumption (e.g., playback) will be sufficiently disrupted for unauthorized clients (e.g., clients lacking the appropriate license and/or decryption keys), thus providing a deterrent to trying to consume the content without the proper license and/or decryption keys while also conserving computing resources and/or time. For instance this technique may conserve computing resources and/or time on the packaging side (because at least some sets of blocks are left unencrypted) and on the client side (e.g., because at least some sets of block do not need to be decrypted). In accordance with these techniques, one or more unencrypted blocks of content606may also be included within a given sample. As these blocks are already in an unencrypted state, the decryption component may avoid performing chained decryption on these blocks. Instead, the decryption component may insert these blocks into the appropriate position within the sequence of unencrypted blocks628. This sequence may then be consumed (e.g., played) by the content consumption component of the client (e.g. content consumption component408).

FIG. 7illustrates an example method for performing chained decryption on a sequence of encryption chains with interleaved initialization vectors. In various embodiments, the illustrated method may be performed by a decryption component, such as decryption component404of client system400. In various embodiments, the illustrated method may be performed by one or more computers, such as computer1300ofFIG. 13. As illustrated at block702, the method may include receiving a protected version of content that comprises different encryption chains each including encrypted blocks of content. The protected version of content may also include decryption information for decrypting the encrypted chains, which may include at least some initialization vectors that are distinct from the content. For instance, one example of the protected version of content may include one or more samples, such as the samples described above including but not limited to sample600. An example of the decryption information may include any of the sample headers described above, including but not limited to sample header602. As described above, these sample headers may store an initialization vector for each encryption chain within the sample.

As illustrated at block704, the method may also include performing chained decryption on a particular sequence of data blocks including multiple encryption chains from the protected version of the content and at least some of the initialization vectors. Within this sequence, at least some of the initialization vectors may be positioned between the encryption chains such that during the chained decryption the initialization vectors are decrypted in sequence with the data blocks of the encryption chains; the chained decryption may result in a sequence of decrypted data blocks including decrypted initialization vectors. One example of decrypting such a sequence is described above with respect to the creation and decryption of the sequence of encryption chains with interleaved IVs610.

As illustrated at block706, the method may further include generating a decrypted version of the content by excluding the decrypted initialization vectors from the sequence of decrypted data blocks. One example of excluding decrypted initialization vectors from a sequence of decrypted data blocks includes the exclusion of block616from sequence618described above.

In various embodiments, the content may include one or more unencrypted data blocks representing content. In these cases, the method may include finalizing the generation of the decrypted version of the content by inserting the unencrypted data blocks into the sequence of decrypted data blocks. One example of this insertion is illustrated inFIG. 6by the insertion of unencrypted blocks B3, B4, and B5into the sequence of unencrypted blocks618.

In some embodiments, some encrypted blocks of the samples may include both content information (e.g., information representing video and/or audio) and non-content information. In some cases, this may occur due to manner in which the process illustrated inFIG. 2is performed. For instance, while blocks that wholly comprise non-content information may be removed during sample generation256, there may be one or more blocks that include both content information and non-content information as the boundaries between content and non-content information and the boundaries between blocks may not always coincide when the data is divided up into blocks. In one example, the non-content information may include header information packet header or file header information from packetized content202or files204a-billustrated inFIG. 2. One example of an encrypted block that includes both content information and non-content information is illustrated inFIG. 8. As illustrated, encrypted block800may include content information802(e.g., information representing audio and/or video) as well as non-content information804(e.g., packet header or file header information). In various instances, blocks that include both content information and non-content information may be referred to as partial media blocks (whether encrypted or unencrypted). As described in more detail below, instead of breaking an encryption chain when encountering a partial media block, the encryption process of various embodiments may instead encrypt the partial media block as part of an encryption chain of multiple blocks. Additionally, the encryption process may embed discard information within the content (e.g., as part of header information); the discard information may specify the location (e.g., a bit or byte range of a specific block) of non-content information to be removed after decryption. As described in more detail below, this discard information may be used on the client side to discard the non-content information. In various embodiments, discard information may be utilized for full blocks as well, such as when an initialization vector is inserted into the content without being indicated as a separate initialization vector in the header information.

One example of content encrypted in this manner is illustrated inFIG. 9. As illustrated a sample900may be generated including multiple encryption chains902and904according to techniques similar to those described above (e.g., as inFIG. 2). However, in this case, one of the encryption chains (chain902) includes a encrypted partial media block illustrated as encrypted block800. Furthermore, in addition to the header information described above, sample header906may also include discard information that specifies the location of the non-content information of encrypted block800. As described in more detail below, this discard information may be used on the client side to discard the non-content information.

FIG. 10illustrates an example method for performing chained encryption on encrypted content that includes partial media blocks as part of encryption chains. In various embodiments, the illustrated method may be performed by a packager component or assembler component, such as the packager component or assembler component ofFIG. 1. In various embodiments, the illustrated method may be performed by one or more computers, such as computer1300ofFIG. 13.

As illustrated at block1002, the method may include receiving content to be protected. For instance, one example of receiving content to be protected may include the receipt of encoded content item115ofFIG. 1. As illustrated at block1004, the method may include packetizing the content into multiple packets that each include content information and non-content information. For instance, packetizing may include parsing the encoded content into packets, each of which may include packet header information and a packet payload that includes content. In one non-limiting example, packetizing the encoded content may include generating a transport stream (TS) according to one or more standards, such as the MPEG-2 standard. In other cases, other standards or formats may be utilized to packetize the content.

As illustrated at block1006, the method may include generating a protected version of the content by performing chained encryption on the multiple packets, the chained encryption resulting in a sequence of encrypted blocks, at least some of the encrypted blocks of the sequence including both content information and non-content information. In various embodiments, this portion of the method may include performing any of the above-described encryption techniques on a sequence of blocks that includes at least some partial media blocks. These encryption techniques may include but are not limited to the chained encryption ofFIG. 3. For instance, the encryption techniques ofFIG. 3may be applied to a sequence of blocks that include at least some partial media blocks.

As illustrated at block1008, the method may include, to prevent a break in at least one encryption chain of the sequence of encrypted blocks within the protected version of the content, including discard information within the protected version of the content, the discard information specifying the location of non-content information to be discarded from one or more of the encrypted blocks after chained decryption. For instance, the illustrated method may include one or more samples similar to sample900; discard information may be included within the sample header to specify which portions of one or more blocks may be discarded after decryption. By encrypting the partial media blocks and including discard information for removing the non-content information after decryption on the client side, embodiments may enable the encryption process to avoid breaking an encryption chain due to the presence of non-content information.

FIG. 11illustrates a flow diagram of the decryption of content including partial media blocks on the client side. As illustrated, a sample1100may include multiple encryption chains1102-1104(and others, not illustrated). At least some of the blocks forming the encryption chains may be partial media blocks that include content information and non-content information. For instance, encryption chain1104includes encrypted block800in the illustrated example. Additionally, sample header1106may also include discard information that specifies the location of the non content information. For instance, the discard information may specify a bit or byte range of encrypted block800that should be discarded after decryption. The sample header may also include any of the header information described above, such as initialization vectors for each of the encryption chains.

As illustrated, chained decryption1108may be performed on the encryption chains of the sample to generate decrypted blocks1112. This process may include sourcing one or more IVs1110from the sample header to decrypt the encryption chains using any of the chained decryption techniques described above (e.g., as described with respect toFIGS. 5 and 6). As illustrated, decrypted blocks1112may include a decrypted version of encrypted block800, illustrated as partial media block1113. Partial media block1113may include both content and non-content information. To discard the non-content information, a discard process1114may be performed. During discard process1114, discard information1116may be retrieved from sample header1106. This information may be utilized to locate and remove the non content information of one or more blocks of decrypted blocks1112. Discard process1114may result in decrypted content1116, which may be similar to decrypted blocks1112with the exception that the non-content information of partial media block1113has been removed.

In various embodiments, the discard techniques described herein need not be limited to discarding a partial block. Indeed, in some cases, these discard techniques may be utilized to discard portions of data equal to or greater than an entire block. For example, depending on the media formats or encryption schemes utilized to generate the encrypted blocks (e.g.,FIG. 2), multiple blocks of content may be discarded. For instance, some blocks pertaining to the file based format204may not be needed for the sample based format208. In another example, in some cases, an initialization vector can be inserted in the bit stream post-encryption and marked as information that is to be discarded post-decryption. In this case, the initialization vector may be up to a full block.

FIG. 12illustrates an example method for performing chained decryption on content that includes partial media blocks as part of encryption chains. In various embodiments, the illustrated method may be performed by a decryption component, such as decryption component404ofFIG. 4. In various embodiments, the illustrated method may be performed by one or more computers, such as computer1300ofFIG. 13.

As illustrated at block1202, the method may include receiving a protected version of content that comprises multiple encryption chains each including encrypted blocks of content. The protected version of content may include one or more initialization vectors for decrypting the encrypted blocks of content and discard information that specifies non-content portions of one or more data blocks to be discarded after decryption. Once example of the protected version of content includes one or more samples, such as sample1100ofFIG. 1. In this example, the header information may contain the decryption information (e.g., discard information, initialization vectors).

As illustrated at block1204, the method may include performing chained decryption on the multiple encryption chains using the initialization vectors specified by the decryption information; the chained decryption may result in a sequence of decrypted data blocks. For instance, the chained encryption may result in performing any of the chained decryption techniques described herein, such as those ofFIGS. 5 and 6.

As illustrated at block1206, the method may include, based on the discard information, locate and remove the non-content portions of one or more data blocks in the sequence of decrypted data blocks. One example of this removal process is described above with respect to discard process1114. For instance, this portion of the method may include retrieving discard information from a sample header; the discard information may specify a bit or byte range (within one or more data blocks) that includes non-content information to be removed. For instance, using encrypted block800described above as an example, the discard information may be used to locate and remove the decrypted version of non-content information804. In this way, the non-content information will not interfere with the playback of the actual content at content consumption time.

While the discard techniques described herein are largely described within the context of chained decryption (e.g., AES-128 bit CBC mode), these techniques may also be applied to other block-based encryption/decryption schemes. For instance, the techniques described herein may also be applied to other modes of encryption/decryption, including but not limited to a counter mode (e.g., AES-128 bit CTR mode). Instead of chaining blocks together according to chained encryption/decryption techniques, counter modes of encryption/decryption may utilize a nonce similar to the initialization vectors described herein combined (e.g., XOR, concatenation, addition) with a counter value in order to encrypt/decrypt blocks. The discard techniques described herein apply to counter modes of encryption/decryption as well as other types of block-based cryptography, whether presently known or developed in the future.

Secure Communication

In various embodiments, various elements of the illustrated framework may be associated with respective public key-private key pairs, such as key pairs utilized in Public Key Infrastructure (PKI). In the illustrated framework, a first element may securely transfer data to a second element by encrypting that data with the second element's public key. In this manner, only the second element will be able to decrypt the encrypted data to access the unencrypted data, according to various embodiments. For instance, since in various embodiments knowledge of the private key may be required to decrypt the data and since the second element may be the only element that has knowledge of its own private key, the second element may be the only element able to decrypt the data with the correct private key. Note that the aforesaid techniques may in various embodiments be utilized for any transfer of data within the system ofFIG. 1. One non-limiting example includes the “binding” of a content license to client system at license acquisition time. For example, the license server might obtain a public key for the client system and encrypt a content license with that public key prior to transferring the license to the playback device. In this example, only the client system will be able to decrypt the license (since the playback device may be the only element with knowledge of the correct private key). In some embodiments, a given element may trust another element with knowledge of its private key (thereby allowing the other element to decrypt data encrypted with the given element's public key). In various embodiments, the public keys described herein may be obtained from a public key certificate, such as a certificate provided by a certificate authority (not illustrated) in PKIs. One example of such a certificate is an X.509 certificate (in other cases, other types of public key certificates may be utilized).

Example Computer System

Various embodiments of a system and method for decryption of content including partial-block discard, as described herein, may be executed on one or more computer systems, which may interact with various other devices. One such computer system is computer system1300illustrated byFIG. 13, which may in various embodiments implement any of the systems, devices, elements or methods illustrated inFIGS. 1-12. For instance, any of the functionality described above may be stored in memory as processor-executable executable program instructions1322(e.g., program instructions executable by processor(s)1310). In one non-limiting example, instructions1322may implement one or more decryption components404or content consumption components408, as illustrated. In the illustrated embodiment, computer system1300includes one or more processors1310coupled to a system memory1320via an input/output (I/O) interface1330. Computer system1300further includes a network interface1340coupled to I/O interface1330, and one or more input/output devices1350, such as cursor control device1360, keyboard1370, and display(s)1380. In some cases, it is contemplated that embodiments may be implemented using a single instance of computer system1300, while in other embodiments multiple such systems, or multiple nodes making up computer system1300, may be configured to host different portions or instances of various embodiments. For example, in one embodiment some elements may be implemented via one or more nodes of computer system1300that are distinct from those nodes implementing other elements.

In various embodiments, computer system1300may be a uniprocessor system including one processor1310, or a multiprocessor system including several processors1310(e.g., two, four, eight, or another suitable number). Processors1310may be any suitable processor capable of executing instructions. For example, in various embodiments processors1310may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x96, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In multiprocessor systems, each of processors1310may commonly, but not necessarily, implement the same ISA.

System memory1320may be configured to store program instructions1322and/or data1332accessible by processor1310. In various embodiments, program instructions1322may be executable by the processor(s) to implement the functionality of any packaging component, assembler component, encryption component, decryption component, or client system described above. As illustrated, in various embodiments, data1332may store one or more encrypted content items such as encrypted samples402, from which decrypted content, such as decrypted samples406, may be generated or assembled. In various embodiments, system memory1320may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing any of the elements of the framework described above may be stored within system memory1320. In other embodiments, program instructions and/or data may be received, sent or stored upon different types of computer-accessible media or on similar media separate from system memory1320or computer system1300.

In one embodiment, I/O interface1330may be configured to coordinate I/O traffic between processor1310, system memory1320, and any peripheral devices in the computer system, including network interface1340or other peripheral interfaces, such as input/output devices1350. In some embodiments, I/O interface1330may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory1320) into a format suitable for use by another component (e.g., processor1310). In some embodiments, I/O interface1330may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface1330may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments some or all of the functionality of I/O interface1330, such as an interface to system memory1320, may be incorporated directly into processor1310.

Network interface1340may be configured to allow data to be exchanged between computer system1300and other devices attached to a network (e.g., network1385), such as other computer systems (e.g., any element ofFIG. 1), or between nodes of computer system1300. In various embodiments, network interface1340may support communication via wired or wireless general data networks, such as any suitable type of Ethernet network, for example; via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks; via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol.

Input/output devices1350may, in some embodiments, include one or more display terminals, keyboards, keypads, touchpads, scanning devices, voice or optical recognition devices, or any other devices suitable for entering or accessing data by one or more computer systems1300. Multiple input/output devices1350may be present in computer system1300or may be distributed on various nodes of computer system1300. In some embodiments, similar input/output devices may be separate from computer system1300and may interact with one or more nodes of computer system1300through a wired or wireless connection, such as over network interface1340.

In some embodiments, the illustrated computer system may implement any of the processes or methods described above, such as those ofFIGS. 2-3,5-7, and10-12. In other embodiments, different elements and data may be included.