Базовая высокопроизводительная аутентификация данных - PullRequest
2 голосов
/ 02 апреля 2012

(Я не являюсь носителем языка и, возможно, не совсем корректен в терминологии. Извините за это.)

Я передаю данные по радиоканалу между микроконтроллерами AVR для личного использования и хотел бы, чтобы клиенты продемонстрировалиподлинность передаваемых данных в том смысле, что они исходят от одного из авторизованных клиентов.Это означает, что я не требую отказа от авторства и могу заранее определить общий ключ.Я провел некоторые исследования различных подходов и обнаружил, что мне нужна помощь в выборе того, который наилучшим образом соответствует моим требованиям.

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

Передаваемые мною сообщения довольно малы по размеру (не более 30 байт с полезной нагрузкой всего в несколько байтов) ичастота будет не более 30 сообщений / мин.

Один из вариантов использования - детектор движения, отправляющий сообщение по радиоканалу на блок обработки, который затем отправляет другое сообщение по радиоканалу на выключатель света.Пожалуйста, не сосредотачивайтесь на транспорте.Этот вопрос касается только достоверности данных.

Я использую программное обеспечение клиент / сервер (на языке C) на микроконтроллерах AVR с тактовой частотой 20 МГц с очень ограниченным объемом флэш-памяти и оперативной памяти.Поэтому я ищу решение с небольшим размером кода и использованием оперативной памяти, в то же время обеспечивая высокую скорость передачи данных.

Я провел некоторое тестирование производительности с реализацией MD5 (C), создавая хэши из 20-байтовых данных, и обнаружил, что ономожет быть слишком медленнымЯ понимаю, что реализация MD5 сама по себе не решит требование.Я провел тестирование только для оценки производительности хеширования.

Спасибо за комментарии

Ответы [ 2 ]

5 голосов
/ 03 апреля 2012

Я бы использовал 128-битный AES для подписи сообщений. Вот отличный источник, который уже реализовал это для AVR, с полной документацией размеров и количества циклов, включая различные версии, которые компенсируют размер / скорость. http://avrcryptolib.das -labor.org / ПРОФ / вики / AES

1 голос
/ 06 апреля 2012

Если вас устраивает компромисс, рассчитайте CRC-32 или CRC-64 полезной нагрузки сообщения с добавленным в конец секретным ключом (полезной нагрузки, а не контрольной суммы CRC).Оба конца могут сделать это с одним и тем же секретным ключом, чтобы получить тот же результат.Не уверен в точности взлома этого, но это точно не ноль.

...