Автоматическая генерация пароля на стадии прошивки

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Привет всем!

Вопрос собственно в теме: как считать signature в коде программы? Надо сделать доступ к устройству запаролленым. А что лучше всего подойдет для пароля чем сигнатура при условии, что у каждого контроллера пароль должен быть свой. Нашел библиотечку avr/signature.h, но как при ее помощи выудить эту информацию не знаю. Это возможно? Как сделать?
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

http://www.nongnu.org/avr-libc/user-man ... ature.html
там написано, что библиотека просто добавляет байты сигнатуры. Сигнатура читается только программатором. Да и она абсолютно одинакова для одного типа микроконтроллера. Поэтому нужно просто присваивать серийники процессорам в коде
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Какие есть мысли для генерации ключей автоматически? Не хочется руками прописывать для каждого кристалла.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

а в какой момент нужно генерировать? на момент заливки прошивки на заводе или в момент первого включения?
Ставим плюсы: )
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

Для этого нужно знать объемы производства, его этапы. Ответы будут разными.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

на заводе :)) это пока громко сказано. прошивается ручками, но партиями по 100-200 штук. Пароль, пользователь получает вместо с устройством (к примеру, наклеен на коробке, но пользователь может легко отодрать эту надпись).

Хотя идея генерации пароля при первом включении тоже ничего, но все равно первое включение, для проверки, я делаю. При первом включении можно использовать, к примеру, функцию rand().
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Заведи это как отдельный инклуд, в нем используя препроцессорные IF-ы объявляй константу с паролем в завсимости от выбранного для проекта микроконтроллера.
Используй этот инклудник во всех проектах, и не надо будет беспокоится о паролях.
При первом включении можно использовать, к примеру, функцию rand().
Нет, нельзя. Она будет строго детерминирована. в крааайнем случае, нужно брать в качестве инициализации случайного числа контрольную сумму всего содержимого памяти программ. Но по правилам нужен источник случайностей - например длительность нажатия на кнопку включения пользователем.
Контактная информация:
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

А как это будет выглядеть?
Пользователь включает девайс и вводит пароль указанный на упаковке?
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Alexeyslav писал(а):
При первом включении можно использовать, к примеру, функцию rand().

Нет, нельзя. Она будет строго детерминирована.
Согласен. Тупонул.

Если коротко. Есть пульты, на которых видно все доступные устройства (беспроводная связь). Эти хреновины сдаются в аренду. Поскольку дело в пределах одного здания, то человек не должен иметь возможность управлять устройством соседа, которое он видит. Ему дают пульт, устройство и говорят его имя и пароль. Пытаясь подключиться он его вводит, а дальше работает.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

в некоторых программаторах (программа для ПК), например asisp_programmer есть возможность записывать по определенному адресу во флеш номер устройства одновременно с заливкой основной прошивки, причем этот номер автоинкрементируется при каждой последующей заливке.
это можно использовать.
например если пароль будет вычисляться внутри МК по какой-то формуле с использованием этого номера. для того чтобы выдать пароль пользователю нужно считать этот номер из прошивки и вычислить по известной только вам формуле пароль.
при введении пароля со стороны пользователя, микроконтроллер тоже вычисляет этот пароль и сверяет то, что он получил с тем, что пользователь ввел.

все вышесказанное как простой вариант.

также можно сделать свою программу прошивальщик (или надстройку над AVR dude) которая будет сразу сама генерировать этот пароль во время прошивки и,например, одновременно выдавать на печать, чтобы стикер приклеить)
Ставим плюсы: )
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Мысль пришла. Пароль - это 2-х байтное число в контроллере.
Пользователь получает пароль из 6 цифр. Например, 123235.
Пульт это соберет в 123 и 235. Пользователь может подбирать пароль очень долго, комбинаций валом, а он то реально короткий.
Вряд ли догадаются, что больше 255 быть не может. А если поменять первую и вторую цифры местами? 525. Хрен вообще разберешь :))
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Пароль записывать в EEPROM, его можно прошивать отдельным от прошивки файлом - а значить их можно сгенерировать индивидуально - хоть блокнотом или программой на бейсике/паскале/делфи.

Можно как сделать: Каждую итерацию программой перед прошивкой генерируется EEPROM-файл для прошивки с очередной строкой из текстового файла, программатор всегда прошивает один и тот же файл но каждый раз EEPPROM имеет новое значение, причем в порядке занесенном в файл. Тот же файл распечатанный на самоклейке можно тут же построчно клеить на очередное устройство.

в той же AVR-studio можно выполнять командный файл перед каждой прошивкой, либо воспользоваться программой которая способна прошить из командной строки. Вариантов масса...
ChipBlaster умеет каждую прошивку сперва перечитать файлы прошивки с диска, остается только рядом запускать самописную программу или скрипт перед каждой прошивкой.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Alexeyslav писал(а):Можно как сделать: Каждую итерацию программой перед прошивкой генерируется EEPROM-файл для прошивки с очередной строкой из текстового файла, программатор всегда прошивает один и тот же файл но каждый раз EEPPROM имеет новое значение, причем в порядке занесенном в файл. Тот же файл распечатанный на самоклейке можно тут же построчно клеить на очередное устройство
но для этого надо писать надстройку? готового ничего нет?
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

В качестве пароля-ключа можно приспособить iBooton.В заключительной стадии изготовления прописываешь key, в смысле это делает подпрограмма.И ключ в коробку.
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Vov123 а можно чуточку подробней?
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Я не знаю чего подробней.Ну,например,создаётся какое-то условие (при комбинации нажатий кнопок, или нажатие одной кнопки с различным "меандром" или напряжение на АЦП или компараторе) вызывается подпрограмма считывания по 1-Wire 64 битного кода iBooton и записью его в eeprom.Повторное вхождение в эту подпрограмму можно заблокировать.Потом человек при начале использования девайса при запросе пароля подносит ключ,он идентифицируется с переменной в eeprom ,и если совпадает,устройство разблокируется.
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

понял, спасибо. надо обмыслить сей вариант
Друг Кота
Аватара пользователя
Сообщения: 20103
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Может, подправить название темы? Как я понимаю, вам нужно каким-то образом массово сгенерить пароли и залить их в МК? Сигнатура вроде уже ни при чём...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Если не сложно, я был бы благодарен. К примеру "Автоматическая генерация пароля на стадии прошивки". Или как-то иначе.
Друг Кота
Аватара пользователя
Сообщения: 6339
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Это, по-моему, вообще не проблема. Имеем исходный, "базовый" HEX - код. Простенькой прогой ( как по мне, так Дельфийской :) ) рассчитываем по любой сложности алгоритму пароль и записываем уже индивидуальный HEX для конкретного экземпляра МК, давая ему индивидуальный номер, который и будет прошиваться в конкретный МК. Попутно ведём логи: в каком хексе какой пароль. Держим их под замком в сейфе, где спирт :)
Можно чуть сложнее. Если прошит бут-лодырь, при первом диалоге с МК передать ему пароль, и он его запишет в условное место флеши. Если писать в EEPROM, то лодер не нужен, но этот вариант, по-моему, менее надёжен. Вероятность, что ЕЕРRОМ "слетит" при неблагоприятных обстоятельствах, намного выше.
Ответить

Вернуться в «AVR»