Aquí solo hablaremos de FPGA basados en SRAM, que es lo que Xilinx y Altera (principalmente) fabrican: Spartan, Artix, Kintex, Virtex, Cyclone, Arria, Stratix son algunas de las marcas de la familia.
Este tipo de FPGA carga su flujo de bits de configuración desde alguna fuente de memoria externa, o está configurado en el sistema por otro procesador. De cualquier manera, el FPGA mismo no almacena su configuración internamente (ignorando Tipos de flash y anti-fusibles aquí).
Por lo tanto, puede decir 'bueno, obviamente solo puedo copiar la información del dispositivo de memoria externo' (generalmente una memoria SPI) y, por supuesto, está correcto. Para aplicaciones que requieren seguridad de IP, los diseñadores aprovechan las características de seguridad ofrecidas por el fabricante. En la fábrica (del producto, no del FPGA), se programa una clave de cifrado en el FPGA (generalmente a través de eFUSE). Los archivos de flujo de bits se cifran con esta clave y se cargan en el dispositivo de memoria. De esta manera, incluso si alguien clonara el diseño de hardware mediante ingeniería inversa de la PCB, no podrían usar la IP con éxito ya que sus FPGA carecerían de la clave.
Si el flujo de bits en el dispositivo de memoria externo está cifrado, está SOL sin la clave de descifrado. Si no es así, puede leer el flujo de bits de ese dispositivo y crear sus propios productos de clonación, pero la ingeniería inversa del flujo de bits es una tarea muy compleja. Actualmente, algunas personas han diseñado por ingeniería inversa el formato de un dispositivo Lattice Semiconductor, pero, por lo que sé, no hay un conjunto completo de herramientas o documentación que le permita realizar copias de seguridad de una lista de redes de un flujo de bits de Xilinx o Altera.
También escribí información adicional sobre esto aquí: FPGA: Bitstream vs. SRAM Object File