藍牙協議分析(11)_BLE安全機制之SM


1. 前言

注1:此SM是Security Manager的縮寫,非彼SM,大家不要理解歪了!

書接上文,我們在“藍牙協議分析(10)_BLE安全機制之LE Encryption”中介紹了BLE安全機制中的終極武器----數據加密。不過使用這把武器有個前提,那就是雙方要共同擁有一個加密key(LTK,Long Term Key)。這個key至關重要,怎么生成、怎么由通信的雙方共享,關系到加密的成敗。因此藍牙協議定義了一系列的復雜機制,用於處理和加密key有關的操作,這就是SM(Security Manager)。

另外,在加密鏈路建立之后,通信的雙方可以在該鏈路上共享其它的key(例如在“藍牙協議分析(9)_BLE安全機制之LL Privacy”中提到的IRK),SM也順便定義了相應的規范。

2. Security Manager介紹

SM在藍牙協議中的位置如下圖:

SM_in_BLE_protocol

圖片1 SM_in_BLE_protocol

它的主要目的是為LE設備(LE only或者BR/EDR/LE)提供建立加密連接所需的key(STK or LTK)。為了達到這個目的,它定義了如下幾類規范:

1)將生成加密key的過程稱為Pairing(配對),並詳細定義了Pairing的概念、操作步驟、實現細節等。

2)定義一個密碼工具箱(Cryptographic Toolbox),其中包含了配對、加密等過程中所需的各種加密算法。

3)定義一個協議(Security Manager Protocol,簡稱SMP),基於L2CAP連接,實現master和slave之間的配對、密碼傳輸等操作。

3. Pairing(配對)

在SM的規范中,配對是指“Master和Slave通過協商確立用於加(解)密的key的過程”,主要由三個階段組成:

BLE_Pairing_Phases

圖片2 LE Pairing Phases

階段1,稱作“Pairing Feature Exchange”,用於交換雙方有關鑒權的需求(authentication requirements),以及雙方具有怎么的人機交互能力(IO capabilities)。

階段2,通過SMP協議進行實際的配對操作,根據階段1 “Feature Exchange”的結果,有兩種配對方法可選:LE legacy pairing和LE Secure Connections。

階段3是可選的,經過階段1和階段2之后,雙方已經產生了加密key,因而可以建立加密的連接。加密連接建立后,可以互相傳送一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。

3.1 Pairing Feature Exchange

配對的過程總是以Pairing Request和Pairing Response的協議交互開始,通過這兩個命令,配對的發起者(Initiator,總是Master)和配對的回應者(Responder,總是Slave)可以交換足夠的信息,以決定在階段2使用哪種配對方法、哪種鑒權方式、等等,具體包括:

3.1.1 配對方法

Master和Slave有兩種可選的配對方法:LE legacy pairing和LE Secure Connections(具體可參考后面3.2和3.3章節的介紹)。從命名上看,前者是過去的方法,后者是新方法。選擇的依據是:

當Master和Slave都支持LE Secure Connections(新方法)的時候,則使用LE Secure Connections。否則,使用LE legacy pairing。
3.1.2 鑒權方式

所謂的鑒權(Authentication),就是要保證執行某一操作的雙方(或者多方,這里就是配對的雙方)的身份的合法性,不能出現“上錯花轎嫁對郎”的情況。那怎么保證呢?從本質上來說就是通過一些額外的信息,告訴對方:現在正在和你配對的是“我”,是那個你正要配對的“我”!說起來挺饒舌,沒關系,看看下面的實現方法就清楚了。

對BLE來說,主要有三類鑒權的方法(其實是兩種),如下:

1)由配對的雙方,在配對過程之外,額外的交互一些信息,並以這些信息為輸入,進行后續的配對操作。這些額外信息也稱作OOB(out of band),OOB的交互過程稱為OOB protocol(是一個稍微繁瑣的過程,這里不在詳細介紹了)。

2)讓“人(human)”參與進來,例如:

手機A向手機B發起配對操作的時候,手機A在界面上顯示一串6位數字的配對碼,並將該配對碼發送給手機B,手機B在界面上顯示同樣的配對碼,並要求用戶確認A和B顯示的配對碼是否相同,如果相同,在B設備上點擊配對即可配對成功(如下如所示)。

配對碼

圖片3 配對碼

 

這種需要人參與的鑒權方式,在藍牙協議里面稱作MITM(man-in-the-middle)authentication,不過由於BLE設備的形態千差萬別,硬件配置也各不相同,有些可以輸入可以顯示、有些只可輸入不可顯示、有些只可顯示不可輸入、有些即可輸入也可顯示,因此無法使用統一的方式進行MITM鑒權(例如沒有顯示的設備無法使用上面例子的方式進行鑒權)。為此Security Manager定義了多種交互方法:

2a)Passkey Entry,通過輸入配對碼的方式鑒權,有兩種操作方法

用戶在兩個設備上輸入相同的6個數字(要求兩個設備都有數字輸入的能力),接下來的配對過程會進行相應的校驗;

一個設備(A)隨機生成並顯示6個數字(要求該設備有顯示能力),用戶記下這個數字,並在另一個設備(B)上輸入。設備B在輸入的同時,會通過SMP協議將輸入的數字同步的傳輸給設備A,設備A會校驗數字是否正確,以達到鑒權的目的。

2b)Numeric Comparison,兩個設備自行協商生成6個數字,並顯示出來(要求兩個設備具有顯示能力),用戶比較后進行確認(一致,或者不一致,要求設備有簡單的yes or no的確認能力)。

2c)Just Work,不需要用戶參與,兩個設備自行協商。

3)不需要鑒權,和2c中的Just work的性質一樣。

3.1.3 IO Capabilities

由3.1.2的介紹可知,Security Manager抽象出來了三種MITM類型的鑒權方法,這三種方法是根據兩個設備的IO能力,在“Pairing Feature Exchange”階段自動選擇的。IO的能力可以歸納為如下的六種:

NoInputNoOutput 
DisplayOnly 
NoInputNoOutput1 
DisplayYesNo 
KeyboardOnly 
KeyboardDisplay

具體可參考BT SPEC[3] “BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H]” “2.3.2 IO Capabilities”中的介紹。

3.1.4 鑒權方法的選擇

在“Pairing Feature Exchange”階段,配對的雙方以下面的原則選擇鑒權方法:

1)如果雙方都支持OOB鑒權,則選擇該方式(優先級最高)。

2)否則,如果雙方都支持MITM鑒權,則根據雙方的IO Capabilities(並結合具體的配對方法),選擇合適的鑒權方式(具體可參考BT SPEC[3] “BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H]”“2.3.5.1 Selecting Key Generation Method”中的介紹)。

3)否則,使用Just work的方式(不再鑒權)。

3.2 LE legacy pairing

LE legacy pairing的過程比較簡單,總結如下(可以參考下面的流程以輔助理解):

LE_legacy_pairing

圖片4 LE legacy pairing過程

1)LE legacy pairing最終生成的是Short Term Key(雙方共享),生成STK之后,參考[1]中的介紹,用STK充當LTK,並將EDIV和Rand設置為0,去建立加密連接。

2)加密連接建立之后,雙方可以自行生成Long Term Key(以及相應的EDIV和Rand),並通過后續的“Transport Specific Key Distribution”將它們共享給對方,以便后面重新建立加密連接所使用:

master和slave都要生成各自的LTK/EDIV/Rand組合,並共享給對方。因為加密鏈路的發起者需要知道對方的LTK/EDIV/Rand組合,而Master或者Slave都有可能重新發起連接。

另外我們可以思考一個問題(在[1]中就應該有這個疑問):為什么LE legacy pairing的LTK需要EDIV/Rand信息呢?因為LTK是各自生成的,不一樣,因而需要一個索引去查找某一個LTK(對比后面介紹的LE Secure Connections,LTK是直接在配對是生成的,因而就不需要這兩個東西)。

3)STK的生成也比較簡單,雙方各提供一個隨機數(MRand和SRand),並以TK為密碼,執行S1加密算法即可。

4)TK是實在鑒權的過程中得到的,根據在階段一選擇的鑒權方法,TK可以是通過OOB得到,也可以是通過Passkey Entry得到,也可以是0(Just Work)。

LE legacy pairing只能使用OOB、Passkey Entry或者Just Work三種鑒權方法(Numeric Comparison只有在LE Secure Connections時才會使用)。

3.3 LE Secure Connections Pairing

LE Secure Connections pairing利用了橢圓曲線加密算法(P-256 elliptic curve),簡單說明如下(具體細節可參考看藍牙SPEC[3],就不在這里羅列了):

1)可以使用OOB、Passkey Entry、Just Work以及Numeric Comparison四種鑒權方法。其中Numeric Comparison的流程和Just Work基本一樣。

2)可以直接生成LTK(雙方共享),然后直接使用LTK進行后續的鏈路加密,以及重新連接時的加密。

3.4 Transport Specific Key Distribution

加密鏈路建立之后,通信的雙方就可以傳輸一些比較私密的信息,主要包括:

Encryption Information (Long Term Key) 
Master Identification (EDIV, Rand) 
Identity Information (Identity Resolving Key) 
Identity Address Information (AddrType, BD_ADDR) 
Signing Information (Signature Key)

至於這些私密信息要怎么使用,就不在本文的討論范圍了,后續碰到的時候再介紹。

4. Security Manager Protocol介紹

SMP使用固定的L2CAP channel(CID為0x0006)傳輸Security相關的命令。它主要從如下的方面定義SM的行為(比較簡單,不再詳細介紹):

1)規定L2CAP channel的特性,MTU、QoS等。

2)規定SM命令格式。

3)定義配對相關的命令,包括:

Pairing Request 
Pairing Response 
Pairing Confirm 
Pairing Random 
Pairing Failed 
Pairing Public Key 
Pairing DHKey Check 
Keypress Notification

4)定義鑒權、配對、密碼交互等各個過程。

5. 密碼工具箱介紹

為了執行鑒權、配對等過程,SM定義了一組密碼工具箱,提供了十八般加密算法,由於太專業,就不在這里介紹了,感興趣的讀者直接去看spec就行了(“BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H] 2.2 CRYPTOGRAPHIC TOOLBOX”)。

6. Security Manager的使用

相信經過本文的介紹,大家對BLE的SM有了一定的了解,不過應該會有一個疑問:

這么復雜的過程,從應用角度該怎么使用呢?

放心,藍牙協議不會給我們提供這么簡陋的接口的,參考上面圖片1,SM之上不是還有GAP嗎?對了,真正使用SM功能之前,需要再經過GAP進行一次封裝,具體可參考本站后續的文章。

7. 參考文檔

[1] 藍牙協議分析(10)_BLE安全機制之LE Encryption

[2] 藍牙協議分析(9)_BLE安全機制之LL Privacy

[3] Core_v4.2.pdf

 

原創文章,轉發請注明出處。蝸窩科技,www.wowotech.net。

------------恢復內容開始------------

1. 前言

注1:此SM是Security Manager的縮寫,非彼SM,大家不要理解歪了!

書接上文,我們在“藍牙協議分析(10)_BLE安全機制之LE Encryption”中介紹了BLE安全機制中的終極武器----數據加密。不過使用這把武器有個前提,那就是雙方要共同擁有一個加密key(LTK,Long Term Key)。這個key至關重要,怎么生成、怎么由通信的雙方共享,關系到加密的成敗。因此藍牙協議定義了一系列的復雜機制,用於處理和加密key有關的操作,這就是SM(Security Manager)。

另外,在加密鏈路建立之后,通信的雙方可以在該鏈路上共享其它的key(例如在“藍牙協議分析(9)_BLE安全機制之LL Privacy”中提到的IRK),SM也順便定義了相應的規范。

2. Security Manager介紹

SM在藍牙協議中的位置如下圖:

SM_in_BLE_protocol

圖片1 SM_in_BLE_protocol

它的主要目的是為LE設備(LE only或者BR/EDR/LE)提供建立加密連接所需的key(STK or LTK)。為了達到這個目的,它定義了如下幾類規范:

1)將生成加密key的過程稱為Pairing(配對),並詳細定義了Pairing的概念、操作步驟、實現細節等。

2)定義一個密碼工具箱(Cryptographic Toolbox),其中包含了配對、加密等過程中所需的各種加密算法。

3)定義一個協議(Security Manager Protocol,簡稱SMP),基於L2CAP連接,實現master和slave之間的配對、密碼傳輸等操作。

3. Pairing(配對)

在SM的規范中,配對是指“Master和Slave通過協商確立用於加(解)密的key的過程”,主要由三個階段組成:

BLE_Pairing_Phases

圖片2 LE Pairing Phases

階段1,稱作“Pairing Feature Exchange”,用於交換雙方有關鑒權的需求(authentication requirements),以及雙方具有怎么的人機交互能力(IO capabilities)。

階段2,通過SMP協議進行實際的配對操作,根據階段1 “Feature Exchange”的結果,有兩種配對方法可選:LE legacy pairing和LE Secure Connections。

