Аутентификация с использованием протокола BLE Challenge-Response на основе заранее共享енного ключа и SHA-256

Вопрос или проблема

Аутентификация с использованием протокола BLE Challenge-Response на основе заранее共享енного ключа и SHA-256

Я работаю над системой замка с использованием Bluetooth Low Energy и реализовал поток аутентификации challenge-response для безопасной связи между замком (устройство ESP32) и телефоном пользователя. Я совсем нов в этих технологиях и хотел бы узнать, есть ли у кого-то отзывы о работе моей системы:

  1. Замок и телефон имеют заранее согласованный секретный ключ. Этот ключ хранится локально как на телефоне, так и на замке.
  2. Телефон выступает в роли периферийного устройства BLE, а замок – в роли центрального. Когда замок обнаруживает телефон, он инициирует процесс challenge-response.
  3. Замок генерирует случайный вызов (challenge) каждый раз, когда телефон пытается разблокировать замок. Этот вызов отправляется на телефон через BLE.
  4. Телефон считывает вызов, добавляет к нему заранее согласованный секретный ключ и хэширует комбинацию с помощью SHA-256. Хэшированный результат (вызов + секретный ключ) отправляется обратно на замок.
  5. Когда замок получает хэшированный ответ от телефона, он пересчитывает хэш, используя оригинальный вызов и свою копию заранее согласованного секретного ключа. Если хэши совпадают, замок аутентифицирует телефон и разблокируется, в противном случае замок отклоняет запрос.

Секретный ключ никогда не передается по BLE. Только вызов и хэшированный ответ (вызов + секретный ключ) отправляются по воздуху. Коммуникация по BLE зашифрована, и я рассматривал возможность связи (bonding), но она сейчас не реализована.

Мой основной вопрос: обеспечивает ли этот поток безопасный механизм challenge-response? Также, достаточно ли использовать SHA-256 с заранее согласованным ключом и вызовом для защиты системы от потенциальных атак? Следует ли мне рассмотреть добавление временной метки или nonce, или это ненужно? И, наконец, секретный ключ в настоящее время одинаков для нескольких взаимодействий – следует ли мне рассмотреть ротацию ключа, и возможно ли это без доступа в Интернет?

Заранее спасибо!

Ответ или решение

Ответ на вопрос о системе аутентификации на основе BLE с использованием пред共有ного ключа и SHA-256

Система аутентификации, описанная вами, имеет основные элементы, обеспечивающие защиту, однако есть несколько аспектов, на которые стоит обратить внимание для повышения безопасности.

Потенциальные уязвимости и рекомендации

  1. Безопасность механизма вызова-ответа:

    • Ваше использование пре共享ного ключа и хеширования с помощью SHA-256 является хорошим началом. Однако вам следует учитывать возможность атаки повторного воспроизведения. Чтобы предотвратить это, рекомендуется включить в процесс либо таймштамп, либо уникальный случайный номер (nonce), который будет генерироваться для каждого запроса. Это обеспечит уникальность каждого challenge-response взаимодействия.
  2. Хранение и управление ключом:

    • Хранение пред共享ного ключа на обоих устройствах несет в себе риск, особенно если устройства могут быть скомпрометированы. Рекомендуется использовать безопасные методы хранения секретов, такие как Secure Element или Trusted Platform Module (TPM), если такая возможность существует на вашем оборудовании.
  3. Использование HTTPS для ключевой ротации:

    • Если возможно, рассмотрите внедрение механизма периодической ротации ключей. Это можно сделать по заранее определенному расписанию или после определенного количества аутентификаций. Если вам необходимо изменить ключ без доступа в интернет, вы можете использовать метод, основанный на загрузке нового ключа через BLE после аутентификации, когда устройство в безопасности.
  4. Внедрение модели "супервайзера" для разрешения аутентификации:

    • Если ваши устройства позволяют, рассмотрите возможность внедрения ещё одного слоя аутентификации, например, "супервайзера" или другого устройства, способного проверять легитимность аутентификации и ключа.
  5. Системы контроля доступа:

    • Убедитесь, что в вашем приложении для телефона есть дополнительные параметры безопасности, такие как аутентификация пользователя (например, PIN-код или биометрия) перед попытками управления замком.
  6. Регулярные тесты на уязвимости:
    • Проведение регулярного тестирования системы на уязвимости и применение лучших практик в области безопасности может значительно повысить защиту вашей системы.

Заключение

Ваша система аутентификации с использованием механизма challenge-response на основе пред共享ного ключа и SHA-256 в целом имеет потенциал для обеспечения безопасности, однако важно учитывать вышеупомянутые аспекты. Подумайте о добавлении таймстампов или nonce для защиты от атак повторного воспроизведения, а также о ротации ключей для повышения устойчивости к компрометации. Следуйте практикам безопасности, и ваша система будет более защищенной в условиях реального использования.

Оцените материал
Добавить комментарий

Капча загружается...