Ist Bluetooth-Kommunikation ohne Pairing möglich?

36

Ich arbeite an einem Gerät, das ein System "sofort" drahtlos aktivieren kann. Das erste, was mir in den Sinn kam, war die Verwendung der RFID-Technologie, die den Vorteil einer sofortigen und kostengünstigen Kommunikation bietet. Ich möchte jedoch stattdessen die Bluetooth-Funktionen meines Telefons verwenden, um diese Aufgabe zu erledigen.

Meine Frage ist also, ob es für die Bluetooth-Kommunikation eine Möglichkeit gibt, ohne Pairing zu kommunizieren. Mit anderen Worten: Nehmen wir an, mein Bluetooth-Empfänger erwartet einen Code "abc123". Ein Bluetooth-Gerät ist wie ein Telefon so programmiert, dass es diesen Code ständig überträgt. Nach Erhalt des Codes beginnt das System zu tun, was es tun soll, sobald der Zugriff gewährt wurde. Ein solches System würde die Paarungsbarriere natürlich auf Kosten der Sicherheit beseitigen.

Ist dieses Konzept also eine Möglichkeit? Ich habe wenig Verständnis für Bluetooth-Verbindungsprotokolle auf einer sehr technischen Ebene, aber wenn mir jemand einen Hinweis geben kann, kann ich von diesem Punkt an lernen. Betrachten Sie mein begrenztes Verständnis nicht als Einschränkung.

capcom
quelle
Es gibt einen Bluetooth-Modus, der genau das macht, aber ich weiß nicht, wie er heißt. Es wurde verwendet, um lokale Werbung an vorbeikommende Mobiltelefone zu senden.
Jippie
2
Es gibt verschiedene 433-MHz-Module, die ein Ein / Aus-Signal "sofort" senden. oft in Garagentoröffnern verwendet. Sie sind auch billig und einfach zu bedienen, obwohl sie keine inhärente Sicherheit bieten.
pjc50

Antworten:

25

Ja, das ist durchaus möglich. Ich habe dies zuvor kommentiert und mich seitdem weiter damit befasst. Sie können haben die Auslösung Bluetooth - Gerät das Aktivierungssignal durch seinen schicken freundlichen Namen .

Der Anzeigename ist der für Menschen lesbare Name, der in der Liste angezeigt wird, wenn Sie nach einem Bluetooth-Gerät suchen, mit dem eine Verbindung hergestellt werden soll. Die Geschwindigkeit, mit der dies aktiviert wird, hängt davon ab, wie schnell das empfangende Gerät Anzeigenamen abfragt. Sie haben nicht erwähnt, welchen Empfängertyp Sie verwenden, aber ich habe dieses PDF gefunden (S. 35) gefunden, in dem der Vorgang zum Aktualisieren der Anzeigenamen von Bluetooth-Geräten in Reichweite beschrieben wird.

Sie können so oft nach Anzeigenamen fragen, wie Sie möchten. Wenn Ihr auslösendes Gerät seinen Anzeigenamen in den Aktivierungscode ändert,abc123 kann das empfangende Gerät diesen Namen anzeigen, ohne eine Kopplung und alle Aufgaben aktivieren, die Sie ausführen möchten. Dies ermöglicht Ihnen auch eine Vielzahl von Aktivierungscodes. Ich denke, Sie können bis zu 248 Bytes für den benutzerfreundlichen Bluetooth-Namen erhalten.

Sie können auch versuchen, sich absichtlich für Bluejacking zu öffnen . Ich kenne es nicht, aber wenn Sicherheit kein Problem ist, könnte es funktionieren.

Samuel
quelle
2
Perfekt, das scheint sehr vielversprechend zu sein. Ich mag die Einfachheit der Methode der freundlichen Namen und Bluejacking scheint auch ein großartiger Kandidat zu sein.
Capcom
12

Die kurze Antwort lautet: Ja, Bluetooth kann ohne Pairing verwendet werden. Es wird jedoch immer eine Punkt-zu-Punkt-Verbindung sein. Es gibt auch potenzielle Probleme, wenn das Pairing nicht verwendet wird (hauptsächlich mangelnde Sicherheit und mangelnde Unterstützung für diesen Betriebsmodus). Ob dies möglich ist, hängt von der Bluetooth-Hardware Ihres Receivers ab. Ich gehe davon aus, dass Sie "Standard" -Bluetooth anstelle von energiesparendem Bluetooth verwenden (was völlig anders ist und bei Mobiltelefonen nicht besonders gut unterstützt wird). Wenn Sie energiesparend arbeiten, ist Ihr Sender ein energiesparendes Gerät und Ihr Empfänger lauscht auf Nachrichten. Ich habe dies nicht verwendet, daher kann ich Ihnen keine Informationen dazu geben. Deshalb bleibe ich bei "normalem" Bluetooth.