階段3是可選的,經過階段1和階段2之后,雙方已經產生了加密key,因而可以建立加密的連接。加密連接建立后,可以互相傳送一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。

3.1 Pairing Feature Exchange

配對的過程總是以Pairing Request和Pairing Response的協議交互開始,通過這兩個命令,配對的發起者(Initiator,總是Master)和配對的回應者(Responder,總是Slave)可以交換足夠的信息,以決定在階段2使用哪種配對方法、哪種鑒權方式、等等,具體包括:

3.1.1 配對方法

Master和Slave有兩種可選的配對方法:LE legacy pairing和LE Secure Connections(具體可參考后面3.2和3.3章節的介紹)。從命名上看,前者是過去的方法,后者是新方法。選擇的依據是:

當Master和Slave都支持LE Secure Connections(新方法)的時候,則使用LE Secure Connections。否則,使用LE legacy pairing。
3.1.2 鑒權方式

所謂的鑒權(Authentication),就是要保證執行某一操作的雙方(或者多方,這里就是配對的雙方)的身份的合法性,不能出現“上錯花轎嫁對郎”的情況。那怎么保證呢?從本質上來說就是通過一些額外的信息,告訴對方:現在正在和你配對的是“我”,是那個你正要配對的“我”!說起來挺饒舌,沒關系,看看下面的實現方法就清楚了。

對BLE來說,主要有三類鑒權的方法(其實是兩種),如下:

1)由配對的雙方,在配對過程之外,額外的交互一些信息,並以這些信息為輸入,進行后續的配對操作。這些額外信息也稱作OOB(out of band),OOB的交互過程稱為OOB protocol(是一個稍微繁瑣的過程,這里不在詳細介紹了)。

2)讓“人(human)”參與進來,例如:

手機A向手機B發起配對操作的時候,手機A在界面上顯示一串6位數字的配對碼,並將該配對碼發送給手機B,手機B在界面上顯示同樣的配對碼,並要求用戶確認A和B顯示的配對碼是否相同,如果相同,在B設備上點擊配對即可配對成功(如下如所示)。

配對碼

圖片3 配對碼

 

這種需要人參與的鑒權方式,在藍牙協議里面稱作MITM(man-in-the-middle)authentication,不過由於BLE設備的形態千差萬別,硬件配置也各不相同,有些可以輸入可以顯示、有些只可輸入不可顯示、有些只可顯示不可輸入、有些即可輸入也可顯示,因此無法使用統一的方式進行MITM鑒權(例如沒有顯示的設備無法使用上面例子的方式進行鑒權)。為此Security Manager定義了多種交互方法:

2a)Passkey Entry,通過輸入配對碼的方式鑒權,有兩種操作方法

用戶在兩個設備上輸入相同的6個數字(要求兩個設備都有數字輸入的能力),接下來的配對過程會進行相應的校驗;

一個設備(A)隨機生成並顯示6個數字(要求該設備有顯示能力),用戶記下這個數字,並在另一個設備(B)上輸入。設備B在輸入的同時,會通過SMP協議將輸入的數字同步的傳輸給設備A,設備A會校驗數字是否正確,以達到鑒權的目的。

2b)Numeric Comparison,兩個設備自行協商生成6個數字,並顯示出來(要求兩個設備具有顯示能力),用戶比較后進行確認(一致,或者不一致,要求設備有簡單的yes or no的確認能力)。

2c)Just Work,不需要用戶參與,兩個設備自行協商。

3)不需要鑒權,和2c中的Just work的性質一樣。

3.1.3 IO Capabilities

由3.1.2的介紹可知,Security Manager抽象出來了三種MITM類型的鑒權方法,這三種方法是根據兩個設備的IO能力,在“Pairing Feature Exchange”階段自動選擇的。IO的能力可以歸納為如下的六種:

NoInputNoOutput 
DisplayOnly 
NoInputNoOutput1 
DisplayYesNo 
KeyboardOnly 
KeyboardDisplay

具體可參考BT SPEC[3] “BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H]” “2.3.2 IO Capabilities”中的介紹。

3.1.4 鑒權方法的選擇

在“Pairing Feature Exchange”階段,配對的雙方以下面的原則選擇鑒權方法:

1)如果雙方都支持OOB鑒權,則選擇該方式(優先級最高)。

2)否則,如果雙方都支持MITM鑒權,則根據雙方的IO Capabilities(並結合具體的配對方法),選擇合適的鑒權方式(具體可參考BT SPEC[3] “BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H]”“2.3.5.1 Selecting Key Generation Method”中的介紹)。

3)否則,使用Just work的方式(不再鑒權)。

3.2 LE legacy pairing

LE legacy pairing的過程比較簡單,總結如下(可以參考下面的流程以輔助理解):

LE_legacy_pairing

圖片4 LE legacy pairing過程

1)LE legacy pairing最終生成的是Short Term Key(雙方共享),生成STK之后,參考[1]中的介紹,用STK充當LTK,並將EDIV和Rand設置為0,去建立加密連接。

2)加密連接建立之后,雙方可以自行生成Long Term Key(以及相應的EDIV和Rand),並通過后續的“Transport Specific Key Distribution”將它們共享給對方,以便后面重新建立加密連接所使用:

master和slave都要生成各自的LTK/EDIV/Rand組合,並共享給對方。因為加密鏈路的發起者需要知道對方的LTK/EDIV/Rand組合,而Master或者Slave都有可能重新發起連接。

另外我們可以思考一個問題(在[1]中就應該有這個疑問):為什么LE legacy pairing的LTK需要EDIV/Rand信息呢?因為LTK是各自生成的,不一樣,因而需要一個索引去查找某一個LTK(對比后面介紹的LE Secure Connections,LTK是直接在配對是生成的,因而就不需要這兩個東西)。

3)STK的生成也比較簡單,雙方各提供一個隨機數(MRand和SRand),並以TK為密碼,執行S1加密算法即可。

4)TK是實在鑒權的過程中得到的,根據在階段一選擇的鑒權方法,TK可以是通過OOB得到,也可以是通過Passkey Entry得到,也可以是0(Just Work)。

LE legacy pairing只能使用OOB、Passkey Entry或者Just Work三種鑒權方法(Numeric Comparison只有在LE Secure Connections時才會使用)。

3.3 LE Secure Connections Pairing

LE Secure Connections pairing利用了橢圓曲線加密算法(P-256 elliptic curve),簡單說明如下(具體細節可參考看藍牙SPEC[3],就不在這里羅列了):

1)可以使用OOB、Passkey Entry、Just Work以及Numeric Comparison四種鑒權方法。其中Numeric Comparison的流程和Just Work基本一樣。

2)可以直接生成LTK(雙方共享),然后直接使用LTK進行后續的鏈路加密,以及重新連接時的加密。

3.4 Transport Specific Key Distribution

加密鏈路建立之后,通信的雙方就可以傳輸一些比較私密的信息,主要包括:

Encryption Information (Long Term Key) 
Master Identification (EDIV, Rand) 
Identity Information (Identity Resolving Key) 
Identity Address Information (AddrType, BD_ADDR) 
Signing Information (Signature Key)

至於這些私密信息要怎么使用,就不在本文的討論范圍了,后續碰到的時候再介紹。

4. Security Manager Protocol介紹

SMP使用固定的L2CAP channel(CID為0x0006)傳輸Security相關的命令。它主要從如下的方面定義SM的行為(比較簡單,不再詳細介紹):

1)規定L2CAP channel的特性,MTU、QoS等。

2)規定SM命令格式。

3)定義配對相關的命令,包括:

Pairing Request 
Pairing Response 
Pairing Confirm 
Pairing Random 
Pairing Failed 
Pairing Public Key 
Pairing DHKey Check 
Keypress Notification

4)定義鑒權、配對、密碼交互等各個過程。

5. 密碼工具箱介紹

為了執行鑒權、配對等過程,SM定義了一組密碼工具箱,提供了十八般加密算法,由於太專業,就不在這里介紹了,感興趣的讀者直接去看spec就行了(“BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part H] 2.2 CRYPTOGRAPHIC TOOLBOX”)。

6. Security Manager的使用

相信經過本文的介紹,大家對BLE的SM有了一定的了解,不過應該會有一個疑問:

這么復雜的過程,從應用角度該怎么使用呢?

放心,藍牙協議不會給我們提供這么簡陋的接口的,參考上面圖片1,SM之上不是還有GAP嗎?對了,真正使用SM功能之前,需要再經過GAP進行一次封裝,具體可參考本站后續的文章。

7. 參考文檔

[1] 藍牙協議分析(10)_BLE安全機制之LE Encryption

[2] 藍牙協議分析(9)_BLE安全機制之LL Privacy

[3] Core_v4.2.pdf

 

原創文章,轉發請注明出處。蝸窩科技,www.wowotech.net。

------------恢復內容結束------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM