Skip to content

Emulation of a car key fob using an EDS based on the RSA algorithm

Notifications You must be signed in to change notification settings

catcatcat8/trinket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

Эмуляция работы автомобильного брелка

Описание программы

Программа, эмулирующая работу автомобильного брелка, открывающего машину с использованием ЭЦП, в условиях когда канал связи полностью доступен любому прослушивающему.

Описание алгоритма решения

  1. Генерируются приватный и публичный ключ брелка автомобиля (ключи записываются в файлы).
  2. Брелок отправляет handshake запрос автомобилю с просьбой открыть дверь ("Open the door").
  3. Автомобиль отправляет challenge = hash(random) (SHA-256) брелку с требованием подписать данный хеш (ЭЦП) своим приватным ключом. Помимо этого, автомобиль отправляет hash команды "Open the door", полученной от брелка, чтобы брелок знал, на какую именно команду он будет подписывать challnege.
  4. Брелок проверяет id_command = hash("Open the door"), в случае успеха выполняет ЭЦП challenge и отправляет данные обратно автомобилю.
  5. Автомобиль проверяет ЭЦП брелка его публичным ключом, в случае корректности ЭЦП открывает дверь.

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

Конфигурация

Программа получает на вход два ключевых слова --trinket и open.

Сборка

Установите библиотеку OpenSSL:

sudo apt-get install libssl-dev

Соберите проект:

g++ -o main trinket.cpp -lssl -lcrypto

Запуск

Чтобы запустить проект в командной строке напишите:

./main --trinket open

Пример работы программы

Используемые несистемные библиотеки

openssl (https://www.openssl.org/)

About

Emulation of a car key fob using an EDS based on the RSA algorithm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages