BLEBoy
Ziel
Ein BLE-Peripheral erstellen, das alle BLE-Pairing-Methoden unterstützt, die für Training und Tests verwendet werden können, einschließlich Out-of-Band-Pairing (OOB). Das Peripheral muss konfigurierbar und mit handelsüblichen Bauteilen einfach nachzubauen sein.
Überblick
BLEBoy ist ein BLE-Peripheral, das mit dem Adafruit nRF52 Feather Board implementiert und aktualisiert wurde, um alle in der Bluetooth-Spezifikation beschriebenen BLE-Pairing-Methoden zu unterstützen (https://www.bluetooth.com/specifications/bluetooth-core-specification). BLEBoy ermöglicht die Aktualisierung der GAP-Sicherheitsparameter im laufenden Betrieb (LESC, OOB, MitM, IO-Fähigkeiten usw.), damit Benutzer mit den verschiedenen Pairing-Methoden (und dem jeweils gebotenen Sicherheitsniveau) experimentieren können. Es unterstützt außerdem das Senden von OOB-Daten über die serielle Schnittstelle, damit andere Tools BLE-OOB-NFC-Datensätze für das OOB-Pairing erstellen können.
Dieses Tool kann zusammen mit den Trainingsmodulen im Ordner „Training" verwendet werden, um mehr über BLE-Sicherheit zu lernen.
HINWEIS Dieses Gerät ist für das BLE-Sicherheitstraining gedacht. Verwenden Sie den Code nicht in sicheren Anwendungen. In dem Code werden mehrere Zufallszahlengeneratoren verwendet, die nicht als kryptografisch sicher gelten. Spätere Versionen des NRF52 Nordic SDK bieten sichere RNG-APIs, die bei Bedarf für diesen Zweck verwendet werden können.
Anforderungen
Erforderliche Hardware
- nRF52 Feather (https://www.adafruit.com/product/3406)
- OLED Featherwing (https://www.adafruit.com/product/2900)
- Joy Featherwing (https://www.adafruit.com/product/3632)
- Achten Sie darauf, Pin 27 kurzzuschließen (das Pad auf der Unterseite der Platine kann zu diesem Zweck verlötet werden), damit wir ihn als Interrupt-Pin konfigurieren können. Wenn ein anderer Interrupt-Pin gewünscht ist, muss der BLEBoy-Code geändert werden.
- Feather Tripler (https://www.adafruit.com/product/3417)
- Nicht unbedingt erforderlich, vereinfacht aber das Verbinden der Komponenten.
- Micro-USB-Kabel für das Feather (erforderlich zum Hochladen des Codes und zur Unterstützung des Passkey-Entry-Assoziationsmodells des Peripherals)
- Zugang zu einem Lötkolben für die Montage der Komponenten (Anlöten der Stiftleisten)
- Ein Android-Telefon, das Bluetooth 4.0 unterstützt und bei dem die Entwickleroptionen aktiviert sind (https://developer.android.com/studio/debug/dev-options.html)
- Dies kann auch mit einem jailbroken iOS-Gerät (Version <10) mit von Cydia installiertem BTCompanion durchgeführt werden. Der Einfachheit halber behandeln wir hier jedoch nur Android.
Hinweis: Um die Pairing-Assoziationsmodelle OOB und Passkey Entry (bei denen der Passkey auf dem Peripheral eingegeben wird) zu unterstützen, muss ein Micro-USB-Kabel mit dem nRF52 Feather verbunden werden und auf serielle Kommunikation (Baud 9600) gelauscht werden. Dieselbe serielle Verbindung wird verwendet, um Status- und Debug-Informationen auszugeben.
Optionale Hardware
- Für das Nachvollziehen des OOB-NFC-Beispiels
- Ein LIPO-Akku, um das Micro-USB-Kabel zur Stromversorgung des Feather überflüssig zu machen
- Ein Hartschalenkoffer für die Lösung. Das OLED ist recht empfindlich und kann bei starkem Druck leicht brechen.
Erforderliche Arduino-Bibliotheken
Alle Bibliotheken können aus ihren jeweiligen Quellen installiert werden, mit Ausnahme von arduino-menusystem und Bluefruit52Lib, die modifiziert wurden. Ein Änderungsprotokoll der modifizierten Bibliotheken finden Sie in 3rdPartyChanges.txt.
Alternativ können Benutzer die im Ordner „libraries" dieses Projekts enthaltenen Bibliotheken verwenden, um sicherzustellen, dass dieselbe Version der während der Entwicklung verwendeten Bibliotheken verwendet wird.
Hardware-Einrichtung
Im Folgenden finden Sie die Einrichtungsanweisungen für den Aufbau von BLEBoy mit der oben in den Abschnitten aufgeführten erforderlichen Hardware:
- Löten Sie Stiftleisten (Male Header) auf jedes der Feather und Featherwings.
- Schauen Sie bei der Joy Featherwing auf die Unterseite der Platine und bringen Sie Lötzinn auf dem Pad Option Interrupt Pin vor Pin 27 an.
- Löten Sie Buchsenleisten (Female Header) auf das Tripler.
- Stecken Sie alle 3 Feather-Boards auf das Tripler (die Reihenfolge ist beliebig, aber der Einfachheit halber habe ich das OLED oben, das nRF52 in der Mitte und die Joy unten platziert).
Software-Installation
Um das nRF52 Feather mit dem BLEBoy-Code zu programmieren, führen Sie die folgenden Schritte aus:
- Installieren Sie die Arduino-IDE.
- Installieren Sie die Board-Ressourcen für das Adafruit nRF52 Feather in der Arduino-IDE (siehe https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup).
- Entwickelt und getestet mit der nRF52-Board-Version 0.6.0. Der Erfolg mit anderen Versionen kann variieren.
- Installieren Sie die Drittanbieter-Arduino-Bibliotheken (siehe Abschnitt „Erforderliche Arduino-Bibliotheken" oben).
- Ersetzen Sie die Adafruit Bluetooth52Lib durch den Bluetooth52Lib-Ordner in diesem Repository.
- Installieren Sie die modifizierte Bibliothek arduino-menusystem im Ordner „libraries" dieses Repository.
- Laden Sie BLEBoy auf das nRF52 Feather hoch.
- Richten Sie eine serielle Verbindung zum nRF52 Feather ein (9600 Baud).
- (Optional) Richten Sie den PN532 für das OOB-NFC-Pairing ein.
Installieren von Arduino mit Adafruit-nRF52-Ressourcen unter Debian
Installieren der angepassten Bluefruit52Lib
- Kopieren Sie den Ordner der angepassten Bluefruit52Lib nach ( variiert je nach Installation):
- OS X : ~/Library/Arduino15/packages/adafruit/hardware/nrf52/<version>/libraries
- Linux : ~/.arduino15/packages/adafruit/hardware/nrf52/<version>/libraries
- Windows: %APPDATA%\Local\Arduino15\packages\adafruit\hardware\nrf52\ <version> \libraries
Installieren von Drittanbieter-Bibliotheken
- Installieren Sie die unter „Erforderliche Arduino-Bibliotheken" aufgeführten Drittanbieter-Bibliotheken.
- Kopieren Sie arduino-menusystem aus dem libraries-Ordner von BLEBoy in Ihren Arduino-Bibliotheksordner.
ODER
- Kopieren Sie die Ordner in „libraries" in den Arduino-Bibliotheksordner.
- Üblicherweise zu finden unter ~/Arduino/libraries oder C:\Users\ <user> \Documents\Arduino\libraries
(OPTIONAL) Installation des PN352 für das OOB-Pairing per NFC
- Installieren Sie Python nfcpy (https://nfcpy.readthedocs.io/en/latest/) und PySerial (http://pyserial.readthedocs.io/en/latest/pyserial.html).
- Verbinden Sie den PN532 mit einem FTDI-Kabel (getestet mit einem Adafruit FTDI Friend) und verbinden Sie ihn mit Ihrem Host.
- Verbinden Sie das BLEBoy-Gerät mit dem Host.
- Notieren Sie sich die seriellen Ports aus den beiden vorherigen Schritten und aktualisieren Sie das Python-Skript zum OOB-Parsing, sodass es diese Ports verwendet.