System and method for protecting elementary bitstream incorporating independently encoded tile
Patent Information
- Application Number
- JP2024001116
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2014-08-07
- Filing Date
- 2024-01-09
- Publication Date
- 2025-02-10
- Estimated Expiration
- 2035-08-07
AI Technical Summary
Existing digital video compression techniques face challenges in protecting content from copyright infringement and illegal distribution, particularly in high-efficiency video coding standards like HEVC, where encrypting entire frames leads to dependencies that prevent proper playback if parts are not decrypted.
Implementing partial frame encryption by encrypting only specific portions of independently decodable units, such as tiles, within a frame, using standards like HEVC, to allow parallel processing and independent decryption of these units.
This approach enhances security by ensuring that partial frame encryption reduces processing overhead and allows independent decryption of video content, preventing playback issues when only certain parts are encrypted.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to the field of encryption and decryption of video information. More specifically, the present invention is directed to a method and system for generating a protected stream of compressed digital video using partial frame encryption. [Background technology]
[0002] Existing digital video compression techniques are complex processes that rely on a variety of techniques in converting (i.e., "encoding") units of uncompressed video data into coded form. Such coding allows fewer bits to be used in representing the content of the original uncompressed video data. The resulting coded data can be transformed using an inverse process (i.e., "decoding") to produce digital video units of data that are either visually similar or identical to the original data. Modern techniques of digital video compression can achieve very high levels of compression.
[0003] The Motion Pictures Experts Group (MPEG) and the International Standards Organization (ISO) have produced various international standards that specify video compression and decompression algorithms for video encoding. These standards include the newer High Efficiency Video Coding (HEVC) standard, which has significantly improved compression efficiency over MPEG-1, MPEG-2, MPEG-4, H.261, H.264, and its predecessors. Specifically, HEVC can achieve twice the compression ratio at the same subjective quality compared to the previous H.264 standard. To achieve these compression optimizations, the HEVC standard has introduced several new tools that are specifically designed for parallel processing of video content on multi-core processor architectures. Specifically, many smartphone and tablet architectures currently available on the market utilize multi-core processors and are therefore capable of playing HEVC content using those multi-core architectures. Additionally, with the growth of video traffic across networks, the HEVC standard provides certain tools that alleviate some of the bandwidth requirements for distributing high quality content.
[0004] Protecting the distribution of digital content from piracy and other types of illegal distribution is yet another concern for content providers. The term Digital Rights Management (DRM) is utilized to describe access control techniques used to control access to and / or copying of digital content. DRM systems typically involve the use of cryptographic information to control access to or protect portions of the content. Content protection is typically achieved using cryptographic information, such as (but not limited to) one or more encryption keys to encrypt the content.
[0005] Currently, there are various types of encryption schemes that can be used to protect data. In the digital world, encryption is often implemented by using a set of bits of some length known as a "key" to perform a predictable transformation on a unit of data. This results in another unit of data that cannot be "read" without knowledge of the key used to perform the transformation. The process of encryption is only readily reversible to the extent that the encryption key or its counterpart (e.g., a "public" key) is available for use in transforming or "decrypting" the encrypted data back to its original form. Video data is often encrypted using symmetric block ciphers, for example, following the Data Encryption Standard (DES) or Advanced Encryption Standard (AES). The particular techniques used to encrypt digital content may nevertheless consume additional processing resources that must be considered with respect to the encoding and distribution of the content across a network. Summary of the Invention [Means for solving the problem]
[0006] According to an embodiment of the present invention, a system and method for partial frame encryption is disclosed. In one embodiment, the method receives a video bitstream including several frames, each frame including several independently encoded compressed units within the frame, encrypts a portion of each of several compressed units within the several frames, and generates an output bitstream including several independently encoded compressed units including the encrypted portions of the compressed units.
[0007] In further embodiments of the present invention, a compression unit is an independently decodable portion of a particular frame of video such that it does not depend on other compression units within that particular frame in order to be decoded.
[0008] In yet a further embodiment of the present invention, the method further parses the metadata header to identify a location of the compression unit within a frame of the video, and encrypts a portion of the video bitstream based on the location of the compression unit.
[0009] In yet a further embodiment of the present invention, the method encrypts a portion of each compression unit of a plurality of compression units by determining that the compression unit is enabled based on information in a header associated with the video bitstream.
[0010] Still in yet a further embodiment of the present invention, the method further comprises encrypting a portion of each compression unit within the frame of the video.
[0011] In yet another embodiment of the invention, the portion is selected from the group consisting of: i) the first N bytes of the compression unit, ii) the last N bytes of the compression unit, iii) a central portion of N bytes within the compression unit, and v) a pattern of N bytes within the compression unit.
[0012] In yet another embodiment of the present invention, the compression units are tiles in the High Efficiency Video Coding (HEVC) standard, and the video bitstream is encoded based on the HEVC standard.
[0013] Still further, in yet another embodiment of the present invention, the method further includes parsing a picture parameter set (PPS) of the HEVC video bitstream to identify a structure of tiles within the video bitstream, and encrypting multiple portions of the tiles based on the structure.
[0014] Again, in another embodiment of the present invention, the method further includes encrypting a portion of each of the several compression units using a common encryption format (CENC) for encrypting multiple portions.
[0015] Yet another embodiment of the present invention includes a content encoder including a processor configured to communicate with a memory, the memory containing an encoder application that directs the processor to receive a video bitstream including a number of frames, each frame including a number of independently encoded compression units within the frame, encrypt a portion of each of the number of compression units in the number of frames, and generate an output bitstream including the number of independently encoded compression units including the encrypted portions of the compression units.
[0016] In another embodiment of the present invention, a compression unit is an independently decodable portion of a particular frame of video such that it does not depend on other compression units within that particular frame in order to be decoded.
[0017] In yet another embodiment of the present invention, the encoder application further instructs the processor to parse the metadata header to identify a location of the compression unit within a frame of the video, and to encrypt a portion of the video bitstream based on the location of the compression unit.
[0018] In yet another embodiment of the present invention, the step of encrypting a portion of each of the compression units includes determining that the compression unit is enabled based on information in a header associated with the video bitstream.
[0019] Again, in yet another embodiment, the encoder application further directs the processor to encrypt a portion of each compression unit within a frame of video.
[0020] Again, in another embodiment of the invention, the portion is selected from the group consisting of: i) the first N bytes of the compression unit, ii) the last N bytes of the compression unit, iii) a central portion of N bytes within the compression unit, and v) a pattern of N bytes within the compression unit.
[0021] In another further embodiment of the present invention, the compression units are tiles in the High Efficiency Video Coding (HEVC) standard, and the video bitstream is encoded based on the HEVC standard.
[0022] Again, in yet another embodiment of the present invention, the encoder application further instructs the processor to parse a picture parameter set (PPS) of the HEVC video bitstream to identify a structure of tiles within the video bitstream, and to encrypt portions of the tiles based on the structure.
[0023] Again, in a still further embodiment of the present invention, encrypting a portion of each of the plurality of compression units includes using a common encryption format (CENC) to encrypt the portions.
[0024] In another embodiment of the present invention, a content decoder includes a processor configured to communicate with a memory containing a decoder application that directs the processor to receive a video bitstream including a number of frames, each frame including multiple independently encoded compression units within the frame, decrypt a portion of each of the number of compression units within the number of frames, and generate a decoded video that is output for playback.
[0025] In yet another embodiment of the present invention, a compression unit is an independently decodable portion of a particular frame of video such that it does not depend on other compression units within that particular frame in order to be decoded.
[0026] Again, in yet another embodiment of the present invention, the decoder application further instructs the processor to parse the metadata header to identify a location of the compression unit within a frame of the video, and to decrypt a portion of the video bitstream based on the location of the compression unit.
[0027] Again, in yet another embodiment of the present invention, the step of decrypting a portion of each of the several compression units includes determining that the compression unit is enabled based on information in a header associated with the video bitstream.
[0028] In yet another further embodiment of the present invention, the decoder application further directs the processor to decode a portion of each compression unit within a frame of video.
[0029] Again, in yet another embodiment of the present invention, the portion is selected from the group consisting of: i) the first N bytes of the compression unit, ii) the last N bytes of the compression unit, iii) a central portion of N bytes within the compression unit, and v) a pattern of N bytes within the compression unit.
[0030] In yet a further embodiment of the present invention, the compression units are tiles in the High Efficiency Video Coding (HEVC) standard, and the video bitstream is decoded based on the HEVC standard.
[0031] Yet in another embodiment of the present invention, the decoder application further instructs the processor to parse a picture parameter set (PPS) of the HEVC video bitstream to identify a structure of tiles within the video bitstream, and to decode portions of the tiles based on the structure.
[0032] In yet another embodiment of the present invention, decrypting a portion of each of the plurality of compression units includes using a common encryption format (CENC) to decrypt the portions. The present specification also provides, for example, the following items: (Item 1) A non-transitory machine-readable medium containing processor instructions, execution of the instructions by a processor causing the processor to: receiving a video bitstream comprising a plurality of frames, each frame comprising a plurality of independently encoded compression units within said frame; encrypting a portion of each of a plurality of compression units in a plurality of frames; generating an output bitstream comprising the plurality of independently encoded compressed units, including the encrypted portions of the compressed units; A non-transitory machine-readable medium for causing a process to proceed, comprising: (Item 2) 2. The non-transitory machine-readable medium of claim 1, wherein a compression unit is an independently decodable portion of a particular frame of a video such that it does not depend on another compression unit in the particular frame in order to be decoded. (Item 3) parsing the metadata header to identify a location of the compression unit within a frame of the video; encrypting a portion of the video bitstream based on the location of the compression unit; Item 1. The non-transitory machine-readable medium of item 1, further comprising: (Item 4) 2. The non-transitory machine-readable medium of claim 1, wherein encrypting the portion of each compression unit of the plurality of compression units includes determining that a compression unit is enabled based on information in a header associated with the video bitstream. (Item 5) 2. The non-transitory machine-readable medium of claim 1, further comprising: encrypting a portion of each compression unit in a frame of the video. (Item 6) 6. The non-transitory machine-readable medium of claim 5, wherein the portion is selected from the group consisting of: i) the first N bytes of the compression unit, ii) the last N bytes of the compression unit, iii) a central portion of N bytes within the compression unit, and iv) a pattern of N bytes within the compression unit. (Item 7) 2. The non-transitory machine-readable medium of claim 1, wherein the compression units are tiles within a High Efficiency Video Coding (HEVC) standard and the video bitstream is encoded based on the HEVC standard. (Item 8) parsing a picture parameter set (PPS) of the HEVC video bitstream to identify a structure of the tiles within the video bitstream; encrypting portions of the tile based on the structure; 8. The non-transitory machine-readable medium of item 7, further comprising: (Item 9) 2. The non-transitory machine-readable medium of claim 1, wherein encrypting the portion of each compression unit of the plurality of compression units includes using a common encryption format (CENC) to encrypt the portions. (Item 10) 1. A content encoder comprising: a processor configured to communicate with a memory, the memory containing an encoder application; Equipped with The encoder application may include: receiving a video bitstream comprising a plurality of frames, each frame comprising a plurality of independently encoded compression units within said frame; encrypting a portion of each of a plurality of compression units in a plurality of frames; generating an output bitstream comprising the plurality of independently encoded compressed units, including the encrypted portions of the compressed units; The content encoder is instructed to: (Item 11) Item 11. The content encoder of item 10, wherein a compression unit is an independently decodable portion of a particular frame of video such that it does not depend on another compression unit in the particular frame in order to be decoded. (Item 12) The encoder application further causes the processor to: Parsing the metadata header to identify a location of the compression unit within a frame of the video; encrypting a portion of the video bitstream based on the location of the compression unit; 11. A content encoder as described in item 10, which instructs the content encoder to perform the above. (Item 13) 11. The content encoder of claim 10, wherein the step of encrypting the portion of each compression unit of the plurality of compression units includes a step of determining that a compression unit is enabled based on information in a header associated with the video bitstream. (Item 14) Item 11. The content encoder of item 10, wherein the encoder application further directs the processor to encrypt a portion of each compression unit within a frame of video. (Item 15) Item 15. The content encoder of item 14, wherein the portion is selected from the group consisting of: i) the first N bytes of the compression unit, ii) the last N bytes of the compression unit, iii) a central portion of N bytes within the compression unit, and iv) a pattern of N bytes within the compression unit. (Item 16) Item 11. The content encoder of item 10, wherein the compression units are tiles in a High Efficiency Video Coding (HEVC) standard and the video bitstream is encoded based on the HEVC standard. (Item 17) The encoder application further causes the processor to: parsing a picture parameter set (PPS) of the HEVC video bitstream to identify a structure of the tiles within the video bitstream; encrypting portions of the tiles based on the structure; 17. A content encoder as described in item 16, which instructs the content encoder to perform the above. (Item 18) Item 11. The content encoder of item 10, wherein encrypting the portion of each compression unit of the plurality of compression units includes using a common encryption format (CENC) to encrypt the portions. (Item 19) 1. A content decoder comprising: a processor configured to communicate with a memory, the memory containing a decoder application; Equipped with The decoder application causes the processor to: receiving a video bitstream comprising a plurality of frames, each frame comprising a plurality of independently encoded compression units within said frame; Decoding a portion of each of the plurality of compression units in the plurality of frames; generating an output decoded video for playback; The content decoder instructs the content decoder to: (Item 20) 20. The content decoder of claim 19, wherein a compression unit is an independently decodable portion of a particular frame of video such that it does not depend on other compression units in the particular frame in order to be decoded. (Item 21) The decoder application further causes the processor to: Parsing the metadata header to identify a location of the compression unit within a frame of the video; decrypting a portion of the video bitstream based on the location of the compression unit; 20. A content decoder according to claim 19, which instructs the decoder to: (Item 22) 20. The content decoder of claim 19, wherein decrypting the portion of each of the plurality of compression units includes determining that a compression unit is enabled based on information in a header associated with the video bitstream. (Item 23) 20. The content decoder of claim 19, wherein the decoder application further directs the processor to decode a portion of each compression unit within a frame of video. (Item 24) 24. The content decoder of claim 23, wherein the portion is selected from the group consisting of: i) the first N bytes of the compression unit, ii) the last N bytes of the compression unit, iii) a central portion of N bytes within the compression unit, and iv) a pattern of N bytes within the compression unit. (Item 25) 20. The content decoder of claim 19, wherein the compression units are tiles within a High Efficiency Video Coding (HEVC) standard and the video bitstream is decoded based on the HEVC standard. (Item 26) The decoder application further causes the processor to: parsing a picture parameter set (PPS) of the HEVC video bitstream to identify a structure of the tiles within the video bitstream; 26. A content decoder as described in claim 25, which instructs the decoding of multiple portions of the tile based on the structure. (Item 27) 20. The content decoder of claim 19, wherein decrypting the portion of each compression unit of the plurality of compression units includes using a common encryption format (CENC) to decrypt the portions. [Brief description of the drawings]
[0033] [Figure 1] FIG. 1 is a system diagram of a video encoding and distribution system in accordance with an embodiment of the present invention. [Figure 2A] FIG. 2A conceptually illustrates a content encoder configured to generate partially encrypted content, according to an embodiment of the present invention. [Figure 2B] FIG. 2B conceptually illustrates a content server configured to manage and distribute partially encrypted content, in accordance with an embodiment of the present invention. [Figure 2C] FIG. 2C conceptually illustrates a playback device configured to receive and play partially encrypted content, in accordance with an embodiment of the present invention. [Diagram 3] FIG. 3 illustrates a process for partially encrypting content according to an embodiment of the present invention. [Figure 4] FIG. 4 illustrates a process for partially encrypting content according to an embodiment of the present invention. [Diagram 5] FIG. 5 illustrates a process for decrypting and playing partially encrypted content according to an embodiment of the present invention. [Figure 6] FIG. 6 illustrates an example of tiles within a frame of video, according to an embodiment of the present invention. [Figure 7] FIG. 7 illustrates an example of a syntax structure for tiles in an HEVC video, according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0034] As described above, different techniques may be used to encrypt content, each of which may consume a different amount of processing resources in addition to the processing expense associated with the compression technique (e.g., H.264 or HEVC) utilized to compress or encode the video content. Thus, many embodiments of the present invention may achieve efficiency in generating protected compressed video sequences having encrypted frames by encrypting only portions of frames rather than entire frames. These techniques may generally be referred to as "partial frame encryption" because they encrypt only portions of frames. One or more portions of a video to be encrypted within a frame may be defined within the frame by a starting location and a length. Often, this information is provided in a header associated with the frame and may be used by a decoder to locate the encrypted portions of the frame for decryption.
[0035] In many video compression formats, such as H.264 / MPEG-4 AVC (Advanced Video Coding), there are dependencies (due to the compression algorithm) within a frame and across frames. Due to the dependencies, when a part that is encrypted cannot be decrypted and therefore played properly, other parts within the frame or in other frames that depend on the encrypted part also cannot be played. Thus, in an AVC encoded bitstream, encrypting the first x number of bytes of a frame or sequence of units is often sufficient to prevent decoding of many other parts of the frame or other units.
[0036] Many embodiments may utilize the ISO / IEC 23001-7:2012 Common Encryption Scheme (CENC) standard for encryption, which is an industry encryption standard that defines a standard encryption and key mapping method that can be utilized by one or more digital rights and key management systems (DRM systems) to enable decryption of the same file using different DRM systems. This scheme allows multiple non-contiguous portions of a frame to be encrypted.
[0037] Some video compression formats, such as High Efficiency Video Coding (HEVC), allow for simultaneous parallel processing of different parts of a frame video, allowing multiple parts of a frame to be coded and decoded independently, without referencing or relying on information in other parts. One such feature designed to enable parallel processing is "tiling" in HEVC. Specifically, by dividing an image into square regions (tiles), where each tile consists of several coding tree units (CTUs), tiles can be used to code and decode multiple parts of a frame simultaneously by different processors.
[0038] A tile can be contained within a single NAL (Network Abstraction Layer) unit or slice. Similar independently decodable portions of a frame can be referred to as compression units (i.e., tiles in HEVC) across different coding formats. Compression units enable parallelism when decoding a bitstream because they can be processed independently of each other. In a tile-enabled HEVC coding stream, if only the first x bytes of a video NAL unit or frame are encrypted, the other portions (tiles) may be fully decodable without the need to decrypt the encrypted portions due to their independence from the encrypted portions.
[0039] Thus, in many embodiments, the security of an encoded bitstream having tiles (or other compression units) can be improved by encrypting at least a portion of multiple tiles in a frame to make more portions of the frame unrecoverable without decrypting the encrypted portions. In some embodiments, an encoder and / or encoding process can be designed to decode at least a portion of the bitstream to determine where the tiles are located and encrypt the multiple portions of the tiles. The encoder may encrypt information in multiple tiles to obtain information about the structure and / or location of the tiles to protect more portions of the bitstream from being decoded without decrypting them. A method for obtaining this information about tiles (or other independently decodable units) may include parsing a NAL unit header to determine the starting location of one or more tiles. Systems and methods for partial frame encryption of compression units according to embodiments of the present invention are further discussed below.
[0040] (System architecture for partially encoding and playing video using partial frame encryption) As discussed above, many new compression standards provide new tools that enable parallel processing (i.e., encoding and decoding) of video content on multi-core architectures. These tools include, for example, the use of "tiles" in the HEVC standard, among several types of similar independently decodable compression units that may be utilized to divide frames of video content into separate decodable units. As described throughout this application, a compression unit (e.g., a tile in HEVC) may generally refer to a divided and / or independently decodable portion of a single frame of video for a given encoding standard. Furthermore, a "tile" is a type of compression unit that has been introduced within the HEVC standard. While many of the following examples describe partial frame encryption of tiles based on video compressed according to the HEVC standard, in accordance with embodiments of the present invention, partial frame encryption may be used to encrypt video compressed according to any other standard that uses similar types of compression units to divide video frames, as appropriate for the requirements of a specific application.
[0041] Furthermore, to protect digital content compressed using independently decodable compression units, certain encryption techniques may be used that apply partial frame encryption to one or more portions of a compression unit (i.e., a tile) within a frame of video. In particular, in newer standards (e.g., HEVC) that are designed to enable independent decoding of compression units within a frame of video, it may no longer be sufficient to encrypt only a portion of an entire video frame (i.e., a video image) based on the compression standard design, where other portions would have inter-frame dependencies that would require proper decryption of the encrypted frame. As discussed above, in these older compression standards, due to dependencies between different portions of a single video frame, when an encrypted portion cannot be decrypted and therefore cannot be properly played, other portions within the frame or other frames that depend on the encrypted portion also cannot be played. Thus, in many embodiments, partial frame encryption may be applied to multiple portions of one or more compression units within a frame of video. A system for encoding video content using partial frame encryption according to an embodiment of the present invention is illustrated in FIG. 1.
[0042] The system 100 includes a content encoder 102 configured to encode source media into encoded video. In some embodiments, the content encoder may encode the content using a compression standard (e.g., the HEVC standard) that enables parallel processing of the content, for example, by generating compression units (e.g., tiles) within each frame of the video that enable independent encoding / decoding of multiple portions of the frame without reference to other portions of the frame of the video. Specifically, in some embodiments, the content encoder may encode the content using the HEVC standard to encode frames of video content. The HEVC standard may also generate one or more independently decodable tiles for each frame of the video.
[0043] In addition to encoding frames of video based on a compression standard (e.g., HEVC), in many embodiments, the content encoder 106 may further encrypt portions of the video content to protect the content from illegal distribution. To reduce overhead associated with encrypting video content, in many embodiments, the content encoder 106 encodes the video content using partial frame encryption, whereby only a portion of one or more compression units (i.e., tiles) within a frame of video is encrypted (rather than encrypting an entire frame of video content). In some embodiments, the content encoder encrypts the first x number of bytes of each tile within a frame of video. Other embodiments may encrypt different portions of the tiles, including x bytes located anywhere within the bitstream, the last x bytes, and any other combination of bytes within the tile, as appropriate for the requirements of a particular application. In some embodiments, the content encoder may encrypt the same portions of all tiles within a frame. In other embodiments, the content encoder may encrypt different portions of different tiles. In some embodiments, the content encoder may encrypt portions of only some tiles (e.g., less than all tiles) within a frame of video. As can be readily appreciated, a container file containing the encrypted video may include a separate DRM track containing information regarding the location of the encrypted portions of the tiles within the frame and / or the cryptographic information used to encrypt all or each of the encrypted portions.
[0044] In some embodiments, the content encoder 106 stores the content in a Matroska (MKV) container file. The Matroska container is a media container developed as an open standards project by the Matroska non-profit organization (Aussonne, France). The Matroska container is based on the Extensible Binary Meta Language (EBML), a binary variant of the Extensible Markup Language (XML). Decoding of the Matroska container is supported by many consumer electronic (CE) devices. In other embodiments, any of a variety of container file formats can be used, including (but not limited to) the MP4 container file format defined by the Motion Picture Experts Group as MPEG-4 Part 14, as appropriate for the requirements of a particular application.
[0045] In some embodiments, after the content encoder 106 compresses and / or encrypts the video sequence, the content encoder 106 uploads the encoded video to the content server 102 .
[0046] In many embodiments, the content server 102 facilitates distribution of source media to one or more playback devices 108-114. The content server 102 according to some embodiments of the present invention may be responsible for storing protected content for distribution to the playback devices. In many embodiments, the content server receives and processes download requests from various playback devices 108-114 that wish to download encoded video. In some embodiments, the devices may request either (i) to download the entire file or (ii) to receive streamed video for playback in either progressive or adaptive streaming modes. When the distribution server receives a download request from a playback device, it may provide the encoded video to the playback device for storage and / or playback.
[0047] The downloaded video file may include one or more headers containing data describing the structure of compression units (e.g., tiles in an HEVC encoded video) within a frame of the video. The header may include a pointer to the starting location of one or more tiles. In some embodiments, the location of the tiles within the encoded HEVC video sequence may be defined in a Picture Parameter Structure (PPS), which provides information about the tile structure within one or more frames of the video. In some embodiments, the tiles may be fixed at a location within a frame, while in other embodiments the tiles may be in different locations for different frames of the video. A decoder on the playback device may use this information to determine portions of frames that need to be decoded to play the video file.
[0048] In some embodiments, the content server 102 receives stream requests from various playback devices and later streams the encoded video to the playback devices for progressive playback and / or as part of an adaptive bitrate streaming system. In some embodiments, the various playback devices may use HTTP or another suitable stateless protocol to request streams over a network 104, such as the Internet. In some embodiments, the various playback devices may use RTSP, whereby the distribution server records the state of each playback device and determines which video to stream based on instructions received from the playback device and stored data representing the state of the playback device.
[0049] In some embodiments, a DRM server 116 (Digital Rights Management) facilitates authorization and access to source media, including managing the keys needed to encrypt / decrypt the source media.
[0050] A DRM server 116 according to an embodiment of the present invention may be responsible for storing protected streams and / or files of content for distribution (e.g., streaming and / or download) to playback devices. The DRM server may also store common cryptographic information used to protect the content. In some embodiments, the common cryptographic information is identified using an identifier associated with the common cryptographic information and a portion of the content.
[0051] In the illustrated embodiment, the playback devices include personal computers 108-110 and mobile phones 112-114. In other embodiments, the playback devices may include consumer electronic devices such as DVD players, Blu-ray players, televisions, set-top boxes, video game consoles, tablets, and other devices capable of connecting to a server via HTTP and playing the encoded video.
[0052] In the illustrated embodiment, the content encoder, content server, and DRM server are server applications configured to run on server computer hardware. In other embodiments, the content encoder, content server, and DRM server may be any processing device that includes a processor and has sufficient resources to perform encryption, distribution, and digital rights management of source media, including but not limited to video, audio, and / or subtitles. Although a specific architecture is shown in Figure 1, any of a variety of architectures that allow a playback device to request video encoded with partial frame encryption may be utilized, as appropriate for the requirements of a specific application according to embodiments of the present invention.
[0053] A basic architecture of a content encoder 202 according to an embodiment of the invention is illustrated in Figure 2A. The content encoder 202 includes a processor 204 in communication with a non-volatile memory 208, a volatile memory 206, and a network interface 214. In the illustrated embodiment, the non-volatile memory includes a content encoder application 210 that configures the processor to encode content 212. In some embodiments, the content encoder application 210 encrypts the content using partial frame encryption such that only portions of one or more compression units (e.g., tiles) are encrypted within a frame of video, rather than entire frames, to reduce overhead associated with encryption of compressed video.
[0054] In some embodiments, the network interface 214 may be in communication with the processor 204, the volatile memory 206, and / or the non-volatile memory 208. Although a specific content encoder architecture is illustrated in Figure 2A, any of a variety of architectures can be utilized to implement a content encoder according to embodiments of the present invention, including an architecture in which a content encoder application is located on a disk or some other form of storage device and loaded into volatile memory at run time.
[0055] A basic architecture of a content server 222 according to an embodiment of the present invention is illustrated in Figure 2B. The content server 222 includes a processor 224 in communication with a non-volatile memory 228, a volatile memory 226, and a network interface 234. In the illustrated embodiment, the non-volatile memory includes a content distribution application 230 that configures the processor to distribute content 232. In some embodiments, the network interface 234 may be in communication with the processor 224, the volatile memory 226, and / or the non-volatile memory 228. Although a specific content server architecture is illustrated in Figure 2B, any of a variety of architectures can be utilized to implement a content server according to an embodiment of the present invention, including an architecture in which the content distribution application is located on a disk or some other form of storage device and loaded into volatile memory at run time.
[0056] The basic architecture of a playback device according to an embodiment of the invention is illustrated in Figure 2C. The playback device 252 includes a processor 254 in communication with a non-volatile memory 258, a volatile memory 256, and a network interface 240. In the illustrated embodiment, the non-volatile memory includes a decoder application 260 that configures the processor to decode content 262. In some embodiments, the decoder application 260 uses information provided in the video container file and / or video stream to identify the location of the compression units within a frame of the video, and decrypts only certain portions of the compression units to decode the video.
[0057] In some embodiments, the network interface 264 may be in communication with the processor 254, the volatile memory 256, and / or the non-volatile memory 258. Although a specific playback device architecture is illustrated in Figure 2C, any of a variety of architectures can be utilized to implement a playback device according to embodiments of the present invention, including an architecture in which a decoder application is located on a disk or some other form of storage device and loaded into volatile memory at run time.
[0058] SYSTEMS AND METHODS FOR PARTIAL FRAME ENCRYPTION As discussed above, some video compression formats (e.g., HEVC) allow multiple portions of a frame (e.g., compression units or tiles) to be independently encoded and decoded without referencing or relying on information in other portions of the frame (or other frames). These independently decodable portions of a frame can be referred to as compression units across different coding formats. Thus, during encryption of a stream with independent compression units, if only the first x bytes of a frame are encrypted, the other portions (compression units or tiles) may be fully decodable without the need to decrypt the encrypted portions of the compression units due to their independence from the encrypted compression units. Thus, the security of an encoded bitstream having tiles (or other compression units) can be improved by encrypting at least a portion of multiple tiles in a frame to make more portions of the frame unrecoverable without decrypting the encrypted portions. A process for partial frame encryption of a compression unit of a video bitstream according to an embodiment of the present invention is illustrated in FIG. 3.
[0059] The process receives (at 302) video data. In some embodiments, the process may download the video data from one or more content distributors. In other embodiments, the process may stream the video data during video playback.
[0060] The process determines (at 304) locations of multiple compression units within the video data. The locations may be determined based on information provided by one or more headers associated with a frame of the video. In some embodiments, the headers may provide information regarding the starting location of each compression unit within the frame. In some embodiments, the location of each compression unit may be fixed within each frame of the video and therefore may not need to be identified by a header. For example, the encoder may be pre-programmed with information regarding the structure of a video sequence.
[0061] The process determines (at 306) a portion of each compression unit in a frame of video to encrypt. In some embodiments, the process determines that a fixed x bytes of each compression unit should be encrypted. In some embodiments, the process determines different portions of different compression units based on characteristics of the compression units. In other embodiments, the process may encode the middle or last x number of bytes in one or more compression units for a frame of video. In some embodiments, the process may not encrypt certain frames of the video while encrypting only portions of other frames of the video. As can be readily appreciated, the specific portions of a particular frame that are encrypted and the manner of encryption typically depend on the requirements of the application.
[0062] The process encrypts (at 308) the portions of the compression unit. In some embodiments, the process encrypts the portions using standard DES and / or AES encryption. Other embodiments may use other encryption mechanisms as appropriate to the requirements of a particular application.
[0063] The process generates (at 310) an output bitstream containing the compressed unit with the encrypted portion. The process then ends.
[0064] Although a specific process for encrypting portions of a compression unit is illustrated in FIG. 3, any of a variety of processes may be utilized to encrypt portions of a compression unit as appropriate for the requirements of a particular application in accordance with an embodiment of the present invention.
[0065] (Overview of the HEVC standard) As discussed above, the HEVC video compression standard includes several new tools designed for playback of video content using multi-core architectures that support parallel processing. The tools include wavefront parallel processing (WPP) and tiles in addition to slice structures. When WPP and / or tiles are used, a video bitstream corresponding to one image may be packetized into independently decodable subsets of the bitstream. Specifically, HEVC includes independently decodable tiles that divide a frame of video into rectangular regions of a certain size. An example of tiles within a frame of video according to an embodiment of the present invention is illustrated in FIG. 6. Specifically, FIG. 6 is a diagram illustrating an example of evenly dividing a frame in the horizontal and vertical dimensions into nine tiles, starting with tile 1 in the upper left corner and ending with tile 9 in the lower right corner. Each tile includes a coding tree unit.
[0066] Tile-related parameters may be signaled in a Picture Parameter Set (PPS) in HEVC. Within a video sequence, different pictures may be allowed to use different PPS. Tile parameters may vary from picture to picture within the same video sequence. In most video applications, the number of tiles and the locations of the tiles are likely to remain the same within a video sequence (e.g., a series of pictures), but situations may arise where not only the configuration of tiles may be allowed to vary from picture to picture within the same video sequence, but also groups of tiles may be allowed to vary from picture to picture.
[0067] FIG. 7 illustrates an example of a syntax structure for tiles in a picture parameter set (PPS) in an HEVC video. If tiles_enabled_flag is turned on, the number of tiles in each dimension may be signaled. If tiles are uniformly sized (e.g., uniform_spacing_flag is 1), no additional information may be signaled. The width and height of the tiles may be signaled. For example, num_tile_columns_minus1 and num_tile_rows_minus1 may be set to 2 and uniform_spacing_flag may be set to 1, as shown in FIG. 7.
[0068] An encoder may change how tiles are divided for each frame by signaling a new PPS with new tile division parameters. In many embodiments, tiles need not be equally sized compared to each other or remain the same size compared to the same tiles in the previous instance. Specifically, an encoder may signal a new PPS with new tile division parameters that will be applied to a new set of one or more frames.
[0069] (Partial Frame Encryption in HEVC) As discussed above, the HEVC standard introduces certain tools that support high-level parallelism. Specifically, HEVC includes tiles that allow a frame to be divided into rectangular regions, which can then be encoded and decoded independently. A frame may be divided uniformly or non-uniformly into tiles. An entry point for each tile may be defined in a slice header. To enable partial encryption of a video file using the HEVC standard, many embodiments of the present invention may partially encrypt multiple tiles to encrypt the video content. A process for partial encryption of HEVC tiles according to an embodiment of the present invention is illustrated in FIG. 4.
[0070] The process determines (at 402) whether a tile is enabled. In many embodiments, when a tile is enabled, the bitstream may contain an entry point offset that indicates the start location of each image partition that each core needs to immediately access the partition.
[0071] The process determines (at 404) the structure of NAL units within frames and / or bitstreams.
[0072] The process determines (at 406) the structure of tiles within the NAL unit. In some embodiments, the process parses the NAL header to determine where each tile begins within a frame of video. In some embodiments, HEVC tiles may divide an image into rectangular regions of a certain size. The parameter structure of tiles may be specified in HEVC in Picture Parameter Set (PPS), Video Usability Information (VUI), and / or Supplemental Enhancement Information (SEI) messages. An example of PPS in HEVC is illustrated in FIG. 7. If tiles_enabled_flag is turned on, the number of tiles in each dimension may be signaled. In some embodiments, if the tiles are uniformly sized (e.g., uniform_spacing_flag is 1), no additional information may be signaled. The PPS may also signal the width and height of the tiles.
[0073] The process selects (at 408) a number of NAL units. In some embodiments, the process may select all of the NAL units. In some embodiments, the process may select one or more NAL units.
[0074] The process selects (at 410) a number of tiles within each selected NAL unit. In some embodiments, the encoder may change how tiles are divided per image by signaling a new PPS with new tile partitioning parameters. FIG. 7 illustrates an example of signaling tiles within a PPS. In some embodiments, tiles may be different sizes compared to each other or different sizes compared to the same tiles in previous instances. In some embodiments, the encoder may signal a new PPS with new tile partitioning parameters for each new image or when the tile partitions change from the previous image.
[0075] The process encrypts at least a portion of the selected tile. In some embodiments, the process may encrypt the first x number of bytes, the last x number of bytes, or a certain x number of bytes located within a certain portion of the bitstream of the tile. In some embodiments, the process may encrypt several blocks within the tile. Other embodiments may encrypt other portions of the tile as appropriate for the requirements of a particular application. In many embodiments, the process encrypts portions of the tile using a common encryption format (CENC) that uses a common specification on how to encrypt bitstreams. CENC specifies an industry standard encryption and key mapping method that can be used by DRM systems to enable decryption of files. The scheme works by defining a common format for encryption-related metadata required to decrypt protected streams. The scheme leaves the details of copyright mapping, key acquisition and storage, DRM compliance rules, among other considerations, to DRM systems that support the CENC scheme. Additionally, in many embodiments, the encryption information may be stored within the MKV container.
[0076] The process then ends. Although a particular process for encrypting a portion of a tile in HEVC video content is illustrated in Figure 4, any of a variety of processes may be utilized to encrypt portions of a tile as appropriate for the requirements of a particular application in accordance with embodiments of the present invention.
[0077] (Decrypting a partially encrypted video) A process for decrypting a partially encrypted video according to an embodiment of the present invention is illustrated in FIG.
[0078] The process receives (at 502) encrypted video data. In some embodiments, the process may download, stream, and / or stream to download video content from a content provider. In other embodiments, the video data may be stored on disk or obtained by any other mechanism as appropriate for the requirements of a particular application.
[0079] The process determines (at 504) locations of multiple compression units (e.g., tiles in HEVC) within the video data. In some embodiments, the locations of the tiles may be fixed within one or more frames of the video. In other embodiments, the locations of the tiles may vary between frames or sets of frames. The locations of the tiles may be determined based on information contained in a PPS corresponding to the frame. In particular, the process may parse the PPS to identify particular bytes within the encrypted tiles.
[0080] The process determines (at 506) whether the compressed unit is encrypted and decrypts the encrypted compressed unit. In some embodiments, the process may obtain a decryption key for decrypting the encrypted content. The decryption key may be obtained based on authorization received from a DRM service associated with the content.
[0081] The process decodes (at 508) the compressed unit. In many embodiments, the process decodes the content based on the particular compression standard used to encode the video (e.g., HEVC video).
[0082] The process produces (at 510) the output decoded video for playback. The process then ends.
[0083] Although a specific process for decrypting portions of compressed units in video content is illustrated in FIG. 5, any of a variety of processes may be utilized to decrypt portions of compressed units in video content as appropriate for the requirements of a particular application in accordance with an embodiment of the present invention.
[0084] While the present invention has been described in certain specific aspects, many additional modifications and variations will become apparent to those skilled in the art. It is therefore to be understood that the invention can be practiced otherwise than as specifically described. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive.
[0085] Moreover, the foregoing discussion discloses and describes merely exemplary embodiments of the present invention. Those skilled in the art will readily recognize from such discussion, and from the accompanying drawings, that various changes, modifications, and variations can be made without departing from the spirit and scope of the present invention. Therefore, the invention may not be limited to the particular embodiments disclosed, but it is intended that the invention will include all embodiments falling within the scope of the appended claims.
Claims
1. A method for decrypting and decrypting encrypted video, the method comprising: receiving at least a portion of a container file containing an encrypted video comprising encryption-related metadata and a plurality of encoded frames of the video; each of the plurality of encoded frames of video comprising a plurality of tiles that divide the encoded frame of video into rectangular regions and that are independently encoded; the plurality of encoded frames of video comprises a partially encrypted frame of video encrypted using partial frame encryption, each of the plurality of tiles within the partially encrypted frame of video including at least one portion that is protected using encryption and at least one portion that is not encrypted; decrypting the portion of the partially encrypted frame identified by the encryption-related metadata to obtain a decrypted frame; Decoding the decrypted frame. A method comprising:
2. The method of claim 1, wherein a tile is an independently decodable portion of a particular frame of a video and does not depend on other compression units within the particular frame in order to be decoded.
3. The method of claim 1, further comprising parsing a header associated with the frame to identify a structure of the file within the frame.
4. The method of claim 3, wherein the header associated with the frame comprises pointers, each pointer being a pointer to the start location of one of the plurality of tiles.
5. The method of claim 3, wherein the header associated with the frame includes an offset indicating the start location of the encrypted portion of one of the plurality of tiles in the frame.
6. The method of claim 3, wherein the multiple tiles are fixed to locations within the partially encrypted frame determined using information from the header.
7. The method of claim 1, further comprising displaying the decoded frame.
8. The method of claim 1, wherein the multiple tiles are located at different locations for different partially encrypted frames.
9. The method of claim 1, wherein the encryption-related metadata is contained in a separate DRM track, and at least a portion of the separate DRM track is located within the at least one portion of the container file.
10. The method of claim 1, wherein decrypting the portion of the partially encrypted frame includes decrypting each of the at least one portion protected using encryption within each of the plurality of tiles within the partially encrypted frame of video using an AES cipher.
11. The method of claim 1, wherein the plurality of encoded frames of video form part of a video bitstream further comprising at least one unit containing a parameter set, identifying the location of the plurality of tiles within the encoded frames of video.
12. The method of claim 11, wherein parameters associated with each tile in the plurality of tiles are signaled within the parameter set.
13. A method for decrypting and decrypting encrypted video, the method comprising: receiving at least a portion of a container file containing an encrypted video comprising encryption-related metadata and a plurality of encoded frames of the video; each of the plurality of encoded frames of video comprising a plurality of tiles that divide the encoded frame of video into rectangular regions and that are independently encoded; the plurality of encoded frames of video comprises a partially encrypted frame of video encrypted using partial frame encryption, each of the plurality of tiles within the partially encrypted frame of video includes at least one portion that is protected using encryption and at least one portion that is not encrypted, and locations of the plurality of tiles are determined using information from a header associated with the frame; obtaining a decrypted frame by decrypting the portion of the partially encrypted frame identified by the encryption-related metadata, wherein decrypting the portion of the partially encrypted frame includes decrypting each of the at least one portion protected using encryption within each of the plurality of tiles within the partially encrypted frame of video using an AES cipher; decoding the decrypted frames; and displaying the decoded frames; and A method comprising: