тини может просто передавать данные идентификации при инициализации, как писал автор данные при включении бегают. А дальше ПЛИС просто определяет фейк и включает режим защиты. Но чтобы обойти было сложней, ПЛИС отключается не сразу, а какое-то случайное время продолжает работать. Это затрудняет задачу взламывателю подобрать идентификацию, т.к. для тестирования любого варианта прийдётся ждать очень много времени, чтобы убедиться что контроллер был опознан
Это стандартный способ, называется плавающая защита. Смысл в том, что проверка происходит неявно и сразу не приводит к срабатыванию защиты, где-то в памяти делается отметка, которая в будущем при выполнении какогото кода приведёт к крэшу. Это задержка между детекцией подмены и срабатыванием защиты может составлять дни, месяцы и годы.
Все может быть.
Я бы спрятал передачу данных в фазах сигналов между линиями MCU->FPGA и FPGA->MCU.
То есть, допустим, FPGA генерирует фронт, МК через некоторую маленькую задержку тоже выдает фронт.
В величине этой, вроде бы банальной задержки реакции, можно уже закодировать бит информации.
В FPGA задержка считается счетчиком, который стартует вместе с выходным фронтом, а замораживается по приходу фронта от МК. От того, что он насчитал в этом интервале, можно выделить передаваемую от МК информацию.