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

 
 
> Защита данных FPGA, Кто подскажет где почитать?
prom
сообщение Feb 1 2005, 14:52
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 12-01-05
Пользователь №: 1 912



Интересуют книги/статьи и т.п. по обеспечению защиты прошивки ПЛИС. Буду очень признателен также за дополнительные комментарии. Насколько слышал краем уха для защиты используется дополнительный CPLD. Я в этих вопросах новичок, так что просьба ногами не пинать blush.gif

Заранее спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yes
сообщение Feb 9 2005, 15:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
Go to the top of the page
 
+Quote Post
Maksim
сообщение Feb 10 2005, 15:06
Сообщение #3


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

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



Цитата(yes @ Feb 9 2005, 18:09)
кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
*


А кто вам даст эти 2N? - если N~300 и сранение идёт по нескольким битам(которыми обмениваются микроконтроллер и FPGA), то как вы собираетесь востановить основание полинома? главное чтобы микрокнтроллер имел на каждое влючение питание новое значение на входе полинома, например,счётчик.


--------------------
qwerty
Go to the top of the page
 
+Quote Post
acex2
сообщение Feb 21 2005, 11:07
Сообщение #4


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(Maksim @ Feb 10 2005, 12:06)
Цитата(yes @ Feb 9 2005, 18:09)
кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
*


А кто вам даст эти 2N? - если N~300 и сранение идёт по нескольким битам(которыми обмениваются микроконтроллер и FPGA), то как вы собираетесь востановить основание полинома? главное чтобы микрокнтроллер имел на каждое влючение питание новое значение на входе полинома, например,счётчик.
*



Алгоритм Берлекэмпа-Месси использует 2*N, а не 2^N бит, поэтому для восстановления полинома с длиной 300 бит необходимо всего лишь 600 бит последовательности. Что касается идеи с обновлением значения полинома с каждым новым включением, то не стоит забывать, что последовательность генерируется обоими устройствами: FPGA и МК в данном случае. А вот как вы собираетесь обновлять начальное значение полинома в FPGA с каждым включением, не совсем понятно. Разве что прошивку патчить каждый раз или добавлять фазу загрузки начального значения в FPGA после включения. Но это неэффективно, да и не нужно. Потому что для криптографически-стойкого алгоритма генерации ПСП единственный способ ее повторить, это записать ее в память и потом повторять каждый раз при включении устройства, что физически невозможно - каждую секунду на частоте 1 Мгц будет генерироваться 1 млн. новых бит.

Что касается полиномов, то тут необходимо использовать нелинейные генераторы, например каскад Голлмана или схему Stop-and-Go. Вариант из алгоритма A5 с увеличенными длинами полиномов тоже подойдет. Все они легко реализуются в железе и взломать их практически невозможно при большой разрядности используемых полиномов - проще будет CPLD "расковырять" под микроскопом.
Go to the top of the page
 
+Quote Post
Maksim
сообщение Feb 21 2005, 20:57
Сообщение #5


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

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



Цитата(acex2 @ Feb 21 2005, 14:07)
Цитата(Maksim @ Feb 10 2005, 12:06)
Цитата(yes @ Feb 9 2005, 18:09)
кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
*


А кто вам даст эти 2N? - если N~300 и сранение идёт по нескольким битам(которыми обмениваются микроконтроллер и FPGA), то как вы собираетесь востановить основание полинома? главное чтобы микрокнтроллер имел на каждое влючение питание новое значение на входе полинома, например,счётчик.
*



Алгоритм Берлекэмпа-Месси использует 2*N, а не 2^N бит, поэтому для восстановления полинома с длиной 300 бит необходимо всего лишь 600 бит последовательности. Что касается идеи с обновлением значения полинома с каждым новым включением, то не стоит забывать, что последовательность генерируется обоими устройствами: FPGA и МК в данном случае. А вот как вы собираетесь обновлять начальное значение полинома в FPGA с каждым включением, не совсем понятно. Разве что прошивку патчить каждый раз или добавлять фазу загрузки начального значения в FPGA после включения. Но это неэффективно, да и не нужно. Потому что для криптографически-стойкого алгоритма генерации ПСП единственный способ ее повторить, это записать ее в память и потом повторять каждый раз при включении устройства, что физически невозможно - каждую секунду на частоте 1 Мгц будет генерироваться 1 млн. новых бит.

Что касается полиномов, то тут необходимо использовать нелинейные генераторы, например каскад Голлмана или схему Stop-and-Go. Вариант из алгоритма A5 с увеличенными длинами полиномов тоже подойдет. Все они легко реализуются в железе и взломать их практически невозможно при большой разрядности используемых полиномов - проще будет CPLD "расковырять" под микроскопом.
*


Берётся два полинома - предположим, длинный и короткий.
Начальное заполнение полиномов берём от датчика случайных чисел.
На вход длинного полниома заводим выход короткого.
Микроконтроллер при включении питания сообщает в FPGA номер
первого включения N=1(). FPGA полученный номер складывает с какой-то
секретной константой и результат на вход короткого полнинома и прокрутить его
M-тактов (M должно быть больше основания полинома (М=20, крутим 25-30 тактов и т.д.)).
Потом крутим короткий полином и результат подаём на вход длинного полинома,
и тоже прокручиваем энное количество тактов.Микроконтроллер тоже самое проделывает у
себя внутри, после чего результат сообщает в FPGA (в явном виде, с переставленными
битами и т.д.). После каждого включения питания при такой системе выдаваемые ответы
микроконтроллером будут "стоять" не рядом(имеет ввиду следующее значение полинома),а
сбиваться случайным образом за счёт короткого полинома.
Но это так что первое пришло в голову, а лучше я согласен - если есть место
то зашить туда шифратор с ключом и сообщать FPGA секретную константу для запуска, котороая
будет шифроваться гамированием, например (синхропосылка+зашифрованная константа).


--------------------
qwerty
Go to the top of the page
 
+Quote Post
acex2
сообщение Feb 21 2005, 22:28
Сообщение #6


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(Maksim @ Feb 21 2005, 17:57)
Берётся два полинома - предположим, длинный и короткий.
Начальное заполнение полиномов берём от датчика случайных чисел.
На вход длинного полниома заводим выход короткого.
Микроконтроллер при включении питания сообщает в FPGA номер
первого включения N=1(). FPGA полученный номер складывает с какой-то
секретной константой и результат на вход короткого полнинома и прокрутить его
M-тактов (M должно быть больше основания полинома (М=20, крутим 25-30 тактов и т.д.)).
Потом крутим короткий полином и результат подаём на вход длинного полинома, и тоже прокручиваем энное количество тактов.Микроконтроллер тоже самое проделывает у себя внутри, после чего результат сообщает в FPGA (в явном виде, с переставленными битами и т.д.). После каждого включения питания при такой системе выдаваемые ответы микроконтроллером будут "стоять" не рядом(имеет ввиду следующее значение полинома),а сбиваться случайным образом за счёт короткого полинома.
Но это так что первое пришло в голову, а лучше я согласен - если есть место то зашить туда шифратор с ключом и сообщать FPGA секретную константу для запуска, котороая будет шифроваться гамированием, например (синхропосылка+зашифрованная константа).


А чем не устраивают два синхронных нелинейных генератора на LFSR: один в CPLD, другой в FPGA? CPLD шлет выходную последовательность в FPGA по одной линии , в FPGA стоит простой XOR (с триггером на выходе во избежании глитчей) от двух последовательностей. Как только последовательности не совпали - происходит Reset (общий, или какого-нибудь локального автомата для скрытности). В итоге имеем простейшую схему внутри FPGA на нескольких SRL16 + пару LUT для проверки и организации нелинейности + только один дополнительный внешний пин.

Что касается посылок с шифрованием, то тут придется потрудиться над созданием генератора случайных чисел именно в FPGA, который после каждого ресета смог бы генерировать новое случайное число. Иначе можно будет один раз записать посылку от внешнего микроконтроллера со всеми "синхропосылками и гаммами" и затем просто ее тупо повторять при каждом перезапуске. И пусть там хоть 256-битный AES внутри FPGA - не поможет.
Go to the top of the page
 
+Quote Post
Maksim
сообщение Feb 21 2005, 23:27
Сообщение #7


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

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



[quote=acex2,Feb 22 2005, 01:28]
А чем не устраивают два синхронных нелинейных генератора на LFSR: один в CPLD, другой в FPGA? CPLD шлет выходную последовательность в FPGA по одной линии , в FPGA стоит простой XOR (с триггером на выходе во избежании глитчей) от двух последовательностей. Как только последовательности не совпали - происходит Reset (общий, или какого-нибудь локального автомата для скрытности). В итоге имеем простейшую схему внутри FPGA на нескольких SRL16 + пару LUT для проверки и организации нелинейности + только один дополнительный внешний пин.
[/quote]
А за счёт чего нелинейность smile.gif Чего-то я не понял

