Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Design Security Features in Altera FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2
doom13
Здравствуйте!
Возник вопрос защиты проекта для FPGA (Cyclone 5, режим конфигурации - AS). Почитал an556 “Using the Design Security Features in Altera FPGAs” и “Configuration, Design Security, and Remote System Upgrades in Cyclone V Devices” от Altera, как-то не совсем понятен весь процесс защиты проекта. Согласно даташиту, необходимо сформировать зашифрованный, с использованием ключа, файл прошивки для flash-a, залить ключ в FPGA, далее при включении питания будет грузиться зашифрованная прошивка.
Вопрос:
1. Каким образом формируется файл зашифрованной прошивки? Например, предполагается первый раз залить прошивку при помощи SFL, т.е. необходимо сформировать зашифрованный jic-файл. Используем “Convert Programming File”, в опциях для sof-файла выбираем : Generate encrypted bitstream; Generate key gramming file x.ekp; вводим key жмём ОК. Полученный jic-файл и есть зашифрованный при помощи ключа? Полученный ekp-файл – encryption key programming file (необходим для прошивки ключа в FPGA)?
2. Каким образом прошивается сам ключ? Необходимо залить ekp-файл? Или сконвертить его в jam, svf, jbc и потом залить?
doom13
Ещё вопрос, если заливается файл jam или ekp, а в опциях программатора стоит галка "Configure volatile design security key when available", то это и равносильно прошивке "volatile key"?
doom13
Похоже опция "Configure volatile design security key when available" и отвечает за генерацию volatile ключа. Попробовал его прошивать, похоже, работает. Первый раз ключ прошивается, при попытке повторной прошивки ругается на наличие ключа. Полностью работоспособность проверить не могу, батарея не была предусмотрена. Для non-volatile key необходим либо ethernet-blaster, либо какой-то программер от JTAG Technologies.

Остался вопрос по поводу установки tamper-protection bit, что бы могла грузиться только зашифрованная прошивка, или это только у Альтеры можно узнать?

Stewart Little
Цитата(doom13 @ Apr 15 2014, 17:41) *
Остался вопрос по поводу установки tamper-protection bit, что бы могла грузиться только зашифрованная прошивка, или это только у Альтеры можно узнать?

Для взведения Tamper protection bit нужно иметь специальный ini-файл, который должен быть помещен в папку ..\bin или ..\bin64 квартуса.
При наличии такого файла будет формироваться ekp со взведенным тампер протекшеном.
Бросьте мне сообщения в личку, их есть у меня sm.gif

Кстати, взвести Tamper protection bit можно только таким способом. C помощью jam-скриптов, например, его взвести не получится. А вот проверить, взведен он или нет - можно sm.gif
doom13
Цитата(Stewart Little @ Apr 15 2014, 18:26) *
Бросьте мне сообщения в личку, их есть у меня sm.gif


Похоже, личные сообщения мне не доступны. Если можно, отправьте на ящик doom13@tut.by
Спасибо.
Stewart Little
Цитата(doom13 @ Apr 16 2014, 10:18) *
Если можно, отправьте на ящик doom13@tut.by
Хорошо, но смогу только в понедельник. А то я сейчас в командировке sad.gif
doom13
Цитата(Stewart Little @ Apr 16 2014, 15:19) *
Хорошо, но смогу только в понедельник. А то я сейчас в командировке sad.gif


Спасибо, подождём.
yes
2Stewart Little поясните, пожалуйста, не высылая ini sm.gif

планирую использовать SoC Cyclone 5 (с АРМом которые), хотелось бы использовать криптование прошивки ПЛИС с ключем в eFuse

каких неожиданностей следует ожидать в плане софта/лицензий, может ераты какой-то...

спасибо

Stewart Little
Цитата(yes @ Apr 17 2014, 19:16) *
планирую использовать SoC Cyclone 5 (с АРМом которые), хотелось бы использовать криптование прошивки ПЛИС с ключем в eFuse
каких неожиданностей следует ожидать в плане софта/лицензий, может ераты какой-то...

Сергей, а что такое eFuse? Это, поди, что-то из актеля/зайлинкса? sm.gif
В крайних альтеровских семействах (в т.ч. Cyclone V) ключ можно хранить как в однократном ПЗУ, так и в ОЗУ (в этом случае понадобится резервная батарея).
Процедура создания шифрованного файла и прошивки ключа описана уважаемым doom13, в первом посте он также упоминает альтеровский документ, где все это описано.
Для использования non-volatile ключа понадобится специальная фича в квартусовский лицензионный файл.
Если нужен Tamper protection, то необходим еще и обсуждаемый ini-файл.
Насчет необходимости именно EthernetBlaster для прошивки non-volatile ключа в Cуclone V я не уверен - по-хорошему, нужно этот вопрос исследовать отдельно sm.gif
Вроде на этом и все.
doom13
Цитата(Stewart Little @ Apr 17 2014, 20:12) *
Насчет необходимости именно EthernetBlaster для прошивки non-volatile ключа в Cуclone V я не уверен - по-хорошему, нужно этот вопрос исследовать отдельно sm.gif


В даташите (an556) написано так:
ByteBlaster II and USB-Blaster support only volatile key programming. Ethernet Blaster and JTAG Technologies support both volatile and non-volatile key programming. For non-volatile key programming, you must regulate the JTAG TCK pulse width (period) for proper polyfuse programming.

Цитата(Stewart Little @ Apr 17 2014, 20:12) *
Для использования non-volatile ключа понадобится специальная фича в квартусовский лицензионный файл.


Если можно, тут по-подробней. Что именно необходимо добавить в файл лиценнзии? Строки, на подобие тех, что необходимы для добавления лицензии на IP-ядра.
yes
Цитата(Stewart Little @ Apr 17 2014, 21:12) *
Сергей, а что такое eFuse? Это, поди, что-то из актеля/зайлинкса? sm.gif

Роман, спасибо, но не понял
an556 тоже посмотрел

eFuse - однократное ПЗУ, меня конкретно это интересует, батарейку применять не можем

то есть интересно два режима
Non-Volatile key
Non-Volatile key+Tamper protect

непонятно для меня описана возможность генерации jam файлов для прошивки ключа и файла

непонятно - позволяет ли internal jtag прошивать ключи (Non-Volatile особенно)

------------------------

only volatile key programming - волнует. у ксайлинса тоже не всякий "бластер" умеет прошивать (и там и там, видимо, нужна четкая времянка)
To enable the design security feature, you can obtain a license file from Altera Technical Support.
ну и если это можно в конфе - официальная стоимость или условия ini и лицензии тоже важно - ксайлинс с этим не заморачивается, а вот у латтиса чтоб получить криптофичи пришлось некий геморой испытать - все-таки этож к экспорту так просто не разрешено...

------------------------

я сейчас с цинком вожусь - вникать в доку на циклон не хочеться, чтоб не запутаться, но "представление о возможностях" мне бы не помешало sm.gif
старшие Cyclone V SE мне кажутся привлекательными на будущее - ненужных мне трансиверов нет и цена подешевле чем у цинков
Stewart Little
Цитата(doom13 @ Apr 18 2014, 10:13) *
В даташите (an556) написано так:
ByteBlaster II and USB-Blaster support only volatile key programming. Ethernet Blaster and JTAG Technologies support both volatile and non-volatile key programming. For non-volatile key programming, you must regulate the JTAG TCK pulse width (period) for proper polyfuse programming.
Да, все это так. Но у альтеры есть новое железо для прошивки - USB-Blaster II, который доже допускает управление параметрами JTAG'овских сигналов. Пока этот новый бластер только встраивают в отладочные платы для новый семейств, но обещают свделавть и как отдельный девайс. Вот я и имел в виду, а нельзя ли будет использовать USB-Blaster II для прошивки OPT-ключа??? Хотя, возможно вопрос несколько преждевременный sm.gif

Цитата(doom13 @ Apr 18 2014, 10:13) *
Если можно, тут по-подробней. Что именно необходимо добавить в файл лиценнзии? Строки, на подобие тех, что необходимы для добавления лицензии на IP-ядра.
Да, именно так. В понедельник отмылю уточнения.


Цитата(yes @ Apr 18 2014, 15:53) *
непонятно для меня описана возможность генерации jam файлов для прошивки ключа и файла
А что _именно_ непонятно? Там, имхо, все расписано подробно...

Цитата(yes @ Apr 18 2014, 15:53) *
непонятно - позволяет ли internal jtag прошивать ключи (Non-Volatile особенно)
Что здесь понимается под "internal jtag"??? blink.gif

Цитата(yes @ Apr 18 2014, 15:53) *
ну и если это можно в конфе - официальная стоимость или условия ini и лицензии тоже важно
Ответил в личку.
Stewart Little
Цитата(doom13 @ Apr 16 2014, 15:26) *
Спасибо, подождём.
Отмылил, проверяйте почту.
doom13
Цитата(Stewart Little @ Apr 21 2014, 14:05) *
Отмылил, проверяйте почту.


Получил, спасибо.


Фичи quartus_nonvolatile_encryption и quartus_volatile_encryption в лицензионном файле присутствуют.
Stewart Little
Цитата(doom13 @ Apr 21 2014, 14:59) *
... quartus_volatile_encryption в лицензионном файле присутствуют.

Эта фича, по большому счету, не нужна. Достаточно nonvolatile.
doom13
Цитата(Stewart Little @ Apr 21 2014, 15:26) *
Эта фича, по большому счету, не нужна. Достаточно nonvolatile.


Я так понимаю, в зависимости от того, какой ключ будет использоваться, нужна одна или другая.
Stewart Little
Цитата(doom13 @ Apr 21 2014, 15:39) *
Я так понимаю, в зависимости от того, какой ключ будет использоваться, нужна одна или другая.
Нет, Вы понимаете неправильно sm.gif
Достаточно только nonvolatile - оно покрывает оба варианта ключа.
doom13
Цитата(Stewart Little @ Apr 21 2014, 15:51) *
Нет, Вы понимаете неправильно sm.gif
Достаточно только nonvolatile - оно покрывает оба варианта ключа.


Спасибо, буду знать.
Stewart Little
Цитата(Stewart Little @ Apr 18 2014, 17:38) *
Да, все это так. Но у альтеры есть новое железо для прошивки - USB-Blaster II, который доже допускает управление параметрами JTAG'овских сигналов. Пока этот новый бластер только встраивают в отладочные платы для новый семейств, но обещают свделавть и как отдельный девайс. Вот я и имел в виду, а нельзя ли будет использовать USB-Blaster II для прошивки OPT-ключа??? Хотя, возможно вопрос несколько преждевременный sm.gif
Похоже, что USB-Blaster II таки годится для прошивки OPT-ключа:

Цитата
USB-Blaster II Download Cable Support
Up to 24MHz TCK/DCLK
4x improvement
Secure Key Programming
EugeneS
QUOTE (Stewart Little @ May 15 2014, 16:15) *
Похоже, что USB-Blaster II таки годится для прошивки OPT-ключа:


Вот еще:
http://www.altera.com/support/kdb/solution...032008_684.html
doom13
Приветствую. Пришлось вспомнить старую тему - надо доразобраться с возможностью защиты прошивки для Cyclone 5.
Есть Q13.0.1, генерю key programming file (файл ini в системе отсутствует), заливаю его Terasic-Blaster (USB-Blaster), всё работает - ключ (volitile) заливается (Рисунок1), на вторую попытку говорит, что ключ уже есть.
Далее добавляю ini в bin64, генерю ekp и пробую залить. Выкидывает ошибку, что железо не поддерживает программирование данного ключа (Рисунок2). Как понимаю, во втором случае (после добавления в систему ini) получился non-volitile key и мой программер его не поддерживает.

Т.е. для программирования non-volatile key надо минимум заменить программатор на USB-Blaster II. Что может понадобиться ещё, прокатит ли использование ломаной версии Квартуса?

Ещё вопрос, в обоих случаях неактивна галка Security Bit, а это, как понимаю, и есть Tamper Protection Bit. Как тогда его активировать? Ведь есть режимы
- Non-volatile Key
- Non-volatile Key with Tamper Protection Bit Set
Спасибо.
Stewart Little
Цитата(doom13 @ Feb 18 2015, 12:28) *
Т.е. для программирования non-volatile key надо минимум заменить программатор на USB-Blaster II.

Да. Ежели надо, то есть в наличии.

Цитата
Что может понадобиться ещё, прокатит ли использование ломаной версии Квартуса?

Да вроде больше ничего не надо.
Кстати, из ломаной версии можно сделать "неломаную", если хотите.

Цитата
Ещё вопрос, в обоих случаях неактивна галка Security Bit, а это, как понимаю, и есть Tamper Protection Bit.

Вот тут не уверен. Надо тщательнеЕ вопрос поизучать.
doom13
Цитата(Stewart Little @ Feb 18 2015, 13:30) *
Кстати, из ломаной версии можно сделать "неломаную", если хотите.

Это - заплатить много денег? sm.gif

Цитата(Stewart Little @ Feb 18 2015, 13:30) *
Вот тут не уверен. Надо тщательнеЕ вопрос поизучать.

То, что получилось показал на скринах, попробовал на версии Q14.0 - аналогично. Был бы рад помощи по данному вопросу.
Stewart Little
Цитата(doom13 @ Feb 18 2015, 13:40) *
Это - заплатить много денег? sm.gif

Это тривиальный подход. А мы не ищем легких путей sm.gif
Напишите мне в личку.

Цитата
То, что получилось показал на скринах, попробовал на версии Q14.0 - аналогично. Был бы рад помощи по данному вопросу.

Увы, быстро не обещаю - завал на работе до вторника.
doom13
Цитата(Stewart Little @ Apr 15 2014, 18:26) *
Для взведения Tamper protection bit нужно иметь специальный ini-файл, который должен быть помещен в папку ..\bin или ..\bin64 квартуса.
При наличии такого файла будет формироваться ekp со взведенным тампер протекшеном.

Тут ещё вопрос. Сгенерированный с ini файлом ключ - это тот же volatile с возведённым Tamper Protection (мой программер не умеет этот бит возводить,а в свойствах не отображается опция ON)
или это non_volatile (что мой программер так же не умеет прошивать), но как они тогда между собой отличаются. Т.е., как тогда понять по файлу ключа - это volatile или non-volatile?

Больше склоняюсь к тому, что с ini генерится non-volatile с Tamper Protection = OFF, но как оно на самом деле? И как тогда поднять Tamper Protection (повторюсь с вопросом)?

Цитата(Stewart Little @ Feb 18 2015, 14:26) *
Увы, быстро не обещаю - завал на работе до вторника.

Пока это и не горит, просто может понадобиться в обозримом будущем и хотелось бы поставить точку в данном вопросе.
doom13
Нашёл часть ответов на свои вопросы.
Сначала нашёл это.

Потом сгенерил ekp-файл с ini-файлом и без.

Сообщения системы без ini-файла
Цитата
Info (210033): Memory Map File output_files/ddvi_5CEFA9.map contains memory usage information for file output_files/ddvi_5CEFA9.jic
Info (210118): Created EKP file E:/work/Altera_Projects/cyc5_adc_4x4/c5e_test_q14/output_files/ddvi_5CEFA9.ekp


Сообщения системы с ini-файлом
Цитата
Info (210033): Memory Map File output_files/ddvi_5CEFA9.map contains memory usage information for file output_files/ddvi_5CEFA9.jic
Info (210118): Created EKP file E:/work/Altera_Projects/cyc5_adc_4x4/c5e_test_q14/output_files/ddvi_5CEFA9.ekp
Info (210119): EKP file E:/work/Altera_Projects/cyc5_adc_4x4/c5e_test_q14/output_files/ddvi_5CEFA9.ekp sets the tamper protection bit


Stewart Little, получается - Вы были правы, ini - возводит Tamper Protection Bit.

Остаются вопросы:
1) Каким образом тогда выбирается volatile key или non-volatile key? Или если будет "нормальный" программатор, то должна появиться опция выбора типа ключа?
2) Что такое Security Bit в окне Quartus II Programmer?
Stewart Little
Цитата(doom13 @ Feb 18 2015, 14:34) *
Тут ещё вопрос. Сгенерированный с ini файлом ключ - это тот же volatile с возведённым Tamper Protection (мой программер не умеет этот бит возводить,а в свойствах не отображается опция ON) или это non_volatile (что мой программер так же не умеет прошивать), но как они тогда между собой отличаются. Т.е., как тогда понять по файлу ключа - это volatile или non-volatile?

Не претендую на абсолютную истину, но склероз мне подсказывает следующее:
в ekp-файле прописаны обе опции - и volatile, и non-volatile. Какой из этих вариантов загружать - определяется в программере, галкой "Configure volatile design security key when available".

Цитата
Больше склоняюсь к тому, что с ini генерится non-volatile с Tamper Protection = OFF, но как оно на самом деле? И как тогда поднять Tamper Protection (повторюсь с вопросом)?

Нет, на так!!!
С ini-файлом всегда генерится ekp-файл c взведенным Tamper Protection.
Но про галку в опциях программере при этом не забывайте.
Здесь по поводу Non-volatile key with Tamper Protection вопросов нет.
А вот по поводу Volatile key with Tamper Protection - все зависит от используемого семейства ПЛИС : "The volatile key tamper-protection is only available for Arria II, Arria V, Cyclone V, and Stratix V devices".



Цитата(doom13 @ Feb 18 2015, 15:43) *
Остаются вопросы:
1) Каким образом тогда выбирается volatile key или non-volatile key? Или если будет "нормальный" программатор, то должна появиться опция выбора типа ключа?

Выше рассказал.

Цитата
2) Что такое Security Bit в окне Quartus II Programmer?

Это из другой оперы. Это опции файла. Если девайс имеет Security Bit (например MAX3000A или MAX II), то программирующий файл может быть создан со взведенным битом защиты (необходимость этого указывается в "Device and Pin options", емнип.
doom13
Цитата(Stewart Little @ Feb 18 2015, 15:56) *
Не претендую на абсолютную истину, но склероз мне подсказывает следующее:
в ekp-файле прописаны обе опции - и volatile, и non-volatile. Какой из этих вариантов загружать - определяется в программере, галкой "Configure volatile design security key when available".

Похоже это так. Когда сгенерил ключ без Tamper Protection он заливается USB-Blaster-ом.
При прошивке пишет:
Цитата
Info (209060): Started Programmer operation at Wed Feb 18 16:21:20 2015
Info (209017): Device 1 contains JTAG ID code 0x02B140DD
Info (209024): Programming device 1
Info (209011): Successfully performed operation(s)
Info (209061): Ended Programmer operation at Wed Feb 18 16:21:20 2015


Если второй раз попробуем залить ключ:
Цитата
Info (209060): Started Programmer operation at Wed Feb 18 16:21:41 2015
Info (209005): Programming status: Device 1 has already had a volatile design security key successfully programmed for optional-secure bitstream configuration. It can accept both secured and unsecured configuration bitstreams
Info (209017): Device 1 contains JTAG ID code 0x02B140DD
Info (209024): Programming device 1
Info (209011): Successfully performed operation(s)
Info (209061): Ended Programmer operation at Wed Feb 18 16:21:42 2015


Если снять галку "Configure volatile design security key when available", то начинает ругаться:
Цитата
Info (209060): Started Programmer operation at Wed Feb 18 16:26:36 2015
Info (209005): Programming status: Current hardware doesn't support security key programming
Error (209012): Operation failed
Info (209061): Ended Programmer operation at Wed Feb 18 16:26:36 2015

Долго не мог вспомнить, где находится эта галка (Tools->Options->Programmer).

doom13
Затестил работу для volatile ключа. Батарейки на плате нет. Сгенерил зашифрованную прошивку, залил во флэш-память. Включаю питание - ПЛИС не стартует. Программатором заливаю volatile key - ПЛИС стартует. Через Remote Update даю команду на реконфигурацию - перезагружается. Сбрасываю питание - опять не стартует и т.д.
Volatile key работает. Проверить работу non-volatile пока нет возможности, но, думаю, всё будет так же.
Спасибо Stewart Little за оказанную помощь.
doom13
Использование volatile key кажется менее надёжным, т.к. если умирает батарейка (это наверное маловероятно, но через много-много лет) или если она отвалится, то при условии, что возведён Tamper Protection Bit, оживить FPGA не получится. В случае non-volatile key, если используется Remote Update и стабильно рабочий factory image, всё будет работать и сможем при необходимости обновлять прошивку для factory image.
Golikov A.
Представьте на схеме батарейка, может аккумулятор - ионистр, большой, который поддерживает ключ. Батарейка плюсом лежит на плате, а минусом касается пружинки закрепленной на корпусе прибора. При разборе корпуса батарейка отсоединяется и прибор гибнет. Весьма полезная функция для защиты устройств которые нельзя разбирать, защита от внутренней модификации.
Stewart Little
Цитата(Golikov A. @ Feb 19 2015, 10:23) *
Представьте на схеме батарейка, может аккумулятор - ионистр, большой, который поддерживает ключ. Батарейка плюсом лежит на плате, а минусом касается пружинки закрепленной на корпусе прибора. При разборе корпуса батарейка отсоединяется и прибор гибнет. Весьма полезная функция для защиты устройств которые нельзя разбирать, защита от внутренней модификации.

Это всего лишь хороший способ прострелить себе ногу.
Для защиты от внутренней модификации гораздо надежнее и проще использовать Non-volatile Key with Tamper Protection.
jks
А в чем причина невозможности использования старого USB Blaster-а для программирования "Volatile" и "Non-volatile" ключей?
Его среда не поддерживает для этих функций или тут аппаратные завязки (невозможность изменения частоты JTAG)?
doom13
Цитата(Golikov A. @ Feb 19 2015, 10:23) *
Представьте на схеме батарейка, может аккумулятор - ионистр, большой, который поддерживает ключ. Батарейка плюсом лежит на плате, а минусом касается пружинки закрепленной на корпусе прибора. При разборе корпуса батарейка отсоединяется и прибор гибнет. Весьма полезная функция для защиты устройств которые нельзя разбирать, защита от внутренней модификации.

Очень огромный аккумулятор, прикрученный к огромной плате огромными болтами, чтобы на миллиард лет хватило при огромном энергопотреблении ключа.
А вообще, лучше бы Вы молчали, коли сказать нечего или доку почитайте, если есть интерес.

Цитата(Stewart Little @ Feb 19 2015, 11:55) *
Это всего лишь хороший способ прострелить себе ногу.
Для защиты от внутренней модификации гораздо надежнее и проще использовать Non-volatile Key with Tamper Protection.

Для чего они тогда его предлагают?
Stewart Little
Цитата(jks @ Feb 19 2015, 12:17) *
... или тут аппаратные завязки (невозможность изменения частоты JTAG)?

Именно это.
doom13
Цитата(jks @ Feb 19 2015, 12:17) *
А в чем причина невозможности использования старого USB Blaster-а для программирования "Volatile" и "Non-volatile" ключей?

Volatile key залить USB Blaster-ом можно, но без возведения Tamper Protection Bit.
Цитата(jks @ Feb 19 2015, 12:17) *
... или тут аппаратные завязки (невозможность изменения частоты JTAG)?

именно так
Stewart Little
Цитата(doom13 @ Feb 19 2015, 12:44) *
Для чего они тогда его предлагают?

Ну, типа гибкость - варианты на любой вкус и цвет sm.gif
К тому же есть семейства, например Cyclone III LS, где ключ может быть только volatile.
jks
Цитата(Stewart Little @ Feb 19 2015, 12:47) *
Именно это.


Я краем глаза подсмотрел что вся процедура осуществляется на частоте 100кГц
и задержки везде по 100мкс. Т.е. если я проиграю нужный SFV на частоте 12МГц,
но с нужными задержками то ничего не выйдет?

ЗЫ: У меня пока в наличии нет CV/AV, проверить не могу к сожалению sad.gif.

Вот еще хотел узнать про LOCK и UNLOCK инструкции.

После установленного TAMPER бита, доступ к внешнему JTAG закрыт.
Но есть специальные JTAG инструкции LOCK и UNLOCK.
Если из ядра ПЛИС выдать UNLOCK и разрешить доступ к внешнему JTAG интерфейсу, то
можно ли будет работать по внешнему JTAG интерфейсу при установленном TAMPER бите?

Golikov A.
Цитата
Это всего лишь хороший способ прострелить себе ногу.
Для защиты от внутренней модификации гораздо надежнее и проще использовать Non-volatile Key with Tamper Protection.


Внутренней модификации может быть подвержена не только прошивка...

Прибор допуска или учета. Внутрь можно поставить "жучек" который позволит вам получать защищенные данные или изменять показания. Это некий аналог пломбы, который насмерть убьет прибор при вскрытии, и не получиться без явных повреждений корпуса выдать его за нормальный... естественно решений может быть много...

Stewart Little
Цитата(jks @ Feb 19 2015, 13:31) *
Если из ядра ПЛИС выдать UNLOCK и разрешить доступ к внешнему JTAG интерфейсу, то
можно ли будет работать по внешнему JTAG интерфейсу при установленном TAMPER бите?

Что-то я не совсем понял.
Вы предполагаете, что разработчик сам закладывает в свой проект некий бэкдор??? blink.gif


Цитата(Golikov A. @ Feb 19 2015, 13:57) *
Внутренней модификации может быть подвержена не только прошивка...

Ну, это уже пошло обсуждение сферических коней в вакууме.
Тема про альтеровские средства защиты проекта от несанкционированного копирования и/или модификации.
Golikov A.
Ок. не буду мешать.

Просто отметил что такой способ дает более глобальную защиту устройства, не только на уровне модификации прошивки, но и далее... Это часто бывает нужно, в том числе и для сертификатов на средство измерения. И алтера предлагает средство защиты которое решает в том числе и эту задачу, круче чем пломбы. Если же это не интересно, извините что помешал...
jks
[quote name='Stewart Little' date='Feb 19 2015, 14:42' post='1316467']
Что-то я не совсем понял.
Вы предполагаете, что разработчик сам закладывает в свой проект некий бэкдор??? blink.gif

Мне просто не понятно как использовать режим VOLATILE KEY с установленным Tamper битом.
В документации пишут, что при установке TAMPER бита внешний JTAG интерфейс отключается.
VOLATILE KEY записывается, только по JTAG интерфейсу.
Но VOLATILE KEY хранится в ОЗУ пока есть внешнее питание.
Если питание пропадет, то ключ стирается и записать новый ключ уже невозможно, т.к.
JTAG интерфейс заблокирован и никакую прошивку уже записать не получиться.

Хотя может быть если создать прошивку с нулевым ключом, то можно ее скормить.
Но это надо пробовать.

Вот в чем вопрос.
doom13
Цитата(jks @ Feb 19 2015, 15:20) *

Батарейка ставится для поддержания volatile ключа. А выше обсуждалось, что не совсем надёжно, если отваливается батарейка и установлен Tamper Protection Bit, то единственный способ лечения устройства замена FPGA.
Считаю, что данная гибкость с возможностью выбора ключа лишняя, лучше всегда использовать non-volatile key.
jks
Цитата(doom13 @ Feb 19 2015, 15:28) *
Батарейка ставится для поддержания volatile ключа. А выше обсуждалось, что не совсем надёжно, если отваливается батарейка и установлен Tamper Protection Bit, то единственный способ лечения устройства замена FPGA.


Вот эту цитату как понимать?

Цитата
For the volatile key with tamper protection bit set security mode, Cyclone V devices do not accept
the encrypted configuration file if the volatile key is erased. If the volatile key is erased and you
want to reprogram the key, you must use the volatile key security mode.


Цитата(doom13 @ Feb 19 2015, 15:28) *
Считаю, что данная гибкость с возможностью выбора ключа лишняя, лучше всегда использовать non-volatile key.


NON-VOLATILE KEY можно использовать только один раз и только для финального проекта.

Для отработки механизна защиты хорошо использвать VOLATILE KEY.
Но TAMPER бит + VOLATILE KEY, все портит если его можно только один раз использовать.
Или надо читать документацию между строк.
doom13
Цитата(jks @ Feb 19 2015, 15:42) *
Вот эту цитату как понимать?

Эта цитата, как я понимаю, относится к таблице сверху (см. даташит, Security Mode - Volatile Key). Т.е. если хотим оставить возможность перепрограммировать volatile key, не надо устанавливать Tamper Protection Bit. Если Tamper Protection Bit установили (Security Mode - Volatile Key with Tamper Protection Bit Set) и ключ как-то стёрся - девайс мёртвый.

Цитата(jks @ Feb 19 2015, 15:42) *
NON-VOLATILE KEY можно использовать только один раз и только для финального проекта.

Можно и для нефинального. Выше писал, используем в проекте Remote Update, делаем стабильный factory и "финальную" версию application с возможностями перезаливки зашифрованной прошивки для application, шифруем, заливаем и имеем возможность перезаливать/обновлять application (отлаживаться можем на незалоченной плате).

Цитата(jks @ Feb 19 2015, 15:42) *
Для отработки механизна защиты хорошо использвать VOLATILE KEY.
Но TAMPER бит + VOLATILE KEY, все портит если его можно только один раз использовать.
Или надо читать документацию между строк.

Потестить работу ключа можно без Tamper Protection (уже попробовал - работает). Отличие между ключами только в том, что non-volatile + Tamper Bit более надёжный вариант, т.к. ключ не сотрётся в случае форс-мажора.
jks
Цитата(doom13 @ Feb 19 2015, 15:48) *
Эта цитата, как я понимаю, относится к таблице сверху (см. даташит, Security Mode - Volatile Key). Т.е. если хотим оставить возможность перепрограммировать volatile key, не надо устанавливать Tamper Protection Bit. Если Tamper Protection Bit установили (Security Mode - Volatile Key with Tamper Protection Bit Set) и ключ как-то стёрся - девайс мёртвый.


Т.е. для VOLATILE KEY существует два режима:
1. Volatile Key without Tamper Protection Security Mode
2. Volatile Key with Tamper Protection Security Mode

Так более понятно, но этот (2) режим действительно извратный и не понятно для чего он нужен.

А с нулевым VOLATILE ключом без TAMPER бита можно записать зашифрованную прошивку?
doom13
Цитата(jks @ Feb 19 2015, 16:05) *
Т.е. для VOLATILE KEY существует два режима:
1. Volatile Key without Tamper Protection Security Mode
2. Volatile Key with Tamper Protection Security Mode

Так более понятно, но этот (2) режим действительно извратный и не понятно для чего он нужен.

Нет, извратный (правильно наверное сказать менее защищённый) - это первый режим, т.к. можем подключиться JTAG-ом к FPGA и заливать в чужое железо свою версию ПО (ключ конечно же стереть придётся). Т.е. при наличии отлаженного железа остаётся разобраться с его работой.
Лучший из возможных, на мой взгляд, - non-volatile, чтоб избежать возможности "прострелить себе ногу" sm.gif

Цитата(jks @ Feb 19 2015, 16:05) *
А с нулевым VOLATILE ключом без TAMPER бита можно записать зашифрованную прошивку?

Если ключ все нули - это тоже ключ, будет работать с зашифрованной прошивкой. Если без Tamper Protection бита то будет грузить зашифрованную и незашифрованную прошивку.
jks
Цитата(doom13 @ Feb 19 2015, 16:10) *
Нет, извратный (правильно наверное сказать менее защищённый) - это первый режим, т.к. можем подключиться JTAG-ом к FPGA и заливать в чужое железо свою версию ПО. Т.е. при наличии отлаженного железа остаётся разобраться с его работой.
Лучший из возможных, на мой взгляд, - non-volatile, чтоб избежать возможности "прострелить себе ногу" Ж)


