Как правильно сохранить архитектуру в FPGA IC навсегда
8
Учитывая то, что я создал архитектуру, чтобы сделать что-то конкретное, написал, например, в VHDL.
Могу ли я «сжечь» его в чипе fpga, навсегда? Или как мне это сделать, защищая интеллектуальную собственность, зная тот факт, что она может быть прочитана из последовательной флэш-памяти?
Встроенные вспышки Xilinx Spartan 3AN FPGA делают их энергонезависимыми. Ваш вопрос на самом деле несколько вопросов.
1) Являются ли ПЛИС энергозависимыми или энергонезависимыми? Большинство из них являются энергозависимыми, и при каждом включении требуется считывать поток битов конфигурации в FPGA с внешнего энергонезависимого запоминающего устройства. Есть такие, которые являются нелетучими. Как Xilinx S3AN, я упоминаю.
2) Как вы защищаете конфигурационный битовый поток? Есть несколько ответов на этот вопрос.
Вы можете зашифровать поток битов; это означает, что поток битов, который хранится на вышеупомянутом энергонезависимом запоминающем устройстве, является уникальным зашифрованным текстом, который может быть расшифрован только одной fpga с соответствующим ключом. Это защитит функциональность битового потока от обнаружения обратным инжинирингом. То есть, даже если зашифрованный поток битов может быть извлечен из энергонезависимого запоминающего устройства, либо на месте, либо с помощью более разрушительных средств, смысл не сможет быть извлечен из извлеченного файла, поскольку он зашифрован.
Вы также можете установить битовый поток, который будет запрещен для чтения. Интерфейс JTAG, который используется для программирования FPGA во время отладки, обычно может использоваться для считывания потока битов конфигурации из fpga. Установка опции NO_READBACK запрещает это.
Как может сама FPGA считывать зашифрованный битовый поток, если его невозможно расшифровать? Ответ, конечно , что это можно расшифровать битовый поток. Это немного сложнее, потому что это запутано.
ntoskrnl
А? Поток битов открытого текста (назовите его Bpt) шифруется функцией шифрования Ek (), которая принимает открытый текст и секретный ключ (назовите его Key) для создания потока битов зашифрованного текста (назовите его Bct), поэтому Bct = Ek (Bpt, Key) , Это сохраняется и во время загрузки передается на FPGA, которая знает секретный ключ, поэтому он может расшифровать его, Bpt = Ek (Bct, Key). Без ключа третье лицо не может выполнить операцию дешифрования. Учитывая время обработки и другие криптоаналитические инструменты, третья сторона потенциально может выяснить открытый текст, но не с помощью предполагаемого процесса расшифровки.
Jotorious
Злоумышленник также может просто узнать ключ и приступить к расшифровке открытого текста. Я думаю, что ключ может быть довольно сложно восстановить с помощью аппаратного обеспечения (например, смарт-карты), но если он хранится в какой-то обычной памяти, это не должно быть сложнее, чем восстановление зашифрованного текста.
ntoskrnl
1
Правильно, шифрование защищено настолько, насколько надежен ключ. Я не могу говорить с не-Xilinx FPGA, но на Xilinx FPGA ключ не может быть восстановлен с помощью неинвазивных / неразрушающих мер.
Можно найти ПЛИС со встроенной энергонезависимой программной памятью. Например, Microsemi (ранее Actel) специализируется на этом типе устройства.
Другие поставщики предлагают возможность маскировать программирование ПЛИС. Например, Xilinx называет свои запрограммированные по маске устройства « EasyPath » ПЛИС. Насколько мне известно, для этого требуется оплата NRE, поэтому она не подходит для ситуаций, когда вам может потребоваться обновить ваш дизайн. (Шляпа для alex.forencich для исправления)
FPGA EasyPath не программируются по маске, они проходят индивидуальное тестирование только для вашего потока битов, что снижает затраты на тестирование и увеличивает производительность (они могут допускать дефекты в компонентах, которые не используются в вашей конструкции). Для работы FPGA по-прежнему требуется конфигурирующая вспышка с загруженным дизайном. Если бы это была фактически запрограммированная маска, NRE было бы огромным.
alex.forencich
6
Я могу, по крайней мере, говорить за альтера, я предполагаю, что у Xilinx будет что-то подобное. У них есть возможность зашифровать файл, который вы положили во внешнюю флэш-память или EEPROM. Затем вы загружаете ключ дешифрования в альтер-часть, используя его энергонезависимое хранилище или хранилище ключей с батарейным питанием.
Поскольку вы не можете прочитать ключ, он защищает ваш IP. Они проиграли дизайн Asics, потому что они не могли защитить IP людей, так что это довольно распространенная особенность.
Единственный способ сделать это - купить отдельный модуль Flash (если у вас его еще нет на PGA) и загрузить код в оперативную память, однако это не рекомендуется для всех проблем, просто купите что-то вроде CPLD, если вы запланируйте перепрограммирование на более позднем этапе или ASIC, если у вас нет намерений перепрограммировать его снова.
Можно найти ПЛИС со встроенной энергонезависимой программной памятью. Например, Microsemi (ранее Actel) специализируется на этом типе устройства.
Другие поставщики предлагают возможность маскировать программирование ПЛИС. Например, Xilinx называет свои запрограммированные по маске устройства « EasyPath » ПЛИС. Насколько мне известно, для этого требуется оплата NRE, поэтому она не подходит для ситуаций, когда вам может потребоваться обновить ваш дизайн.(Шляпа для alex.forencich для исправления)источник
Я могу, по крайней мере, говорить за альтера, я предполагаю, что у Xilinx будет что-то подобное. У них есть возможность зашифровать файл, который вы положили во внешнюю флэш-память или EEPROM. Затем вы загружаете ключ дешифрования в альтер-часть, используя его энергонезависимое хранилище или хранилище ключей с батарейным питанием.
Поскольку вы не можете прочитать ключ, он защищает ваш IP. Они проиграли дизайн Asics, потому что они не могли защитить IP людей, так что это довольно распространенная особенность.
http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html
источник
Единственный способ сделать это - купить отдельный модуль Flash (если у вас его еще нет на PGA) и загрузить код в оперативную память, однако это не рекомендуется для всех проблем, просто купите что-то вроде CPLD, если вы запланируйте перепрограммирование на более позднем этапе или ASIC, если у вас нет намерений перепрограммировать его снова.
источник