Aus meiner Sicht sind zwei Probleme zu lösen:

  1. Pin-Paarung ausschalten

  2. Automatischer Verbindungsaufbau

Ich werde zuerst auf Nummer 2 eingehen, da ich den Eindruck habe, dass Sie daran wirklich interessiert sind (entschuldige mich, wenn ich das falsch lese). Um dies von einem Telefon oder einem anderen „Master“ -Gerät aus zu tun, müsste es kontinuierlich nach Remote-Bluetooth-Geräten suchen. Wenn es eines erkannte, das zutreffend war, stellte es automatisch eine Verbindung zu diesem her und sendete einige Daten, die die erforderlichen Aktionen auslösten. Andere haben die Verwendung des Bluetooth-freundlichen Namens für diesen Prozess erwähnt, und das ist sicherlich eine Möglichkeit, dies zu tun. Meine Erfahrungen mit Bluetooth-freundlichen Namen (insbesondere, aber nicht ausschließlich, mit dem Microsoft Bluetooth-Stack) zeigen, dass sie keine so robuste Scanmethode sind. Du würdest es wahrscheinlich viel besser machen, das zu benutzen Bluetooth-Geräteklasse, der gleichzeitig mit der eindeutigen Geräteadresse gesendet wird. Diese Geräteklasse verfügt über eine große Anzahl vordefinierter Einträge für Mobiltelefone, Laptops, Desktops usw. usw. Wenn Sie eine der nicht standardmäßigen Geräteklassen verwenden (z. B. 00:00:00), können Sie sofort darauf zugreifen die überwiegende Mehrheit der Bluetooth-Geräte herauszufiltern. Sie können dann eine Verbindung zum verbleibenden Gerät herstellen und eine Art Anforderungsbestätigungskommunikation durchführen, um Ihre Aktion einzuleiten. Wenn Sie dies in geeigneter Weise undeutlich machen (oder den Anzeigenamen als zweites prüfen), sollte dies implizit alle verbleibenden falschen Geräte herausfiltern.


In Bezug auf Nummer 1 ist die Pin-Paarung nicht besonders logisch, wenn Sie vorübergehende Verbindungen herstellen, aber es ist immer noch der beste Weg, um das zu erreichen, was Sie tun möchten. Wenn Sie das Pin-Pairing vermeiden möchten, können Sie es deaktivieren und eine ungepaarte Verbindung herstellen. Wie Sie dies tun, hängt von der Implementierung des Bluetooth-Empfängers ab. Hier einige Beispiele:

  1. Bluegiga WT12: benutze den Befehl SET BT AUTH *
  2. National Semiconductor LMX9838: Befehl GAP_SET_SECURITY_MODE mit Sicherheitsmodus 1 verwenden (kein Pairing)

etc.

Die Verbindung zum Gerät kann dann ohne Pairing hergestellt werden. Wenn das Gerät, das die Verbindung herstellt, mit dem Empfänger identisch ist, ist dies sehr einfach. Wenn Sie einen Windows - PC verwenden, können Sie mühsam einen neuen Verbindungsprozess erstellen und "Keine PIN verwenden" auswählen, obwohl Windows Sie wahrscheinlich nach einer PIN fragen wird, wenn Sie eine Verbindung herstellen (0000 funktioniert normalerweise, aber es ist sehr schuppig). Wenn Sie mit pybluez Python verwenden, ist das ganz einfach:

import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))

Wenn Sie jedoch von einem Mobiltelefon aus eine Verbindung herstellen möchten, wird dies viel komplizierter. Das Android SDK unterstützt offenbar keine ungepaarten Verbindungen:

Die aktuellen Android-Bluetooth-APIs erfordern, dass Geräte gekoppelt werden, bevor eine RFCOMM-Verbindung hergestellt werden kann. (Das Pairing wird automatisch durchgeführt, wenn Sie eine verschlüsselte Verbindung mit den Bluetooth-APIs herstellen.)

(von http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Es gibt Möglichkeiten, dies zu umgehen, aber sie sind sehr kompliziert und werden nicht gut unterstützt. Wenn Sie ein iPhone verwenden, ist die Bluetooth-Konnektivität eine ganz andere Dose Würmer (Lizenzierung usw.).


Trotzdem erlaubt so ziemlich jede API, die ich mir jemals angesehen habe, das Pairing undUnpairing ausgeführt werden (mit Ausnahme von Python / Pybluez, aber das ist nur ein Wrapper um den Microsoft-Stack unter Windows, so dass Sie die Low-Level-Funktion immer direkt aufrufen können). Wenn Sie also ein Gerät mit der richtigen Geräteklasse gefunden haben, stellen Sie die Verbindung her, senden Sie die erforderlichen Daten, trennen Sie die Verbindung und trennen Sie die Verbindung. All dies würde keinen Benutzereingriff erfordern, und solange Sie dies nicht tausende Male tun (was möglicherweise zu Problemen mit dem EEPROM-Verschleiß führen kann), sollten Sie keine Probleme haben. Es erspart Ihnen außerdem viel Aufwand, wenn Sie versuchen, verschiedene APIs so zu konfigurieren, dass sie mit einer als nicht standardgemäß geltenden Methode zur Verwendung von Bluetooth gut funktionieren.

DrAl
quelle
1
Vielen Dank für eine tolle Antwort! Viel für mich, das ich mir jetzt ansehen muss.
capcom
10

Dies kann mit einer Technologie innerhalb der erreicht werden Bluetooth Marke namens Bluetooth Smart (oder Bluetooth Low Energy / Bluetooth 4.0) und auch je nach Telefon , das Sie haben.

Der Hauptvorteil von Low Energy gegenüber regulärem Bluetooth besteht darin, dass es viel weniger Strom verbraucht und die erwartete Lebensdauer eines Geräts Jahre betragen kann, abhängig vom Verbindungsintervall und davon, wie viel Werbung auf einem Knopfzellenakku gemacht wird.

Um dieses Problem zu lösen, können Sie den fraglichen Code in die Werbedaten des Chips einfügen. ( Bluetooth 4.0 Core Spec. Volume 3, Teil C, Abschnitt 11.1.4 oder 11.1.10)

Es gibt drei große Chiphersteller, die Niedrigenergie-Chips herstellen (TI, CSR und Nordic Semiconductor).

Nordic hat einen Konnektivitätschip mit der Bezeichnung nRF8001 (ein Konnektivitätschip, ein vollqualifiziertes Gerät) und einen SoC nRF51822 . Der Vorteil des nRF8001 ist, dass Sie den Prozessor Ihrer Wahl verwenden können und sich nicht um die Bluetooth- Spezifikation kümmern müssen, da diese vom Chip übernommen wird. Der Vorteil von nRF51822 ist, dass es sich um ein System on Chip handelt und die Stückliste reduziert. Es wird mit Cortex-M0 betrieben und sollte bei Freigabe vollständig qualifiziert sein.

Ich habe den 8051 SoC-Chip cc2540 und CSR haben den SoC-Chip CSR µEnergy

Alles hängt von Ihren Anforderungen und Vorlieben in Bezug auf Prozessor und Funktionalität / Kosten ab

Palhaland
quelle
3

Ja, Bluetooth-Kommunikation ist möglich, ohne die Geräte zu koppeln. Verwenden Sie den insecureRfcomRespekt der sicheren RFCOM. Für die Datenübertragung ist kein Pairing erforderlich.

Rahil Ali
quelle
1

Das Ergebnis einer erfolgreichen Kopplung ist der Verbindungsschlüssel, das Geheimnis, das die gekoppelten Geräte gemeinsam nutzen und ihnen die Kommunikation ermöglichen.

Wenn es möglich ist, den Verbindungsschlüssel auf dem System festzulegen, ist keine Kopplung erforderlich. Stellen Sie einfach auf beiden Geräten den gleichen Link-Schlüssel ein. Nach dieser Verbindung kann erfolgreich geöffnet werden, als ob die beiden Geräte gepaart hätten.

Zum Beispiel unter Linux wird die infoDatei nach dem Pairing für jedes gekürzte Gerät unter / var / lib / bluetooth / local-device-address / remote-device-address / gespeichert.

Nach dem GeneralAbschnitt enthält das folgende: [LinkKey] Key=FF00112233445566778899AABBCCDDEE Type=5 PINLength=0

Dies kann direkt ohne Pairing eingestellt werden. Wenn das gleiche auf dem Remote-Gerät geschrieben ist. Die Geräte sind gekoppelt.

shpc
quelle