В настоящее время я работаю над встроенным проектом.Клиентская часть представляет собой 8-битный MCU, а серверная часть - компьютерная.
В качестве цели я хочу свести к минимуму вероятность того, что люди скопируют наш продукт.На этапе инициализации сервер отправляет свой серийный номер клиенту, а клиент выполняет несколько простых вычислений со своим серийным номером, а затем отправляет результат обратно на сервер.Сервер проверяет результат до предварительно рассчитанного, жестко закодированного значения, если соответствие клиента является подлинным.
Проблема заключается в том, что вычисленный серийный номер, который отправляется обратно на сервер, всегда исправлен.Любая компания-подражатель может легко понять это с помощью логического анализатора.Я хочу, чтобы передаваемый серийный номер время от времени казался случайными битами, но все же смог бы расшифровать его до первоначального значения. Хороший пример использования шифрования AES (обратите внимание, что каждый раз, когда вы нажимаете кнопку Encrypt It , создается, казалось бы, случайный текст, но когда вы расшифровываете его, он возвращается к исходному тексту.)
Из-за ПЗУ / ОЗУ и ограничения мощности процесса в 8-битном микроконтроллере я не могу вписать в него полную процедуру AES, поэтому AES не может найти решение.Существует ли простой и эффективный алгоритм для рандомизации передачи?