LeeDongchan1
                     LeeSanghyun1
                     ChoMannhee2
                     LeeHyung-Min2
                     KimYoungmin1
               
                  - 
                           
                        (School of Electronic and Electrical Engineering, Hongik University, Korea)
                        
- 
                           
                        (Department of Electrical Engineering, Korea University, Korea)
                        
 
            
            
            Copyright © The Institute of Electronics and Information Engineers(IEIE)
            
            
            
            
            
               
                  
Index Terms
               
                Reverse engineering,  Xilinx 7-series FPGAs,  flash memory,  bitstream,  logic analyzer
             
            
          
         
            
                  I. INTRODUCTION
               In the past, field programmable gate array (FPGA) was explicitly used in special areas,
                  such as automotives and aerospace industry. However, it has become gradually popular
                  as it could be reconfigured for processors and parallel operations can be achieved,
                  unlike in CPUs or GPUs, which makes FPGAs suitable for banks, vehicles, drones, and
                  many other diverse applications and servers. In particular, FPGAs are widely used
                  on the Internet of Things (IoT), which has been one of the fastest growing industries
                  in recent years. Although development is progressing in various ways because of the
                  rapidly increasing demand for FPGAs, security is still a vulnerable aspect.
               
               Most FPGAs are designed based on Static Random Access Memory (SRAM) technology for
                  reconfiguration. Additionally, programmable read only memory (PROM) or flash memory
                  is designed collectively outside the FPGA chip to store data (bitstream). Moreover,
                  PROM or flash memory is built into FPGAs for data storage. Recently, flash memory
                  is preferred for reading and writing massive data efficiently because of a large number
                  of computations and data.
               
               Data stored in the external memory are automatically read when the power of the FPGA
                  is on. The programmed logic can be extracted without damaging the FPGA by hijacking
                  the bitstream data when bitstream data move from an external memory (PROM) to an FPGA.
                  Hence, the approach is suitable for areas where security is a crucial factor. The
                  attacker can exploit the extracted data to use Trojan horse attacks by adding malicious
                  data to the FPGA logic. To prevent the attack, FPGA manufacturers attempted to apply
                  encryptions, such as IEEE 1735 to the designed IP. However, weak points have recently
                  been discovered, both in existing encryption methods and in IEEE 1735 [1-6].
               
               Reverse engineering aims to extract information from an existing programmed system
                  with little information by exploiting these security vulnerabilities. More specifically,
                  the configured netlist is reconfigured by comprehending the structure of the external
                  memory. Choi et al. [7] propose a reverse engineering method to restore the internal logic of the ROM. It
                  proposes an efficient reverse engineering method by analyzing FPGA H/W resources targeting
                  Xilinx Spartan-3 FPGA and analyzing the mapping relationship between FPGA primitives
                  and H/W resources.
               
               Currently, Xilinx has the largest share of the FPGA market, and is most often used
                  as a target for reverse engineering. Xilinx supports two design compiler tools. Vivado
                  ISE, which was initially released, supports up to 6-series of Xilinx FPGAs, and the
                  recently released 7-series of FPGAs are also supported by Vivado tools. In reverse
                  engineering using the Xilinx ISE tool [8-16], a study was conducted to restore the existing logic with the copied bitstream by
                  hijacking the moment the bitstream is transmitted from the non-volatile memory. Since
                  then, there has been increasing focus on reverse engineering [17-20] targeting Xilinx 7-series FPGAs.
               
               In this study, we introduce the security vulnerabilities of FPGAs [21-23], which have been recently studied, and how attackers exploit them to carry out attacks.
                  Moreover, we introduce recently researched defense methods against trojans. We introduce
                  the structure of FPGAs before the Xilinx 7-series and the corresponding reverse engineering
                  method. 
               
             
            
                  II. FPGA STRUCTURE AND DESIGN FLOW
               
                     1. Structure of Xilinx ISE and Vivado Tool
                  In general, an FPGA consists of a configurable logic block (CLB) as a logic block,
                     switch matrix (SM) as a connection block, and input/output block (IOB) as an input/output
                     block as shown in Fig. 1 CLB (Fig. 1(b)) constitutes the basic block of FPGA and serves to store logic, and its structure
                     comprises two blocks called SLICE. There are two types of SLICE, called SLICEM or
                     SLICEL, and each CLB contains a SLICEM and a SLICEL or two SLICELs. These SLICEs include
                     four look-up tables (LUTs), eight flip flops (FFs), a carry logic network, and three
                     types of multiplexers (MUXs). The SM shown in Fig. 1(c) connects the BLOCKs, and the points at both ends of the rectangular or square grid
                     are implemented in the form of a single wire. The IOB in Fig. 1(d) provides a bi-directional interface between logics inside the FPGA for IO. Xilinx
                     includes programmable logic point (PLP), programmable interconnect point (PIP), and
                     programmable contents point (PCP) in each block so that designers can change the internal
                     circuit of these three types of blocks. The PLP is responsible for the logical functions
                     of the circuit, the PIP selects the internal connections, and the PCP maintains the
                     stored values.
                  
                  Fig. 2 illustrates the bitstream generation process of Xilinx ISE tool. RTL design uses
                     -ngd build to generate Xilinx internal netlist (NGD file). Subsequently, -map is used
                     to convert the NGD file to NCD file for mapping. Additionally, -par places circuit
                     primitives on the actual FPGA chip and connects each circuit primitive to create a
                     place and routing (P&R) NCD file. Fully P&R’d primitives (P&R’d NCD file) are converted
                     to bitstream files using -bitgen. The bit file is converted into an MCS file and stored
                     in the external memory, PROM. The P&R NCD file can generate an XDLRC file and XDL
                     file via -ncd2xdl to convert into a xdl file format. The description of each file
                     is as follows.
                  
                  • NGD (Native Generic Database): A file that synthesizes RTL input in binary format
                     with a generic gate.
                  
                  • NCD (Native Circuit Description): Netlist file that maps the generic gates of the
                     NGD file to the target FPGA in binary format.
                  
                  • XDL (Xilinx Design Language): A file converted binary NCD file into text format
                     the user can read.
                  
                  • XDLRC (Xilinx Design Language Routing and Configurable logic block): A file that
                     illustrates the chip architecture of the target FPGA and all available hardware resources
                     in text format.
                  
                  • BIT (bitstream file): A file that converts an NCD file to bitstream in binary format.
                  • MCS (Configuration Memory file): Converted from a bit file into a form that that
                     can be stored in an external memory.
                  
                  While existing Xilinx ISE supports 6-series FPGAs, Xilinx Vivado supports the latest
                     series such as Virtex-7, Kintex-7, and Artix-7. Although Xilinx discontinued support
                     for the ISE design tool in 2014, ISE continues to be widely used for FPGA programming
                     because Vivado primarily supports high-performance and advanced devices.
                  
                  Fig. 3 illustrates the Vivado Design Suite bitstream generation process, including the design
                     of RTL, synthesis, floorplan, and implementation followed by design check and bitstream
                     generation. In the RTL design stage, designers create RTL using hardware description
                     language (HDL) tool or high-level synthesis (HLS) tool. In the case of HDL, there
                     is no need for additional work because it is a hardware language; however, HLS requires
                     converting to HDL after coding in C language. When the coding design is completed,
                     verification is performed through simulation. It does not matter if it is verified
                     with FPGA after synthesis; however, if an error occurs, it takes longer because it
                     needs re-checking. Following the simulation, a netlist file is generated, and design
                     optimization and P&R are performed in the implement design stage. The tool automatically
                     performs this process, while it can also be modified by the designer. At the final
                     design check point, the tool can be used to check how much H/W resources the designer
                     has used, which resources are used in which location, and how they are connected.
                     Once all the steps are complete, the configuration bitstream generation stage creates
                     the bitstream file containing all information on the design. The created bitstream
                     file is stored in the external memory.
                  
                  
                        Fig. 1. Internal Structure of FPGA.
 
                  
                        Fig. 2. Conceptual diagram of the Xilinx ISE Design Suite flow.
 
                  
                        Fig. 3. Conceptual diagram of the Xilinx Vivado Design Suite flow.
 
                
               
                     2. Bitstream File Format
                  FPGAs are composed of binary files called bitstreams. The bitstream contains information
                     on which logical elements to configure, how to implement the target design, and how
                     to operate the FPGA. The file format of bitstream is architecture dependent; however,
                     most FPGAs from the same vendor use the same file format. The bitstream file encrypts
                     sensitive parts, such as actual logic data or configurate data in a specific way,
                     for security. Xilinx's bitstream file uses bit swapping when saving configurate data.
                  
                  The bitstream file format of Xilinx 7-series FPGA is the same as shown in Fig. 4. The header part contains various information about the source and contents of the
                     entire bitstream, such as the bitstream generation date, FPGA chip name, and tool
                     version. It is saved in Tag-Length-Value (TLV) format when a bitstream file is generated
                     using the Vivado tool.
                  
                  The bus width auto detect plays a role in determining the bus width providing configuration
                     data, and for this purpose, a specific byte pattern is included at the beginning of
                     the bitstream file. The configuration logic checks the lower 8 bits of the parallel
                     bus and sets the appropriate external bus width according to the received sequence.
                     The synchronization word (Sync word) must find configuration logic before a configuration
                     packet can be processed by the FPGA, where the configuration logic is used to align
                     within the 32-bit word boundary. Synchronization word of most Xilinx FPGAs is set
                     to 0xAA995566. 
                  
                  Bitstream commands all Xilinx 7-series FPGAs to operate as the way of reading or writing
                     configuration registers and are divided into two packet types. The first type of packet
                     is used to read and write registers. In the case of the 7-series, it uses only 5 out
                     of 14 registers addresses. The second type of packet extends the number of words field
                     in packets of type 1. Since the address is used in the type 1 packet, the address
                     is omitted here, but it must be used the same as the type 1 packet that delivers address
                     information. 
                  
                  The addresses specified in the configuration packet are mapped to registers that provide
                     low-level control over the chip. Not all these registers participate in the programming
                     sequence; some participate in the programming sequence and others control the physical
                     aspects. Key registers used during programming are as follows:
                  
                  • IDCODE: A register that stores the device ID code before writing to configuration
                     memory.
                  
                  • CRC: When the device receives a packet, it automatically updates the internal CRC
                     calculation to include the contents of the packet. The write CRC register checks that
                     the calculated CRC matches the expected value written in the register, and if there
                     is no error, the flag is initialized to zero. It is possible to set whether the designer
                     will use it or not.
                  
                  • command: A register that store works that can be triggered immediately by the work
                     being requested or delayed until other conditions are satisfied.
                  
                  • FAR (Frame Address Register): Set address for next frame read or write.
                  • FDRI (Frame): When a frame is written to the FDRI, the frame data are written to
                     the configuration memory address specified in FAR.
                  
                  
                        Fig. 4. Bitstream file format of Xilinx 7-series FPGA.
 
                
               
                     3. Flash Memory Structure
                  FGPA requires nonvolatile memory that can maintain data even when power is turned
                     off to store bitstream files. PROM, which was widely used in the past, is a nonvolatile
                     memory that enables users to read/write contents in byte units. However, a delay of
                     approximately a millisecond per byte occurs in the writing time. Therefore, it is
                     infeasible to be used as a memory or stack memory to store data and variables used
                     in real time; however, it can be used to store nonvolatile for a long time once written,
                     so it is primarily used for reading only or for data backup. Conversely, flash memory
                     can read freely in bytes, and the memory cell structure is simpler than PROM. So,
                     it can be made into a mass storage, and it displays a much faster speed when writing
                     the entire block.
                  
                  Recently, most Xilinx FPGA had flash memory outside the FPGA chip, and the extracted
                     bitstream file is stored in this external flash memory. However, bitstream files contain
                     unnecessary data, such as headers, including file creation date and tool version,
                     and noop (no operation), which is an unused part. Therefore, when writing a bitstream
                     file to memory, only the actual data are saved, and unnecessary data are excluded.
                     
                  
                  Fig. 5 and 6 illustrate the structure between the FPGA chip and flash memory. Most Xilinx
                     FPGAs are designed with similar structures. The pins of the FPGA chip are different
                     for each FPGA; however, in the case of flash memory, most of the same flash memory
                     is used and the pin information is the same. When the generated bitstream file is
                     stored in flash memory, data are entered via SDI/DQ0 pin. Subsequently, when power
                     is applied to the FPGA, data are exported via SDO/DQ1 to retrieve the bitstream file
                     data stored in flash memory.
                  
                  
                        Fig. 5. Conceptual diagram of the Xilinx Vivado design flow (Artix-7)[17].
 
                  
                        Fig. 6. A simplified of Xilinx Vivado design flow.
 
                
             
            
                  III. RECENT RESEARCH TRENDS ON REVERSE ENGINEERING
               
                     1. Trojan Attack using FPGA Security Issue
                  FPGA is encrypted in special patterns and methods, such as bitstream files, external
                     memory, and IP to enhance security. Most FPGA encryption is a black box; however,
                     many vulnerabilities are still found. There are many Trojan attacks that exploit these
                     vulnerabilities to maliciously modify circuits or penetrate malicious code.
                  
                  Cahill et al. [1] revealed vulnerabilities n the compile process and presents solutions. The compile
                     tools used in the FPGA CAD process are black box systems. Moreover, the generated
                     bitstream file is exclusive and encrypted, so the designer does not know if the bitstream
                     file is correctly implemented. Therefore, it is difficult for the designer to know
                     even if the manager of the tool maliciously fixes it or a bug in the tool causes sensitive
                     data to leak and significantly affects the system.
                  
                  Yoon et al. [2] proposed a reverse engineering tool that detects Trojan horses to compensate for
                     vulnerabilities in Virtex-5, a Xilinx FPGA5 series. Since FPGA is reconfigurable,
                     malicious modification is possible in both the development and deployment stages (Fig. 7). Therefore, to effectively detect Trojan horses, detection should be possible in
                     the development stage and in the netlist and deployment stages. The proposed tool
                     learns various Trojans using machine learning as samples to detect Trojans in both
                     stages. Machine learning consists of a learning stage that proceeds only in the forward
                     direction and a hardware Trojan horse detection stage that proceeds in the forward
                     and backward directions. In the forward-only direction, only netlists containing third-party
                     IP cores are provided, and source files specified in HDL are not provided. In the
                     reverse direction, only bitstream files are provided, and sources and netlists produced
                     in the development stage are not available. When learning the Trojan horse, we focus
                     on Trojan triggers rather than the Trojan payload. Hardware Trojan payloads may vary
                     based on functionality and target, while hardware Trojan trigger logic has unique
                     features that prevent hardware Trojan from being easily activated and detected. Therefore,
                     we apply the learned data to logic to find the trigger of the Trojan horse.
                  
                  Speith et al. [3] describes the structural problems of existing IEEE 1735. Specifically, IEEE 1735
                     uses a digital envelope to protect the IP itself and the rights granted by the IP
                     author. Therefore, a unified format is specified for the protected IP to ensure security
                     and compatibility between standard specifications and tools. The structure of a digital
                     envelope contains parts that specify access rights and additional attributes, and
                     parts that include encrypted real IP data, which are encrypted using the Session Key.
                     The part that specifies access rights and additional attributes consists of a common
                     block that grants permission to all supported tools and a tool block that grants permission
                     to a specific tool. This encryption structure designs an attacker that can fully control
                     the EDA tool execution environment based on the existing Man-at-the-End (MATE) attack
                     model [6]. In the design of the attacker, the symmetric session key is decrypted using the
                     RSA private key within the digital envelope of the IP. Subsequently, the session key
                     is used to decrypt the protected IP data. An attacker designed this way can completely
                     analyze the EDA tool software and manipulate and extract values during execution.
                     Protected IPs of FPGAs can be attacked, decrypted, and maliciously modified and reconfigured
                     in a short time using the IEEE 1735 encryption structure. The method targets the EDA
                     tools of representative companies in the FPGA market, such as Inter Quartus Prime,
                     Cadence Xcelium, Lattice Radiant, Microsemi Libero SoC, Siemens Medelsim, and Xilinx
                     Vivado Design Suite. The vulnerabilities for each EDA tool are as follows.
                  
                  Intel Quartus Prime searches program memory for documented RSA key names to identify
                     the interest Dynamic Link Library (DLL) at runtime. The identified DLL provides only
                     IEEE 1735 encryption and includes a portion containing public keys from other vendors
                     and symbols supporting the reverse engineering process by providing human-readable
                     names to library functions. It automatically searches using key\_keyname to identify
                     the encrypted subroutine. According to IEEE 1735, the key\_keyname is located before
                     the actual key identifier within the digital envelope. It prepares the assembly key
                     by analyzing a string reference, and an RSA private key for decryption. Publishing
                     the RSA private key is straightforward because the private key is only protected by
                     the XOR of two hard-coded byte arrays.
                  
                  Cadence Xcelium is a logic simulation-based verification tool. To identify the target
                     keys of Cadence, refer to the user guide document to identify the two target keys.
                     One of them is the now obsolete 512-bit RSA key. Owing to the availability of symbols
                     and the absence of code obfuscation, automatic scanning of executables for documented
                     RSA key names reveals target functions. When a function is called, it calls one of
                     two other functions depending on the selected encryption key. The function returns
                     a static memory address pointing to the private key, all stored in plaintext. Therefore,
                     it is relatively simple to reverse engineer and recover RSA private keys.
                  
                  Latice Radiant automatically searches the documented key name again and identifies
                     the target library [20] to find a function that loads the security key. A reference to the caller of the
                     corresponding function is followed to extract the RSA private key from the decryption
                     context. The searched decryption function then calls the RSA decryption function provided
                     by OpenSSL. Subsequently, it inserts a custom code that triggers decryption of the
                     target private key and extracts the RSA private key from the OpenSSL decryption at
                     runtime.
                  
                  In the Microsemi Libero SOC, automatic scanning of RSA key names represents 2048 bits
                     of RSA private key in program memory. However, there is no access right to the encrypted
                     IP or its RSA public key. Therefore, we execute Microsemi Libero SoC, import the manufactured
                     IP, execute the RSA decryption routine, and verify the behavior at runtime. Consequently,
                     we confirmed that Libero SoC first supplies encrypted soft IP to the synthesizer to
                     generate synthetic and re-encrypted IP at the netlist level. Additionally, the Libero
                     SoC itself interacts with encrypted files via a dedicated executable file and is dynamically
                     linked to DLLs with a code obfuscation function in this executable file. This complexity
                     invalidates all anti-debugging measures that protect DLLs using ScyllaHide [21]. Moreover, it uses integrity checks across the library to prevent software breakpoint
                     insertion and uses hardware breakpoint to invalidate this protection. The RSA encryption
                     session key is found in the memory when it is passed as an input to a function called
                     very close to the searched RSA key name.
                  
                  Siemens ModelSim is generally bundled with other EDA tools and encrypted IPs for these
                     tools include additional tool blocks for ModelSim. Therefore, extracting private RSA
                     keys from Siemens ModelSim is fatal to other FPGA vendors. Since the encryption function
                     cannot be identified within the main ModelSim executable file, so we connect the debugger
                     and trace all subprocess calls. Therefore, it identifies the subprocess processing
                     the decryption of the protected IP, as shown in the console output. Moreover, static
                     analysis is used to check if encryption libraries within this subprocess are used;
                     however, it cannot check all cryptographic functions. Therefore, we match the file
                     name and line number with the implementation of the open-source encryption library
                     to identify the missing encryption function. To recover session keys, we reconstruct
                     the white box algorithm with high-level language so that the oracle executes the white
                     box decryption. As a result, we found three separate RSA key pairs, two 1024 bits,
                     and one 2048 bits pair. These RSA keys use the same decryption routine. Given the
                     white box data associated with each key, the protected IP can be decrypted without
                     knowledge of the key.
                  
                  
                        Fig. 7. System overview[2].
 
                
               
                     2. Reverse Engineering
                  While comprehensive review of general reverse engineering techniques was studied in
                     [8], this paper focuses on exploring more recent reverse engineering approaches which
                     were applied to the latest FPGAs based on the Vivado design suite. Choi et al. [7] analyzed the mapping relationship between FPGA primitives and FPGA hardware resources
                     targeting Xilinx Spartan-3 FPGA and proposes reverse engineering using them. Generally,
                     FPGAs provide a primitive library written in HDL for easy RTL implementation. In the
                     case of the target, ROM of Xilinx XC3S50, there are five types of primitive libraries,
                     as shown in Fig. 8. To analyze FPGA hardware resources, it analyzes all bitstreams generated by synthesizing
                     and implementing each ROM primitive library. Analysis of the generated bitstream is
                     as follows.
                  
                  • Bitstream generation for each primitive
                  • ROM location search
                  • Extract ROM data for target bitstream
                  • ROM data rearrangement
                  Through the above steps, it is revealed that all ROMs are internally assigned to SLICE's
                     LUTs, and the ROM data of the S-BOX are completely recovered using the most widely
                     used algorithm, advanced encryption standard (AES). Additionally, the proposed reverse
                     engineering can be applied to all types of primitive libraries. 
                  
                  Zhang et al. [13] proposed a new FPGA reverse engineering toolchain. It compiled an integrated database
                     containing FPGA architecture information and bitstream mapping information. Two tools
                     were developed: Bitstream Reversal Tool (BRT) and Netlist Reversal Tool (NRT). It
                     can search for RTL code in FPGA bitstream using two tools.
                  
                  The proposed toolchain includes all reverse engineering from bitstream to netlist
                     and from netlist to code without the support of other tools. The overall reverse engineering
                     is shown in Fig. 9. Connect the configuration lines of the PCB (Print Circuit Board) and apply power
                     to the target FPGA. Hijack when FPGA reads bitstream from external non-volatile memory.
                     The obtained bitstream is then supplied to the toolchain. Our BRT, supported by the
                     database containing FPGA architecture information and bitstream mapping information,
                     decompiles the bitstream into a netlist, and then NRT converts the netlist into RTL
                     code. Using this reverse engineering method, the netlist is restored to 100%. However,
                     there is a limitation in that the encrypted bitstream file cannot be applied.
                  
                  Yu et al. [16] revealed that the bitstream file swaps in a certain pattern and proposes a method
                     of extracting a complete circuit by combining signal connection data of programmable
                     interconnect point (PIP) after identifying the pattern. In the Vivado tool, the logic
                     is generated with a MUX and converts the input to the LUT into an output signal. The
                     LUT is set as default; however, the user can use the LUT at the desired location.
                     Therefore, the configuration position of each LUT can be determined by analyzing the
                     bitstream generated by the LUT. LUT is written in a specific order at intervals of
                     404 bytes and is written in units of 2 bytes at a time. When power is supplied to
                     the FPGA and the use of the LUT is activated, a total of 8 bytes are extracted in
                     units of 2 bytes at intervals of 404 bytes based on the active start bit. A specific
                     pattern was found in the extracted data. Accordingly, a 100% restoration rate was
                     achieved using an in-house tool.
                  
                  
                        Fig. 8. Implementation S-box of AES on FPGA.
 
                  
                        Fig. 9. An overview of reverse engineering flow[13].
 
                
             
            
                  IV. DISCUSSION
               Table 1 presents a summary of the characteristics and strengths and weaknesses of recent
                  reverse engineering studies. Choi proposed a method of restoring ROM data using the
                  mapping relationship between FPGA primitives and FPGA hardware resources. The proposed
                  reverse engineering has the advantage of being verified for Xilinx FPGA Spartan-3
                  and additionally applicable to all types of basic libraries of ROM data; however,
                  verification for recent FPGAs has not yet been made.
               
               The reverse engineering tool proposed by Zhang designed a highly accurate tool for
                  spartan-6. However, it cannot be applied to an encrypted bitstream file, and it is
                  time consuming to invert the bitstream. Yu's reverse engineering tool extracts a complete
                  circuit by combining the signal connection data of the PIP and verifies 100% accuracy
                  for Artix-7 using a self-developed verification tool. However, there is a disadvantage
                  that the application range of the tool for verification is limited.
               
               Table 2 summarizes FPGA security vulnerabilities. Cahill et al. [1] stated that modifications can be made during compilation. Yoon at al. In [2] revealed that although FPGA has the advantage of being reconfigurable, it has vulnerabilities
                  in the development and deployment stages. Moreover, Spieth et al. [3] revealed that there is a problem with the IEEE 1735 encryption structure itself,
                  which has been commonly used.
               
               
                     Table 1. Comparison of recent reverse engineering methods.
                  
                        
                           
                              | Papers | Research Objective | Target Device | Pros. | Cons. | 
                        
                              | Choi [7] | ROM data RE | Spartan-3 | Applicable to various default libraries. | Lack of verification on recent FPGA | 
                        
                              | Zhang [13] | Virtex-5 | Spartan-6 | High accuracy | Not applicable to encrypted files, time consuming for bitstream reversal | 
                        
                              | Yu [16] | All device | Artix-7 | High accuracy | Limited target devices | 
                     
                  
                
               
                     Table 2. FPGA security issues.
                  
                        
                           
                              | Papers | Target FPGA | Weak Point | 
                        
                              | Cahill [1] | All device | Malicious modification is possible during compilation. | 
                        
                              | Yoon [2] | Virtex-5 | Malicious manipulation and modification are possible even after the deployment stage. | 
                        
                              | Speith [3] | All device | Security issues with the IEEE 1735 encryption scheme itself. | 
                     
                  
                
             
            
                  V. CONCLUSIONS
               The possibility of a trojan attack using FPGA vulnerabilities is extremely high. Spieth
                  explains security vulnerabilities using IEEE 1735 and security vulnerabilities for
                  FPGAs from FPGA vendors using this security method. Various studies have been conducted
                  for reverse engineering using these FPGA security vulnerabilities, such as a method
                  using the mapping relationship between FPGA primitives and FPGA hardware resources
                  and designing a new toolchain. Additionally, Yu conducted research on the LUT location
                  of Xilinx's bitstream file and how it is recorded through reverse engineering. Further
                  research on FPGA reverse engineering should be conducted in a wider scope as well
                  as what is introduced in this paper, and efforts are still needed to study the latest
                  versions of each FPGA.
               
             
          
         
            
                  ACKNOWLEDGMENTS
               
                  				This work was supported as part of the Military Crypto Research Center (UD210027XD)
                  funded by Defense Acquisition Program Administration (DAPA) and Agency for Defense
                  Development (ADD). This work was supported by Korea Institute for Advancement of Technology
                  (KIAT) grant funded by the Korea Government (MOTIE) (P0012451, The Competency Development
                  Program for Industry Specialist).
                  			
               
             
            
                  
                     References
                  
                     
                        
                        E. Cahill, B. Hutchings, and J. Goeders, "Approaches for FPGA design assurance," ACM
                           Transactions on Reconfigurable Technology and Systems (TRETS), vol. 15, no. 3, pp.
                           1-29, 2021.

 
                     
                        
                        J. Yoon et al., "A bitstream reverse engineering tool for FPGA hardware trojan detection,"
                           in Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security,
                           2018, pp. 2318-2320.

 
                     
                        
                        J. Speith, F. Schweins, M. Ender, M. Fyrbiak, A. May, and C. Paar, "How Not to Protect
                           Your IP-An Industry-Wide Break of IEEE 1735 Implementations," in 2022 IEEE Symposium
                           on Security and Privacy (SP), 2022: IEEE, pp. 1656-1671.

 
                     
                        
                        S. Mal-Sarkar, R. Karam, S. Narasimhan, A. Ghosh, A. Krishna, and S. Bhunia, "Design
                           and validation for FPGA trust under hardware trojan attacks," IEEE Transactions on
                           Multi-Scale Computing Systems, vol. 2, no. 3, pp. 186-198, 2016.

 
                     
                        
                        A. Moradi, D. Oswald, C. Paar, and P. Swierczynski, "Side-channel attacks on the bitstream
                           encryption mechanism of Altera Stratix II: facilitating black-box analysis using software
                           reverse-engineering," in Proceedings of the ACM/SIGDA international symposium on Field
                           programmable gate arrays, 2013, pp. 91-100.

 
                     
                        
                        A. Akhunzada et al., "Man-At-The-End attacks: Analysis, taxonomy, human aspects, motivation
                           and future directions," Journal of Network and Computer Applications, vol. 48, pp.
                           44-57, 2015.

 
                     
                        
                        S. Choi, J. Yeo, and H. Yoo, "Extraction of ROM Data from Bitstream in Xilinx FPGA,"
                           in 2020 International SoC Design Conference (ISOCC), 2020: IEEE, pp. 97-98.

 
                     
                        
                        H. Yu, H. Lee, S. Lee, Y. Kim, and H.-M. Lee, "Recent advances in FPGA reverse engineering,"
                           Electronics, vol. 7, no. 10, p. 246, 2018.

 
                     
                        
                        F. Benz, A. Seffrin, and S. A. Huss, "Bil: A tool-chain for bitstream reverse-engineering,"
                           in 22nd International Conference on Field Programmable Logic and Applications (FPL),
                           2012: IEEE, pp. 735-738.

 
                     
                        
                        S. Y. Choi, J. W. Park, and H. Y. Yoo, "Reverse engineering for Xilinx FPGA chips
                           using ISE design tools," Journal of Integrated Circuits and Systems, vol. 6, no. 1,
                           2020.

 
                     
                        
                        J.-B. Note and É. Rannaud, "From the bitstream to the netlist," in FPGA, 2008, vol.
                           8, pp. 264-264.

 
                     
                        
                        Z. Ding, Q. Wu, Y. Zhang, and L. Zhu, "Deriving an NCD file from an FPGA bitstream:
                           Methodology, architecture and evaluation," Microprocessors and Microsystems, vol.
                           37, no. 3, pp. 299-312, 2013.

 
                     
                        
                        T. Zhang, J. Wang, S. Guo, and Z. Chen, "A comprehensive FPGA reverse engineering
                           tool-chain: From bitstream to RTL code," IEEE Access, vol. 7, pp. 38379-38389, 2019.

 
                     
                        
                        M. Ender, P. Swierczynski, S. Wallat, M. Wilhelm, P. M. Knopp, and C. Paar, "Insights
                           into the mind of a trojan designer: the challenge to integrate a trojan into the bitstream,"
                           in Proceedings of the 24th Asia and South Pacific Design Automation Conference, 2019,
                           pp. 112-119.

 
                     
                        
                        H. Yu, H.-M. Lee, Y. Shin, and Y. Kim, "FPGA reverse engineering in Vivado design
                           suite based on X-ray project," in 2019 International SoC Design Conference (ISOCC),
                           2019: IEEE, pp. 239-240.

 
                     
                        
                        H. Yu, M. Cho, S. Lee, H.-M. Lee, and Y. Kim, "Multi Look-up Table FPGA Reverse Engineering
                           with Bitstream Extraction and Multiple PIP/PLP Matching," Journal of Semiconductor
                           Technology and Science, vol. 21, no. 1, pp. 49-61, 2021.

 
                     
                        
                        Zynq-7000 All Programmable SoC Architecture Porting Quick Start Guide. Available online:
                           https://www.xilinx.com (accessed on 8 December 2021).

 
                     
                        
                        Kintex7 FPGA Family product brief. Available online: https://www.xilinx.com/kintex7
                           (accessed on 8 December 2021).

 
                     
                        
                        A. Chhotaray, A. Nahiyan, T. Shrimpton, D. Forte, and M. Tehranipoor, "Standardizing
                           bad cryptographic practice: A teardown of the IEEE standard for protecting electronic-design
                           intellectual property," in Proceedings of the 2017 ACM SIGSAC conference on computer
                           and communications security, 2017, pp. 1533-1546.

 
                     
                        
                        Lattice Radiant Software 3.0 User Guide. Available online: https://www.latticesemi.com/view_document?document_id=53229
                           (accessed on 8 December 2021).

 
                     
                        
                        Carbon cypher mrexodia and Mattiwatti. Available online: https://github.com/x64dbg/ScyllaHide(accessed
                           on 9 December 2021).

 
                   
                
             
            
            
               			Dongchan Lee  was born in South Korea, in 1995. He received the B.S. degree in
               Electronic and Electrical Engineering from the Hongik University, South Korea, in
               2021. He received the M.S. degree with the School of Electronic and Electrical Engineering,
               Hongik University, South Korea in 2023. His research interests include FPGA SoC design,
               FPGA reverse engineering for hardware security and digital artificial intelligence
               circuit design.
               		
            
            
            
               			Sanghyun Lee  was born in South Korea, in 1994. He received the B.S. degree in
               system semiconductor engineering from the Sangmyung University, South Korea, in 2021.
               He received the M.S. degree with the School of Electronic and Electrical Engineering,
               Hongik University, South Korea in 2023. His research interests include in-memory computing,
               and content-addressable memory.
               		
            
            
            
               			Mannhee Cho  was born in South Korea, 1997. He received a B.S. degree in computer
               engineering from Kwangwoon University, Seoul, South Korea, in 2019, and the M.S. degree
               in electronic and electrical engineering from Hongik University, Seoul, South Korea,
               in 2021. He is currently working towards a Ph.D. degree in electrical engineering
               at Korea University, Seoul, South Korea. His research interests include FPGA reverse
               engineering for hardware security and analog/mixed-signal IC design for neuromorphic
               computing.
               		
            
            
            
               			Hyung-Min Lee  received the B.S. degree in electrical engineering (summa cum laude)
               from Korea University, Seoul, South Korea, in 2006, the M.S. degree in electrical
               engineering from the Korea Advanced Institute of Science and Technology (KAIST), Daejeon,
               South Korea, in 2008, and the Ph.D. degree in electrical and computer engineering
               from the Georgia Institute of Technology, Atlanta, GA, USA, in 2014. From 2014 to
               2015, he was with the Massachusetts Institute of Technology (MIT) as a Post-Doctoral
               Researcher. From 2015 to 2017, he was with the IBM T. J. Watson Research Center as
               a Research Staff Member. In 2017, he joined the School of Electrical Engineering,
               Korea University, where he is currently an Associate Professor. His research area
               includes analog/mixed-signal IC and microsystem design for biomedical, sensor, power
               management, and IoT applications.
               		
            
            
            
               			Youngmin Kim  received the B.S. degree in electrical engineering from the Yonsei
               University, Seoul, Korea, in 1999, and the M.S. and Ph.D. degrees in electrical engineering
               from the university of Michigan, Ann Arbor, in 2003 and 2007, respectively. He has
               held a senior engineer position in the Qualcomm, San Diego, CA. He is currently a
               Professor at Hongik University, Seoul, South Korea. Prior to joining Hongik University,
               he was with the School of Computer and Information Engineering at Kwangwoon University,
               Seoul, South Korea, and the School of Electrical and Computer Engineering at the Ulsan
               National Institute of Science and Technology (UNIST), Ulsan, South Korea. His research
               interests include AI circuits, embedded systems, variability-aware design methodologies,
               design for manufacturability, design and technology co-optimization methodologies,
               and low-power and 3D IC designs.