IP Library Granted Patent US 10,587,399
Granted Patent B2
US 10,587,399 · App. 15/614,328 · Granted Mar 10, 2020

Data conversion systems and methods

Inventors: Sergio A. Fernandez (San Diego, CA); Bruce Conway (Williston, ND); Drew Conway (Williston, ND); David J. Gotrik (Coronado, CA); Ayman Ibaida (Mill Park, AU); Dhiah Al-Shammary (Lalor, AU); Alsharif Abuadbba (Victoria, AU); Mark Conway (San Diego, CA)
Assignee: AgilePQ, Inc.
H04L9/0662H04L1/0075H04L9/065H04L9/12H04L9/14H04L9/16G06F21/602H04L1/0061H04L9/06H04L2209/043H04L2209/08H04L2209/16H04L2209/805
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,587,399
App. No.
15/614,328
Granted
Mar 10, 2020
Kind
B2
Abstract

In various embodiments, a computer-readable memory medium coupled to a processor is disclosed. The memory medium is configured to store instructions which cause the processor to retrieve a seed value, receive a digital bit stream, receive a digital bit stream, generate a stream of random bits, using the seed value as a seed to a pseudo random number generator (PRNG), wherein the stream of random bits contains at least as many bits as the digital bit stream, shuffle bits of the stream of random bits to create a random bit buffer, generate an obfuscated digital bit stream by applying a first exclusive OR (XOR) to the digital bit stream and the random bit buffer, wherein the obfuscated digital bit stream has the same number of bits as the digital bit stream, and provide the obfuscated digital bit stream to the communications interface.

Claims (68)

1. A communications device comprising: a communications interface;

a processor; and

a non-transient computer-readable memory medium operatively coupled to the processor, wherein the memory medium is configured to store instructions configured to cause the processor to:

retrieve a seed value;

receive a digital bit stream;

generate a stream of random bits, using the seed value as a seed to a pseudo random number generator (PRNG), wherein the stream of random bits contains at least as many bits as the digital bit stream;

shuffle bits of the stream of random bits to create a random bit buffer;

generate an obfuscated digital bit stream by applying a first exclusive OR (XOR) to the digital bit stream and the random bit buffer, wherein the obfuscated digital bit stream has the same number of bits as the digital bit stream;

receive a second digital bit stream;

generate a second obfuscated digital bit stream by performing a second XOR with the second digital bit stream and the random bit buffer, wherein only bits of the random bit buffer not used in the first XOR are used in the second XOR;

provide the second obfuscated digital bit stream to the communications interface if the second obfuscated digital bit stream has the same number of bits as the second digital bit stream; and

provide the obfuscated digital bit stream to the communications interface.

2. The communications device of claim 1 , wherein the stream of random bits consists of a power of two number of bytes.

3. The communications device of claim 1 , wherein the instructions are further configured to cause the processor to shuffle the bits of the stream of random bits such that the processor:

initializes the random bit buffer;

transverses the bits in the stream of random bits and for each bit that is set, calculates a destination bit location; and

flips the bit in the random bit buffer at the destination bit location.

4. The communications device of claim 3 , wherein the instructions are further configured to cause the processor to initialize the random bit buffer such that the processor sets all of the bits of the random bit buffer to be the same value.

5. The communications device of claim 3 , wherein the instructions are further configured to cause the processor to initialize the random bit buffer such that the processor sets all of the bits of the random bit buffer to be 0.

6. The communications device of claim 3 , wherein the instructions are configured to cause the processor to calculate the destination bit location using a table lookup.

7. The communications device of claim 1 , wherein the instructions are further configured to cause the processor to:

generate a second stream of random bits from the PRNG when the second XOR reaches the end of the random bit buffer but not all bits of the second digital bit stream have been XORed;

shuffle bits of the second stream of random bits to refill the random bit buffer; and

continue to generate the second obfuscated digital bit stream by applying a third XOR to the second digital bit stream and the random bit buffer, wherein first bits of the third XOR are the first bit of the random bit buffer and the bit after the last bit of the second digital bit stream used in the second XOR.

8. The communications device of claim 7 , wherein the instructions are further configured to cause the processor to:

shuffle the bits of the stream of random bits using a lookup table to identify which bits to swap;

generate a shuffled lookup table by swapping a plurality of values in the lookup table based on a plurality of bits in the stream of random bits; and

shuffle the bits of the second stream of random bits using the shuffled lookup table to identify which bits to swap.

9. The communications device of claim 8 , wherein the instructions are further configured to cause the processor to generate the shuffled lookup table by causing the processor to swap a prime number of values in the lookup table.

10. A computer-implemented method for obfuscating data comprising:

retrieving a seed value;

receiving a digital bit stream;

generating a stream of random bits, using the seed value as a seed to a pseudo random number generator (PRNG), wherein the stream of random bits contains at least as many bits as the digital bit stream;

shuffling bits of the stream of random bits to create a random bit buffer;

receiving a second digital bit stream;

