throbber

`
`
`
`
`
`
`
`US 7,558,967 B2
`(10) Patent No.:
`a2) United States Patent
`
`
`
`
`
`
`Jul. 7, 2009
`(45) Date of Patent:
`Wong
`
`
`
`
`US007558967B2
`
`
`
`
`
`
`
`
`(54) ENCRYPTION FOR A STREAMFILE IN AN
`
`
`FPGA INTEGRATED CIRCUIT
`
`
`
`
`
`
`
`
`
`(75)
`Inventor; Wayne Wong, Sunnyvale, CA (US)
`
`
`.
`.
`:
`:
`:
`
`
`
`
`
`
`(73) Assignee: (us) Corporation, MountainView, CA
`
`
`.
`:
`:
`:
`:
`(*) Notice:
`Subject to any disclaimer, the term ofthis
`
`
`
`
`
`
`
`
`
`
`
`
`patent is extended or adjusted under 35
`
`
`
`
`U.S.C. 154(b) by 583 days.
`
`
`
`
`(21) Appl. No.: 09/953,580
`.
`
`
`
`
`Sep. 13, 2001
`Filed:
`
`
`
`
`
`(22)
`
`
`
`
`5,768,372 A
`
`5,946,478 A *
`
`5,970,142 A
`
`6,028,445 A *
`
`6,118,869 A *
`
`
`6,205,574 B1L*
`
`
`6.351.142 BL*
`
`
`6,357,037 B1*
`
`
`6,446,242 BL*
`6.507.943 BI*
`
`
`_
`
`
`
`EP
`
`
`
`
`
`
`6/1998 Sungetal.
`
`
`
`
`
`8/1999 Lawman ou... eee 716/17
`
`
`
`
`
`10/1999 Erickson.....
`... 380/21
`
`
`
`
`
`
`2/2000 Lawman ........
`ve 326/38
`
`
`
`
`
`9/2000 Kelemetal. oe. 380/44
`
`
`
`
`
`
`
`3/2001 Dellinger et al... , 716/16
`
`
`
`
`
`vee 326/39
`2/2002 Abbott oo...
`
`
`
`
`
`
`3/2002 Burmhametal.
`......000.. 716/17
`
`
`
`
`
`
`
`9/2002 Li
`tad.
` eee
`eee eeee 716/6
`1/2003 Kelem 716/16
`
`
`
`(Continued)
`
`
`FOREIGN PATENT DOCUMENTS
`
`
`
`
`4/2001
`1093056
`*
`
`(Continued)
`
`
`OTHER PUBLICATIONS
`
`
`
`
`
`
`
`Microsoft Press Computer Dictionary, 3rd edition, Copyright 1997,
`p.421.*
`
`
`
`
`
`
`
`(65)
`
`
`
`
`
`(51)
`
`
`
`(56)
`
`
`4,910,417 A
`
`5,388,157 A
`
`5,406,627 A *
`
`5,426,379 A *
`
`5.451.887 A
`
`5,515,437 A *
`
`5,548,648 A *
`
`5,675,553 A
`
`
`
`
`Prior Publication Data
`
`
`
`
`US 2003/0163715 Al
`Aug. 28, 2003
`
`
`Int. Cl.
`
`
`
`
`(2006.01)
`HOAL 9/18
`
`
`
`
`
`
`
`
`
`
`
`(52) U.S.C. eens 713/189; 716/16; 716/17;
`326/8; 326/38; 326/39; 713/191; 713/193
`primaryPxaminerBambiaNes
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`(58) Field of Classification Search............. 716/16-17; Avent.orFirm—LewisTA) Att and Roca LLP
`
`326/8, 37-41, 4, 44: 380/44. 42. 37: 708/232,
`Attorney, Agent, or Firm—Lewis and
`Roca
`(74)
`
`
`
`
`
`
`
`
`(57)
`_ 708/626, 712/206; 713/191, 188, 189, 193
`ABSTRACT
`
`
`
`
`
`
`
`See application file for complete search history.
`
`
`
`
`
`
`
`
`
`
`
`References Cited
`A system for encrypting and decrypting data in a data stream
`
`
`
`
`
`
`
`for programminga Field Programmable Gate Array (FPGA).
`
`
`
`
`
`
`
`
`
`
`U.S. PATENT DOCUMENTS
`The system allows for an enable bit to be set for a gap in the
`
`
`
`
`
`
`
`
`
`data stream andthe data is then encrypted from the beginning
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`ofthe gap. A gap beingbits in said data stream that correspond
`3/1990 EL Gamal et al. «........-. 307/465
`
`
`
`
`
`
`
`
`
`
`
`
`
`2/1995 Austin ..scecseesnesseeee 3804
` mproorammed addresses of a memory
`in the field vro-
`
`
`
`
`
`
`
`
`4/1995 Thompsonetal. .......... 380/237
`programm
`;
`P
`ty
`
`
`
`
`
`
`
`
`
`
`
`
`
`6/1995 Trimberger.....
`.. 326/39
`grammable gate array. The data is then decrypted by the
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`9/1995 El Avatetal.
`_.. 326/39
`FPGA when the bit stream is received and an enable bit is
`...
`
`
`
`
`
`
`
`
`
`5/1996 Kattaetal. wc 380/217
`detected in a gap of the data stream.
`
`
`
`
`
`8/1996 Yorke-Smith «0.0.00... 713/193
`
`
`
`
`
`10/1997 O’Brien, Jr. etal.
`........ 367/135
`
`
`
`
`
`.
`
`.
`
`(Continued)
`.
`
`
`
`
`30 Claims, 4 Drawing Sheets
`
`
`
`
`|PROGRAMFPGA]____-——— 200
`
`PRODUCE DATA STREAM 210
`
`
`
`
`
`
`
`SELECT ENCRYPTION OF DATA STREAM|___ 20
`
`ENCRYPT DATA STREAM
`
`
`STORE ON EXTERNAL SOURCE
`
`
`
`230
`
`
`
`~~ 240
`
`
`
`
`SEND ENCRYPTED DATA STREAM TO FPGA |~ 250
`
`
`
`
`
`
`
`
`
`
`DE-ENCRYPT DATA STREAM
`
`
`
`“260
`
`
`
`CONFIGURE RAM/PROM
`
`
`
`WITH DE-ENCRYPTED
`
`
`DATA STREAM
`sr 270
`
`
`
`
`
`
`
`
`Page | of 10
`
`FLEX LOGIX EXHIBIT 1044
`
`FLEX LOGIX EXHIBIT 1044
`
`Page 1 of 10
`
`

`

`
`
`US 7,558,967 B2
`
`
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`
`
`
`
`JP
`JP
`JP
`JP
`
`
`
`
`
`
`7-281596 A
`
`2000-76075 A
`
`
`2000-78023 A
`
`2005-518691 A
`
`10/1996
`
`3/2000
`
`
`3/2000
`
`6/2005
`
`
`
`
`
`
`
`
`
`
`
`
`
`2/2003 Young et al. ......... 716/16
`6,526,557 B1*
`
`
`
`
`
`
`
`6,654,889 B1* 11/2003 Trimberger
`. 713/191
`.
`
`
`
`
`
`
`6,735,291 BL*
`5/2004 Schmid etal.
`. 379/189
`.
`
`
`
`
`
`
`
`
`
`6,738,962 B1*
`5/2004 Flaherty etal.
`we. T16/17
`OTHER PUBLICATIONS
`%
`-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`6,756,811 B2
`6/2004 Or-Bach.....
`326/41
`Glenn, R. and Kent, S., “The NULL Encryption Algorithm andIts
`
`
`
`
`
`
`
`
`
`6,904,527 BL*
`6/2005 Parlour etal.
`. 713/189
`:
`:
`
`
`
`
`
`
`
`
`
`Use with IPsec,” RFC 2410,Network Working Group, Nov. 1998, UR
`
`
`
`
`
`
`
`6,931,543 BL*
`8/2005 Pangetal.
`.....
`weve 713/193
`
`
`http://www.faqs.org/ftp/rfe/pdf/rfc2410.txt.pdf, 6 pages.
`.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`2001/0032318 Al* 10/2001 Yipetal.
`....
`we. 713/190
`Patent Application
`2003-527602 (Publication
`N
`‘
`No.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`2001/0056546 AL* 12/2001 Ogilvie... 713/200 apanese*arent Appicaion No. - uniicaliion (NO.
`
`
`
`
`
`
`
`
`
`2005-518691) Notice ofAllowance and English translation of Infor-
`
`
`
`
`
`
`
`
`
`mation Sheetfor priorart listed in Notice ofAllowance dated Sep. 30,
`
`
`2008, 4 pages.
`
`
`* cited by examiner
`
`
`
`
`
`FOREIGN PATENT DOCUMENTS
`
`
`05056267 A
`3/1993
`
`
`
`
`
`
`
`JP
`
`
`
`
`
`Page 2 of 10
`
`Page 2 of 10
`
`

`

`
`U.S. Patent
`
`
`
`
`Jul. 7, 2009
`
`
`
`
`Sheet 1 of 4
`
`
`
`US 7,558,967 B2
`
`
`
`
`SEND DATA STREAM TO FPGA
`
`
`
`
`
`
`
`130
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`CONFIGURE RAM/PROM WITH DATA STREAM |— 140
`
`
`PRIOR ART
`
`
`
`
`FIG. 1
`
`Page 3 of 10
`
`Page 3 of 10
`
`

`

`
`U.S. Patent
`
`
`
`
`Jul. 7, 2009
`
`
`
`
`Sheet 2 of 4
`
`
`
`US 7,558,967 B2
`
`
`
`PROGRAM FPGA |_---_-_ 200
`
`
`
`
`
`PRODUCE DATA STREAM | nig
`
`
`
`
`
`SELECT ENCRYPTION OF DATA STREAM|__
`
`
`
`
`
`
`ENCRYPT DATA STREAM|———-——— 230
`
`
`
`
`STORE ON EXTERNAL SOURCE|—-~_ 249
`
`
`
`
`
`
`
`SEND ENCRYPTED DATA STREAM TO FPGA|™ 250
`
`
`
`
`
`DE-ENCRYPT DATA STREAM~—— 260
`
`
`
`
`
`CONFIGURE RAM/PROM
`
`
`WITH DE-ENCRYPTED
`
`
`
`DATA STREAM _—
`
`270
`
`
`
`
`
`
`FIG. 2
`
`Page 4 of 10
`
`Page 4 of 10
`
`

`

`
`U.S. Patent
`
`
`
`
`Jul. 7, 2009
`
`
`
`
`Sheet 3 of 4
`
`
`
`US 7,558,967 B2
`
`START
`
`
`
`
`
`
`
`OF GAP?
`
`
`
` IS
`
`
`ENCRYPTION
`
`
`
`
`
` END OF
`
`ENABLED?
`
`330
`
`
`
`
`
`
`COMPLEMENT EVERY
`
`
`
`8th BIT UNTIL
`
`BEGINNING OF
`
`
`NEXT GAP
`
`a
`
`
`
`
`
`
`
`DATA STREAM?
`
`350
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 5 of 10
`
`Page 5 of 10
`
`

`

`
`U.S. Patent
`
`
`
`
`Jul. 7, 2009
`
`
`
`
`Sheet 4 of 4
`
`
`
`US 7,558,967 B2
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`OF GAP?
`
`
`
`
`
`
`
`
`
`
`
` IS
`
`
`
`
`ENCRYPTION
`
`ENABLED?
`
`
`
`
`
`
` COMPLEMENT EVERY
`
`
`
`
`
`
`Sth BIT UNTIL
`
` ———~—+—— 440
`
`BEGINNING OF
`
`
`NEXT GAP
`
`
`
`
`
`
`
` FPGA RECEIVES ENCRYPTED|__=S—-__410
`DATA STREAM
`
`430
`
`DATA STREAM? CONFIGURE RAM/PROM
`
`
`
`
`
`
`
`
`
`
`
`
` 450
`
`END OF
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`WITH DE-ENCRYPTED
`
`
`DATA STREAM
`
`
`
`
`
`
`
`FIG.4
`
`Page 6 of 10
`
`Page 6 of 10
`
`

`

`US 7,558,967 B2
`
`1
`ENCRYPTION FOR A STREAM FILE IN AN
`FPGA INTEGRATED CIRCUIT
`
`BACKGROUND OF THE INVENTION
`
`2
`can make design changes or correct design errors. The CM
`can be downloaded from an external source or stored on-chip.
`This type of FPGA can be reprogrammedrepeatedly, which
`significantly reduces development and manufacturing costs.
`Design software may be used to program the FPGA. The
`design software may compile a specific configuration of the
`programmable switches desired by the end-user, into FPGA
`configuration data. The design software assembles the con-
`figuration data into a bit stream, 1.e., a stream of ones and
`zeros, that is fed into the FPGA and used to program the
`configuration memories for the programmable switches. The
`bitstream is the data-pattern to be loaded into the CM that
`determines whether each memory cell stores a “1” or “0”. The
`stored bit in each CM controls whetherits associated transis-
`
`tor switch is turned on oroff. End users typically use software
`to create the bitstream after they have simulated and, tested
`the design for the FPGA.
`Referring to the flow chart of FIG. 1, a designer or end user
`programs an FPGA 100. The design software assembles the
`configuration data into a data stream 110. This act mayalso be
`performed by software personnel. The data stream may be
`stored on a source external to the FPGA 120. Onstart up, the
`external source sendsthe data stream to the FPGA 130. Once
`
`20
`
`25
`
`in the FPGA,the data stream configures the RAM or PROM
`within the FPGA.
`Ina FPGAthatuses a data stream that is downloaded from
`
`1. Field of the Invention
`The present invention relates to field programmable gate
`array (FPGA) integrated circuits. More particularly,
`the
`present invention relates to a method and apparatus for
`encrypting a data stream used to program an FPGAdevice.
`2. Backgroundofthe Invention
`A field-programmable gate array (FPGA)is an integrated
`circuit (IC) that includes a two-dimensional array of general
`purposelogic circuits, called cells or blocks, whose functions
`are programmable. The cells are linked to one another by
`programmable buses. Thecell types may be small multifunc-
`tion circuits (or configurable functional blocks or groups)
`capable of realizing all Boolean functions of a few variables.
`The cell types are notrestricted to gates. For example, con-
`figurable functional groups typically include memory cells
`and connectiontransistors that may be used to configure logic
`functions such as addition, subtraction, etc., inside of the
`FPGA.A cell may also contain sequential elements such as
`flip-flops. Two types of logic cells found in FPGAsare those
`based on multiplexers and those based on programmable read
`only memory (PROM) table-lookup memories. Erasable
`FPGAscan be reprogrammed manytimes. This technology is
`especially convenient when developing and debugging a pro-
`totype design for a new product and for manufacture.
`FPGAs may typically include a physical template that
`includes an array of circuits, sets of uncommitted routing
`interconnects, and sets of user programmable switches asso-
`ciated with both the circuits and the routing interconnects.
`Whenthese switches are properly programmed(set to on or
`off states), the template or the underlying circuit and inter-
`connect of the FPGA is customized or configured to perform
`specific customized functions. By reprogramming the on-off
`states ofthese switches, an FPGA can perform manydifferent
`functions. Once a specific configuration of an FPGA has been
`decided upon, it can be configured to perform that one spe-
`cific function.
`The user programmable switches in an FPGA can be
`implementedin various technologies, such as Oxide Nitrogen
`Oxide (ONO)antifuse, Metal- Metal (M-M)antifuse, Static
`Random Access Memory (SRAM) memory cell, Flash Eras-
`able Programmable Read Only Memory (EPROM) memory
`cell, and electronically Erasable Progammable Read Only
`Memory (EEPROM) memory cell. FPGAs that employ fuses
`or antifuses as switches can be programmed only once. A
`memory cell controlled switch implementation of an FPGA
`can be reprogrammedrepeatedly. In this scenario, a NMOS
`FIG. 1 is a flow chart showingthepriorart.
`transistor may be used asthe switch to either connector leave
`FIG. 2 is a flow chart showing one embodiment of the
`unconnected two selected points (A,B) in the circuit. The
`disclosed system.
`source and drain nodesofthe transistor may be connected to
`FIG. 3 is a flow chart showing one embodiment of the
`points A, B respectively, and its gate node maybedirectly or
`disclosed system.
`indirectly connected to the memory cell. By setting the state
`FIG. 4 is a flow chart showing one embodiment of the
`ofthe memory cell to either logical “1”or “0”, the switch can
`disclosed system.
`be turned on or off and thus point A andBare either connected
`or remain unconnected. Thus, the ability to program these
`switches provides for a very flexible device.
`FPGAsmaystore the program that determinesthe circuit
`to be implemented in a RAM or PROM on the FPGA chip.
`The pattern of the data in this configuration memory (CM)
`determines the cell’s functions andtheir interconnection wir-
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`an external source, a person maybeable to intercept the data
`stream asit is being loaded onto the FPGA, betweenacts 120
`and 130 of FIG. 1. This may allow such a person to reverse
`engineer the IC if he or sheis able to read the data stream.
`
`BRIEF DESCRIPTION OF THE INVENTION
`
`The present invention is directed towards a method and
`apparatus for encrypting a data stream used to program an
`FPGAdevice comprising: determiningif there is at least one
`gap in the data stream; determining whether encryption is
`enabled for the at least one gap in the data stream; and
`encrypting the data stream, if encryption is enabledfor the at
`least one gap.
`The present invention is also directed towards a method
`and apparatus for de-encrypting an encrypted data stream
`used to program an FPGA device comprising: determining if
`there is at least one gap in the data stream; determining
`whether encryption was enabledfor the at least one gap in the
`data stream; and de-encrypting the data stream, if encryption
`wasenabled for the at least one gap.
`
`BRIEF DESCRIPTION OF THE DRAWING
`FIGURES
`
`DETAILED DESCRIPTION OF THE INVENTION
`
`Those of ordinary skill in the art will realize that the fol-
`lowing description ofthe present inventionis illustrative only
`and not in any way limiting. Other embodimentsofthe inven-
`tion will readily suggest themselves to such skilled persons.
`FIG.2 refers to a flow chart describing one embodiment of
`the disclosed method. In the first act 200 a designer or user
`
`ing. Each bit of CM controls a transistor switch in the target
`circuit that can select some cell function or make (or break)
`some connection. By replacing the contents of CM,designers
`
`Page 7 of 10
`
`Page 7 of 10
`
`

`

