1. Алгоритм требует двустороннего обмена данными. В простых сигналках (которые вскрываются граббером) поток данных однонаправленный: в брелоке передатчик, в базовом блоке — приемник.
1.1 Если уж у нас есть двусторонний канал, что мешает применять нормальные криптографические протоколы аутентификации? Логика подсказывет, что в современных сигналках так и делается. Конкретные модели не назову, самому интересно. Производители почему-то тщательно скрывают информацию о своих протоколах.
2. Запрашивать пароли нужно не по порядку, а рандомно (но следя, чтобы не было повторов). Иначе возможна следующая атака:
— Жертва снимает машину с сигнализации. Брелок начинает сессию. Сигналка запрашивает пароль номер 100500. Брелок говорит пароль и команду. Запоминаем номер.
— Жертва садится в машину и едет, следуем за ней.
— Жертва ставит машину на сигнализацию. Брелок начинает сессию. Ставим помеху, база ничего не слышит.
— Притворяемся базой и запрашиваем пароль номер 100501. Брелок говорит пароль и команду. Записываем.
— Жертва видит, что ничего не произошло, и снова нажимает на кнопку. Брелок начинает сессию. Опять ставим помеху, база вновь ничего не слышит.
— Притворяемся базой и запрашиваем пароль номер 100502. Брелок говорит пароль и команду. Записываем.
— Притворяемся брелоком и начинаем сессию. База запрашивает пароль номер 100501. Говорим пароль и команду.
— Машина становится на сигнализацию, жертва уходит.
— Притворяемся брелоком и начинаем сессию. База запрашивает пароль номер 100502. Говорим пароль и команду. Машина наша.
3. Брелок будет плохо защищен от копирования. Одно дело — хранить 128 бит ключа в защищенной памяти внутри криптопроцессора, а другое — сотни кБ-мегабайты одноразовых ключей. Потребуется внешняя флешка, которую можно легко прочитать.
4. Что делать, когда ключи все-таки закончатся? Перепрошивать сигналку? Генерировать новые? А как их потом в брелок заливать? Нужно тщательно продумать этот момент.
5. Как будет выглядеть процедура добавления в систему нового брелока?
В целом идея хорошая и при грамотной реализации будет надежно работать. Но дьявол, как всегда, в деталях :)