IP Library Granted Patent US 12,489,605
Granted Patent B2
US 12,489,605 · App. 17/535,231 · Granted Dec 2, 2025

Sample-parallel sparse cipher-block chaining (CBCS) encryption

Inventors: Alexander Giladi (Denver, CO); Andrew Morrow (Denver, CO)
Assignee: Comcast Cable Communications, LLC
H04L9/0637H04L65/612H04L65/762H04N21/2347H04N21/23476H04N21/8456H04L9/50H04L2209/125
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,489,605
App. No.
17/535,231
Granted
Dec 2, 2025
Kind
B2
Abstract

A content provider in a content distribution system may be configured to reduce latency in a content distribution system by storing multiple frames from a sequence of frames in different buffers and encrypting, in parallel, the frames stored in the different buffers. For example, the content provider may encrypt each buffer via a different instruction pipeline of a processor.

Claims (67)

1 . A method comprising:

receiving a segment of a content asset, wherein the segment comprises a sequence of video frames;

storing each of a first plurality of video frames of the sequence in a different one of a plurality of buffers;

encrypting, in parallel, at least a portion of each of the first plurality of video frames stored in the plurality of different buffers, wherein the encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers comprises processing each buffer via a different instruction pipeline of a processor, and wherein the processing of at least one buffer in one instruction pipeline is offset from the processing of another buffer in another pipeline by one or more instruction cycles of the processor.

2 . The method of claim 1 , further comprising:

upon completion of encrypting the at least the portion of the video frame stored in one of the buffers, storing in that one buffer a next video frame of a second plurality of video frames of the sequence; and

encrypting at least a portion of the next video frame stored in the one buffer, wherein the encrypting of the at least the portion of the next video frame continues in parallel with the encrypting of the at least the portions of the video frames stored in the other buffers.

3 . The method of claim 1 , wherein encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers comprises providing an initialization vector to an encryption function.

4 . The method of claim 3 , wherein each buffer contains a 16-byte block and the encryption function includes a pattern or encrypted bytes.

5 . The method of claim 3 , wherein the encryption function is an Advanced Encryption Standard Cipher Block Chaining (AES-CBC) encryption function.

6 . The method of claim 1 , wherein the segment of the content asset is an International Organization for Standardization base media file format (ISO-BMFF) segment.

7 . The method of claim 1 , wherein the sequence of video frames comprises a plurality of bytes stored at an original location, wherein encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers comprises copying the plurality of bytes from the original location to a non-sparse buffer, and wherein the non-sparse buffer is aligned with a central processing unit (CPU) cache.

8 . A method comprising:

receiving, at a central processing unit (CPU), a segment of a content asset, wherein the segment comprises a sequence of video frames;

storing, by the CPU, each of a plurality of video frames of the sequence in a different one of a plurality of buffers, wherein a first video frame of the plurality of video frames is stored in a first buffer of the plurality of buffers and a second video frame of the plurality of video frames is stored in a second buffer of the plurality of buffers;

providing, by a first instruction pipeline of the CPU at a first clock cycle of the CPU, the first buffer to an encryption function; and

providing, by a second instruction pipeline of the CPU at a second clock cycle of the CPU, the second buffer to the encryption function, wherein encryption of the first video frame is performed simultaneously to encryption of the second video frame.

9 . The method of claim 8 , wherein a third video frame of the plurality of video frames is stored in a third buffer of the plurality of buffers, and wherein the method further comprises providing, by a third instruction pipeline of the CPU at a third clock cycle of the CPU, the third buffer to the encryption function, wherein encryption of the third video frame is performed simultaneously to encryption of the first video frame.

10 . The method of claim 9 , wherein a fourth video frame of the plurality of video frames is stored in a fourth buffer of the plurality of buffers, further comprising providing, by a fourth instruction pipeline of the CPU at a fourth clock cycle of the CPU, the fourth buffer to the encryption function, wherein encryption of the fourth video frame is performed simultaneously to encryption of the first video frame.