`
`
`US 7,558,967 B2
`
`
`
`
`
`
`
`
`3
`
`
`
`
`
`
`
`
`programs an FPGA 200. The design software assembles the
`
`
`
`
`
`
`
`
`
`configuration data into a data stream 210. The design soft-
`
`
`
`
`
`
`
`
`ware may inquire as to whether the designer or the user
`
`
`
`
`
`
`
`
`wishes to have the data stream encrypted. If the designer or
`
`
`
`
`
`
`
`
`
`user wants the data stream to be encrypted, then he or she may
`
`
`
`
`
`
`
`
`
`
`select the option for encryption at act 220. The data stream is
`
`
`
`
`
`
`
`
`
`encrypted at act 230. This act 230 may also be performed by
`
`
`
`
`
`
`
`
`software personnel. The data stream may bestored on a
`source external to the FPGA 240. The external data source
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`may be a PROM, CPU or any other memory device. On
`
`
`
`
`
`
`
`
`
`start-up, the external source sends the data stream to the
`
`
`
`
`
`
`
`
`
`
`FPGA 250. The FPGA may de-encrypt the data stream prior
`
`
`
`
`
`
`
`to configuring the RAM or PROM 260. Once de-encrypted,
`
`
`
`
`
`
`
`
`
`the data stream configures the RAM or PROM within the
`
`
`
`
`
`
`
`
`FPGA 270. The RAM associated with each programmable
`
`
`
`
`
`
`
`
`
`
`transistor on the FPGA may also be referred to as RAM
`CELLS.
`
`
`
`
`
`
`
`
`
`
`In many systems, the data stream is loaded into CM which
`
`
`
`
`
`
`is addressed by X and Y address lines running horizontally
`
`
`
`
`
`
`
`
`
`and vertically. During the configuration, the data stream bits
`
`
`
`
`
`
`
`
`are loaded sequentially column (Y) by column (Y). Within
`
`
`
`
`
`
`
`
`one column,it is loaded bit by bit from the top to the bottom
`
`
`
`
`
`
`
`(stepping through all the rows or X’s). Someintersections of
`
`
`
`
`
`
`X and Y lines or addresses may have no physical CM bits
`
`
`
`
`
`
`
`
`since those locations may be used by logic modules or other
`
`
`
`
`
`
`
`components. Although there may be locations with no data
`
`
`
`
`
`
`
`
`
`stream bits on the FPGA device, the data stream still contains
`
`
`
`
`
`
`
`data in the form of 1’s or 0’s corresponding to those empty
`locations.
`
`
`
`
`
`
`
`
`Consecutive empty locations in the addressing space may
`
`
`
`
`
`
`
`
`
`be referred to as a “GAP”. The stream data inside the gap is
`not written to the CM and therefore has no effect on the
`
`
`
`
`
`
`
`
`
`
`
`
`
`functionality of the configured FPGA. An address decoder
`
`
`
`
`
`
`
`
`
`
`maysignal the beginning andalso the end of sucha gap. At the
`
`
`
`
`
`
`
`end of the gap, the integrity of the configuration data loaded
`
`
`
`
`
`
`
`
`up to this point may be checked by an on-chip 16-bit Cyclic
`
`
`
`
`
`
`Redundancy Check (CRC)circuit. In another embodiment of
`
`
`
`
`
`
`
`
`the disclosed system that uses a 16-bit CRC, the minimum
`
`
`
`
`
`
`
`
`
`
`
`gap size may be 17 bits. Thefirst bit inside the gap may be the
`
`
`
`
`
`
`
`
`“Encryption Enable”bit. If the Encryption Enable bit is set,
`
`
`
`
`
`
`
`
`
`
`then the subsequent section of the data stream will be
`
`
`
`
`
`
`
`
`
`encrypted. The section may be defined asall the bits after the
`
`
`
`
`
`
`
`Encryption Enable Bit up to the beginning of the next gap.
`
`
`
`
`
`
`
`the sections may be defined in other ways. If
`However,
`
`
`
`
`
`
`
`
`encryption is enabled, every eighth (8th) bit may be comple-
`
`
`
`
`
`
`
`
`
`mented (changed from a “1”to a “0”and from a “0”to a “1”’).
`
`
`
`
`
`
`
`
`Itis not necessary that only the 8” bit be complemented, other
`
`
`
`
`
`
`bits may be complemented, random patterns or un-random
`
`
`
`
`
`
`
`
`
`patterns of data may be insertedin the data stream gaps. If the
`
`
`
`
`
`
`
`encrypted data stream is loaded into the CM ofthe FPGA,the
`
`
`
`
`
`
`
`
`
`FPGA maynot function correctly. Thus the data stream may
`
`
`
`
`
`
`
`be de-encrypted prior to entering the CM but after entering
`
`
`
`
`
`
`
`
`the FPGA device. The encryption can be optionally set to
`
`
`
`
`
`
`
`
`
`“on” or “off” for each section, thus for a particular design,
`
`
`
`
`
`
`
`
`
`
`with a different on/off setting the data stream file can appear
`
`
`
`
`
`
`
`
`very different, thereby making reverse engineering more dif-
`ficult.
`
`
`
`
`
`
`Referring to FIG. 3, an illustration of one embodiment of
`
`
`
`
`
`
`
`
`
`the system is shown. The system receives the data stream at
`
`
`
`
`
`
`
`
`
`act 310. The system determines whether it has received the
`
`
`
`
`
`
`
`start of a gap at query 320. In one embodimentofthe dis-
`
`
`
`
`
`
`
`
`closed system a gap may be as small as 2 bits. In another
`
`
`
`
`
`
`embodimentofthe disclosed system, a gap may beat least 17
`
`
`
`
`
`
`
`
`bits in length upwardsto at least 64 bits in length. The mini-
`
`
`
`
`
`
`
`
`
`mum of 17 bits may be due to the use of a 16-bit CRC. The
`
`
`
`
`
`
`
`
`system then determines whether encryption has been enabled
`
`
`
`
`
`
`
`
`
`
`for that gap at query 330. If encryption has been enabled, the
`
`
`4
`
`
`
`
`
`
`
`system then complements every 8” bit until the beginning of
`
`
`
`
`
`
`
`
`
`
`the next gap at act 340. The system performsthis method until
`it determinesthat it has reached the end of the data stream at
`
`
`
`
`
`
`
`
`
`
`
`query 350.
`
`
`
`
`
`Referring to FIG. 4, another embodimentof the disclosed
`
`
`
`
`
`
`
`
`method is shown. The FPGA receives the encrypted data
`
`
`
`
`
`
`
`
`
`
`stream from the external source at act 410. The system then
`
`
`
`
`
`
`
`
`determines that if it has received the start of a gap at query
`
`
`
`
`
`
`
`
`
`420. Ifthe system determinesit has received the start of a gap,
`
`
`
`
`
`
`
`
`then the system determines whether the encryption was
`
`
`
`
`
`
`
`
`enabled at query 430. If the encryption was enabled, the
`
`
`
`
`
`
`system complementsevery 8” bit (or other n” bit ifa number
`
`
`
`
`
`
`
`
`
`other than 8 was used) until the beginning of the next gap at
`
`
`
`
`
`
`
`
`
`
`act 440. Act 440 in effect de-encrypts the data stream. The
`
`
`
`
`
`
`
`
`system then determines whetherit has received the end ofthe
`
`
`
`
`
`
`
`
`
`data stream at query 450. If the system determinesthat it has
`
`
`
`
`
`
`
`
`
`received the end of the data stream, then the system config-
`ures the RAM and/or PROM of the FPGA with the de-en-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`crypted data stream at act 460.
`
`
`
`
`
`
`In another embodimentof the present invention, portions
`
`
`
`
`
`
`
`
`of the data stream may be compressed andother portions of
`
`
`
`
`
`
`
`
`
`the data stream may be encrypted, thereby further altering the
`
`
`
`
`
`
`
`
`
`data stream and thus hindering those who may attempt to
`
`
`
`
`
`reverse engineer the data stream.
`
`
`
`
`
`
`
`In another embodimentof the present invention, random
`
`
`
`
`
`
`
`
`
`bits maybe inserted into the gaps of the data stream to further
`
`
`
`
`
`
`
`
`
`hinder those who may wish to reverse engineer the data
`stream.
`
`
`
`
`
`
`
`
`While embodiments and applications of this invention
`
`
`
`
`
`
`
`
`have been shown and described, it would be apparentto those
`
`
`
`
`
`
`
`
`
`skilled in the art that many more modifications than men-
`
`
`
`
`
`
`
`
`
`tioned aboveare possible without departing from the inven-
`
`
`
`
`
`
`
`tive concepts herein. The invention, therefore, is not to be
`
`
`
`
`
`
`
`
`
`restricted except
`in the spirit of the appended claims.
`
`
`
`
`
`
`
`
`
`Althoughthe claimsrefer to sending the data stream to RAM
`
`
`
`
`
`
`
`
`
`
`CELLS on the FPGA,those skilled in the art are aware that
`
`
`
`
`
`
`
`
`
`the disclosed system also applies to those devices with other
`
`
`
`
`
`
`
`
`memory devices located in the FPGA,including without limi-
`tation PROMs.
`
`
`Whatis claimedis:
`
`
`
`
`
`
`
`
`1. A methodfor encrypting a data stream used to program
`
`
`
`
`
`
`a field programmable gate array comprising:
`
`
`
`
`
`
`
`
`receiving said data stream wherein said data stream is a
`
`
`string ofbits;
`
`
`
`
`
`
`
`
`detecting a first gap in said data stream wherein saidfirst
`
`
`
`
`
`
`
`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 identi-
`
`
`
`
`
`
`fying whether encryption has been enabled;
`
`
`
`
`
`
`
`encrypting bits in said stream of bits from a beginning of
`
`
`
`
`
`
`
`
`said first gap a prespecified numberof 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 ofbits as a selectedset 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 ofbits in said stream ofbits at a begin-
`
`
`
`
`
`
`ning of said second gap in response to detecting said
`
`
`
`second gap; and
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`50
`
`55
`
`60
`
`65
`
`Page 8 of 10
`
`Page 8 of 10
`
`

