BLEBoy
Objectif
Créer un périphérique BLE prenant en charge toutes les méthodes d'appairage BLE pouvant être utilisées pour la formation et les tests, y compris l'appairage hors bande (OOB). Le périphérique doit être configurable et facile à reproduire avec des composants grand public.
À propos
BLEBoy est un périphérique BLE implémenté à l'aide de la carte Adafruit nRF52 Feather, qui a été mise à jour pour prendre en charge toutes les méthodes d'appairage BLE décrites dans la spécification Bluetooth (https://www.bluetooth.com/specifications/bluetooth-core-specification). BLEBoy permet la mise à jour à la volée des paramètres de sécurité GAP (LESC, OOB, MitM, capacités E/S, etc.) afin de permettre aux utilisateurs d'expérimenter les différentes méthodes d'appairage (et le niveau de sécurité offert par chacune).
Il prend également en charge l'envoi de données OOB via la liaison série afin de permettre à d'autres outils de construire des enregistrements NFC BLE OOB pour l'appairage OOB.
Cet outil peut être utilisé avec les modules de formation présents dans le dossier « Training » pour découvrir la sécurité BLE.
REMARQUE Cet appareil est destiné à être utilisé pour la formation à la sécurité BLE. N'utilisez pas ce code dans des applications sécurisées. Plusieurs générateurs de nombres aléatoires utilisés dans le code ne sont pas considérés comme cryptographiquement sûrs. Les versions ultérieures du SDK Nordic NRF52 fournissent des API RNG sécurisées qui peuvent être utilisées à cette fin si nécessaire.
Prérequis
Matériel requis
- nRF52 Feather (https://www.adafruit.com/product/3406)
- OLED Featherwing (https://www.adafruit.com/product/2900)
- Joy Featherwing (https://www.adafruit.com/product/3632)
- Veillez à shunter la broche 27 (la pastille au dos de la carte peut être soudée pour ce faire) afin de pouvoir la configurer comme broche d'interruption. Si une autre broche d'interruption est souhaitée, le code de BLEBoy devra être modifié.
- Feather Tripler (https://www.adafruit.com/product/3417)
- Pas strictement requis, mais cela simplifie la connexion des composants.
- Câble Micro-USB pour Feather (nécessaire pour téléverser le code et prendre en charge le modèle d'association Saisie de la clé d'accès (Passkey Entry) côté périphérique)
- Accès à un fer à souder pour assembler les composants (soudure des headers)
- Un téléphone Android prenant en charge Bluetooth 4.0 et avec les Options de développement activées (https://developer.android.com/studio/debug/dev-options.html)
- Cela peut également être fait avec un appareil iOS jailbreaké (version <10) avec BTCompanion installé depuis Cydia. Pour simplifier, nous ne traiterons que d'Android.
Remarque : Pour prendre en charge les modèles d'association d'appairage OOB et Passkey Entry (où la clé d'accès est saisie sur le périphérique), un câble Micro-USB devra être connecté au nRF52 Feather et une écoute des communications série (débit 9600 bauds) devra être effectuée. Cette même connexion série sert à afficher les informations d'état et de débogage.
Matériel optionnel
- Pour suivre l'exemple NFC OOB
- Une batterie LiPo pour éviter d'avoir besoin d'un câble Micro-USB pour alimenter la Feather.
- Un boîtier rigide pour l'ensemble. L'OLED est assez fragile et peut facilement se fissurer sous une pression ponctuelle.
Bibliothèques Arduino requises
Toutes les bibliothèques peuvent être installées depuis leurs sources respectives, à l'exception d'arduino-menusystem et de Bluefruit52Lib qui ont été modifiées. Un journal des modifications des bibliothèques modifiées se trouve dans 3rdPartyChanges.txt.
Alternativement, les utilisateurs peuvent utiliser les bibliothèques contenues dans le dossier « libraries » de ce projet afin de garantir l'utilisation de la même version que celle employée lors du développement.
Montage du matériel
Voici les instructions de montage pour construire BLEBoy à l'aide du matériel requis listé dans les sections ci-dessus :
- Soudez des headers mâles sur chacune des cartes Feather et Featherwing.
- Sur la Joy Featherwing, examinez le dessous de la carte et placez de la soudure sur la pastille Option Interrupt Pin située devant la broche 27.
- Soudez des headers femelles sur le Tripler.
- Branchez les 3 cartes Feather sur le Tripler (l'ordre n'a pas d'importance, mais par simplicité, je place l'OLED en haut, la nRF52 au milieu et la Joy en bas).
Installation du logiciel
Pour programmer la nRF52 Feather avec le code BLEBoy, suivez ces étapes :
- Installez l'IDE Arduino.
- Installez les ressources de la carte Adafruit nRF52 Feather dans l'IDE Arduino (voir https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup).
- Développé et testé avec la version 0.6.0 de la carte nRF52. Le fonctionnement avec d'autres versions peut varier.
- Installez les bibliothèques Arduino tierces (listées dans la section Bibliothèques Arduino requises ci-dessus).
- Remplacez Adafruit Bluetooth52Lib par le dossier Bluetooth52Lib de ce dépôt.
- Installez la bibliothèque modifiée arduino-menusystem située dans le dossier libraries de ce dépôt.
- Téléversez BLEBoy sur la nRF52 Feather.
- Configurez une connexion série vers la nRF52 Feather (9600 bauds).
- (Optionnel) Configurez le PN532 pour l'appairage NFC OOB.
Installer Arduino avec les ressources Adafruit nRF52 sur Debian
Installer la Bluefruit52Lib personnalisée
- Copiez le dossier Bluefruit52Lib personnalisé vers (<version> varie selon l'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
Installer les bibliothèques tierces
- Installez les bibliothèques tierces listées dans Bibliothèques Arduino requises.
- Copiez arduino-menusystem depuis le dossier libraries de BLEBoy vers votre dossier de bibliothèques Arduino utilisateur.
OU
- Copiez les dossiers de « libraries » vers le dossier de bibliothèques Arduino utilisateur.
- Généralement situé dans ~/Arduino/libraries ou C:\Users\ <user> \Documents\Arduino\libraries
(OPTIONNEL) Installation du PN352 pour l'appairage OOB via NFC