IP Library Granted Patent US 10,484,169
Granted Patent B1
US 10,484,169 · App. 15/612,752 · Granted Nov 19, 2019

Cipher block chaining data obfuscation

Inventors: Rintaro Kuroiwa (Seattle, WA); Thomas Inskip (Seattle, WA)
Assignee: GOOGLE LLC
H04L9/0637H04L9/002H04L63/0428H04L2209/20
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 10,484,169
App. No.
15/612,752
Filed
Jun 2, 2017
Granted
Nov 19, 2019
Kind
B1
Art Unit
2493
USPC
380/28
Abstract

Techniques of decrypting encrypted content involve performing, during each cycle of a CBC mode of decrypting blocks of ciphertext included in the streaming media, an obfuscation operation prior to generating a plaintext block from the ciphertext block of that cycle. For example, when a ciphertext block from a current CBC cycle is input into a decryption key function, the user device performs an XOR operation on the output of the decryption key function and an obfuscation pad to produce an obfuscated decryption key function output. The user device then performs a XOR operation on the obfuscated decryption key function output and a ciphertext block from a previous CBC cycle to produce an obfuscated plaintext block that cannot be read by a user device. The user device may recover the actual plaintext block by performing a XOR operation on the plaintext block and the obfuscation pad.

Claims (50)

1. A method of performing a cipher block chaining (CBC) mode decryption operation on a plurality of blocks of ciphertext data, the method comprising:

receiving, by processing circuitry of a user device, a stream of data including the plurality of blocks of ciphertext data, each of the plurality of blocks of ciphertext data having been generated using a CBC mode encryption operation on a respective block of original plaintext data of a plurality of blocks of plaintext data, each of the plurality of blocks of plaintext data being readable by the user device;

generating, by the processing circuitry, a set of obfuscation pads;

prior to completing the CBC mode decryption operation on the block of ciphertext data, performing, by the processing circuitry, an obfuscation operation on an obfuscation pad of the set of obfuscation pads during the CBC mode decryption operation to produce, as an output of the CBC mode decryption operation on the block of ciphertext data, a block of obfuscated plaintext data of a plurality of blocks of obfuscated data, the plurality of blocks of obfuscated plaintext data being unreadable by the user device;

storing, by the processing circuitry, the block of obfuscated plaintext data in a storage device accessible to the user device; and

obtaining a decryption key function that, when operating on the block of ciphertext data and a respective key, produces a keystring, and

wherein the performing the obfuscation operation on the obfuscation pad during the CBC mode decryption operation includes performing a combination operation on the keystring and the obfuscation pad to produce an obfuscated keystring.

2. The method as in claim 1 , further comprising:

after completing the CBC mode decryption operation on the block of ciphertext data, performing a deobfuscation operation on the obfuscation pad and the block of obfuscated plaintext data of the plurality of blocks of obfuscated data to produce the respective block of plaintext data of the plurality of blocks of plaintext data.

3. The method as in claim 2 , wherein the performing the deobfuscation operation on the obfuscation pad and the block of obfuscated plaintext data includes performing an XOR operation on the block of obfuscated plaintext data with the obfuscation pad.

4. The method as in claim 1 , wherein the generating the set of obfuscation pads includes:

obtaining output from a random number generator; and

forming an obfuscation pad of the set of obfuscation pads based on the output from the random number generator.

5. The method as in claim 1 , further comprising:

in response to the keystring being produced, performing an XOR operation on the previous block of ciphertext data of the plurality of blocks of ciphertext data, using the keystring, to produce the respective block of plaintext data.

6. The method as in claim 1 , wherein the obfuscation pad uses the same amount of memory as the ciphertext block.

7. The method as in claim 1 , wherein each obfuscation pad of the set of obfuscation pads is equal to each other obfuscation pad of the set of obfuscation pads.

8. The method as in claim 1 , wherein performing the combination operation includes performing an XOR operation on the keystring with the obfuscation pad.

9. The method as in claim 8 , wherein the obfuscated keystring is configured to produce a block of obfuscated plaintext data in response to the performance of the XOR operation on the keystring with the obfuscation pad.

10. The method as in claim 1 , wherein the keystring has a length equal to a length of the block of ciphertext data.

11. A computer program product comprising a nontransitory storage medium, the computer program product including code that, when executed by processing circuitry of a user device configured to perform a cipher block chaining (CBC) mode decryption operation on a plurality of blocks of ciphertext data, causes the processing circuitry to perform a method, the method comprising:

receiving a stream of data including the plurality of blocks of ciphertext data, each of the plurality of blocks of ciphertext data having been generated using a CBC mode encryption operation on a respective block of original plaintext data of a plurality of blocks of plaintext data, each of the plurality of blocks of plaintext data being readable by the user device;

generating a set of obfuscation pads;

prior to completing the CBC mode decryption operation on the block of ciphertext data, performing an obfuscation operation on an obfuscation pad of the set of obfuscation pads during the CBC mode decryption operation to produce, as an output of the CBC mode decryption operation on the block of ciphertext data, a block of obfuscated plaintext data of a plurality of blocks of obfuscated data, the plurality of blocks of obfuscated plaintext data being unreadable by the user device;

storing the block of obfuscated plaintext data in a storage device accessible to the user device; and

obtaining a decryption key function that, when operating on the block of ciphertext data and a respective key, produces a keystring, and

wherein the performing the obfuscation operation on the obfuscation pad during the CBC mode decryption operation includes performing a combination operation on a previous block of ciphertext data and the obfuscation pad to produce an obfuscated cipherblock.

12. The computer program product as in claim 11 , further comprising:

after completing the CBC mode decryption operation on the block of ciphertext data, performing a deobfuscation operation on the obfuscation pad and the block of obfuscated plaintext data of the plurality of blocks of obfuscated data to produce the respective block of plaintext data of the plurality of blocks of plaintext data.

13. The computer program product as in claim 12 , wherein the performing the deobfuscation operation on the obfuscation pad and the block of obfuscated plaintext data includes performing an XOR operation on the block of obfuscated plaintext data with the obfuscation pad.

14. The computer program product as in claim 11 , wherein generating the set of obfuscation pads includes:

obtaining output from a random number generator; and

forming an obfuscation pad of the set of obfuscation pads based on the output from the random number generator.

15. The computer program product as in claim 11 , wherein the method further comprises: in response to the keystring being produced, performing an XOR operation on a previous block of ciphertext data of the plurality of blocks of ciphertext data with the keystring to produce the respective block of plaintext data.

16. An electronic apparatus configured to perform a cipher block chaining (CBC) mode decryption operation on a plurality of blocks of ciphertext data, the electronic apparatus comprising:

a memory; and

controlling circuitry coupled to the memory, the controlling circuitry configured to:

receive a stream of data including the plurality of blocks of ciphertext data, each of the plurality of blocks of ciphertext data having been generated using a CBC mode encryption operation on a respective block of original plaintext data of a plurality of blocks of plaintext data, each of the plurality of blocks of plaintext data being readable by the user device;

generate a set of obfuscation pads;

prior to completing the CBC mode decryption operation on the block of ciphertext data, perform an obfuscation operation on an obfuscation pad of the set of obfuscation pads during the CBC mode decryption operation to produce, as an output of the CBC mode decryption operation on the block of ciphertext data, a block of obfuscated plaintext data of a plurality of blocks of obfuscated data, the plurality of blocks of obfuscated plaintext data being unreadable by the user device;

store the block of obfuscated plaintext data in a storage device accessible to the user device; and

obtain a decryption key function that, when operating on the block of ciphertext data and a respective key, produces a keystring, and

wherein the controlling circuitry configured to perform the obfuscation operation on the obfuscation pad during the CBC mode decryption operation is further configured to perform a combination operation on a previous block of ciphertext data and the obfuscation pad to produce an obfuscated cipherblock.

17. The electronic apparatus as in claim 16 , wherein the controlling circuitry is further configured to:

after completing the CBC mode decryption operation on the block of ciphertext data, perform a deobfuscation operation on the obfuscation pad and the block of obfuscated plaintext data of the plurality of blocks of obfuscated data to produce the respective block of plaintext data of the plurality of blocks of plaintext data.

18. The electronic apparatus as in claim 17 , wherein the controlling circuitry configured to perform the deobfuscation operation on the obfuscation pad and the block of obfuscated plaintext data is further configured to perform an XOR operation on the block of obfuscated plaintext data with the obfuscation pad.

19. The electronic apparatus as in claim 16 , wherein the controlling circuitry configured to generate the set of obfuscation pads is further configured to:

obtain output from a random number generator; and

form an obfuscation pad of the set of obfuscation pads based on the output from the random number generator.

20. The electronic apparatus as in claim 16 , wherein the controlling circuitry is further configured to, in response to the keystring being produced, perform an XOR operation on a previous block of ciphertext data of the plurality of blocks of ciphertext data with the keystring to produce the respective block of plaintext data.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 7, 2017
From: KUROIWA, RINTARO; INSKIP, THOMAS
To: GOOGLE INC.
Reel/Frame 042621/0086 →
Cited By (1)
US 12,562,884