Encryption for a stream file in an FPGA integrated circuit
First Claim
Patent Images
1. A method for encrypting a data stream used to program a field programmable gate array comprising:
- receiving said data stream wherein said data stream is a string of bits;
detecting a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array;
determining whether encryption is enabled for said first gap;
inserting an encryption identifier into said first gap identifying whether encryption has been enabled;
encrypting bits in said stream of bits from a beginning of said first gap a prespecified number of bits at a time utilizing a prespecified set of bits as a bit mask, wherein;
the encrypting is a loop comprising;
selecting a next prespecified number of bits from the stream of bits as a selected set of bits;
toggling the specified set of bits from the selected set of bits; and
repeating the selecting and the toggling until a second gap in said stream for an unused address in said field programmable gate array is encountered;
detecting the second gap;
ending encryption of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and
wherein the encrypting further comprise;
encrypting a first portion of bits in said first gap from said begining of said first gap responsive to a determination that encrypting is enabled; and
compressing data in a second portion of said first gap responsive to a determination that encrypting is not enabled.
8 Assignments
0 Petitions
Accused Products
Abstract
A system for encrypting and decrypting data in a data stream for programming a Field Programmable Gate Array (FPGA). The system allows for an enable bit to be set for a gap in the data stream and the data is then encrypted from the beginning of the gap. A gap being bits in said data stream that correspond to unprogrammed addresses of a memory in the field programmable gate array. The data is then decrypted by the FPGA when the bit stream is received and an enable bit is detected in a gap of the data stream.
28 Citations
30 Claims
-
1. A method for encrypting a data stream used to program a field programmable gate array comprising:
-
receiving said data stream wherein said data stream is a string of bits; detecting a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array; determining whether encryption is enabled for said first gap; inserting an encryption identifier into said first gap identifying whether encryption has been enabled; encrypting bits in said stream of bits from a beginning of said first gap a prespecified number of bits at a time utilizing a prespecified set of bits as a bit mask, wherein; the encrypting is a loop comprising; selecting a next prespecified number of bits from the stream of bits as a selected set of bits; toggling the specified set of bits from the selected set of bits; and repeating the selecting and the toggling until a second gap in said stream for an unused address in said field programmable gate array is encountered; detecting the second gap; ending encryption of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and wherein the encrypting further comprise; encrypting a first portion of bits in said first gap from said begining of said first gap responsive to a determination that encrypting is enabled; and compressing data in a second portion of said first gap responsive to a determination that encrypting is not enabled. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A memory readable by a processing unit that stores instructions for directing said processing unit for encrypting bits in a data stream for programming a field programmable gate array, said instructions comprising instructions to:
-
receive said data stream wherein said data stream is a string of bits; detect a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array; determine whether encryption is enabled for said first gap; insert an encryption identifier into said first gap identifying whether encryption has been enabled; encrypt bits in said stream of bits prom a beginning of said first gap a prespecified number of bits at a time utilizing a prespecified set of bits as a bit mask, wherein; the encrypting is a loop comprising; selecting a next prespecified number of bits prom the stream of bits as a selected set of bits; toggling the specified set of bits prom the selected set of bits; and repeating the selecting and the toggling until a second gap is encountered; detect the second gap, and end encrypting of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and wherein said instruction to encrypt further comprise; encrypt a first portion of bits in said first gap from said beginning of said first gap responsive to a determination that encrypting is enabled, and compress data in a second portion of said first gap responsive to a determination that encrypting is not enabled. - View Dependent Claims (7, 8, 9, 10)
-
-
11. An apparatus for encrypting a data stream used to program a field programmable gate array comprising:
-
means for receiving said data stream wherein said data stream is a string of bits; means for detecting a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array; means for determining whether encryption is enabled for said first gap; means for inserting an encryption identifier into said first gap identifying whether encryption has been enabled; means for encrypting bits in said stream of bits from a beginning of said first gap a prespecified number of bits at a time utilizing a prespecified set of bits as a bit mask, wherein;
the encrypting is a loop comprising;selecting a next prespecified number of bits from the stream of bits as a selected set of bits; toggling the specified set of bits from the selected set of bits and repeating the selecting and the toggling until a second gap is encountered; means for detecting the second gap; and means for ending encryption of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and wherein said means for encrypting further comprises; means for encrypting a first portion bits in said first gap from said beginning of said first gap responsive to a determination that encrypting is enabled; and means for compressing data in a second portion of said first gap responsive to a determination that encrypting is not enabled. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method for decrypting a data stream used to program a field programmable gate array comprising:
-
receiving said data stream wherein said data stream is a string of bits; detecting a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array; reading an encryption identifier in said first gap; determining whether encryption is enabled from said encryption identifier; decrypting bits in said stream of bits from a beginning of said first gap responsive to a determination that encryption is enabled, wherein; the decrypting is a loop comprising; selecting a next prespecified number of bits from the stream of bits as a selected set of bits; toggling a prespecified set of bits from the selected set of bits; and repeating the selecting and the toggling until a second gap is encountered; detecting the second gap; ending decryption of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and wherein said step of decrypting further comprises; decrypting a first portion of bits in said first gap from said beginning of said first gap responsive to a determination that encrypting is enabled; and decompressing data in a second portion of said first gap responsive to a determination that encrypting is not enabled. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A memory readable by a processing unit that stores instructions for directing said processing unit for decrypting bits in a data stream for programming a field programmable gate array, said instructions comprising instructions to:
-
receive said data stream wherein said data stream is a string of bits, detect a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array, read an encryption identifier from said first gap; determine whether encryption is enabled for said first gap from said encryption identifier, decrypt bits in said stream of bits from a beginning of said first gap, wherein; the decrypting is a loop comprising; selecting a next prespecified number of bits from the stream of bits as a selected set of bits; toggling a prespecified set of bits from the selected set of bits; and repeating the selecting and the toggling until a second gap is encountered; detect the second gap, and end decrypting of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and wherein said instructions to decrypt further comprise; decrypt a first portion of bits in said gap from said beginning of said first gap responsive to a determination that encrypting is enabled, and decompress data in a second portion of said first gap responsive to a determination that encrypting is not enabled. - View Dependent Claims (22, 23, 24, 25)
-
-
26. An apparatus for decrypting a data stream used to program a field programmable gate array comprising:
-
means for receiving said data stream wherein said data stream is a string of bits; means for detecting a first gap in said data stream wherein said first gap is bits in said stream for an unused address in said field programmable gate array; means for reading an encryption identifier in said first gap; means for determining whether encryption is enabled from said encryption identifier; means for decrypting bits in said stream of bits from a beginning of said first gap responsive to a determination that encryption is enabled, wherein; the decrypting is a loop comprising; selecting a next prespecified number of bits from the stream of bits as a selected set of bits; toggling a prespecified set of bits from the selected set of bits; and repeating the selecting and the toggling until a second gap is encountered; means for detecting the second gap; means for ending decryption of bits in said stream of bits at a beginning of said second gap in response to detecting said second gap; and wherein said means for decrypting further comprises; means for decrypting a first portion of bits in said first gap from said beginning of said gap responsive to a determination that encrypting is enabled; and means for decompressing data in a second portion of said first gap responsive to a determination that encrypting is not enabled. - View Dependent Claims (27, 28, 29, 30)
-
Specification