11 . The method of claim 8 , wherein a third video frame of the plurality of video frames is stored in the second buffer of the plurality of buffers, further comprising providing, by the second instruction pipeline of the CPU at a third clock cycle of the CPU, the second buffer to the encryption function, wherein encryption of the third video frame is performed simultaneously to encryption of the first video frame.

12 . The method of claim 8 , further comprising:

providing, by the first instruction pipeline of the CPU at the first clock cycle of the CPU, a first initialization vector to the encryption function; and

providing, by the second instruction pipeline of the CPU at the second clock cycle of the CPU, a second initialization vector to the encryption function.

13 . The method of claim 8 , wherein each buffer contains a 16-byte block and the encryption function includes a pattern of encrypted bytes.

14 . The method of claim 8 , wherein the encryption function is an Advanced Encryption Standard Cipher Block Chaining (AES-CBC) encryption function.

15 . The method of claim 8 , wherein the segment of the content asset is an International Organization for Standardization base media file format (ISO-BMFF) segment.

16 . The method of claim 8 , wherein at least one of the first buffer and the second buffer is a non-sparse buffer and the non-sparse buffer is aligned with a CPU cache.

17 . A non-transitory computer-readable medium comprising instructions that, when executed, cause:

receiving a segment of a content asset, wherein the segment comprises a sequence of video frames;

storing each of a first plurality of video frames of the sequence in a different one of a plurality of buffers;

encrypting, in parallel, at least a portion of each of the first plurality of video frames stored in the plurality of different buffers, wherein the encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers comprises processing each buffer via a different instruction pipeline of a processor, and wherein the processing of at least one buffer in one instruction pipeline is offset from the processing of another buffer in another pipeline by one or more instruction cycles of the processor.

18 . The non-transitory computer-readable medium of claim 17 , wherein the instructions, when executed, further cause:

upon completion of encrypting the at least the portion of the video frame stored in one of the buffers, storing in that one buffer a next video frame of a second plurality of video frames of the sequence; and

encrypting at least a portion of the next video frame stored in the one buffer, wherein the encrypting of the at least the portion of the next video frame continues in parallel with the encrypting of the at least the portions of the video frames stored in the other buffers.

19 . The non-transitory computer-readable medium of claim 17 , wherein the instructions that, when executed, cause encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers, cause providing an initialization vector to an encryption function.

20 . The non-transitory computer-readable medium of claim 19 , wherein each buffer contains a 16-byte block and the encryption function includes a pattern or encrypted bytes.

21 . The non-transitory computer-readable medium of claim 19 , wherein the encryption function is an Advanced Encryption Standard Cipher Block Chaining (AES-CBC) encryption function.

22 . The non-transitory computer-readable medium of claim 17 , wherein the segment of the content asset is an International Organization for Standardization base media file format (ISO-BMFF) segment.

23 . The non-transitory computer-readable medium of claim 17 , wherein the sequence of video frames comprises a plurality of bytes stored at an original location, wherein the instructions that, when executed, cause encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers, cause copying the plurality of bytes from the original location to a non-sparse buffer, and wherein the non-sparse buffer is aligned with a central processing unit (CPU) cache.

24 . A device comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the device to:

receive a segment of a content asset, wherein the segment comprises a sequence of video frames;

store each of a first plurality of video frames of the sequence in a different one of a plurality of buffers;

encrypt, in parallel, at least a portion of each of the first plurality of video frames stored in the plurality of different buffers, wherein the encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers comprises processing each buffer via a different instruction pipeline of a processor, and wherein the processing of at least one buffer in one instruction pipeline is offset from the processing of another buffer in another pipeline by one or more instruction cycles of the processor.

25 . The device of claim 24 , wherein the instructions, when executed by the one or more processors, further cause the device to:

upon completion of encrypting the at least the portion of the video frame stored in one of the buffers, store in that one buffer a next video frame of a second plurality of video frames of the sequence; and

encrypt at least a portion of the next video frame stored in the one buffer, wherein the encrypting of the at least the portion of the next video frame continues in parallel with the encrypting of the at least the portions of the video frames stored in the other buffers.

