IP Library Granted Patent US 8,804,953
Granted Patent B2
US 8,804,953 · App. 12/273,316 · Granted Aug 12, 2014

Extensive ciphertext feedback

Inventor: James P. Schneider (Raleigh, NC)
Assignee: Red Hat, Inc.
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 8,804,953
App. No.
12/273,316
Granted
Aug 12, 2014
Kind
B2
Abstract

Some embodiments of a method and apparatus for encrypting and decrypting data have been presented. In one embodiment, a stream cipher is run in parallel with a block cipher to output a stream of bits with a length equal to a number of ciphertext blocks in an output stream of the block cipher. The method may further include pre-processing a current plaintext block based on the stream of bits and the number of ciphertext blocks in the output stream of the block cipher. Then the block cipher may encipher the pre-processed block to generate a current ciphertext block.

Claims (66)

1. A computer-implemented method comprising:

generating, by a stream cipher executable by a processing device, a stream of bits with a length equal to a number of ciphertext blocks in an output stream of a block cipher;

processing, by an encipherer executable by the processing device, a current plaintext block in view of the stream of bits and the number of ciphertext blocks in the output stream of the block cipher; and

enciphering, by the block cipher executable by the processing device, a result of the processing to generate a current ciphertext block.

2. The method of claim 1 , wherein processing the current plaintext block comprises:

for each of a plurality of ciphertext blocks in the output stream,

putting bits of the stream of bits in a one-to-one correspondence with the plurality of ciphertext blocks in the output stream;

performing an exclusive-or (XOR) operation on the current plaintext block with each ciphertext block of the output stream of the block cipher having a corresponding bit in the stream of bits being a predetermined value.

3. The method of claim 1 , further comprising:

generating a block-sized random value as an initial vector for the block cipher.

4. The method of claim 1 , further comprising:

using a randomly generated initial vector of the block cipher as a message key of the stream cipher.

5. The method of claim 1 , wherein processing the current plaintext block comprises:

performing an XOR operation on the current plaintext block with a block at a predetermined location in the output stream, in addition to zero or more additional blocks from the output stream.

6. An apparatus comprising:

a processing device;

a stream cipher executable by the processing device to generate a stream of bits with a length equal to a number of ciphertext blocks in an output stream of a block cipher;

an encipherer executable by the processing device to process a current plaintext block in view of the stream of bits and the number of ciphertext blocks in the output stream of the block cipher; and

the block cipher executable by the processing device to encipher a result from the processing device to generate a current ciphertext block.

7. The apparatus of claim 6 , wherein processing the current plaintext block comprises: for each of a plurality of ciphertext blocks in the output stream, putting bits of the stream of bits in a one-to-one correspondence with the plurality of ciphertext blocks in the output stream and performing an exclusive-or (XOR) operation on the current plaintext block with each ciphertext block of the output stream of the block cipher having a corresponding bit in the stream of bits being a predetermined value, and wherein the block cipher enciphers a block generated from the XOR operation to generate the current ciphertext block.

8. The apparatus of claim 6 , further comprising:

an initialization vector generator to generate a block-sized random value as an initial vector for the block cipher.

9. The apparatus of claim 6 , wherein a randomly generated initial vector of the block cipher is used as a message key of the stream cipher.

10. The apparatus of claim 6 , further comprising an input/output device to append the current ciphertext block to an output stream.

11. The apparatus of claim 6 , wherein the processing device is further to perform an XOR operation on the current plaintext block with a block at a predetermined location in the output stream, in addition to zero or more additional blocks from the output stream.

12. A system comprising the apparatus of claim 6 , further comprising:

a network, wherein the current ciphertext block is sent via the network to a computing device.

13. A non-transitory computer-readable storage medium that provides instructions that, when executed by a processing device, will cause the processing device to perform a method comprising:

generating, by a stream cipher executable by the processing device, a stream of bits with a length equal to a number of ciphertext blocks in an output stream of a block cipher;

processing, by an encipherer executable by the processing device, a current plaintext block in view of the stream of bits and the number of ciphertext blocks in the output stream of the block cipher; and

enciphering, by the block cipher executable by the processing device, a result of the processing to generate a current ciphertext block.

14. The non-transitory computer-readable storage medium of claim 13 , wherein processing the current plaintext block comprises:

for each of a plurality of ciphertext blocks in the output stream,

putting bits of the stream of bits in a one-to-one correspondence with the plurality of ciphertext blocks in the output stream;

performing an exclusive-or (XOR) operation on the current plaintext block with each ciphertext block of the output stream of the block cipher having a corresponding bit in the stream of bits being a predetermined value.

15. The non-transitory computer-readable storage medium of claim 13 , wherein the method further comprises:

generating a block-sized random value as an initial vector for the block cipher.

16. The non-transitory computer-readable storage medium of claim 13 , wherein the method further comprises:

using a randomly generated initial vector of the block cipher as a message key of the stream cipher.

17. The non-transitory computer-readable storage medium of claim 13 , wherein processing the current plaintext block comprises:

performing an XOR operation on the current plaintext block with a block at a predetermined location in the output stream, in addition to zero or more additional blocks from the output stream.

18. A method comprising:

receiving a stream of ciphertext blocks and a stream of bits, wherein the ciphertext blocks have been generated by a block cipher and the stream of bits have been generated by a stream cipher running in parallel with the block cipher;

deciphering a current ciphertext block of the stream of ciphertext blocks; and

performing, by a processing device, an exclusive-OR (XOR) operation on the deciphered block and one or more ciphertext blocks of the stream of ciphertext blocks in view of the stream of bits to generate a current plaintext block.

19. The method of claim 18 , wherein performing the XOR operation on the deciphered block and the one or more ciphertext blocks of the stream of ciphertext blocks comprises:

performing the XOR operation on the deciphered block and the one or more ciphertext blocks of the stream of ciphertext blocks corresponding to bits having a predetermined value in the stream of bits to generate the current plaintext block.

20. The method of claim 18 , further comprising:

appending the current plaintext block to an output stream of plaintext blocks,

wherein the stream of bits have been randomly generated by the stream cipher in parallel with the block cipher.

21. An apparatus comprising:

a processing device;

an input/output device to receive a stream of ciphertext blocks and a stream of bits, wherein the ciphertext blocks have been generated by a block cipher and the stream of bits have been generated by a stream cipher running in parallel with the block cipher;

an encipherer, executable by the processing device, to decipher a current ciphertext block of the stream of ciphertext blocks; and

an exclusive-OR (XOR) module executable by the processing device to perform an XOR operation on the deciphered block and one or more ciphertext blocks of the stream of ciphertext blocks in view of the stream of bits to generate a current plaintext block.

22. The apparatus of claim 21 , wherein the XOR module performs the XOR operation on the deciphered block and the one or more ciphertext blocks of the stream of ciphertext blocks corresponding to bits having a predetermined value in the stream of bits to generate the current plaintext block.

23. The apparatus of claim 21 , wherein the input/output device appends the current plaintext block to an output stream of plaintext blocks, and wherein the stream of bits have been randomly generated by the stream cipher in parallel with the block cipher.

24. A non-transitory computer-readable storage medium that provides instructions that, when executed by a processing device, will cause the processing device to perform operations comprising:

receiving, by the processing device, a stream of ciphertext blocks and a stream of bits, wherein the ciphertext blocks have been generated by a block cipher and the stream of bits have been generated by a stream cipher running in parallel with the block cipher;

deciphering, by the processing device, a current ciphertext block of the stream of ciphertext blocks; and

performing, by the processing device, an exclusive-OR (XOR) operation on the deciphered block and one or more ciphertext blocks of the stream of ciphertext blocks in view of the stream of bits to generate a current plaintext block.

25. The non-transitory computer-readable storage medium of claim 24 , wherein performing the XOR operation on the deciphered block and the one or more ciphertext blocks of the stream of ciphertext blocks comprises:

performing the XOR operation on the deciphered block and the one or more ciphertext blocks of the stream of ciphertext blocks corresponding to bits having a predetermined value in the stream of bits to generate the current plaintext block.

26. The non-transitory computer-readable storage medium of claim 24 , wherein the operations further comprise:

appending the current plaintext block to an output stream of plaintext blocks,

wherein the stream of bits have been randomly generated by the stream cipher in parallel with the block cipher.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2008
From: SCHNEIDER, JAMES P.
To: RED HAT, INC.
Reel/Frame 021853/0825 →
Continuity (1)
Related Publication 20100124328A1 · May 20, 2010