Как проверить подлинность связи Bluetooth между Raspberry и Android

Я создал приложение на Raspberry (с использованием модуля QT bluetooth), которое публикует сервис с определенным UUID и ожидает на сокете rfcomm. Мне удалось из моего приложения для Android соединиться с Raspberry, найти сервис и обмениваться данными с помощью сокетов. Приложение Android просто спрашивает пользователя, хочет ли он соединиться с Raspberry, без подтверждения пин-кода. Теперь я хотел бы добавить шаг аутентификации, простой пин-код или пароль, чтобы разрешить подключение только тем, кто его знает. Я могу изменить приложение Android, чтобы отобразить диалоговое окно, позволяющее пользователю вставить пин-код, таким образом, приложение на Raspberry может проверить правильность пин-кода и в конечном итоге закрыть сокет, но это решение, очевидно, справедливо только для устройств с мое заявление. Есть ли способ реализовать подобное решение в процессе сопряжения, чтобы сделать его доступным для всех устройств? Я пробовал среди функций QT, но я не нашел ничего, что могло бы мне помочь. Спасибо

1 ответ

В вашем дизайне есть недостаток, который заключается в том, что если вы планируете аутентификацию с помощью булавки, Raspberry Pi должен каким-то образом сообщить пользователю, какой булавка должна быть. Если у вас нет экрана или какого-либо вывода на Raspberry Pi, то пин-код будет бесполезен, потому что у вас нет способа сгенерировать случайный пин-код, а затем сообщить пользователю, каким он должен быть.
В зависимости от приложения у вас обычно все в порядке, если у вас нет аутентификации. Подумайте о большинстве устройств Bluetooth, которые вы используете, ни одно из них не имеет никакой аутентификации, которую вы можете просто нажать пару.

Вот некоторые другие варианты, которые я могу придумать:
1) Определите, когда вы уже подключились к устройству на Raspberry Pi, и не транслируете услугу, поэтому после подключения к устройству другое устройство также не может подключиться и вызвать проблемы.
2) Имейте кнопку на Raspberry Pi и вещайте сервис публикации только в течение 1 минуты после нажатия кнопки
3) получить экран или способ вывода информации для пользователя из Raspberry Pi, чтобы показать ему пин-код для ввода на своем телефоне

Другие вопросы по тегам