BLEBoy
Objetivo
Criar um periférico BLE que suporte todos os métodos de pareamento BLE que possam
ser usados para treinamento e testes, incluindo pareamento fora de banda (OOB).
O periférico deve ser configurável e
fácil de recriar usando componentes de consumo.
Sobre
O BLEBoy é um periférico BLE implementado usando a placa Adafruit nRF52 Feather,
que foi atualizado para suportar todos os métodos de pareamento BLE
descritos na especificação Bluetooth (https://www.bluetooth.com/specifications/bluetooth-core-specification). O BLEBoy permite que os parâmetros de segurança GAP
sejam atualizados em tempo real (LESC, OOB, MitM, capacidades de IO, etc.)
para permitir que os usuários experimentem os vários métodos de pareamento (e o
nível de segurança fornecido por cada um).
Ele também suporta o envio de dados OOB pela serial para permitir que outras ferramentas
construam registros NFC OOB BLE para pareamento OOB.
Esta ferramenta pode ser usada com os módulos de treinamento encontrados na pasta "Training"
para aprender sobre segurança BLE.
NOTA Este dispositivo é destinado ao treinamento de segurança BLE. Não use o código em aplicações seguras. Há vários geradores de números aleatórios usados no código que não são considerados criptograficamente seguros. Versões posteriores do Nordic SDK NRF52 fornecem APIs RNG seguras que podem ser usadas para esse fim, se necessário.
Requisitos
Hardware Necessário
- nRF52 Feather (https://www.adafruit.com/product/3406)
- OLED Featherwing (https://www.adafruit.com/product/2900)
- Joy Featherwing (https://www.adafruit.com/product/3632)
- Certifique-se de curto-circuitar o pino 27 (a almofada na parte inferior da placa pode ser soldada para conseguir isso) para que possamos configurá-lo como o pino de interrupção. Se outro pino de interrupção for desejado, o código do BLEBoy precisará ser modificado.
- Feather Tripler (https://www.adafruit.com/product/3417)
- Não é necessariamente obrigatório, mas simplifica a conexão dos componentes
- Cabo Micro-USB para Feather (necessário para enviar o código e lidar com o modelo de associação Passkey Entry do periférico)
- Acesso a ferro de solda para montar os componentes (soldando os headers)
- Um telefone Android que suporte Bluetooth 4.0 e tenha as Opções de Desenvolvedor habilitadas (https://developer.android.com/studio/debug/dev-options.html)
- Isso também pode ser feito com um dispositivo iOS desbloqueado (versão <10) com o BTCompanion instalado a partir do Cydia. Para simplificar, cobriremos apenas o Android.
Nota: Para lidar com os modelos de associação de pareamento OOB e Passkey Entry (onde o passkey é inserido no periférico), um cabo Micro-USB precisará ser conectado ao nRF52 Feather e ficar escutando comunicações seriais (baud 9600). Esta mesma conexão serial é usada para imprimir informações de status e depuração.
Hardware Opcional
- Para seguir o exemplo OOB NFC
- Uma bateria LIPO para eliminar a necessidade do cabo Micro-USB para alimentar a Feather
- Um estojo rígido para a solução. O OLED é bastante frágil e pode rachar facilmente sob pressão forte.
Bibliotecas Arduino Necessárias
Todas as bibliotecas podem ser instaladas a partir de suas respectivas fontes, exceto arduino-menusystem e Bluefruit52Lib, que foram modificadas. Um changelog das bibliotecas modificadas pode ser encontrado em 3rdPartyChanges.txt.
Alternativamente, os usuários podem usar as bibliotecas contidas na pasta "libraries" deste projeto para garantir que a mesma versão das bibliotecas usadas durante o desenvolvimento seja utilizada.
Configuração de Hardware
A seguir estão as instruções de configuração para construir o BLEBoy usando o hardware necessário listado nas seções acima:
- Solde headers machos em cada uma das Feather e Featherwings.
- Na Joy Featherwing, olhe a parte inferior da placa e aplique solda na almofada do Pino de Interrupção Opcional em frente ao pino 27.
- Solde headers fêmeos no Tripler.
- Conecte todas as 3 placas Feather no Tripler (qualquer ordem pode ser usada, mas para simplificar, coloco o OLED no topo, o nRF52 no meio e a Joy na parte inferior).
Instalação de Software
Para programar o nRF52 Feather com o código BLEBoy, siga estes passos:
- Instale o Arduino IDE.
- Instale os recursos da placa Adafruit nRF52 Feather dentro do Arduino IDE (veja https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup).
- Desenvolvido e testado com a versão 0.6.0 da placa nRF52. O sucesso com outras versões pode variar.
- Instale as bibliotecas Arduino de terceiros (listadas na seção Bibliotecas Arduino Necessárias acima).
- Substitua a Adafruit Bluetooth52Lib pela pasta Bluetooth52Lib neste repositório.
- Instale a biblioteca arduino-menusystem modificada localizada na pasta libraries dentro deste repositório.
- Envie o BLEBoy para o nRF52 Feather.
- Configure a conexão serial para o nRF52 Feather (9600 baud).
- (Opcional) Configure o PN532 para pareamento OOB por NFC
Instalar Bluefruit52Lib Personalizada
- Copie a pasta Bluefruit52Lib personalizada para ( variará de acordo com a instalação):
- 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
Instalar Bibliotecas de Terceiros
- Instale as bibliotecas de terceiros listadas em Bibliotecas Arduino Necessárias
- Copie arduino-menusystem da pasta libraries do BLEBoy para a pasta de bibliotecas Arduino do seu usuário.
OU
- Copie as pastas em "libraries" para a pasta de bibliotecas Arduino do usuário
- Comumente encontrada em ~/Arduino/libraries ou C:\Users\ <user> \Documents\Arduino\libraries
(OPCIONAL) Instalação para PN352 para Pareamento OOB via NFC