generating a second obfuscated digital bit stream by performing a second XOR with the second digital bit stream and the random bit buffer, wherein only bits of the random bit buffer not used in the first XOR are used in the second XOR; and

generating an obfuscated digital bit stream by applying a first exclusive OR (XOR) to the digital bit stream and the random bit buffer, wherein the obfuscated digital bit stream has the same number of bits as the digital bit stream.

11. The computer-implemented method of claim 10 , further comprising:

initializing the random bit buffer;

traversing the bits in the stream of random bits and for each bit that is set, calculating a destination bit location; and

flipping the bit in the random bit buffer at the destination bit location.

12. The computer-implemented method of claim 11 , wherein initializing the random bit buffer sets all of the bits of the random bit buffer to be the same value.

13. The computer-implemented method of claim 11 , wherein calculating the destination bit comprises using a table lookup.

14. The computer-implemented method of claim 10 , further comprising:

generating a second stream of random bits from the PRNG when the second XOR reaches the end of the random bit buffer but not all bits of the second digital bit stream have been XORed;

shuffling bits of the second stream of random bits to refill the random bit buffer; and

continuing to generate the second obfuscated digital bit stream by applying a third XOR to the second digital bit stream and the random bit buffer, wherein first bits of the third XOR are the first bit of the random bit buffer and the bit after the last bit of the second digital bit stream used in the second XOR.

15. The computer-implemented method of claim 14 , further comprising:

shuffling the bits of the stream of random bits using a lookup table to identify which bits to swap;

generating a shuffled lookup table by swapping a plurality of values in the lookup table based on a plurality of bits in the stream of random bits; and

shuffling the bits of the second stream of random bits using the shuffled lookup table to identify which bits to swap.

16. A non-transient computer-readable memory medium configured to store instructions thereon that when loaded by a processor cause the processor to:

retrieve a seed value;

receive a digital bit stream;

generate a stream of random bits, using the seed value as a seed to a pseudo random number generator (PRNG), wherein the stream of random bits contains at least as many bits as the digital bit stream;

shuffle bits of the stream of random bits to create a random bit buffer;

generate an obfuscated digital bit stream by applying a first exclusive OR (XOR) to the digital bit stream and the random bit buffer, wherein the obfuscated digital bit stream has the same number of bits as the digital bit stream;

receive a second digital bit stream;

generate a second obfuscated digital bit stream by performing a second XOR with the second digital bit stream and the random bit buffer, wherein only bits of the random bit buffer not used in the first XOR are used in the second XOR;

generate a second stream of random bits from the PRNG if the second XOR reaches the end of the random bit buffer but not all bits of the second digital bit stream have been XORed;

shuffle bits of the second stream of random bits, if generated, to refill the random bit buffer; and

continue to generate the second obfuscated digital bit stream, if a second stream of random bits has been generated, by applying a third XOR to the second digital bit stream and the random bit buffer, wherein first bits of the third XOR are the first bit of the random bit buffer and the bit after the last bit of the second digital bit stream used in the second XOR; and

provide the second obfuscated digital bit stream to the communications interface if the second obfuscated digital bit stream has the same number of bits as the second digital bit stream; and

provide the obfuscated digital bit stream to a communications interface.

17. The non-transient computer-readable memory medium of claim 16 , wherein the instructions stored thereon further cause the processor to:

shuffle the bits of the stream of random bits using a lookup table to identify which bits to swap;

generate a shuffled lookup table by swapping a plurality of values in the lookup table based on a plurality of bits in the stream of random bits; and

shuffle the bits of the second stream of random bits using the shuffled lookup table to identify which bits to swap.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2022
From: AGILEPQ, INC.
To: TMT ADVISORS, LLC
Reel/Frame 058595/0304 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 5TH ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 045523 FRAME: 0783. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 18, 2018
From: FERNANDEZ, PH.D., SERGIO A.; CONWAY, BRUCE; CONWAY, DREW; GOTRIK, DAVID J.; IBAIDA, AYMAN; AL-SHAMMARY, DHIAH; ABUADBBA, ALSHARIF; CONWAY, MARK
To: AGILEPQ, INC.
Reel/Frame 045782/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2018
From: FERNANDEZ, PH.D., SERGIO A; CONWAY, BRUCE; CONWAY, DREW; GOTRIK, DAVID J; ABAIDA, AYMAN; AL-SHAMMARY, DHIAH; ABUADBBA, ALSHARIF; CONWAY, MARK
To: AGILEPQ, INC.
Reel/Frame 045523/0783 →
Continuity (6)
Provisional Application 62346451 · Jun 6, 2016
Provisional Application 62354615 · Jun 24, 2016
Provisional Application 62376876 · Aug 18, 2016
Provisional Application 62401609 · Sep 29, 2016
Provisional Application 62438443 · Dec 22, 2016
Related Publication 20170353302A1 · Dec 7, 2017
Cited By (2)
US 12,381,714 US 12,696,245