藍(lán)牙基礎(chǔ)(五):藍(lán)牙數(shù)據(jù)安全、可靠性、組成與處理流程
liwen01 2025.10.02
前言
WiFi、藍(lán)牙都是使用無線電進(jìn)行數(shù)據(jù)交互,但是無線電是不可靠的傳輸,它會(huì)反射、散射、折射、衍射還會(huì)相互干涉。從用戶的體驗(yàn)來看,就是無線信號(hào)強(qiáng)度變?nèi)酰?span data-pm-slice="1 1 ["para",{"tagName":"section","attributes":{"data-tool":"mdnice編輯器","data-website":"https://www.mdnice.com","style":"margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 0px;padding-bottom: 0px;padding-left: 10px;padding-right: 10px;background-attachment: scroll;background-clip: border-box;background-color: rgba(0, 0, 0, 0);background-image: none;background-origin: padding-box;background-position-x: 0%;background-position-y: 0%;background-repeat: no-repeat;background-size: auto;width: auto;font-family: PingFangSC-regular, sans-serif;font-size: 16px;color: rgb(0, 0, 0);line-height: 1.5em;word-spacing: 0em;letter-spacing: 0em;word-break: break-word;overflow-wrap: break-word;text-align: left;","data-pm-slice":"0 0 []"},"namespaceURI":"http://www.w3.org/1999/xhtml"},"para",{"tagName":"p","attributes":{"data-tool":"mdnice編輯器","style":"color: rgb(0, 0, 0);font-size: 15px;line-height: 1.8em;letter-spacing: 0em;text-align: left;text-indent: 0em;margin-top: 0px;margin-bottom: 0px;margin-left: 0px;margin-right: 0px;padding-top: 8px;padding-bottom: 8px;padding-left: 0px;padding-right: 0px;"},"namespaceURI":"http://www.w3.org/1999/xhtml"}]">連接中斷、掉線、音頻卡頓、失真、配對困難、傳輸速率下降等。
為解決無線通信中的各種問題,藍(lán)牙模塊在物理層、鏈路層、軟件協(xié)議棧上都做了些不同的處理,使不可靠的無線傳輸逐漸地變?yōu)榭煽康臄?shù)據(jù)傳輸。
(一)無線通信中的不可靠性
無線信號(hào)通信中的不可靠性,一部分源自于無線信號(hào)衰減、干擾,另一部分源自于無線數(shù)據(jù)的數(shù)據(jù)安全。
(1)無線電信號(hào)衰減
信號(hào)從發(fā)射端傳播到接收端過程中,強(qiáng)度逐漸減弱的現(xiàn)象稱為信號(hào)衰減,衰減的原因有:
- 自由空間路徑損耗
- 穿透損耗(Penetration Loss)
- 多徑效應(yīng)(Multipath Fading)
- 噪聲干擾
- 天線方向性與增益
(a)自由空間路徑損耗
路徑損耗是指電磁波從發(fā)射天線傳播到接收天線的過程中,信號(hào)強(qiáng)度的衰減。
即使在沒有障礙物、沒有反射、沒有散射的理想環(huán)境中,信號(hào)也會(huì)衰減,這種損耗就叫自由空間路徑損耗。
(b)穿透損耗
穿透損耗是指電磁波在穿過某種物體(例如墻壁、窗戶、門、地板等)時(shí),由于能量的吸收、反射、散射和折射等作用,導(dǎo)致信號(hào)強(qiáng)度降低的現(xiàn)象。
常見的如在擁擠的地鐵上,手機(jī)放在口袋中,無線耳機(jī)有時(shí)就會(huì)出現(xiàn)斷斷續(xù)續(xù)的情況,主要原因是因?yàn)闊o線電穿透人體后信號(hào)強(qiáng)度降低了,導(dǎo)致數(shù)據(jù)接收不穩(wěn)定。
(c)多徑損耗
在無線電波傳播過程中,信號(hào)不僅會(huì)沿著直線路徑從發(fā)射端傳到接收端,還可能被周圍的物體(如建筑物、墻壁、地面等)反射、折射、散射或繞射,形成多個(gè)路徑同時(shí)到達(dá)接收端的現(xiàn)象,這就叫做多徑傳播(Multipath Propagation)。
而由于這些路徑的長度不同、到達(dá)時(shí)間不同、相位不同,它們在接收端會(huì)疊加,有時(shí)候會(huì)相互增強(qiáng),有時(shí)候卻會(huì)相互抵消,產(chǎn)生信號(hào)的波動(dòng),這種現(xiàn)象造成的信號(hào)衰減就稱為 多徑損耗(Multipath Loss)
這也叫電磁波的干涉

(d)噪聲干擾
藍(lán)牙標(biāo)準(zhǔn)使用的是2.4 GHz ISM(Industrial, Scientific and Medical)頻段。 這個(gè)頻段是與Wi-Fi(2.4GHz)重合的。
除了WiFi,還有微波爐、ZigBee、LoRa、等各種設(shè)備都是運(yùn)行在該頻段,它們間相互干擾,對于藍(lán)牙而言,就容易出現(xiàn)上面提到的:連接中斷、掉線、音頻卡頓、失真、配對困難、傳輸速率下降等問題。
(e)天線方向性與增益
方向性描述了天線把能量集中到某個(gè)方向的能力。
- 如果一個(gè)天線把能量平均地向各個(gè)方向輻射,它被稱為全向天線(Omnidirectional)。
- 如果一個(gè)天線在某些方向上集中發(fā)射/接收,它被稱為定向天線(Directional)。
全向天線:像一個(gè)燈泡,360° 輻射,適合覆蓋大范圍但距離較近的區(qū)域
定向天線:像手電筒,能量集中在一個(gè)方向,適合遠(yuǎn)距離通信
天線增益(Antenna Gain)表示天線將電磁能量聚焦到某個(gè)方向的能力,用來衡量信號(hào)強(qiáng)度的提升程度,通常單位是 dBi(相對于理想全向天線的增益)。
增益越高 → 信號(hào)在特定方向上越強(qiáng) → 能傳播得更遠(yuǎn)。
不同國家地區(qū)對電磁輻射的要求不一樣,所以也不能簡單粗暴地通過提升增益來提高信號(hào)。
(2)無線數(shù)據(jù)的數(shù)據(jù)安全
(a)配對與身份驗(yàn)證安全
主要體現(xiàn)在配對過程易受攻擊
- 藍(lán)牙經(jīng)典配對(Legacy Pairing),尤其是早期版本(如2.0及以前)中使用固定PIN碼(如“0000”或“1234”)進(jìn)行配對,容易被暴力破解。
- 藍(lán)牙低功耗(BLE)配對,雖然引入了Just Works、Passkey Entry、Numeric Comparison、Out-of-Band 等多種配對方法,但其中 Just Works 模式缺乏身份驗(yàn)證,容易受到中間人攻擊(MITM)。
(b)加密與隱私問題
加密強(qiáng)度不足
- 藍(lán)牙使用對稱加密(如E0(經(jīng)典)、AES-CCM(BLE)),但如果加密密鑰協(xié)商過程被劫持或猜解,數(shù)據(jù)就可能被解密。
- 部分BLE設(shè)備根本未啟用加密或加密配置不當(dāng)。
(C)協(xié)議層漏洞
藍(lán)牙協(xié)議棧實(shí)現(xiàn)復(fù)雜,容易被發(fā)現(xiàn)安全漏洞。例如:
- BlueBorne攻擊:遠(yuǎn)程執(zhí)行代碼漏洞;
- SweynTooth漏洞組:影響B(tài)LE協(xié)議棧的連接和安全過程;
- BrakTooth攻擊:針對藍(lán)牙通信協(xié)議棧中的緩沖區(qū)管理漏洞。
- 廣播包攻擊:攻擊者可發(fā)送惡意廣播包或利用UUID欺騙誘導(dǎo)設(shè)備連接錯(cuò)誤的服務(wù)或特征。
為了解決無線網(wǎng)絡(luò)的不可靠問題,藍(lán)牙對信號(hào)進(jìn)行了調(diào)制處理,在鏈路層將數(shù)據(jù)進(jìn)行進(jìn)一步的封裝,然后再對數(shù)據(jù)進(jìn)行加密、白化、FEC編碼等操作,使藍(lán)牙無線信號(hào)逐漸地變?yōu)榭煽康臄?shù)據(jù)傳輸方式。
(二)藍(lán)牙的調(diào)制方式
無線信道(天線發(fā)射、接收)只能處理模擬信號(hào),也就是連續(xù)變化的波(電磁波)。
調(diào)制的本質(zhì)是把數(shù)字?jǐn)?shù)據(jù)“轉(zhuǎn)換”成可以在無線信道中傳輸?shù)牟ㄐ?/strong>,比如頻率、相位、幅度的變化。
對無線信號(hào)進(jìn)行調(diào)制,是為了能高效、可靠地通過無線信道傳輸數(shù)據(jù)。
在藍(lán)牙設(shè)備中,不同工作模式下的調(diào)試方式都不一樣。
| 模式 | 調(diào)制方式 | 速率 | 備注 |
|---|---|---|---|
| BR | GFSK | 1 Mbps | 最基礎(chǔ)的藍(lán)牙模式 |
| EDR | π/4-DQPSK, 8DPSK | 2 / 3 Mbps | 提升數(shù)據(jù)速率的經(jīng)典藍(lán)牙模式 |
| BLE 1M | GFSK | 1 Mbps | BLE 默認(rèn)模式,低功耗 |
| BLE 2M | GFSK | 2 Mbps | BLE 高速模式 |
| BLE Coded | GFSK + FEC 編碼 | 125/500 kbps | BLE 長距離模式(低速高可靠) |
(1)GFSK(高斯頻移鍵控)調(diào)制方式
使用場景:BR、LE 1M/2M PHY
特點(diǎn):
- 抗干擾能力較好(頻移調(diào)制易區(qū)分)
- 實(shí)現(xiàn)簡單,適合低功耗設(shè)備
- 頻譜利用效率中等
使用它的原因:
- 早期藍(lán)牙(BR)注重簡單實(shí)現(xiàn)與穩(wěn)定性;
- 低功耗藍(lán)牙(LE)強(qiáng)調(diào)低功耗與低復(fù)雜度,GFSK非常適合;
(2)π/4-DQPSK(π/4-差分四相位鍵控)
使用場景:EDR(2 Mbps)
特點(diǎn):
- 比GFSK傳輸速率更高
- 相鄰符號(hào)差分編碼,便于相位變化檢測
- 對于接收器的相位同步要求較低
使用它的原因:
- 為了在保持較好誤碼率的同時(shí)提升傳輸速率,引入相位調(diào)制;
- π/4偏移設(shè)計(jì)避免了相位跨越 180°,提升解調(diào)穩(wěn)定性;
(3) 8DPSK(8相位差分鍵控)
使用場景:EDR(3 Mbps)
特點(diǎn):
- 使用8種相位,單符號(hào)攜帶3 bit信息
- 頻譜效率更高,但誤碼率較高
使用它的原因:
- 為了進(jìn)一步提高速率;
- 但對噪聲敏感,接收機(jī)設(shè)計(jì)復(fù)雜,因此只用于短距離高帶寬應(yīng)用;
(4)LE Coded (帶前向糾錯(cuò)的LE編碼)
使用場景:LE Long Range(遠(yuǎn)程模式,1M PHY編碼)
調(diào)制:GFSK + FEC(前向糾錯(cuò))
特點(diǎn):
- 傳輸速率變慢(125 kbps / 500 kbps)
- 增強(qiáng)抗干擾性和通信距離(最長可達(dá)1公里)
使用它的原因:
- 用于低速、遠(yuǎn)距離、可靠性高的場景(如IoT、Beacon)
(三)藍(lán)牙鏈路層數(shù)據(jù)包格式
這里介紹的是藍(lán)牙鏈路層的數(shù)據(jù)包格式,其中BR與EDR鏈路層數(shù)據(jù)包格式是相似的,但它們與 BLE 在鏈路層的數(shù)據(jù)包格式卻差異很大
(1)BR 數(shù)據(jù)包格式
(a)Access Code(接入碼)
所有藍(lán)牙數(shù)據(jù)包的開頭都有一個(gè)接入碼。這個(gè)碼由主設(shè)備分配,是從設(shè)備同步和識(shí)別主設(shè)備的關(guān)鍵部分。接收端通過匹配 Access Code 來判斷該包是否是發(fā)送給自己的。
Access Code 的長度為 72 bit,主要作用是:
- 喚醒接收設(shè)備;
- 實(shí)現(xiàn)設(shè)備識(shí)別;
- 提供同步信息(位對齊和時(shí)鐘同步)。
(b)Header(包頭)
包頭攜帶的是控制信息,該控制信息控制著鏈路層的邏輯和通信協(xié)議流程,并且為了增加可靠性,會(huì)進(jìn)行 3 次重復(fù)發(fā)送 + 多比特糾錯(cuò)。
總長度是 54 bit ,是由 18bit 的信息重復(fù) 3 次構(gòu)成。
包含字段有:
- AM_ADDR(Active Member Address):用于標(biāo)識(shí)從設(shè)備;
- Type:包類型(如:DM1、DH1 等);
- Flow:流控制位;
- ARQN:確認(rèn)請求;
- SEQN:順序控制;
- HEC(Header Error Check):校驗(yàn)頭部。
(c)Payload(負(fù)載)
負(fù)載中包含實(shí)際的數(shù)據(jù)內(nèi)容。不同的 BR 包類型支持不同長度的 Payload(如 DM1、DH1、DM3、DH3、DM5、DH5),總的長度范圍是0 ~ 2745 bit
主要結(jié)構(gòu)有:
- Payload Header(有效載荷頭);
- Payload Body(有效載荷體);
- CRC(循環(huán)冗余校驗(yàn),為可選)
(d)調(diào)制方式
在 BR 數(shù)據(jù)包中,所有的字段和數(shù)據(jù)都是使用 GFSK 調(diào)制方式。
(2)EDR 數(shù)據(jù)包格式
EDR 鏈路層數(shù)據(jù)包中包含了 6 個(gè)組成部分,使用了兩種不同的調(diào)制模式。
(a)Access Code(接入碼) 與 Header(頭部)
BR 與 EDR 在Access Code(接入碼) 與 Header(頭部) 部分是完全相同的。
它們使用相同的數(shù)據(jù)結(jié)構(gòu),以及它們都是采用 GFSK 調(diào)制方式。
(b)Guard(保護(hù)間隔)
Guard 是 EDR 獨(dú)有的部分,因?yàn)?EDR 使用兩種調(diào)制模式。
EDR 數(shù)據(jù)部分使用 DPSK(差分相移鍵控)調(diào)制,而前面的部分用的是 GFSK(高斯頻移鍵控),中間需要一點(diǎn)間隔時(shí)間(guard time)切換調(diào)制方式,避免誤碼。
Guard 的作用就是為后續(xù)使用不同調(diào)制方式的部分做準(zhǔn)備,避免調(diào)制沖突。
(c)Sync(同步)
Sync(同步)的作用是為了接收端的解調(diào)器可以正確解碼 DPSK 信號(hào)。
Sync 字段有特定比特圖案,幫助接收端鎖定時(shí)鐘與相位,對準(zhǔn) DPSK 調(diào)制的起始點(diǎn)。
(d)Enhanced Data Rate Payload(增強(qiáng)速率載荷)
該部分是承載實(shí)際數(shù)據(jù)內(nèi)容的部分。
它使用 π/4-DQPSK 或 8DPSK 調(diào)制技術(shù),以更高的速率(2 Mbps 或 3 Mbps)傳輸數(shù)據(jù),相比基本速率的 GFSK 更快。
- π/4-DQPSK:每個(gè)符號(hào)傳輸 2 比特。
- 8DPSK:每個(gè)符號(hào)傳輸 3 比特。
(e)Trailer(結(jié)尾段)
Trailer 是 EDR 數(shù)據(jù)包中用于“優(yōu)雅地收尾”DPSK 調(diào)制段的符號(hào)填充區(qū),確保收發(fā)雙方同步、調(diào)制狀態(tài)切換順暢,并不承載實(shí)際業(yè)務(wù)數(shù)據(jù)。
它的具體符號(hào)由控制邏輯決定,長度也不是固定的。
(3)BR 與 EDR 數(shù)據(jù)包格式的區(qū)別
| 對比項(xiàng) | BR | EDR |
|---|---|---|
| 調(diào)制方式 | 全程 GFSK | GFSK(前導(dǎo))+ DPSK(數(shù)據(jù)) |
| 數(shù)據(jù)率 | 1 Mbps | 2 Mbps 或 3 Mbps |
| 結(jié)構(gòu)復(fù)雜度 | 簡單 | 復(fù)雜(多字段用于調(diào)制轉(zhuǎn)換) |
| 新增字段 | 無 | Guard、Sync、Trailer |
| 應(yīng)用 | 基本數(shù)據(jù)傳輸、語音 | 高速音頻、更快文件傳輸 |
因?yàn)?EDR 對帶寬的要求比較高,所以在一個(gè)數(shù)據(jù)包中,它使用了兩種調(diào)制方式。
為了兩種調(diào)制方式能更好地同步,所以新增加了Guard、Sync、Trailer 字段。
整體而言,BR 與 EDR 在鏈路層中的數(shù)據(jù)包格式是相似的。
(4)BLE 數(shù)據(jù)包格式
這是 藍(lán)牙5.0及以上在低功耗通信中引入的一種編碼方式,用于擴(kuò)展通信距離(Long Range 功能)。
它使用前向糾錯(cuò)(FEC)和編碼因子 S=2 或 S=8 進(jìn)行低速率的高可靠通信。
BLE 整個(gè)數(shù)據(jù)包可分為兩個(gè)部分:
- FEC Block 1:固定長度、使用 S=8編碼;
- FEC Block 2:可變長度、使用 S=2或S=8編碼,具體由 CI 決定。
(a)Preamble(前導(dǎo)碼)
用于接收端的頻率同步和位同步,固定長度為10bit(1010101010),編碼后為80 μs,它固定使用 S=8 編碼 。
它主要用于無線同步,幫助接收端完成:自動(dòng)增益控制(AGC)、解調(diào)器定時(shí)同步、濾波器穩(wěn)定。
(b)Access Address(接入地址)
長度為 32 bits,編碼后為 256 μs 。 每個(gè)連接事件中唯一的 32 bit地址。
同時(shí),也用于標(biāo)識(shí)連接和廣播事件,如果是廣播,通常固定為:0x8E89BED6(廣播包)
(c)CI(Coding Indicator)
長度為 2 bits(編碼后 16 μs)
作用:
- 指示 FEC Block 2 使用的編碼因子 S;
S=2→ 高速傳輸;S=8→ 高可靠傳輸(更適合遠(yuǎn)距離或低信噪比)。
(d)TERM1(終止字段1)
長度為 3 bits,編碼后 24 μs
作用是:FEC Block 1 的結(jié)尾標(biāo)記,用于接收端同步恢復(fù)。
(e)PDU(Protocol Data Unit)
該部分為鏈路層實(shí)際的數(shù)據(jù),長度為:1~255 Byte
(f)CRC(循環(huán)冗余校驗(yàn))
CRC 是用作鏈路層校驗(yàn),長度為 24 bits,編碼后為 24 × S μs
CRC 確保 PDU 數(shù)據(jù)的完整性。
(g)TERM2(終止字段2)
長度為:3 bits(編碼后為 3 × S μs) 它是FEC Block 2 的結(jié)尾標(biāo)志
(5)BLE 與 EDR 數(shù)據(jù)包格式格式的區(qū)別
| 項(xiàng)目 | BLE | EDR |
|---|---|---|
| 用途定位 | 低功耗、低速、遠(yuǎn)距離通信(如IoT、穿戴設(shè)備) | 面向高速數(shù)據(jù)傳輸(如音頻、文件傳輸) |
| 調(diào)制方式 | GFSK + FEC(S=2或S=8) | GFSK(前導(dǎo)段) + π/4-DQPSK or 8DPSK(有效載荷段) |
| FEC | FEC Block 1 和 Block 2 | 不支持FEC,依靠ARQ重傳機(jī)制 |
| 同步機(jī)制 | 使用 Preamble + Access Address + Coding Indicator + TERM | 使用 Access Code 進(jìn)行同步 |
| 速率 | 較低,S=8時(shí)只有 ~125 kbps,S=2時(shí)為 ~500 kbps | 2 Mbps(π/4-DQPSK)或 3 Mbps(8DPSK) |
| 復(fù)雜度 | 結(jié)構(gòu)復(fù)雜,字段多、時(shí)序明確,適配糾錯(cuò)和冗余 | 結(jié)構(gòu)較簡單,強(qiáng)調(diào)速率優(yōu)先 |
| 適用場景 | IoT、低功耗傳感器、BLE廣播、遠(yuǎn)距離設(shè)備通信 | 藍(lán)牙耳機(jī)、音頻傳輸、大文件傳輸 |
| 控制字段 | 有 CI(Coding Indicator)指示調(diào)制編碼 | 無明確調(diào)制指示字段 |
| 數(shù)據(jù)段 | 屬于 FEC Block 2,編碼后傳輸 | 直接使用DPSK調(diào)制方式傳輸 |
(四)藍(lán)牙數(shù)據(jù)處理流程
在上面鏈路層數(shù)據(jù)包格式中,我們看到 BR 與 EDR 的包格式是相似的,它們的數(shù)據(jù)處理流程也是相似。
它們都有 HEADER 和 PAYLOAD 部分,在數(shù)據(jù)處理流程中,這兩部分又存在差異。
(1)BR/EDR Header 數(shù)據(jù)處理流程
Header 從生成到被接受被解析,需要經(jīng)過下面一個(gè)流程:
TX header → HEC generation → whitening → FEC encoding → RF interface(發(fā)送)
→ RF interface(接收)→ decoding → de-whitening → HEC checking → RX header
(a)HEC generation(Header Error Check 生成)
在藍(lán)牙 BR/EDR 模式中,鏈路層包頭是18 bit(3字節(jié)中的前18位),藍(lán)牙協(xié)議為其添加 8 bit的 HEC 校驗(yàn)碼,用于 檢測頭部是否在傳輸過程中出現(xiàn)比特錯(cuò)誤。
HEC generation 的目的:
- 檢測鏈路層包頭的傳輸錯(cuò)誤
- HEC 只保護(hù) header(18 bit),payload 的錯(cuò)誤校驗(yàn)由 CRC24 來完成
- HEC 檢查是早期過濾機(jī)制,快速檢測非法包,節(jié)省解碼資源
- HEC 校驗(yàn)失敗時(shí),藍(lán)牙設(shè)備不會(huì)處理該包(例如不會(huì)回應(yīng) ACK)
HEC 有專門的生成算法,對于接收方,接到 Header 后按算法校驗(yàn)即可。
(b) Whitening(數(shù)據(jù)白化)與 de-whitening
Whitening 是一種數(shù)據(jù)隨機(jī)化處理技術(shù),目的是避免數(shù)據(jù)中出現(xiàn)長時(shí)間的 0 或 1 序列,以改善頻譜分布、降低誤碼率,提高抗干擾能力。
數(shù)據(jù)白化的目的:
-
減少長時(shí)間不變的比特模式(如 00000 或 11111):
- 長時(shí)間重復(fù)比特會(huì)導(dǎo)致載波頻偏檢測困難,降低接收端靈敏度。
-
改善頻譜平坦性:
- 數(shù)據(jù)白化使得信號(hào)在頻域上能量分布更均勻,降低干擾和串?dāng)_。
-
避免信道的系統(tǒng)性偏差被數(shù)據(jù)“觸發(fā)”:
- 如:調(diào)制器某些位模式會(huì)引起失真或功率峰值。
Whitening 的工作原理:
發(fā)送端:藍(lán)牙使用 線性反饋移位寄存器(LFSR) 生成偽隨機(jī)序列,并將其與原始數(shù)據(jù)進(jìn)行 按位異或(XOR),從而達(dá)到擾動(dòng)的目的。
接收端:只需要使用相同的 LFSR 初始化參數(shù),對接收到的數(shù)據(jù)再次 XOR,即可恢復(fù)原始數(shù)據(jù)(de-whitening)。
數(shù)據(jù)經(jīng)過白化之后,也就不會(huì)存在多個(gè)連續(xù)的 0 或是多個(gè)連續(xù)的 1 了。
(c)FEC encoding(前向糾錯(cuò)編碼)
FEC(前向糾錯(cuò)編碼)是一種在發(fā)送數(shù)據(jù)時(shí)添加冗余信息的技術(shù),以便接收端即使在數(shù)據(jù)傳輸中出現(xiàn)部分比特錯(cuò)誤,也可以檢測并糾正錯(cuò)誤,而不必請求重傳。
在藍(lán)牙 BR/EDR 模式中,F(xiàn)EC 主要用于增強(qiáng)鏈路的可靠性,特別是在噪聲大、信號(hào)弱的環(huán)境下。
在 BR/EDR中, FEC encoding 的使用范圍是:
| 數(shù)據(jù)部分 | 使用 FEC | 編碼類型 |
|---|---|---|
| Access Code | 是 | 1/3 Rate FEC |
| Header | 是 | 1/3 Rate FEC |
| Payload | 可選 | 1/3 或 2/3 Rate FEC,或不使用 |
藍(lán)牙支兩種 FEC 編碼方式:
- 1/3 Rate FEC(重復(fù)編碼)
- 2/3 Rate FEC(卷積編碼)
具體編碼細(xì)節(jié)這里不做介紹了,對應(yīng)于接收端,它需要做的是解碼。
(d)RF Interface(射頻接口)
RF Interface(射頻接口) 是藍(lán)牙協(xié)議棧的物理層(PHY)部分,負(fù)責(zé)將經(jīng)過編碼和調(diào)制的數(shù)據(jù)轉(zhuǎn)換為無線電信號(hào)(電磁波)進(jìn)行無線傳輸,并在接收端完成反向過程。
RF Interface 發(fā)送端的主要任務(wù)有:
- 接收調(diào)制后的比特流
- 載波調(diào)制(如 GFSK、π/4-DQPSK、8DPSK)
- 頻率選擇/跳頻控制
- 發(fā)射功率控制
- 模擬信號(hào)處理(上變頻、放大)
- 通過天線發(fā)送 RF 信號(hào)
RF Interface 接收端的主要任務(wù)有:
- 接收天線接收電磁波
- 低噪聲放大器(LNA)放大接收信號(hào)
- 下變頻器(Mixer)將 RF 信號(hào)轉(zhuǎn)換為中頻/基帶
- 濾波器去除帶外干擾
- 模數(shù)轉(zhuǎn)換(ADC)并送入基帶處理模塊
RF Interface 還需要控制發(fā)送與接收模式的切換,藍(lán)牙 RF 與 與WiFi 一樣,都是半雙工工作模式,不能同時(shí)收發(fā)數(shù)據(jù),它們是時(shí)分復(fù)用的模式。
(2)BR/EDR Payload 數(shù)據(jù)處理流程
在 BR/EDR中,包頭與負(fù)載數(shù)據(jù)的處理方式大致是相同的,但也存在差異。
在同一個(gè)數(shù)據(jù)包中,為啥要做兩種不同的數(shù)據(jù)處理方式呢?這背后的設(shè)計(jì)邏輯是:
- Header 是整個(gè)包的
導(dǎo)航信息,必須保證極高的可靠性,因此強(qiáng)制使用 FEC 和 HEC,即便犧牲帶寬。 - Payload 是實(shí)際數(shù)據(jù)內(nèi)容,容許根據(jù)場景權(quán)衡可靠性 vs 吞吐率,因而 FEC 可選、支持加密、帶 CRC、長度靈活。
較大區(qū)別的是數(shù)據(jù)加密和CRC校驗(yàn)
(1)CRC → E0
先計(jì)算 CRC,再進(jìn)行 E0 加密
加密流程
- 計(jì)算 CRC:對原始數(shù)據(jù)計(jì)算 循環(huán)冗余校驗(yàn)(CRC),并附加到數(shù)據(jù)末尾。
- 加密(E0 流密碼):使用 E0 流密碼(E0 Cipher) 對整個(gè)數(shù)據(jù)包(包括 CRC)進(jìn)行加密。
解密流程
- 解密(E0 流密碼):先用 E0 算法解密整個(gè)數(shù)據(jù)包(包括 CRC)。
- 校驗(yàn) CRC:解密后再進(jìn)行 CRC 校驗(yàn),以驗(yàn)證數(shù)據(jù)是否正確。
優(yōu)點(diǎn):
- 保護(hù)了 CRC 校驗(yàn)碼,如果數(shù)據(jù)被篡改,解密后 CRC 可能不匹配,從而檢測到篡改。
- E0 是流加密,適用于低時(shí)延數(shù)據(jù)傳輸。
缺點(diǎn):無法抵御主動(dòng)篡改攻擊(bit flipping 攻擊)
- 由于 E0 是流密碼(類似于 XOR),攻擊者可能可以篡改加密數(shù)據(jù),使得解密后仍然通過 CRC 校驗(yàn)。
- 舉例:攻擊者可以修改密文中的特定位,使得解密后仍然是一個(gè)有效的數(shù)據(jù)包。
(1)AES-CCM → CRC
先加密數(shù)據(jù),再計(jì)算 CRC
加密流程
- AES-CCM 加密:使用 AES-CCM(AES 計(jì)數(shù)器模式 + CBC-MAC)對原始數(shù)據(jù)進(jìn)行加密。
- 計(jì)算 CRC:對加密后的數(shù)據(jù)計(jì)算 CRC 校驗(yàn),并附加到數(shù)據(jù)末尾。
解密流程
- CRC 校驗(yàn):先進(jìn)行 CRC 校驗(yàn),以檢測傳輸過程中是否發(fā)生錯(cuò)誤。
- AES-CCM 解密:對數(shù)據(jù)進(jìn)行 AES-CCM 解密,恢復(fù)原始數(shù)據(jù)并驗(yàn)證 MIC(消息完整性碼)。
優(yōu)點(diǎn):更高的安全性、更強(qiáng)的抗篡改能力
- AES-CCM 包含 MIC(消息完整性碼),可以防止數(shù)據(jù)被篡改。
- 即使攻擊者篡改了加密數(shù)據(jù),MIC 校驗(yàn)會(huì)失敗,數(shù)據(jù)包會(huì)被丟棄。- 比 E0 更安全,因?yàn)?MIC 機(jī)制可抵御比特翻轉(zhuǎn)攻擊。
缺點(diǎn):計(jì)算開銷較高
- 需要額外計(jì)算 MIC,并進(jìn)行 AES 計(jì)算,相較于 E0 流密碼有更高的計(jì)算成本。
- 但 BLE 設(shè)備通常是低功耗設(shè)備,AES-CCM 經(jīng)過優(yōu)化,可在硬件層面高效執(zhí)行。
(3)BLE Uncoded PHYs 數(shù)據(jù)處理流程
這里我們介紹的是BLE PDU(數(shù)據(jù)負(fù)載)部分的數(shù)據(jù)處理流。
BLE的PDU又因?yàn)閿?shù)據(jù)是否使用FEC編碼而區(qū)分為:BLE Uncoded PHYs 和 BLE coded PHYs
BLE Uncoded PHYs
BLE 使用的加密,就是上面介紹的AES-CCM → CRC,白化過程也相似,不同的是調(diào)制模式和 RF 模塊 ,這部分前面也已有介紹。
數(shù)據(jù)加密部分,BLE 與 EDR 之間的區(qū)別:
| 對比項(xiàng) | BLE | EDR |
|---|---|---|
| 加密算法 | AES-CCM(128-bit) | E0 stream cipher(40/56/128bie) |
| 密鑰長度 | 固定 128 位(強(qiáng)安全性) | 最長 128 位,早期設(shè)備可能是 40 或 56 位 |
| 安全管理協(xié)議 | SMP(Security Manager Protocol) | HCI、LMP、Link Manager |
| 加密層級(jí) | 僅加密 鏈路層 Payload | 加密整個(gè) Baseband 層(基本帶幀結(jié)構(gòu)) |
| 加密啟動(dòng)時(shí)機(jī) | 連接建立后,主設(shè)備發(fā)起加密請求 | 連接建立期間協(xié)商密鑰,立即啟用加密 |
| 抗攻擊能力 | 強(qiáng)(AES 標(biāo)準(zhǔn),使用隨機(jī)數(shù)生成密鑰) | 中等偏弱(E0 被認(rèn)為不夠強(qiáng)) |
| 防重放攻擊 | 有(Nonce + Packet Counter) | 無明顯防重放機(jī)制 |
| 是否支持認(rèn)證 | 支持,使用配對和綁定機(jī)制 | 支持,使用 PIN 碼等驗(yàn)證方式 |
AES-CCM 與 E0 加密的區(qū)別
| 特性 | AES-CCM | E0 |
|---|---|---|
| 標(biāo)準(zhǔn) | NIST 標(biāo)準(zhǔn)對稱加密算法 | 藍(lán)牙自定義流密碼 |
| 安全性 | 被廣泛認(rèn)為是安全的 | 已經(jīng)被研究界攻擊過多次 |
| 用途 | BLE / Zigbee / LoRa 等標(biāo)準(zhǔn) | 僅用于藍(lán)牙 EDR Baseband 層 |
(4)BLE coded PHYs 數(shù)據(jù)處理流程
BLE coded PHYs 與 BLE Uncoded PHYs 的區(qū)別是多加了FEC encoding 和 Pattern mapper 步驟。
(a)FEC encoding
LE Coded PHY 使用的是一種稱為 (3,1) 確定性卷積碼(deterministic convolutional code),也被稱作 Rate 1/3 卷積編碼。
核心特征:
- 輸入1比特,輸出3比特
- 編碼增大了冗余,從而提升解碼的魯棒性
- 多出的比特可以被接收方用于糾錯(cuò)
(b)Pattern Mapper
Pattern Mapper 的目的是將 FEC 輸出的比特流映射為更長的符號(hào)序列(spreading pattern)以增強(qiáng)信號(hào)可靠性。
- 它增加了冗余度,
- 提高了在遠(yuǎn)距離和低信噪比情況下的解碼成功率。
Pattern Mapping 的規(guī)則:
- 每一個(gè)比特都被映射為一個(gè)預(yù)定義的symbol pattern。
這些符號(hào)不是新的信息位,而是用來占據(jù)無線信道,提高解碼器從噪聲中恢復(fù)原始比特的能力。
具體 Pattern Mapping 表:
藍(lán)牙規(guī)范定義了一個(gè)固定的映射表:
| FEC 比特 | S=2 映射符號(hào)模式(2bit) | S=8 映射符號(hào)模式(8bit) |
|---|---|---|
| 0 | 01 |
00001111 |
| 1 | 10 |
11110000 |
對于 S=2:
0?011?10
對于 S=8:
0?000011111?11110000
結(jié)尾
藍(lán)牙模塊為了使不可靠的無線信號(hào)變?yōu)榭煽康臒o線數(shù)據(jù)通信,在數(shù)據(jù)包、數(shù)據(jù)處理流程、信道、協(xié)議棧等等方面都做了很多處理。
這里主要介紹了藍(lán)牙信號(hào)的干擾,鏈路層各模式下的數(shù)據(jù)包組成、數(shù)據(jù)處理流程,下一章我們將介紹藍(lán)牙的傳輸層 HCI 。

浙公網(wǎng)安備 33010602011771號(hào)