it-swarm.com.de

Bluetooth-Pairing ohne Benutzerbestätigung

Kann ich zwei Geräte über Bluetooth koppeln, ohne dies in der Benutzeroberfläche bestätigen zu müssen? Akzeptieren Sie das Koppeln dieser Geräte. Kann ich einige zusätzliche Daten über NFC austauschen und diese beiden Geräte dann sicher über Bluetooth koppeln, ohne dass zusätzliche Benutzeraktionen erforderlich sind?

32
michael

Genau aus diesem Grund wurde createInsecureRfcommSocketToServiceRecord() zu BluetoothDevice hinzugefügt, beginnend mit Android 2.3.3 (API Level 10) ( SDK Docs =) ... zuvor gab es keine SDK-Unterstützung dafür. Es wurde entwickelt, um Android) eine Verbindung zu Geräten ohne Benutzerschnittstellen für die Eingabe eines PIN zu ermöglichen Code (wie ein eingebettetes Gerät), aber genauso verwendbar zum Herstellen einer Verbindung zwischen zwei Geräten ohne Benutzer PIN Eingabe.

Die Folgemethode listenUsingInsecureRfcommWithServiceRecord() in BluetoothAdapter wird verwendet, um diese Verbindungstypen zu akzeptieren. Es ist keine Sicherheitsverletzung, da die Methoden als Paar verwendet werden müssen. Sie können damit nicht einfach versuchen, eine Kopplung mit einem alten Bluetooth-Gerät herzustellen.

Sie können auch Nahbereichskommunikation über NFC durchführen, aber diese Hardware ist auf Android) Geräten weniger verbreitet. Wählen Sie auf jeden Fall eine aus, und versuchen Sie nicht, eine Lösung zu erstellen, die beide verwendet.

Ich hoffe, das hilft!

P.S. Es gibt auch Möglichkeiten, dies auf vielen Geräten vor 2.3 mithilfe von Reflection zu tun, da der Code bereits vorhanden war. Ich würde dies jedoch nicht unbedingt für Massenproduktionsanwendungen empfehlen. Siehe hierzu StackOverflow .

53
Devunwired

Nun, das sollte wirklich in zwei Teile geteilt werden:

  1. Können Sie zwei Bluetooth-Geräte koppeln, ohne einen Bluetooth-Koppelungs-Handshake zu durchlaufen? Nein, kannst du nicht. Das ist in das Protokoll eingearbeitet, daher führt kein Weg daran vorbei.
  2. Können Sie den Handshake ohne Benutzeroberfläche ausführen? Ja, das können Sie: Das ist nur Code.

Ich bin mir nicht sicher, wie Sie dies in Windows Land tun, aber in * nix land sind Funktionen im Bluez-Stapel vergraben, mit denen Sie Benachrichtigungen erhalten, wenn ein neues Gerät angezeigt wird, und ihm den Pairing-Code senden können (dies muss eindeutig vorhanden sein) Diese Funktionen: Dies sind die Funktionen, die die Benutzeroberfläche verwendet. Wenn Sie genügend Zeit und Erfahrung haben, können Sie sicher herausfinden, wie Sie Ihre eigene Version der Bluetooth-Einstellungs-App schreiben können.

  • Es wurde festgestellt, dass ein neues Gerät eingetroffen ist
  • Sah den Namen/die Bluetooth-Mac-Adresse an und überprüfte eine interne Datenbank auf den zu verwendenden Pairing-Code.
  • Senden Sie den Pairing-Code und schließen Sie den Vorgang ab

Alles ohne eine Benutzeroberfläche öffnen zu müssen.

Wenn Sie fortfahren und den Code schreiben, würde ich es LIEBEN, ihn in die Hände zu bekommen.

6
Femi

Kurze Antwort: Wenn ich mit OBEX Dateien zwischen Geräten sende, werde ich fast nie zum Pairing aufgefordert, daher ist dies mit Sicherheit möglich.

1) Eine Anwendung und das Gerät selbst können so eingestellt werden, dass sie jeweils einen Authentifizierungsmodus benötigen/nicht benötigen. Daher war häufig kein Pairing erforderlich. Zum Beispiel benötigen die meisten OBEX (OPP) -Server überhaupt keine Authentifizierung, sodass kein Pairing/Bonding erforderlich ist.

Vermutlich deckte die Antwort von "Wireless Designs" diesen Fall ab.

2) Wenn für das Gerät/die App ein Pairing erforderlich war:

2.1) Vor v2.1 mussten die beiden Geräte zum Koppeln über übereinstimmende Passphrasen/PINs verfügen. Dies erforderte also entweder Benutzereingriffe (um die PINs einzugeben) oder Kenntnisse in der Software, um die PIN zu kennen: entweder in der App if pin callback send pin="1234" Definiert oder in Betriebssystemen wie BlueZ und Win7 (siehe Folie 20) bei meinem Bluetooth in Windows 7 doc ) das logisch ist wie: if(remotedevice=headset) then expectedPin ="0000". Ich weiß nicht, was Android tut

2.2) In v2.1 wurde Secure Simple Pairing (SSP) hinzugefügt. Welche Änderungen ergeben sich bei der Paarung zu:

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

Lesen Sie in 2feet.NETs BluetoothWin32Authentication-Benutzerhandbuch auch die Abschnitte SSP in [ 1 ]

Damit das Pairing nicht abgefragt wird, müssen Sie entweder "JustWorks" oder "Out-of-Band" auswählen, z. B. Ihren NFC Vorschlag.

Ich hoffe, das hilft...

4
alanjmcf

Ja, es ist theoretisch möglich, wie in der Spezifikation definiert. Es gibt jedoch noch keine praktische Umsetzung, die dies ermöglichen würde.

Siehe: NFC Technische Spezifikation für Forum Connection Handover http://www.nfc-forum.org/specs/spec_list/

Zitat aus der Sicherheitsspezifikation - "Das Handover-Protokoll erfordert die Übertragung von Netzwerkzugangsdaten und Anmeldeinformationen (die Daten der Netzbetreiberkonfiguration), damit ein Gerät eine Verbindung zu einem drahtlosen Netzwerk herstellen kann, das von einem anderen Gerät bereitgestellt wird. Aufgrund der räumlichen Nähe, die für die Kommunikation zwischen NFC= Geräten und Tags erforderlich ist, ist das Abhören von Carrier-Konfigurationsdaten schwierig, aber nicht unmöglich, ohne dass der rechtmäßige Besitzer der Geräte dies erkennt. Übertragung von Carrier-Konfigurationsdaten Geräte, die in unmittelbare Nähe gebracht werden können, gelten im Rahmen dieser Spezifikation als legitim. "

2
Xabi

BT-Version 2.0 oder niedriger - Sie sollten in der Lage sein, ein Pairing/Bonding mit einem Standard-Code PIN durchzuführen, der programmgesteuert eingegeben wird, z. 1234 oder 0000. Dies ist nicht sehr sicher, aber viele BT-Geräte tun dies.

BT Version 2.1 oder höher - Es kann das Modell "Just Works" von Mode 4 Secure Simple Pairing verwendet werden. Es verwendet elliptische Verschlüsselung (was auch immer das ist) und ist sehr sicher, aber offen für Man In The Middle-Angriffe. Im Vergleich zum alten "0000" -Pin-Code-Ansatz ist es Lichtjahre voraus. Dies erfordert keine Benutzereingabe.

Dies entspricht den Bluetooth-Spezifikationen, aber was Sie verwenden können, hängt davon ab, welche Version des Bluetooth-Standards Ihr Stack unterstützt und über welche API Sie verfügen.

0
Simon Peverett