本節書摘來自華章社群《低功耗藍牙開發權威指南》一書中的第2章,第2.5節為成功而設計,作者 (英)robin heydon,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視
2.5 為成功而設計
許多無線标準出師不利,原因在于一些無線電設計一旦受到歡迎,使用者數量不斷增加,往往導緻網絡擁塞不堪甚至無法工作。如果說有一件事藍牙做得很好,那便是它可以在非常擁擠的環境中工作。藍牙技術聯盟(sig)每年組織三次稱為unplugfest的測試活動,許多來自彼此競争的公司的工程師們聚到一起,測試他們即将投放市場的産品。這些測試揭示了這樣一個事實,即使酒店大廳同時出現了成百上千的無線裝置,藍牙依然能夠正常工作。無疑,低功耗藍牙繼承了這一點。
為成功而設計意味着無論是在擁擠的通勤火車或公共汽車上,還是進入熱鬧的體育場或演唱會的現場,每個人都應該能夠操作一些低功耗裝置。這意味着在一台裝置周圍的幾米内可能有成千上萬的裝置,但裝置發現和連接配接仍然能夠如期地運作。這也意味着,對一給定裝置能夠同時連接配接的裝置的數量不應有所限制。如果一台裝置想要和另一台裝置對話,它就一定能夠做到,無需擔心類似經典藍牙“同一時間隻允許七個從裝置進行連接配接”的限制。
除了裝置的密度,另一個在設計控制器時必須考慮的度量是安全系統。任何流行的無線電系統總是會招緻一些人對其進行攻擊,當涉及個人賬号和财産安全時,這一點就顯得更為重要。是以,必須使用最先進的安全和加密引擎。
除安全之外,如果一個人想随身攜帶多種裝置,鑒于它們的有限資源必須間歇地進行廣播,那麼隐私問題也必須加以解決。隐私是低功耗藍牙的一個主要設計目标。每個連接配接使用不同的簽名,并與連接配接雙方的身份資訊無關,這樣一來,攻擊者僅憑偵聽傳輸的資料包将無法猜測誰正走在大街上。此外,廣播時允許使用一類可解析的私有位址,隻有那些有身份識别密鑰的裝置能夠解析該位址,而惡意裝置将無法解析或跟蹤該位址。
另一個考慮的因素是,由于無線電無處不在,即使是單個比特的錯誤也可能導緻嚴重的後果。打個比方,如果由你控制一個排污閥,以保護漂亮的城市公園不被污水淹沒,你恐怕不會希望已經關閉的閥門由于某個誤比特而被錯誤地打開。為防止這種情況出現,要求資料包使用強循環備援校驗(crc)以防1、2、3、4、5位和所有奇數位産生錯誤。此外,如果想獲得更高的魯棒性還可以執行加密,資料将會附加一個不同的消息認證碼,確定其來自正确的發送方,防止攻擊者回複消息給排污閥。同時,屬性協定層也擁有高度的防護方案,它提供了一種稱為“準備屬性寫入”的能力,隻允許将通過驗證的傳回值寫入指定的屬性(而不允許寫入其他屬性)。由此可見,僅僅是為了控制“閥門”的一個比特,用到了14位元組的循環備援校驗和認證碼資料,足見低功耗藍牙的魯棒性。