como salvar corretamente uma arquitetura em um fpga ic para sempre
8
Considerando que eu fiz uma arquitetura para fazer algo específico, escrevi em vhdl, por exemplo.
Posso 'gravá-lo' em um chip fpga, para sempre? Ou como devo fazer isso, protegendo a propriedade intelectual sabendo que ela pode ser lida na memória flash serial?
Os FPGAs Spartan 3AN da Xilinx possuem flash interno, o que os torna não voláteis. Sua pergunta é realmente várias perguntas.
1) Os FPGA são voláteis ou não voláteis? A maioria é volátil, exigindo que o fluxo de bits de configuração seja lido no FPGA a partir de um dispositivo de armazenamento externo não volátil a todo momento. Há alguns que não são voláteis. Como o Xilinx S3AN, eu mencionei.
2) Como você protege o fluxo de bits de configuração? Existem várias respostas para esta pergunta.
Você pode criptografar o fluxo de bits; o que significa dizer que o fluxo de bits armazenado no dispositivo de armazenamento não volátil discutido acima é um texto cifrado exclusivo que só pode ser descriptografado pelo fpga único com a chave apropriada. Isso protegerá a funcionalidade do bitstream de ser descoberta por engenharia reversa. Isto é, mesmo que o fluxo de bits codificado possa ser extraído do dispositivo de armazenamento não volátil, seja no local ou mais destrutivo, o sentido não será possível a partir do arquivo extraído, pois ele é criptografado.
Você também pode definir que o fluxo de bits seja proibido de ser lido novamente. A interface JTAG que se usa para programar um FPGA no momento da depuração geralmente pode ser usada para ler o fluxo de bits de configuração do fpga. Definir a opção NO_READBACK proíbe isso.
Como o próprio FPGA pode ler o fluxo de bits criptografado se não é possível descriptografá-lo? A resposta é obviamente que é possível descriptografar o fluxo de bits. É um pouco mais difícil porque está ofuscado.
Ntskrnl
Hã? O fluxo de bits de texto sem formatação (denominado Bpt) é criptografado por uma função de criptografia Ek () que utiliza o texto sem formatação e uma chave secreta (denominada Chave) para criar um fluxo de bits de texto cifrado (denominado Bct), então Bct = Ek (Bpt, Chave) . Isso é armazenado e no momento da inicialização é transmitido para o FPGA, que conhece a chave secreta, para poder descriptografá-la, Bpt = Ek (Bct, Key). Sem a chave, um terceiro não pode executar a operação de descriptografia. Dado o tempo de processamento e outras ferramentas criptoanalíticas, o terceiro poderia descobrir o texto sem formatação, mas não através do processo de descriptografia pretendido.
Jotorious
O invasor pode simplesmente descobrir a chave também e descriptografar o texto sem formatação. Eu acho que a chave pode dificultar bastante a recuperação do hardware (por exemplo, cartão inteligente), mas se for armazenada em algum tipo de memória regular, não deve ser mais difícil do que recuperar o texto cifrado.
Ntskrnl
1
Certo, a criptografia é tão segura quanto a chave. Não consigo falar com FPGAs não Xilinx, mas nos FPGAs Xilinx a chave não é recuperável por meio de medidas não invasivas / não destrutivas.
É possível encontrar FPGAs com uma memória de programa não volátil integrada. Por exemplo, Microsemi (anteriormente Actel) é especializada nesse tipo de dispositivo.
Outros fornecedores oferecem a opção de mascarar um programa FPGA. Por exemplo, o Xilinx chama seus dispositivos programados por máscara de " EasyPath " FPGAs. Isso requer um pagamento NRE, pelo que sei, portanto, não é apropriado para situações em que você pode precisar atualizar seu design. (Gorjeta de chapéu para alex.forencich para a correção)
Os FPGAs do EasyPath não são programados por máscara, eles são testados sob medida apenas para seu fluxo de bits, reduzindo os custos de teste e aumentando o rendimento (eles podem tolerar defeitos nos componentes que seu projeto não usa). O FPGA ainda requer um flash de configuração com o seu design carregado para funcionar. Se fosse realmente programado por máscara, o NRE seria enorme.
alex.forencich
6
Eu posso pelo menos falar por alterações, presumo que o Xilinx terá algo parecido. Eles têm a opção de criptografar o arquivo que você coloca no flash externo ou na EEPROM. Em seguida, você carrega a chave de descriptografia na parte altera, usando seu armazenamento de chaves não volátil ou com bateria.
Como você não pode ler a chave, ela protege o seu ip. Eles estavam perdendo vitórias de design para a Asics porque não podiam proteger o IP das pessoas, então esse é um recurso bastante comum.
A única maneira de conseguir isso é comprando um módulo Flash separado (se você ainda não possui um no PGA) e carregando seu código no ram, mas isso não é recomendado para todos os problemas, basta comprar algo como um CPLD se você planeje reprogramar posteriormente ou um ASIC se você não tiver a intenção de reprogramar novamente.
É possível encontrar FPGAs com uma memória de programa não volátil integrada. Por exemplo, Microsemi (anteriormente Actel) é especializada nesse tipo de dispositivo.
Outros fornecedores oferecem a opção de mascarar um programa FPGA. Por exemplo, o Xilinx chama seus dispositivos programados por máscara de " EasyPath " FPGAs. Isso requer um pagamento NRE, pelo que sei, portanto, não é apropriado para situações em que você pode precisar atualizar seu design.(Gorjeta de chapéu para alex.forencich para a correção)fonte
Eu posso pelo menos falar por alterações, presumo que o Xilinx terá algo parecido. Eles têm a opção de criptografar o arquivo que você coloca no flash externo ou na EEPROM. Em seguida, você carrega a chave de descriptografia na parte altera, usando seu armazenamento de chaves não volátil ou com bateria.
Como você não pode ler a chave, ela protege o seu ip. Eles estavam perdendo vitórias de design para a Asics porque não podiam proteger o IP das pessoas, então esse é um recurso bastante comum.
http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html
fonte
A única maneira de conseguir isso é comprando um módulo Flash separado (se você ainda não possui um no PGA) e carregando seu código no ram, mas isso não é recomendado para todos os problemas, basta comprar algo como um CPLD se você planeje reprogramar posteriormente ou um ASIC se você não tiver a intenção de reprogramar novamente.
fonte