BLEBoy
목표
교육 및 테스트에 사용할 수 있는 모든 BLE 페어링 방식을 지원하는 BLE 주변기기를 만드는 것입니다. 여기에는 대역외(OOB) 페어링도 포함됩니다. 주변기기는 구성이 가능해야 하며 일반 소비자용 부품으로 쉽게 재현할 수 있어야 합니다.
소개
BLEBoy는 Adafruit nRF52 Feather 보드를 사용하여 구현된 BLE 주변기기로, Bluetooth 사양(https://www.bluetooth.com/specifications/bluetooth-core-specification)에 설명된 모든 BLE 페어링 방식을 지원하도록 업데이트되었습니다. BLEBoy는 GAP 보안 파라미터(LESC, OOB, MitM, IO 기능 등)를 즉석에서 업데이트할 수 있게 하여 사용자가 다양한 페어링 방식(및 각 방식이 제공하는 보안 수준)을 실험할 수 있게 합니다. 또한 직렬 통신을 통한 OOB 데이터 전송을 지원하여 다른 도구가 OOB 페어링용 BLE OOB NFC 레코드를 구성할 수 있게 합니다.
이 도구는 "Training" 폴더에 있는 교육 모듈과 함께 사용하여 BLE 보안에 대해 배울 수 있습니다.
참고 이 장치는 BLE 보안 교육용으로 제작되었습니다. 보안이 중요한 애플리케이션에는 이 코드를 사용하지 마십시오. 코드에는 암호학적으로 안전하지 않은 것으로 간주되는 여러 난수 생성기가 사용됩니다. 필요한 경우 최신 버전의 NRF52 Nordic SDK에서 제공하는 안전한 RNG API를 이 용도로 사용할 수 있습니다.
요구 사항
필수 하드웨어
참고: OOB 및 Passkey Entry(패스키가 주변기기에 입력되는 경우) 페어링 연관 모델을 처리하려면 Micro-USB 케이블을 nRF52 Feather에 연결하고 직렬 통신(9600 baud)을 수신해야 합니다. 이 동일한 직렬 연결은 상태 및 디버그 정보를 출력하는 데 사용됩니다.
선택 하드웨어
- OOB NFC 예제를 따라 하기 위한 항목
- Feather 전원 공급용 Micro-USB 케이블의 필요성을 없애는 LIPO 배터리
- 솔루션용 하드케이스. OLED는 상당히 취약하여 날카로운 압력으로 쉽게 깨질 수 있습니다.
필수 Arduino 라이브러리
모든 라이브러리는 해당 소스에서 설치할 수 있습니다. 단, 수정된 arduino-menusystem과 Bluefruit52Lib는 예외입니다. 수정된 라이브러리의 변경 로그는 3rdPartyChanges.txt에서 확인할 수 있습니다.
또는 사용자는 이 프로젝트의 "libraries" 폴더에 포함된 라이브러리를 사용하여 개발 중 사용된 것과 동일한 버전의 라이브러리를 사용할 수 있습니다.
하드웨어 설정
다음은 위 섹션에 나열된 필수 하드웨어를 사용하여 BLEBoy를 구성하기 위한 설정 지침입니다:
- 각 Feather 및 Featherwing에 수컷 헤더를 납땜합니다.
- Joy Featherwing에서 보드 바닥면을 보고 핀 27 앞의 Option Interrupt Pin 패드에 납땜합니다.
- Tripler에 암컷 헤더를 납땜합니다.
- 3개의 Feather 보드를 모두 Tripler에 연결합니다(순서는 상관없지만, 간단하게 하기 위해 OLED를 맨 위, nRF52를 중간, Joy를 맨 아래에 두었습니다).
소프트웨어 설치
BLEBoy 코드로 nRF52 Feather를 프로그래밍하려면 다음 단계를 따르십시오:
- Arduino IDE를 설치합니다.
- Arduino IDE 내에 Adafruit nRF52 Feather 보드 리소스를 설치합니다(https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup 참조).
- nRF52 보드 버전 0.6.0을 기준으로 개발 및 테스트되었습니다. 다른 버전에서는 성공 여부가 다를 수 있습니다.
- 3rd party Arduino 라이브러리를 설치합니다(위의 필수 Arduino 라이브러리 섹션에 나열됨).
- 이 저장소의 Bluetooth52Lib 폴더로 Adafruit Bluetooth52Lib를 교체합니다.
- 이 저장소의 libraries 폴더에 있는 수정된 arduino-menusystem 라이브러리를 설치합니다.
- BLEBoy를 nRF52 Feather에 업로드합니다.
- nRF52 Feather에 직렬 연결을 설정합니다(9600 baud).
- (선택 사항) OOB NFC 페어링을 위해 PN532를 설정합니다.
Debian에 Adafruit nRF52 리소스와 함께 Arduino 설치
사용자 정의 Bluefruit52Lib 설치
- 사용자 정의 Bluefruit52Lib 폴더를 다음 위치로 복사합니다(<version>은 설치 환경에 따라 다릅니다):
- 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
3rd Party 라이브러리 설치
- 필수 Arduino 라이브러리에 나열된 3rd party 라이브러리를 설치합니다.
- BLEBoy libraries 폴더에서 사용자 Arduino 라이브러리 폴더로 arduino-menusystem을 복사합니다.
또는
- "libraries" 폴더를 사용자 Arduino 라이브러리 폴더로 복사합니다.
- 일반적으로 ~/Arduino/libraries 또는 C:\Users\ <user> \Documents\Arduino\libraries에 있습니다.
(선택 사항) NFC를 통한 OOB 페어링용 PN352 설치