`

`
`5
`
`
`
`
`
`wherein the encrypting further comprise:
`
`
`
`
`
`
`
`
`
`encrypting a first portion of bits in said first gap from said
`
`
`
`
`
`
`begining ofsaid 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.
`
`
`
`
`
`
`
`2. The method of claim 1 further comprising:
`
`
`
`
`
`
`detecting an endofsaid bits stream; and
`
`
`
`
`
`
`ending encryption at the end ofsaid bit stream.
`
`
`
`
`
`
`3. The method of claim 1 further comprising:
`
`
`
`
`
`
`
`compressing data in said stream of bits in response to a
`
`
`
`
`
`determination that encryption is not enabled.
`
`
`
`
`
`
`
`4. The method of claim 1, wherein said step of encrypting
`
`
`further comprises:
`
`
`
`
`
`
`
`
`inserting random bitsinto said at least one gap.
`
`
`
`
`
`
`
`
`5. The method of claim 1, wherein said step of encrypting
`
`
`
`
`
`
`
`inserts non-random bits into said first gap.
`
`
`
`
`
`
`
`6. A memory readable by a processing unit that stores
`
`
`
`
`
`
`
`
`instructions for directing said processing unit for encrypting
`
`
`
`
`
`
`
`bits in a data stream for programminga field programmable
`
`
`
`
`
`
`
`gatearray, said instructions comprising instructionsto:
`
`
`
`
`
`
`
`
`
`receive said data stream wherein said data stream is a string
`
`
`ofbits;
`
`
`
`
`
`
`
`
`
`
`detect a first gap in said data stream whereinsaidfirst gap
`is bits in said stream for an unused address in said field
`
`
`
`
`
`
`
`
`
`
`
`
`programmable gate array;
`
`
`
`
`
`
`
`
`determine whether encryption is enabledfor said first gap;
`
`
`
`
`
`
`
`
`insert an encryption identifier into said first gap identifying
`
`
`
`
`
`whether encryption has been enabled;
`
`
`
`
`
`
`
`encryptbits in said stream of bits prom a beginning ofsaid
`
`
`
`
`
`
`first gap a prespecified numberofbits 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 ofbits as a selectedset 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 ofbits at a beginning
`of said second
`
`
`
`
`
`
`
`
`
`
`gap in responseto detecting said second gap; and
`
`
`
`
`
`
`wherein said instruction to encrypt further comprise:
`
`
`
`
`
`
`
`
`
`
`encrypt a first portion of bits in said first gap from said
`
`
`
`
`
`
`beginningofsaid first gap responsive to a determination
`
`
`
`
`that encrypting is enabled, and
`
`
`
`
`
`
`
`
`compress data in a secondportion ofsaidfirst gap respon-
`
`
`
`
`
`
`sive to a determination that encrypting is not enabled.
`
`
`
`
`
`
`
`7. The memory of claim 6 wherein said instructions further
`
`comprise:
`
`
`
`
`
`
`
`instructions for directing said processing unitto:
`
`
`
`
`
`
`detect an end ofsaid bits stream, and
`
`
`
`
`
`
`
`end encryption at said end ofsaid bit stream.
`
`
`
`
`
`
`
`8. The memory of claim 6 wherein said instructions to
`
`
`
`encrypt further comprise:
`
`
`
`
`
`
`
`instructions for directing said processing unitto:
`
`
`
`
`
`
`compress data in said stream ofbits in responseto a deter-
`
`
`
`
`
`mination that encryption is not enabled.
`
`
`
`
`
`
`
`9. The memory claim 6, wherein said instructions to
`
`
`
`encrypt further comprise:
`
`
`
`
`
`
`
`instructions for directing said processing unitto:
`
`
`
`
`
`
`
`
`insert random bits into said at least one gap.
`
`
`
`
`
`
`
`10. The memory claim 6, wherein said instruction to
`
`
`
`encrypt further comprise:
`
`
`
`
`
`instructions directing said processing unit to:
`
`
`
`
`
`
`
`insert non-random bitsinto saidfirst gap.
`
`
`
`
`
`Page 9 of 10
`
`
`
`US 7,558,967 B2
`
`
`6
`
`
`
`
`
`
`
`
`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 ofbits;
`
`
`
`
`
`
`
`meansfor 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;
`
`
`
`
`
`
`meansfor inserting an encryption identifier into saidfirst
`
`
`
`
`
`
`
`gap identifying whether encryption has been enabled;
`
`
`
`
`
`
`
`
`
`means for encrypting bits in said stream of bits from a
`
`
`
`
`
`
`
`beginningofsaidfirst gap a prespecified numberofbits
`
`
`
`
`
`
`
`at a timeutilizing a prespecified setof bits as a bit mask,
`
`
`
`
`
`wherein: the encrypting is a loop comprising:
`
`
`
`
`
`
`selecting a next prespecified number of bits from the
`
`
`
`
`
`stream ofbits as a selectedset 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;
`
`
`
`
`
`
`meansfor detecting the second gap; and
`
`
`
`
`
`
`
`meansfor ending encryptionofbits in said stream ofbits at
`
`
`
`
`
`
`
`a beginning of said second gap in responseto detecting
`
`
`
`
`said second gap; and
`
`
`
`
`
`
`wherein said meansfor 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 secondportionofsaidfirst
`
`
`
`
`
`gap responsive to a determination that encrypting is not
`enabled.
`
`
`
`
`
`
`
`12. The apparatus of claim 11 further comprising:
`
`
`
`
`
`
`
`meansfor detecting an endofsaid bits stream; and
`
`
`
`
`
`
`
`means for ending encryption at the end ofsaid bit stream.
`
`
`
`
`
`
`13. The apparatus of claim 11 further comprising:
`
`
`
`
`
`means for compressing data in said to a determination that
`
`
`
`encryption is not enabled.
`
`
`
`
`
`
`
`
`14. The apparatus of claim 11, wherein said means for
`
`
`
`encrypting further comprises:
`
`
`
`
`
`
`
`
`meansfor inserting random bits into at least one gap.
`
`
`
`
`
`
`
`
`15. The apparatus of claim 11, wherein said means for
`
`
`
`encrypting further comprises:
`
`
`
`
`
`
`
`
`meansfor inserting non-random bits into said first gap.
`
`
`
`
`
`
`16. A methodfor decrypting a data stream used to program
`
`
`
`
`
`
`a field programmable gate array comprising:
`
`
`
`
`
`
`
`
`receiving said data stream wherein said data stream is a
`
`
`string ofbits;
`
`
`
`
`
`
`
`
`detecting a first gap in said data stream wherein saidfirst
`
`
`
`
`
`
`
`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 encryp-
`
`
`
`tion is enabled, wherein:
`
`
`
`
`the decrypting is a loop comprising:
`
`
`
`
`
`
`selecting a next prespecified number of bits from the
`
`
`
`
`
`stream ofbits as a selectedset of bits;
`
`
`
`
`
`
`
`
`toggling a prespecified setofbits from theselected set of
`
`
`bits; and
`
`
`
`
`
`
`
`repeating the selecting and the toggling until a second
`
`
`gap is encountered;
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`20
`
`25
`
`
`
`30
`
`
`
`35
`
`
`
`40
`
`
`
`45
`
`
`
`50
`
`
`
`55
`
`
`
`60
`
`
`
`65
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 9 of 10
`
`

`

`
`
`US 7,558,967 B2
`
`
`
`7
`
`5
`
`
`
`
`
`
`
`detecting the second gap;
`
`
`
`
`
`
`
`ending decryption ofbits in said stream of bits at a begin-
`
`
`
`
`
`
`
`ning 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
`
`
`
`
`
`
`beginningofsaid 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.
`
`
`
`
`
`
`
`17. The method of claim 16 further comprising:
`
`
`
`
`
`
`detecting an endofsaid bits stream; and
`
`
`
`
`
`
`
`ending decryption at the end ofsaid bit stream.
`
`
`
`
`
`
`18. The method of claim 16 further comprising:
`
`
`
`
`
`
`decompressing data in said first gap responsive to a deter-
`
`
`
`
`
`mination that encryption is not enabled.
`
`
`
`
`
`
`
`
`19. The method of claim 16, wherein said step of decrypt-
`
`
`
`ing further comprises:
`
`
`
`
`
`
`
`
`removing inserted random bits from at least one gap.
`
`
`
`
`
`
`
`
`
`20. The method of claim 16, wherein said step of decrypt-
`
`
`
`
`
`
`
`
`ing further comprises removing non-randombits inserted into
`
`
`
`said first

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket