реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Привязка своего IP-ядра к ПЛИС Altera, Подскажите, как правильно
svedach
сообщение Oct 26 2017, 17:39
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 111
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Привет всем. Появилась задача защиты своего IP-ядра при продаже. Лучший вариант - продавать синтезированный Квартусом файл, но нужно что бы его можно было использовать только один раз для конкретного чипа. Прочитал, что ПЛИС Alter-ы имеют уникальный идентификатор, его можно использовать... заказчик ядра передает мне идентификатор микросхемы, я подставляю его в исходники, синтезирую и передаю результат заказчику. Вот только непонятно, как читать этот идентификатор? Нашел, что есть специальная корка, но возможно ли ее интегрировать в свое ядро и нормальный ли это подход?
Спасибо!
Go to the top of the page
 
+Quote Post
andrewkrot
сообщение Oct 27 2017, 10:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-11-04
Из: Москва
Пользователь №: 1 106



Цитата(svedach @ Oct 26 2017, 20:39) *
Прочитал, что ПЛИС Alter-ы имеют уникальный идентификатор, его можно использовать

Где прочитал? Что за ПЛИС?
Go to the top of the page
 
+Quote Post
jojo
сообщение Oct 27 2017, 11:22
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 505
Регистрация: 9-10-04
Из: СССР
Пользователь №: 827



Что-то вроде вот этого, наверное: Altera Unique Chip ID IP Core.
Смотря как реализовано будет, а то ведь есть варианты, как взломать.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 27 2017, 12:29
Сообщение #4


Лентяй
******

Группа: Свой
Сообщений: 2 133
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(svedach @ Oct 26 2017, 20:39) *
... но возможно ли ее интегрировать в свое ядро и нормальный ли это подход?

В свое ядро интегрировать ее, конечно, можно - как и любой lpm-модуль.

А вот что касается "нормальности" подхода, то тут много вопросов.
А что делать заказчику, если у него микросхема, для которой Вы сделали постсинтетический нетлист, вышла из строя? Отправлять Вам новый Unique ID другой микросхемы?
А как Вы будете это контролировать (т.е. действительно ли у заказчика микросхема вышла из строя, или он просто мухлюет и хочет получить второй экземпляр бесплатно)?
А если у заказчика серия в 100500 экземпляров устройства? Вы готовы перекомпилировать своя IP-ядро для каждого экземпляра устройства заказчика?
И прочая, прочая...

Производители IP-ядер (в т.ч. Altera) делают по-другому. Если излагать упрощенно, приближая к Вашему случаю - они предоставляют заказчику два файла:
1)зашифрованные исходник (ну или зашифрованный edif/vqm нетлист);
2)лицензионный файл, который позволяет этот зашифрованный файл использовать.
Причем зашифровать файл и сделать лицензионный файл можно так, чтобы компиляция была возможна только для выбранных семейств ПЛИС (одного или нескольких), и только на одном компьютере.
Но при этом у заказчика технически нет ограничений на тираж изделий, в которых используются микросхемы, для которых разрешена компиляция.

За подробностями - в личку.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 27 2017, 13:03
Сообщение #5


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 098
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Stewart Little @ Oct 27 2017, 15:29) *
А если у заказчика серия в 100500 экземпляров устройства? Вы готовы перекомпилировать своя IP-ядро для каждого экземпляра устройства заказчика?
И прочая, прочая...

Не проблема, такое можно автоматизировать скриптами через командную строку, в квартусе это просто делается, и собирать множество параллельно. Можно сократить число прошивок, если одна будет прошивка рассчитана сразу на 10-100 различных ID sm.gif


--------------------
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 27 2017, 13:15
Сообщение #6


Лентяй
******

Группа: Свой
Сообщений: 2 133
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(AVR @ Oct 27 2017, 16:03) *
Не проблема, такое можно автоматизировать скриптами через командную строку, в квартусе это просто делается, и собирать множество параллельно. Можно сократить число прошивок, если одна будет прошивка рассчитана сразу на 10-100 различных ID sm.gif

Можно и зайца научить курить (с) sm.gif Но зачем?
Еще раз отмечу - вопрос это более административный, чем технический.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Inanity
сообщение Oct 27 2017, 13:18
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 6-07-12
Пользователь №: 72 653



Цитата(Stewart Little @ Oct 27 2017, 15:29) *
А что делать заказчику, если у него микросхема, для которой Вы сделали постсинтетический нетлист, вышла из строя? Отправлять Вам новый Unique ID другой микросхемы?
А как Вы будете это контролировать (т.е. действительно ли у заказчика микросхема вышла из строя, или он просто мухлюет и хочет получить второй экземпляр бесплатно)?


Если заказчик на этапе интеграции корки и теоретически может что-то сломать/сжечь, то можно отдать корку с таймером или урезанным функционалом. Когда всё отлажено, оттестировано и зашито в релизные версии, то вышедшие из строя микросхемы это исключительно проблемы заказчика.

Цитата(Stewart Little @ Oct 27 2017, 15:29) *
А если у заказчика серия в 100500 экземпляров устройства? Вы готовы перекомпилировать своя IP-ядро для каждого экземпляра устройства заказчика?


Если это SRAM-based ПЛИС и конфигурация хранится во внешней флешке (90% случаев), то hmac(fpga_id) можно хранить на ней. В этом случае битстрим будет всегда один и тот же.
Разработчик IP-корки запросто может нагенерировать ваши 100500 хэшей по 100500 id-шника. Заказчику остаётся только запрограммировать на флеш битстрим + рядом положить соответствующий fpga-ке hmac(fpga_id). Hmac привёл для примера. В любом случае хэш можно усложнить/упростить на усмотрение разработчика.

Сообщение отредактировал Inanity - Oct 27 2017, 13:20
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 27 2017, 14:33
Сообщение #8


Лентяй
******

Группа: Свой
Сообщений: 2 133
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(AVR @ Oct 27 2017, 16:03) *
Цитата(Inanity @ Oct 27 2017, 16:18) *
Коллеги, постарайтесь взглянуть на проблему шире.
Как заказчик будет получать список своих Unique ID в условиях серийного производства?
Нужно будет на каждом экземпляре смонтированного устройства запустить специальный проект (допустим, его предоставит разработчик IP-ядра), который будет возвращать ID использованной в этом экземпляре микросхемы.
Это требует времени. Затем, пока разработчик ядра генерирует прошивки или хэши, все эти платы надо как-то хранить. И еще проблема - придется либо как-то маркировать каждый экземпляр, либо для каждого экземпляра повторять процедуру чтения ID после получения от разработчика кучи прошивок/хэшей - чтобы восстановить, какому именно файлу прошивки (или хэшу) какой экземпляр устройства соответствует. Все это усложняет производственый процесс и увеличивает накладные расходы.

И заметьте, я не утверждал, что подход ТС не годится. Я говорил, что такой подход вызывает много вопросов.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Flood
сообщение Oct 27 2017, 14:50
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 655
Регистрация: 8-06-06
Пользователь №: 17 871



Цитата(Stewart Little @ Oct 27 2017, 17:33) *
Коллеги, постарайтесь взглянуть на проблему шире.
Как заказчик будет получать список своих Unique ID в условиях серийного производства?


В случае работы с оценочной версией - можно организовать передачу UID вручную, сколь угодно сложным способом. Для серийного изделия привязка какого-то одного внутреннего ядра к UID всей ПЛИС - довольно порочная практика.

Да, в случае мелкой серии процесс активации ядра может напоминать процедуру загрузки лицензионного файла. Т.е. используется универсальный битстрим, который в составе готового изделия формирует код-запрос, на который разработчик высылает код-ответ. Этот ответ загружается в ПЛИС и активирует ядро. Уникальность кода-запроса, а также удобство ввода и хранения ответа - на разработчике ядра. Для мелкосерийных устройств это вполне годится.

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

Кстати, интересный вопрос до кучи - что делать, если в устройстве будет использоваться более одного IP, авторы которого захотят привязываться к UID ПЛИС? Каждый IP-корщик внедрит в свой нетлист единственный UID-компонент, и в результате конечная прошивка не соберется.
Go to the top of the page
 
+Quote Post
svedach
сообщение Oct 27 2017, 16:29
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 111
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Извините, что целый день отсутствовал, работа... Интересный разговор начался...
Сразу конечно стоило оговорить: продукт мелкосерийный, с высокой добавленной стоимостью... Так что передача UID и синтез с ним - не проблема. Вопрос, который я подразумевал, но открыто не задал - что делать, если таких ядер несколько и каждое будет использовать Altera Unique Chip ID IP Core, что делать?
Доступа ко всему проекту нет... Неужели все так и передают - сколько хочешь, столько и копируй?
Неужели никто подобными вещами не озадачивался?
Go to the top of the page
 
+Quote Post
Inanity
сообщение Oct 27 2017, 16:36
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 6-07-12
Пользователь №: 72 653



Цитата(Flood @ Oct 27 2017, 17:50) *
Кстати, интересный вопрос до кучи - что делать, если в устройстве будет использоваться более одного IP, авторы которого захотят привязываться к UID ПЛИС? Каждый IP-корщик внедрит в свой нетлист единственный UID-компонент, и в результате конечная прошивка не соберется.


Действительно проблема, не подумал. UID, собственно, задумывался как защита всего дизайна от копирования, а не его частей. Скажем так, это способ защиты ip-core работает, но не масштабируется.

Цитата(svedach @ Oct 27 2017, 19:29) *
Сразу конечно стоило оговорить: продукт мелкосерийный, с высокой добавленной стоимостью... Так что передача UID и синтез с ним - не проблема. Вопрос, который я подразумевал, но открыто не задал - что делать, если таких ядер несколько и каждое будет использовать Altera Unique Chip ID IP Core, что делать?


Можно без UID. Есть способ защиты от копирования на основе внешней сrypto-memory. Если кратко, то в ip-ядре хранится ключ K и генератор случайных чисел (ГСЧ), во внешней сrypto-memory тоже хранится этот ключ К (который нельзя считать, только перезаписать). После включения питания ГСЧ выдаёт случайное число, которое отправляет во внешнюю сrypto-memory, она делает с этим числом некоторое преобразование, используя ключ К и отправляет результат обратно в ПЛИС, в ip-core. IP-core тоже выполняет аналогичное преобразование, но уже на своей стороне с тем же ключом и числом. Если результаты от сrypto-memory и ip-core совпадают, то аутентификация успешна. Подробнее есть документ xilinx: https://www.xilinx.com/support/documentatio...tes/xapp780.pdf
От себя скажу, что в документе описывается сrypto-memory с SHA-1. Этот хэш на сегодняшний день не считается безопасным, необходимо применять сrypto-memory на основе SHA-2 или SHA-3. Данный подход тоже отнюдь не изящно масштабируется, т.к. под каждую ip-core нужна будет своя сrypto-memory (хотя их спокойно можно посадить на одну шину i2c или 1-wire в зависимости от сrypto-memory). Ещё есть риск накосячить с реализацией ГСЧ на ПЛИС.

Сообщение отредактировал Inanity - Oct 27 2017, 17:05
Go to the top of the page
 
+Quote Post
svedach
сообщение Oct 27 2017, 18:24
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 111
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



"Есть способ защиты от копирования на основе внешней сrypto-memory."
Я упоминал, что доступа к всему проекту нету... К сожалению...
Go to the top of the page
 
+Quote Post
Flood
сообщение Oct 27 2017, 19:18
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 655
Регистрация: 8-06-06
Пользователь №: 17 871



Цитата(svedach @ Oct 27 2017, 21:24) *
"Есть способ защиты от копирования на основе внешней сrypto-memory."
Я упоминал, что доступа к всему проекту нету... К сожалению...


Насчет внешней крипто-памяти я не стал писать, но именно ее имел ввиду, говоря о корявости работы с UID ПЛИС.

Тут нужен не доступ ко всему проекту, а возможность потребовать от заказчика несколько (1 - 2) внешних портов на ПЛИС + возможность поставить снаружи свой чип. Если проект работает на готовой плате - это маловероятно. Если плата проектируется - реально. К этим пинам подключается специализированная память - EEPROM с криптоядром. При условии корректной реализации от пользователя потребуется однажды выполнить активацию устройства и все. Перехват обмена с внешним чипом никак не поможет отключить защиту (опять-таки - _при_условии_корректной_реализации_).
Далее порты ядра с указанными констрейнами пробрасываются наружу и все остальное уже никак не зависит от внешнего проекта. Таких защитных чипов в системе может быть несколько.

Также хочу добавить, что при большом желании разработчика внешнего проекта, скорее всего, любой тип защиты внутреннего IP-ядра возможно так или иначе снять. Вопрос только в величине желания.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Oct 27 2017, 20:13
Сообщение #14


Лентяй
******

Группа: Свой
Сообщений: 2 133
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(svedach @ Oct 27 2017, 19:29) *
Неужели все так и передают - сколько хочешь, столько и копируй?
Неужели никто подобными вещами не озадачивался?
В очередной раз занудно повторю - это вопрос более административный, чем технический.
У буржуев этот вопрос регулируется лицензионным соглашением. Если кто-то уличен в нарушении этого соглашения - извольте судиться.
При этом, понятное дело, правовые механизмы, работающие "там", будут эффективны в наших реалиях.
А что касается вариантов лицензирования IP-ядер, то они бывают разные - с роялти (когда пользователь платит автору отчисления с каждого экземпляра) и без оного. В первом случае автор либо верит пользователю на слово, либо продает ему дополнительные "секретные" залоченные ПЛИСки, в которых прошита критически важная часть IP-ядра.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
svedach
сообщение Oct 28 2017, 07:24
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 111
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Административно - понятно. Технически значит никак. Спасибо всем...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th November 2017 - 15:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016