Ну я так понимаю что назначение режимов защиты это собственно предотвратить клонирование ПО, а не железа.
Железо проще клонировать. В крайнем случае можно перепаять новый чип.
Если есть мозги что-бы реализвать свое ПО, то перепаять чип не составит труда. Это если говорить про Циклоны.

Те девайсы, что мне попадались были с батарейкой и ОЗУ для хранения конфигурации.
То есть там не только ключ, но и прошивка VOLATILE. Но это на Stratix II/III все было.

Ария и Стратиксы - это другая весовая категория. Там могут и чип распилить и прочитать ключик из чипа после распила.
А если прошивки удаленно обновляются, то у них должен быть либо общий ключ либо уникальная прошивка для каждого
конкретного устройства, что не всегда удобно. Т.е. либо база ключей, либо генератор по уникальному серийному номеру
устройства. И доступ к ключам только у одного человека sm.gif
doom13
Цитата(jks @ Feb 19 2015, 16:38) *
Ну я так понимаю что назначение режимов защиты это собственно предотвратить клонирование ПО, а не железа.
Железо проще клонировать. В крайнем случае можно перепаять новый чип.
Если есть мозги что-бы реализвать свое ПО, то перепаять чип не составит труда. Это если говорить про Циклоны.

Да, согласен - для защиты ПО, но запретить полный доступ к чипу ещё более приятно. Про защиту железа нам уважаемый Golikov A. рассказал, там батарейка не поможет и даже Tamper Protection.

Цитата(jks @ Feb 19 2015, 16:38) *
Те девайсы, что мне попадались были с батарейкой и ОЗУ для хранения конфигурации.
То есть там не только ключ, но и прошивка VOLATILE. Но это на Stratix II/III все было.

Что, устройство вообще никогда не выключается? Наверное всё же батарейка только для ключа, а прошивка во внешнем конфигурационном устройстве.
jks
Цитата(doom13 @ Feb 19 2015, 16:52) *
Да, согласен - для защиты ПО, но запретить полный доступ к чипу ещё более приятно. Про защиту железа нам уважаемый Golikov A. рассказал, там батарейка не поможет и даже Tamper Protection.

Что, устройство вообще никогда не выключается? Наверное всё же батарейка только для ключа, а прошивка во внешнем конфигурационном устройстве.


Устройство выключается, но центральная часть его работает от батарейки, когда внешнего питания нет.
Есть датчик напряжения и счетчик ресурса и когда заряд батарейки подходит к концу загорается предупреждающий индикатор.
После этого можно поработать месяца 3. А после модуль отправляется производителю для замены батарейки и обновления прошивки.
Никакого удаленного обновления.
Как там детально устроено не вникал, модуль дорого стоил. Но этот модуль конфигурил все остальные ПЛИСы.
Там было 4 или 5 Virtex-ов плюс еще Stratix-ы. Такая сборная солянка.
Но это не наша разработка, а буржуйская.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.