Что касается посылок с шифрованием, то тут придется потрудиться над созданием генератора случайных чисел именно в FPGA, который после каждого ресета смог бы генерировать новое случайное число. Иначе можно будет один раз записать посылку от внешнего микроконтроллера со всеми "синхропосылками и гаммами" и затем просто ее тупо повторять при каждом перезапуске. И пусть там хоть 256-битный AES внутри FPGA - не поможет.
*

[/quote]
С шифрованием есть конечно проблемы.


--------------------
qwerty
Go to the top of the page
 
+Quote Post
acex2
сообщение Feb 22 2005, 00:35
Сообщение #8


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(Maksim @ Feb 21 2005, 20:27)
А за счёт чего нелинейность smile.gif Чего-то я не понял


Я же писал чуть выше - LFSR лишь конструктивный блок. Для внесения нелинейности берется несколько LFSR и соединяются по нелинейной схеме. Самих схем очень много - они широко используются в потоковых криптосистемах. Я тут не поленился и нарисовал схему Stop-and-Go и упрощенный каскад Голлмана с 3-мя LFSR. Длины LFSR стоит выбирать разные и достаточно большие. Стандартное правило: сумма длин двух наименьших LFSR можно условно рассматривать с точки зрения brute-force взлома, как длину ключа в обычной блочной криптосистеме.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- prom   Защита данных FPGA   Feb 1 2005, 14:52
- - Maksim   Обычно в FPGA и CPLD зашивают полином (очень длинн...   Feb 1 2005, 23:26
|- - prom   Странно, что все настолько не продумано. Ведь при ...   Feb 2 2005, 07:16
|- - makc   Цитата(prom @ Feb 2 2005, 10:16)Неужели ни од...   Feb 2 2005, 07:24
|- - Serega Doc   Цитата(makc @ Feb 2 2005, 10:24)А для ксайлин...   Feb 2 2005, 07:42
|- - Igor_S   Цитата(Serega Doc @ Feb 2 2005, 10:42)Скажите...   Feb 2 2005, 08:38
- - vetal   Все что я могу сказать прзащиту срам фпга, это то,...   Feb 2 2005, 07:45
- - Hilter   У Xilinx в новых сериях (начиная с Virtex II Pro п...   Feb 2 2005, 07:46
|- - Uuftc   Цитата(Hilter @ Feb 2 2005, 10:46)У Xilinx в ...   Feb 2 2005, 08:21
- - Andy-P   FPGA + (CPLD с битом защиты и полиномом), вполне ...   Feb 2 2005, 08:36
|- - Serega Doc   Цитата(Andy-P @ Feb 2 2005, 11:36)Попрощ...   Feb 2 2005, 09:02
- - Vitus   Ко всему вышесказанному стоит добавить одну немало...   Feb 2 2005, 09:12
|- - Maksim   Цитата(acex2 @ Feb 22 2005, 03:35)Цитата(Maks...   Feb 22 2005, 11:53
- - Wyvern   Есть один способ, правда он не относится к проблем...   Feb 21 2005, 09:47
- - Harbour   Я использую полином как ключ к простому алгоритму ...   Feb 21 2005, 15:13
|- - acex2   Цитата(Harbour @ Feb 21 2005, 12:13)Я использ...   Feb 21 2005, 16:42
|- - Harbour   Цитата(acex2 @ Feb 21 2005, 19:42)Цитата(Harb...   Feb 22 2005, 06:55
|- - acex2   Цитата(Harbour @ Feb 22 2005, 03:55)1. В прос...   Feb 22 2005, 08:32
- - eugene   Конечно прошу прощения, но я так и не понял, почем...   Feb 21 2005, 21:13
|- - Maksim   Цитата(eugene @ Feb 22 2005, 00:13)Конечно пр...   Feb 21 2005, 21:25
- - Андрей Харитонов   я думаю так если ценность вашей FPGA прошивки срав...   Mar 31 2005, 01:44
|- - makc   Цитата(Андрей Харитонов @ Mar 31 2005, 04:44)...   Mar 31 2005, 05:48
|- - acex2   Цитата(makc @ Mar 31 2005, 02:48)Цитата(Андре...   Mar 31 2005, 07:31
|- - makc   Цитата(acex2 @ Mar 31 2005, 10:31)Цитата(makc...   Mar 31 2005, 08:18
- - myq   Предлагается такой вариант реализации: Во внешней...   Mar 31 2005, 08:31
|- - fake   Цитата(myq @ Mar 31 2005, 12:31)Во внешней FL...   Mar 31 2005, 10:59
|- - makc   Цитата(fake @ Mar 31 2005, 13:59)Цитата(myq ...   Mar 31 2005, 11:21
||- - bbg   Цитата(makc @ Mar 31 2005, 14:21)К тому же DE...   Mar 31 2005, 11:28
||- - acex2   Цитата(makc @ Mar 31 2005, 08:21)А если испол...   Mar 31 2005, 11:30
|- - acex2   Цитата(fake @ Mar 31 2005, 07:59)Цитата(myq ...   Mar 31 2005, 11:25
- - NeoN   ... на стыке CPLD-FPGA ставится логический анализа...   Mar 31 2005, 08:45
- - yes   2 mvq - лажа какая-то с гостайной что мешает в эт...   Mar 31 2005, 12:05
- - myq   2yes ну еще начнем с того, что они не продают свое...   Mar 31 2005, 12:22
|- - acex2   Цитата(myq @ Mar 31 2005, 09:22)2yes ну еще н...   Mar 31 2005, 12:57
|- - myq   Цитата(acex2 @ Mar 31 2005, 12:57)Ключи легко...   Mar 31 2005, 13:06
- - _Sam_   Осложнить жизнь жаждущим вашу прошивку можно, испо...   Mar 31 2005, 13:17
- - acex2   2myq: Расшифровка прошивки реализована аппаратно ...   Mar 31 2005, 14:10
- - Андрей Харитонов   ну можете начать с www.semiresearch.com, www.micro...   Mar 31 2005, 17:55
- - acex2   Вот и я говорю - страшилки! Причем детские. По...   Mar 31 2005, 19:07
- - Андрей Харитонов   в обсуждении мелькал еще один способ: 3) конфигура...   Apr 4 2005, 18:23
- - Андрей Харитонов   пока ответ писал, все сообщения в теме за последни...   Apr 4 2005, 18:39
- - 3.14   Я просто не понял почму содержимое FPGA при этом н...   Apr 4 2005, 19:33
|- - acex2   Цитата(3.14 @ Apr 4 2005, 16:33)Я просто не п...   Apr 4 2005, 19:49
- - 3.14   Итак, повтоюсь. Эта тема возникает не в первый ра...   Apr 6 2005, 14:45
|- - makc   Цитата(3.14 @ Apr 6 2005, 17:45)Итак, повтоюс...   Apr 6 2005, 14:55
|- - Vitus   Под №1 все-таки следует назвать (С)!   Apr 11 2005, 07:35
- - Андрей Харитонов   тут пришла мысля по поводу еще одного способа - из...   Apr 7 2005, 12:00
- - 3.14   2 Андрей Харитонов А как Вы себе представляете под...   Apr 7 2005, 12:35
- - Андрей Харитонов   понятно, что предложенный способ не без сложностей...   Apr 10 2005, 08:59
- - 3.14   2 Андрей Харитонов 1. Вариант относится к категор...   Apr 10 2005, 11:45
- - FAE   Используйте ACTEL !!! Там этой проблем...   Apr 28 2005, 14:17
|- - des00   Цитата(FAE @ Apr 28 2005, 09:17)Используйте A...   Apr 29 2005, 03:17
- - alexr22b   Очень скоро Xilinx выпустит Spartan 3 с внутренним...   May 7 2005, 19:42
|- - makc   Цитата(alexr22b @ May 7 2005, 22:42)Очень ско...   May 7 2005, 20:04
|- - alexr22b   Цитата(makc @ May 7 2005, 23:04)Цитата(alexr2...   May 8 2005, 17:08
|- - BSV   А зачем держать под батарейкой ПЛИС? Если необходи...   May 10 2005, 21:57
- - Shread   Защитить содержимое FPGA от потокового считывания,...   May 20 2005, 21:02
|- - kas   Тут уже мелькало подобное. У меня, например, сдела...   May 23 2005, 13:18
|- - makc   Цитата(kas @ May 23 2005, 16:18)Тут уже мельк...   May 23 2005, 13:46
|- - kas   Цитата(makc @ May 23 2005, 21:46)Цитата(kas ...   May 24 2005, 03:43
|- - des00   Цитата(kas @ May 23 2005, 22:43)Цитата(makc ...   May 24 2005, 03:47
|- - kas   Цитата(des00 @ May 24 2005, 11:47)"Остал...   May 24 2005, 05:56
|- - des00   ЦитатаИМХО. Не совсем. В данном случае можно орган...   May 24 2005, 06:49
||- - kas   Цитата(des00 @ May 24 2005, 14:49)Хмм может м...   May 24 2005, 10:24
||- - des00   Цитата(kas @ May 24 2005, 05:24)Цитата(des00 ...   May 24 2005, 10:49
||- - kas   Цитата(des00 @ May 24 2005, 18:49)Ну в таком ...   May 25 2005, 05:14
||- - des00   Цитата(kas @ May 25 2005, 00:14)Вопрос стоял ...   May 25 2005, 06:06
||- - kas   Цитата(des00 @ May 25 2005, 14:06)Вам удалось...   May 25 2005, 10:17
||- - des00   Цитата(kas @ May 25 2005, 05:17)Вы считаете ч...   May 25 2005, 10:54
||- - kas   Цитата(des00 @ May 25 2005, 18:54)Нет я так н...   May 26 2005, 05:45
|- - makc   Цитата(kas @ May 24 2005, 08:56)Цитата(des00 ...   May 24 2005, 06:49
- - Shread   А есть какие-нибудь варианты, переконфигурировать ...   May 24 2005, 03:38
- - Андрей Харитонов   если я правильно понял, то kas просто рассказал на...   May 26 2005, 09:15
- - Pruga   Насущная потребность заставила меня поднять из под...   Jun 3 2006, 11:16
|- - Maksim   Цитата(Pruga @ Jun 3 2006, 15:16) Насущна...   Jun 3 2006, 12:38
- - 3.14   2 Maksim Дык ее должна генерировать корка-закрываш...   Jun 3 2006, 12:50
|- - Maksim   Цитата(3.14 @ Jun 3 2006, 16:50) 2 Maksim...   Jun 3 2006, 13:03
- - des00   Все зависит от длинны ключа и длинны последователь...   Jun 3 2006, 12:54
- - 3.14   2 Maksim Как это нет случайности ... После включе...   Jun 3 2006, 13:27
- - Pruga   Цитата(Maksim @ Jun 3 2006, 15:38) А, где...   Jun 3 2006, 17:21
- - Maksim   to 3.14 Ключ есть, полином есть, а сколько такто...   Jun 3 2006, 20:54
|- - des00   Цитата(Maksim @ Jun 3 2006, 15:54) to 3.1...   Jun 4 2006, 06:55
|- - makc   Цитата(des00 @ Jun 4 2006, 10:55) ХММ по ...   Jun 4 2006, 07:41
- - Maksim   остаётся только загнать этот код в ПЛИСину - и выт...   Jun 4 2006, 11:23
|- - makc   Цитата(Maksim @ Jun 4 2006, 15:23) остаёт...   Jun 4 2006, 11:34
|- - Maksim   Цитата(makc @ Jun 4 2006, 15:34) Боюсь, ч...   Jun 4 2006, 11:45
|- - DmitryR   Послушайте, а почему не использовать встроенный в,...   Jun 5 2006, 11:15
|- - Maksim   Цитата(DmitryR @ Jun 5 2006, 15:15) Послу...   Jun 5 2006, 13:07
- - v_mirgorodsky   Степень "случайности" генерируемой после...   Jun 6 2006, 07:31
- - Pruga   Сегодня разбирался с ГСЧ (RND.vhd). Загрузил весь ...   Jun 6 2006, 15:00
- - Maksim   проект с полином работает - проверил на 3-х платах...   Jun 6 2006, 18:56
- - 3.14   Ребята, дык в любом случае, по проволочке будет бп...   Jun 6 2006, 19:30
- - Maksim   Цитата(3.14 @ Jun 6 2006, 23:30) Ребята, ...   Jun 6 2006, 19:46
3 страниц V   1 2 3 >


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

 


RSS Текстовая версия Сейчас: 12th June 2024 - 20:09
Рейтинг@Mail.ru


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