Под этот микроконтроллер написана программа. Для того, чтобы программа выполняла свои основные функции, пользователь должен приобрести код активации и передать его в устройство. Код активации устанавливает время работы основных функций программы в сутках. Программа микроконтроллера не доступна пользователю (микроконтроллер заблокирован на чтение программы). Код активации будет вводиться в устройство посредством кнопок самого устройства и его ЖК дисплея. Код активации, естественно, должен быть устойчив к взлому. Посоветуйте, как реализовать данный функционал.
Я подобную задачу решил очень банально:
- устройство отдает программе постоянно меняющиеся данные и их хэш, сгенерированный тремя способами.
- программа принимает данные и проверяет соответствие рассчитанного хэша и полученного
Результат:
Без подключенного "своего" устройства программа не работает.
Разумеется, взломом прошивки или дизассемблированием программы способы формирования хэша можно узнать, и время работы не устанавливается.
Если Вы предпочитаете код авторизации, то целесообразно подсмотреть (если получится) идеологию в системе STS, используемый для предоплаты мобильников и счетчиков.
Код авторизации выглядит как 20-значное число, вводимое 5ю группами по четыре цифры. Это число (в терминах стандарта - "token") содержит количество "биткоинов", которые отсчитывает телефон или счетчик, и, разумеется, ключи. Даже африканские старушки умеют вводить такие числа в счетчик - предоплата существует в основном в бедных странах.
Сразу скажу, что программа обязана хранить все введенные токены, на компьютере это сделать сложно, поэтому токен должен передаваться в устройство и фактически не программа, а устройство должно отсчитывать время.
Задача непростая, был на фирме, на которой на разработку системы ушел год.
Да, еще. Программа, раздающая токены, должна работать на вашем сервере, и база должна быть защищена.
Так что советую сразу пойти на упрощения, если Вы - любитель, или готовьтесь к инвестициям, если вы работаете на серьезной фирме.
Хотя, по размещению этой темы в разделе MSP430, многое становится ясно.