26 . The device of claim 24 , wherein the instructions that, when executed by the one or more processors, cause the device to encrypt, in parallel, the at least the portion of each video frame stored in the plurality of different buffers, cause the device to provide an initialization vector to an encryption function.

27 . The device of claim 26 , wherein each buffer contains a 16-byte block and the encryption function includes a pattern or encrypted bytes.

28 . The device of claim 26 , wherein the encryption function is an Advanced Encryption Standard Cipher Block Chaining (AES-CBC) encryption function.

29 . The device of claim 24 , wherein the segment of the content asset is an International Organization for Standardization base media file format (ISO-BMFF) segment.

30 . The device of claim 24 , wherein the sequence of video frames comprises a plurality of bytes stored at an original location, wherein the instructions that, when executed by the one or more processors, cause the device to encrypt, in parallel, the at least the portion of each video frame stored in the plurality of different buffers, cause the device to copy the plurality of bytes from the original location to a non-sparse buffer, and wherein the non-sparse buffer is aligned with a central processing unit (CPU) cache.

31 . A system comprising:

a first computing device configured to send a segment of a content asset; and

a second computing device configured to:

receive the segment of the content asset, wherein the segment comprises a sequence of video frames;

store each of a first plurality of video frames of the sequence in a different one of a plurality of buffers;

encrypt, in parallel, at least a portion of each of the first plurality of video frames stored in the plurality of different buffers, wherein the encrypting, in parallel, the at least the portion of each video frame stored in the plurality of different buffers comprises processing each buffer via a different instruction pipeline of a processor, and wherein the processing of at least one buffer in one instruction pipeline is offset from the processing of another buffer in another pipeline by one or more instruction cycles of the processor.

32 . The system of claim 31 , wherein the second computing device is further configured to:

upon completion of encrypting the at least the portion of the video frame stored in one of the buffers, store in that one buffer a next video frame of a second plurality of video frames of the sequence; and

encrypt at least a portion of the next video frame stored in the one buffer, wherein the encrypting of the at least the portion of the next video frame continues in parallel with the encrypting of the at least the portions of the video frames stored in the other buffers.

33 . The system of claim 31 , wherein the second computing device is configured to encrypt, in parallel, the at least the portion of each video frame stored in the plurality of different buffers by providing an initialization vector to an encryption function.

34 . The system of claim 33 , wherein each buffer contains a 16-byte block and the encryption function includes a pattern or encrypted bytes.

35 . The system of claim 33 , wherein the encryption function is an Advanced Encryption Standard Cipher Block Chaining (AES-CBC) encryption function.

36 . The system of claim 31 , wherein the segment of the content asset is an International Organization for Standardization base media file format (ISO-BMFF) segment.

37 . The system of claim 31 , wherein the sequence of video frames comprises a plurality of bytes stored at an original location, wherein the second computing device is configured to encrypt, in parallel, the at least the portion of each video frame stored in the plurality of different buffers by copying the plurality of bytes from the original location to a non-sparse buffer, and wherein the non-sparse buffer is aligned with a central processing unit (CPU) cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2022
From: GILADI, ALEXANDER; MORROW, ANDREW
To: COMCAST CABLE COMMUNICATIONS, LLC
Reel/Frame 060940/0361 →
Continuity (2)
Provisional Application 63118562 · Nov 25, 2020
Related Publication 20220166604A1 · May 26, 2022
References Cited (9)
US 20100153747A1 · Asnaashari et al. · 2010 [cited by applicant]
US 20150156174A1 · Fahey · 2015 [cited by examiner]
US 20170347065A1 · Krishnan et al. · 2017 [cited by applicant]
US 20200145701A1 · Liu · 2020 [cited by examiner]
US 20200150895A1 · Kim · 2020 [cited by examiner]
US 20220198114A1 · Raumann · 2022 [cited by examiner]
US 20230089495A1 · Sanchez De La Fuente et al. · 2023 [cited by examiner]
US 20230102374A1 · Zhu · 2023 [cited by examiner]
CN 104284208A · 2015 [cited by applicant]