Parowanie Bluetooth bez potwierdzenia przez użytkownika

Czy Mogę sparować dwa urządzenia przez Bluetooth bez potrzeby potwierdzania tego w interfejsie użytkownika, akceptuję sparowanie tych urządzeń. Czy mogę wymieniać dodatkowe dane przez np. NFC, a następnie bezpiecznie sparować te dwa urządzenia przez Bluetooth bez żadnych dodatkowych działań użytkownika?

Author: michael, 2011-05-04

6 answers

Ta potrzeba jest dokładnie dlatego createInsecureRfcommSocketToServiceRecord() został dodany do BluetoothDevice począwszy od Androida 2.3.3 (poziom API 10) (SDK Docs)...wcześniej nie było dla tego wsparcia SDK. Został zaprojektowany, aby umożliwić Androidowi łączenie się z urządzeniami bez interfejsów użytkownika do wprowadzania kodu PIN (jak urządzenie wbudowane), ale jest równie przydatny do konfigurowania połączenia między dwoma urządzeniami bez wprowadzania kodu PIN użytkownika.

Metoda następcza listenUsingInsecureRfcommWithServiceRecord() w BluetoothAdapter jest używana do przyjmowania tego typu połączeń. To nie jest naruszenie bezpieczeństwa, ponieważ metody muszą być używane jako para. Nie można tego użyć, aby po prostu spróbować sparować ze starym urządzeniem Bluetooth.

Możesz również wykonywać komunikację krótkiego zasięgu przez NFC, ale ten sprzęt jest mniej widoczny na urządzeniach z Androidem. Zdecydowanie wybierz jeden i nie próbuj tworzyć rozwiązania, które wykorzystuje oba.

Mam nadzieję, że to pomoże!

P. S. istnieją również sposoby, aby to zrobić na wielu urządzeniach przed 2.3 używając reflection, ponieważ kod istniał...ale ja bym nie koniecznie polecam to dla aplikacji produkcji masowej. Zobacz to StackOverflow .

 53
Author: Devunwired,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:00

Cóż, to naprawdę powinno być podzielone na 2 części:

  1. Czy można sparować 2 urządzenia Bluetooth bez przechodzenia przez Bluetooth pairing handshake? To jest zapisane w protokole, więc nie da się tego obejść.
  2. Czy można wykonać uścisk dłoni bez interfejsu użytkownika? Tak, możesz: to tylko kod.

Nie wiem jak to zrobić w Windows land, ale w *Nix land są funkcje Zakopane w stosie Bluez, które pozwalają otrzymywać powiadomienia o gdy pojawi się nowe urządzenie, i wysłać mu kod parowania (oczywiście nie muszą być te funkcje: są to, co interfejs użytkownika używać). Biorąc pod uwagę wystarczająco dużo czasu i doświadczenia, jestem pewien, że możesz dowiedzieć się, jak napisać własną wersję aplikacji Ustawienia Bluetooth, która jakoś:

  • Wykryto nowe urządzenie
  • spojrzał na nazwę / adres MAC bluetooth i sprawdził w wewnętrznej bazie danych, czy kod parowania jest używany.
  • wysłałem kod parowania i uzupełniłem operacja

Wszystko bez konieczności wyświetlania interfejsu użytkownika.

Jeśli napiszesz kod, z przyjemnością go zdobędę.

 4
Author: Femi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 16:16:57

Krótka odpowiedź: kiedy wysyłam pliki między urządzeniami za pomocą OBEX, prawie nigdy nie jestem proszony o sparowanie, więc z pewnością jest to możliwe.

1) aplikacja i samo urządzenie mogą być ustawione na tryby uwierzytelniania need/not-need, więc często nie było wymogu parowania. Na przykład większość serwerów OBEX (OPP) nie wymaga żadnego uwierzytelniania, więc nie ma potrzeby parowania/łączenia.

Prawdopodobnie odpowiedź "Wireless Designs" dotyczyła tej sprawy.

2) wtedy jeśli parowanie było wymagane przez urządzenie/aplikację:

2.1) przed v2. 1 do parowania następnie dwa urządzenia musiały mieć pasujące hasło / piny. Więc to albo wymagało zaangażowania użytkownika (aby wprowadzić piny) lub wiedzy w oprogramowaniu, aby znać PIN: albo zdefiniowany w aplikacji if pin callback send pin="1234", lub sprytu w systemie operacyjnym, takim jak BlueZ i Win7 (zobacz Slide 20 w moim Bluetooth w Windows 7 doc), który ma logikę jak: if(remotedevice=headset) then expectedPin ="0000". Nie wiem co robi Android

2.2) W v2.1 Secure Simple Pairing (ssp) było dodano. Która zmienia parowanie na:

if (either is pre-v2.1) then
   Legacy
else if (Out-Of-Band channel) then
   OutOfBand
else if (neither have "Man-in-the-Middle Protection Required") then
   (i.e. both have "Man-in-the-Middle Protection _Not_ Required")
   Just-Works
else
   Depending on the two devices' "IO Capabilities", either NumericComparison or Passkey.
   Passkey is used when one device has KeyboardOnly -- and the peer device _isn't_ NoInputNoOutput.
endif

Od 32feet.NET Instrukcja obsługi BluetoothWin32Authentication , Zobacz także sekcje SSP w [1]

Tak, aby parowanie być unprompted potrzebuje albo "JustWorks" lub "Out-of-Band" np sugestia NFC.

Mam nadzieję, że to pomoże...
 4
Author: alanjmcf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 19:39:11

Tak jest to możliwe w teorii zgodnie ze specyfikacją. Nie ma jednak jak dotąd praktycznego wdrożenia, które by na to pozwalało.

Zobacz: NFC Forum Connection Handover Specyfikacja techniczna http://www.nfc-forum.org/specs/spec_list/

Cytowanie ze specyfikacji dotyczącej zabezpieczenia - " protokół przekazania wymaga transmisji danych dostępu do sieci i poświadczeń (danych konfiguracji nośnika), aby umożliwić jedno urządzenie do połączenia się z sieć bezprzewodowa dostarczana przez inne urządzenie. Ze względu na bliskość potrzebną do komunikacji między urządzeniami NFC i tagami, podsłuchiwanie danych konfiguracji nośnika jest trudne, ale nie niemożliwe bez rozpoznania przez uprawnionego właściciela urządzeń. Przekazywanie danych konfiguracyjnych nośnika do urządzeń, które można zbliżyć do siebie, uznaje się za uzasadnione w zakresie niniejszej specyfikacji."

 2
Author: Xabi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 16:08:58

BT Wersja 2.0 lub mniej - powinieneś mieć możliwość sparowania / wiązania za pomocą standardowego kodu PIN, wprowadzanego programowo np. 1234 lub 0000. Nie jest to bardzo bezpieczne, ale wiele urządzeń BT tak robi.

BT Wersja 2.1 lub nowsza-Mode 4 Secure Simple Pairing model "just works" może być używany. Używa szyfrowania eliptycznego (cokolwiek to jest) i jest bardzo bezpieczny, ale jest otwarty na ataki Man In The Middle. W porównaniu ze starym podejściem do kodu pin "0000" jest on o lata świetlne przed nami. To nie wymaga żadnego użytkownika wejście.

Jest to zgodne ze specyfikacją Bluetooth, ale to, czego możesz użyć, zależy od tego, jaki standard Bluetooth obsługuje twój stos i jaki masz interfejs API.

 0
Author: Simon Peverett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-16 21:04:15

Jeśli pytasz, czy możesz sparować dwa urządzenia bez zgody użytkownika, nie można tego zrobić, jest to funkcja bezpieczeństwa. Jeśli jesteś sparowany przez Bluetooth, nie ma potrzeby wymiany danych przez NFC, wystarczy wymienić dane przez łącze Bluetooth.

Myślę, że nie można obejść zabezpieczeń Bluetooth przekazując pakiet uwierzytelniania przez NFC, ale mogę się mylić.

 -2
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 15:07:21