项目简介
本项目基于C++和Python实现了BLE Public Key Authenticated Pairing(BLE-PKAP)协议。该协议基于标准的BLE带外配对机制(LE SC OOB),利用受信任的椭圆曲线公私钥对实现设备间的相互认证,为BLE设备配对提供了更安全、灵活的解决方案,弥补了传统BLE认证方法的不足。
项目的主要特性和功能
- 安全配对:运用BLE-PKAP协议完成设备间的公钥认证配对,比传统BLE认证方法(Just-Works、Numeric Comparison、Passkey Entry)更安全、灵活。
- 双角色实现:包含运行在Nordic nRF52840 - DK开发板上的嵌入式响应器应用(C++实现)和运行在Linux上的Python发起器脚本,共同展示了BLE-PKAP相互认证在简单BLE交互中的应用。
- 设备交互:安全连接建立后,用户可通过发起器脚本与响应器设备交互,如控制LED开关、观察设备按钮按下状态。
- 日志记录:嵌入式应用利用SEGGER Real Time Transfer(RTT)功能输出日志,便于调试和跟踪。
安装使用步骤
安装前提条件
- 构建嵌入式应用需安装Nordic nRF5 SDK、相关命令行工具、合适的ARM gcc工具链以及常见构建工具(如make和ccache),还需安装SEGGER J - Link Software and Documentation Pack用于调试嵌入式应用或查看日志输出。
- 运行发起器应用需要Python 3,并安装
cryptography
和PyGObject
Python模块。
具体安装步骤如下:
bash
cd ~/Downloads
sudo dpkg -i JLink_Linux_V*_x86_64.deb
sudo usermod -a -G dialout ${USER}
sudo apt-get install git make ccache netcat-openbsd
pip3 install --user cryptography pygobject
构建嵌入式应用
bash
export NRF5_SDK_ROOT=${HOME}/tools/nRF5_SDK_17.0.2_d674dde
export NRF5_TOOLS_ROOT=${HOME}/tools/nRF-Command-Line-Tools
export GNU_INSTALL_ROOT=${HOME}/tools/gcc-arm-none-eabi-10.3-2021.07/bin/
export PATH=${PATH}:${NRF5_TOOLS_ROOT}/nrfjprog
cd ~/ble-pkap
make clean
make
初始化nRF52840 DK
在首次安装嵌入式应用之前,需要擦除nRF52840 - DK开发板的闪存并安装Nordic SoftDevice镜像。
bash
make erase
make flash-softdevice
烧录嵌入式应用
bash
make flash-app
查看日志输出
bash
./start-jlink-gdb-server.sh
运行发起器脚本
bash
sudo python3 ./ble-pkap-initiator.py <MAC-ADDRESS>
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】