簡體   English   中英

如何使用 Bluez5.50 使用 BLE 連接加密數據

[英]How to encrypt data using BLE connection using Bluez5.50

我正在處理一個處理數據傳輸的 C++ 項目。 我的系統由兩個不同的設備組成,它們必須以受信任的模式交換敏感數據。 為此,我在 Raspberry Pi 上下載並設置了最后一個 bluez 庫 (v5.50)。

  1. 是否有可能使用 bluez API 啟用數據加密?

谷歌搜索使用 BLE 加密機制的可能性,我發現了不一致的意見。 有人建議使用它,而其他人則不鼓勵它使用應用程序級加密,例如 Cripto++ 庫。

  1. 哪個是最好的解決方案?

謝謝

我的建議是始終加密連接。 請參閱此答案,其中解釋了加密連接與開放連接的好處和重要性。

關於加密連接,您可以通過與設備配對輕松完成此操作。 在 BLE 中,配對允許加密連接數據包。 使用 BlueZ,您可以使用 bluetoothctl 命令從命令行輕松執行此操作,如下所示:-

bluetoothctl
[bluetoothctl] connect 00:11:22:33:44:55
[bluetoothctl] pair 00:11:22:33:44:55

事先,請確保您的 BlueZ 設備可以執行/接受連接和配對如下:-

btmgmt connectable on
btmgmt bondable on
btmgmt io-cap 
btmgmt 3

最后一個命令將您的 IO 功能設置為 NoInputNoOutput,但您可以將其更改為以下值之一:-

0       DisplayOnly
1       DisplayYesNo
2       KeyboardOnly
3       NoInputNoOutput
4       KeyboardDisplay

但是,如果這樣做,則需要在啟動 bluetoothctl 時傳遞等效的命令行選項,如下所示:-

bluetoothctl --agent KeyboardOnly
bluetoothctl --agent KeyboardDisplay
bluetoothctl --agent NoInputNoOutput
bluetoothctl --agent DisplayOnly 

如果您想為此查看底層 API,請查看BlueZ 源代碼,您可以從client/main.c開始進行連接和配對命令。

最后,正如 Solomon Slow 指出的那樣,如果您承諾保護敏感數據,那么您絕對應該選擇多級加密。 換句話說,鏈接以及數據在軟件中發送之前應該加密,如果您的設備支持硬件級加密,那么也應該這樣做。

如需進一步閱讀 BLE 加密,請訪問藍牙規范版本 5.0,第 2 卷,第 H 部分,第 1 部分:安全概述。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM