Easyelectronics.ru

Электроника для всех
Текущее время: 07 июл 2020, 21:51

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 25 ] 
Автор Сообщение
 Заголовок сообщения: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 15:16 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Собственно, какие есть варианты без внешних схем? Можно использовать АЦП вход, но насколько я знаю, это недостаточно случайный выход для криптографических применений (нужно шифровать отсылаемые сообщения). В SRAM по идее случайные значения, «но это не точно». Я пока думаю организовать банально на SD карточке заранее сформированный буфер и читать из него по необходимости (нужно 256-бит за раз, это немного) и уже с него инициализировать программный ГПСЧ. Есть ещё варианты? У STM есть Uniq ID для каждого МК, но это же мало на что сгодится в данном случае...


Последний раз редактировалось Faberge 05 фев 2019, 15:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 15:36 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Смотря какой стм))) В четверках есть аппаратный блок ГСЧ.
А так классика - значение счетчика таймера при нажатии на кнопку например или диод на аналоговом входе.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 15:39 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Не, F091, там нет. Проблема в том, что и кнопок почти нет, взаимодействия особого не планируется. А насколько вариант с диодом подходит для подобных применений, есть информация?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 15:41 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
Откуда: Чобля - долбаный кетайец
Я для этого комбинировал значения нескольких счетчиков - счетчик циклов DWT, счетчик системного таймера SysTick, а так же значение из встроенной SRAM, адрес которого брался в пределах одного байта значений любого счетчика или их комбинаций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 15:46 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
То есть по максимуму комбинировать с разных источников? Любопытно, попробую. Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:09 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 817
Ну есть-же программный алгоритм, отчего его нельзя использовать?

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:15 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 681
Откуда: Германия
Faberge писал(а):
Собственно, какие есть варианты без внешних схем?


Если речь зашла о криптографии, то вероятно в коде уже есть хороший хеш-алгоритм. Пропустить через него все данные, в которых есть хоть немного случайности - получим случайное число. Какие данные считать случайными, зависит от того, к чему есть доступ у атакующего. Например, значениями всяких счетчиков обычно можно манипулировать. Память после перезапуска будет не случайна. На АЦП можно подать известное значение. И т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:16 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Программному алгоритму для старта как раз и нужна хоть какая-то случайная последовательность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:29 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2732
Откуда: Санкт-Петербург
Если ресурсы позволяют - лучше задействовать стандартное решение с "накоплением энтропии".
Алгоритм Ярроу, алгоритм Fortuna.
https://ru.wikipedia.org/wiki/%D0%90%D0 ... BC_Fortuna

Т.е. всё, что можете получить "хреново-случайного" скармливается в пул, чтобы сделать ГПСЧ непредсказуемым.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:31 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Хеш-функции уже есть, да. А если хешировать прошивку с UID, затем записывать результат во флеш и при перезапуске использовать по новой прошивка + результат предыдущей итерации?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:51 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 681
Откуда: Германия
Я в простейшем случае захешировал бы UID+RAM+температуру+напряжение питания. Если хранить этот результат в памяти, то он и после перезапуска обеспечит случайность RAM'а.
Если есть возможность, то добавить при прошивке во флеш случайное число для каждого устройства и примешивать его.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 16:59 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Понял, спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 18:19 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2732
Откуда: Санкт-Петербург
Faberge, раз есть хэш-функции - то можно не придумывать изыски, а сделать фортуну, вроде алгоритм достаточно простой.
Источники энтропии - АЦП и время всяких внешних событий.

Или если особое качество не нужно - то просто один пул для энтропии.
0. Инициализируем хэш (совсем в начале работы - можно серийным номером).
1. Для получения очередного числа - скармливаем хэшу текущее значение АЦП (или нескольких), считаем значение хэша.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 19:00 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Да, наверное я так и попробую. Хэш от температуры, напряжения, UID и ключа в прошивке. И уже использовать как пул для инициализации ГПСЧ. Один вопрос, я правильно понимаю, что мерить значения на входе АЦП желательно с макс. точностью и брать только младшую тетраду, например?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 19:07 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Брать младшую тетраду необязательно. От того, что хэшалгоритм получит на вход некоторое количество детерминированных данных, общий результат не ухудшится.
То есть, по хорошему, хешалгоритму можно скормить все, до чего доходят руки. Лишь бы был хоть какой-то намёк на случайность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 19:10 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Часть данных может при этом оказаться детерминированной и даже специально заданной злоумышленником. Поэтому, чем больше источников, тем лучше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 19:22 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Мм, я не подумал. Да, тогда можно брать весь выход, согласен. Но мерить-то желательно с какой точностью?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 05 фев 2019, 19:44 
Старожил
Аватара пользователя

Зарегистрирован: 24 июл 2012, 13:54
Сообщения: 856
Думаю, зависит от контроллера и АЦП. Если точность определяет то, какие разряды показываются, то с максимальной. Если точность как-то влияет на время измерения (а значит на процесс), то, вероятно, наоборот с минимальной...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 06 фев 2019, 00:51 
Старожил

Зарегистрирован: 28 янв 2015, 16:31
Сообщения: 247
Гадать бесполезно, если нужно случайное число и нет готового модуля, то его надо откуда-то вычитать. Случайное значение можно задать периодами включения/выключения устройства если нет кнопок, но зловред может очень точно включать/выключать устройство, как и подать синус на АЦП, подогреть феном чип и тд ;) Проще всего прошить в память устройства блок заранее созданных случайных данных и брать оттуда "по кругу", главное чтобы "круг" был достаточно большой. Это надёжный способ - зловред никак не сможет подменить данные, на сдкарте тоже самое зловред проделает запросто.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 06 фев 2019, 14:01 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2732
Откуда: Санкт-Петербург
Шифроблокнот и АЦП - не взаимоисключающие вещи, благо, хэш-функции позволяют качественно замешать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 06 фев 2019, 14:03 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 22:07
Сообщения: 73
1) Самый простой способ - из АЦП. Нужно поставить минимальное время выборки и использовать только младший бит от полученного из АЦП значения. Из 8 выборок формируется байт.
2) Недостаток предыдущего метода - низкое качество рандома. Поэтому перед формированием байта к полученным битам применяется алгоритм «von Neumann whitening algorithm», что даёт очень неплохой рандом. Такой подход применяется в библиотеке TureRandom. Обычно этого хватает.
3) Недостаток предыдущего метода - можно упереться в скорость формирования данных, если рандома нужно много и быстро. Поэтому можно предыдущим методом сформировать только начальное значение, которым инициализируется любой равномерный ГПСП. Длину повторения ПСП выберите сами, исходя из вашей задачи. Алгоритмы генерации ПСП можете поискать у Кнута в "Искусство программирования. Том 2", там целая глава про генераторы. Но обычно это лишнее, и хватает способа №2.

_________________
Много говорить и много сказать не одно и то же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 06 фев 2019, 17:24 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Цитата:
1) Самый простой способ - из АЦП. Нужно поставить минимальное время выборки и использовать только младший бит от полученного из АЦП значения. Из 8 выборок формируется байт.

По АЦП я ориентируюсь на аппноут - AN2834. Пока прочитал не весь, но судя по всему, можно смело два младших бита брать, будет в два раза быстрее. Насчет фильтрации, я тоже думал применить к полученной последовательности битов алгоритм фон Неймана, а затем XOR`ить оба потока - с температуры и напряжения. В отсутствие аппаратного ГCЧ - наверное, приемлемый вариант.

Еще можно на время чтения значений из АЦП переходить на тактирование от внутреннего RC, у них точность ниже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 20 фев 2019, 12:17 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Хотел бы дополнить информацию, может кому будет интересно. В RFC4086 есть примечание что объединять и XOR’ить битовые потоки, которые получены из источников с корреляцией значений, не рекомендуется. Так как напряжение для питания МК обычно получает от стабилизатора без температурной компенсации, просто XOR’ить температуру и напряжение со встроенных датчиков нельзя. А вот брать от них 1 - 2 крайних LSB думаю можно. Надо будет проверить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 20 фев 2019, 12:59 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 22:07
Сообщения: 73
Проверить качество рандома на самом деле несложно. Напишите простую прошивку, которая выводит случайные числа с МК в UART а на стороне ПК сохраняйте их в файл. Чем больше данных наберётся - тем лучше (можно на ночь оставить). А потом этот файл с числами прогоните через эти тесты. Можете потом сюда отписаться что получилось.

_________________
Много говорить и много сказать не одно и то же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ГПСЧ на МК без аппаратного блока ГСЧ
СообщениеДобавлено: 13 мар 2019, 16:38 
Старожил
Аватара пользователя

Зарегистрирован: 19 фев 2015, 17:37
Сообщения: 1604
Откуда: void
Если кому все еще интересно, то по статистическим тестам, энтропия на выходе АЦП (1 LSB) крайне посредственная, хуже даже чем с rand() (при размере выборки в 10 млн бит) . И это с алгоритмом фильтрации фон Неймана и XOR'ом двух потоков с датчиков напряжения и температуры. Пока разбираюсь почему так. К слову, а вот выхлоп с STM TRNG очень хороший. Даже для последовательности в 1 млрд бит не было ни одного проваленного теста.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB