柚子快報激活碼778899分享:網絡 藍牙BLE學習-安全
柚子快報激活碼778899分享:網絡 藍牙BLE學習-安全
1.基本概念
藍牙標準規(guī)定了5種基本的安全服務
身份驗證:根據通信設備的藍牙地址驗證其身份。藍牙不提供本地用戶身份驗證。保密性:確保只有授權的設備才能訪問和查看傳輸?shù)臄?shù)據,防止竊聽造成的信息泄露。授權(Authorization):在允許設備使用某項服務之前,確保該設備已被授權,從而實現(xiàn)對資源的控制。消息完整性:驗證在兩個藍牙設備之間發(fā)送的消息在傳輸過程中沒有被更改。配對/綁定:創(chuàng)建一個或多個共享密鑰,并存儲這些密鑰用于后續(xù)連接,以形成可信設備對。
藍牙不解決其審計和不可否認安全服務;如果需要這種服務,應通過其他途徑提供。
Paring (配對)
配對包括配對能力交換,設備認證,密鑰生成,連接加密以及機密信息分發(fā)等過程,配對的目的有三個:加密連接,認證設備,以及生成密鑰。從手機角度看,一旦設備跟手機配對成功,藍牙配置菜單將包含該配對設備,如下所示:
如果用戶需要主動刪除配對設備,點擊配對設備右邊的“設置”菜單,出現(xiàn)如下界面,選擇“取消配對”或者“忽略該設備”,設備的配對信息即被手機刪除。
Bonding (綁定)
配對過程中會生成一個長期密鑰(LTK,long-term Key),如果配對雙方把這個LTK存儲起來放在Flash中,那么這兩個設備再次重連的時候,就可以跳過配對流程,而直接使用LTK對藍牙連接進行加密,設備的這種狀態(tài)稱為bonding。
如果paring過程中不存儲LTK(不分發(fā)LTK)也是可以的,paring完成后連接也是加密的,但是如果兩個設備再次重連,那么就需要重走一次paring流程,否則兩者還是明文通信。
在不引起誤解的情況下,我們經常把paring當成paring和bonding兩者的組合,因為只paring不bonding的應用情況非常少見。在不引起混淆的情況下,下文就不區(qū)分paring和bonding的區(qū)別,換句話說,我們會把paring和bonding兩個概念等同起來進行混用。
SM (security manager)
藍牙協(xié)議棧的安全管理層,規(guī)定了跟藍牙安全通信有關的所有要素,包括paring,bonding,以及下文提到的SMP。
SMP (security manager protocol)
安全管理協(xié)議,SMP著重兩個設備之間的藍牙交互命令序列,對paring的空中包進行了嚴格時序規(guī)定。
OOB (out of band,帶外)
OOB就是不通過藍牙射頻本身來交互,而是通過比如人眼,NFC,UART等帶外方式來交互配對信息,在這里人眼,NFC,UART通信方式就被稱為OOB通信方式。
Passkey
又稱pin碼,是指用戶在鍵盤中輸入的一串數(shù)字,以達到認證設備的目的。低功耗藍牙的passkey必須為6位。
Numeric comparison (數(shù)字比較)
Numeric comparison其實跟passkey一樣,也是用來認證設備的,只不過passkey是通過鍵盤輸入的,而numeric comparison是顯示在顯示器上的,numeric comparison也必須是6位的數(shù)字。
MITM (man in the middle)
MITM是指A和B通信過程中,C會插入進來以模擬A或者B,并且具備截獲和篡改A和B之間所有通信報文的能力,從而達到讓A或者B信任它,以至于錯把C當成B或者A來通信。
如果對安全要求比較高,需要具備MITM保護能力,在SM中這個是通過認證(authentication)來實現(xiàn)的,SM中實現(xiàn)認證的方式有三種:OOB認證信息,passkey以及numeric comparison,大家根據自己的實際情況,選擇其中一種即可。
LESC (LE secure connections)
又稱SC,藍牙4.2引入的一種新的密鑰生成方式和驗證方式,SC通過基于橢圓曲線的Diffie- Hellman密鑰交換算法來生成設備A和B的共享密鑰,此密鑰生成過程中需要用到公私鑰對,以及其他的密碼算法庫。
LESC同時還規(guī)定了相應的通信協(xié)議以生成該密鑰,并驗證該密鑰。需要注意的是LESC對paring的其他方面也會產生一定的影響,所以我們經常會把LESC看成是一種新的配對方式。
Legacy paring
在LESC引入之前的密鑰生成方式,稱為legacy paring,換句話說,legacy paring是相對LESC來說的,不支持LESC的配對即為legacy paring(legacy配對)。
TK (Temporary Key,臨時密鑰)
legacy paring里面的概念,如果采用just work配對方式,TK就是為全0;如果采用passkey配對方式,TK就是passkey;如果采用OOB配對方式,TK就是OOB里面的信息。
STK (short term key,短期密鑰)
legacy配對里面的概念,STK是通過TK推導出來的,通過TK對設備A和B的隨機數(shù)進行加密,即得到STK。
LTK (long term key,長期密鑰)
legacy配對和LESC配對都會用到LTK,如前所述,LTK是用來對未來的連接進行加密和解密用的。Legacy paring中的LTK由從設備根據相應的算法自己生成的(LTK生成過程中會用到EDIV(分散因子)和Rand(隨機數(shù))),然后通過藍牙空中包傳給主機。
LESC配對過程中,先通過Diffie- Hellman生成一個共享密鑰,然后這個共享密鑰再對設備A和B的藍牙地址和隨機數(shù)進行加密,從而得到LTK,LTK由設備A和B各自同時生成,因此LTK不會出現(xiàn)在LESC藍牙空中包中,大大提高了藍牙通信的安全性。
IRK (Identity Resolving Key,藍牙設備地址解析密鑰)
有些藍牙設備的地址為可解析的隨機地址,比如iPhone手機,由于他們的地址隨著時間會變化,那如何確定這些變化的地址都來自同一個設備呢?
答案就是IRK,IRK通過解析變化的地址的規(guī)律,從而確定這些地址是否來自同一個設備,換句話說,IRK可以用來識別藍牙設備身份,因此其也稱為Identity information。IRK一般由設備出廠的時候按照一定要求自動生成。
Identity Address (設備唯一地址)
藍牙設備地址包括public,random static, private resolvable,random unresolved共四類。
如果設備不支持privacy,那么identity address就等于public或者random static設備地址。
如果設備支持privacy,即使用private resolvable藍牙設備地址,在這種情況下,雖然其地址每隔一段時間會變化一次,但是identity address仍然保持不變,其取值還是等于內在的public或者random static設備地址。
Identity Address和IRK都可以用來唯一標識一個藍牙設備。
IO capabilities (輸入輸出能力)
是指藍牙設備的輸入輸出能力,比如是否有鍵盤,是否有顯示器,是否可以輸入Yes/No兩個確認值。
Key size (密鑰長度)
一般來說,密鑰默認長度為16字節(jié),為了適應一些低端的藍牙設備處理能力,你也可以把密鑰長度調低,比如變?yōu)?0個字節(jié)。
2. 配對與綁定
Paring(配對)和Bonding(綁定)是實現(xiàn)藍牙射頻通信安全的一種機制,有兩點需要注意:
Paring/bonding實現(xiàn)的是藍牙鏈路層的安全,對應用層來說是完全透明的。也就是說,不管有沒有paring/bonding,應用層數(shù)據的收發(fā)方式都是一樣的,不會因為加了paring/bonding而使應用層數(shù)據傳輸需要做某些特殊處理。
安全有兩種選項:加密或簽名。目前絕大部分應用都是選擇加密
實現(xiàn)藍牙通信安全,除了paring/bonding這種底層方式,用戶也可以自己在應用層去實現(xiàn)相同的安全功能。從功能上來說是沒有太大區(qū)別的,不同的是應用層安全自己實現(xiàn)的話,需要自己選擇加密算法、密鑰生成、密鑰交換等。如果不是這方面的專家,很有可能會有安全漏洞。而藍牙的paring/bonding則把上述過程標準化,放在了藍牙協(xié)議棧里。并且其安全性得到了充分的評估,用戶可以“無感”使用安全的藍牙通信。
paring/bonding是藍牙sercurity manager(SM)的一部分,SM定義了藍牙通信的安全架構,里面涉及安全架構、密碼工具箱、paring協(xié)議等。其中paring協(xié)議是關鍵,所以經常把paring和SM二者等價。
2.1 配對
藍牙的配對過程主要是為了生成雙方藍牙設備所共享的秘鑰,即鏈接秘鑰LK(Link Key),這個LK可能是暫時性秘鑰(temporary)或半永久秘鑰(semi- permanent)。暫時性秘鑰表示每一次會話(session)該秘鑰都會改變,主要用于一對多的場景中;半永久秘鑰表示在當前會話終止時,該秘鑰會保存在非易失性存儲中(Non- Volatile Memory,NVM),以便下一次相同雙方設備間的會話使用該秘鑰,即會被用于下一次連接時的設備認證以及消息的加密過程。
配對是找到并確定需要和自己通信的設備,也就是身份確定。接著是安全密鑰共享,而這一過程僅僅是由啟動加密到得到短期密鑰(STK)為止。其包括配對能力交換、設備認證、密鑰(固定128bit)生成、連接加密以及機密信息分布等過程。配對的目的有三個:加密連接、認證設備、生成密鑰。
區(qū)別于傳統(tǒng)藍牙的配對過程,BLE的配對過程發(fā)生在連接過程之后。
和經典藍牙一樣,協(xié)議為處于連接狀態(tài)的BLE設備,定義了兩種Link Layer角色:Master和Slave。Master是連接的發(fā)起方,可以決定和連接有關的參數(shù)。Slave是連接的接收方,可以請求連接參數(shù),但無法決定。
在SM(Security Manager)的規(guī)范中,配對時指"Master和Slave通過協(xié)商確立用于加(解)密的Key的過程",主要由三個階段組成:
配對是一個三階段的過程。前兩個階段時必須的,第三階段時可選的。
第一階段:配對特征交換。稱作“Pairing Feature Exchange”,用于交換雙方有關鑒權的需求(authentication requirements),以及雙方具有怎樣的人機交互能力(IO Capabilities)。
第二階段:短期密鑰(STK)生成。通過SMP協(xié)議進行實際的配對操作,根據階段一“Feature Exchange”的結果,有兩種配對方法可選:LE legacy pairing和LE Secure Connections
第三階段:傳輸特定密鑰分配。該階段時可選的,經過階段一和階段二之后,雙方已經產生了加密key。因此可以建立加密的連接。加密連接建立后,可以互傳一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。
注:STK的生成規(guī)則如下:
Just work:沒有加密,TK=0x00。Just works方式不能抵抗竊聽者和中間人攻擊,只有在配對過程時沒有遭受攻擊,后面加密的鏈路數(shù)據才是可信的。安全級別很低。
passkey entry:密碼輸入。如果passkey是“019655” ,TK的值就是0x00000000000000000000000000004CC7。(0x4cc7就是19655的16進制數(shù))。將輸入的值作為一個6位數(shù)的十進制,轉換為15字節(jié)的十六進制。
OOB(Out of band):帶外的TK值,是一個16字節(jié)的隨機數(shù),通過非BLE的方式傳遞給對端。例如二維碼或IR紅外。對于藍牙竊聽者/攻擊者而言,這個data的傳輸是不可見的,因此會顯得安全很多。
配對請求的數(shù)據格式
IO capabilities表明輸入,輸出的能力。
輸入是按鍵、鍵盤,輸出是顯示數(shù)字用的界面。
0x00(Display Only)只能 顯示000000~999999的數(shù)字
0x01(Display YesNo)顯示Yes/No的按鈕
0x02(Keyboard Only)只能輸入000000~999999的數(shù)字
0x03(No input No output)沒有輸入也沒有顯示,只能用Just work工作方式
0x04(Keyboard Display)能輸入000000~999999的數(shù)字,也能有屏幕顯示。
OOB data flag
0x00 OOB數(shù)據沒有發(fā)送
0x01 OOB數(shù)據通過遠端設備發(fā)送(如IR)
0x02-0xFF 保留
2.2 綁定
綁定就是把已配對設備的秘鑰等信息進行保存的過程,以便與對端藍牙設備斷開連接后,下一次連接時能夠使用該秘鑰等信息進行快速驗證和加解密消息,提高效率。在Android中,綁定實質上就是保存已授權連接的藍牙設備的信息(包括LK),并把該設備加入到自己的已配對列表中。
配對過程中會生成一個長期密鑰(LTK,long-term key),如果配對雙方把這個LTK存儲起來放在Flash中(有的時候是長期密鑰、身份解析密鑰、連接簽名解析密鑰這三個秘密要的某一個或組合進行交換,然后將交換的密鑰存儲到數(shù)據庫中),那么這兩個設備再次重連的時候,就可以跳過配對流程,而直接使用LTK對藍牙連接進行加密,設備的這種狀態(tài)稱為綁定(bonding)。
這里要明確一個概念,配對綁定只有在兩個設備之間第一次配對時才會發(fā)生,后續(xù)的連接由于第一次的配對綁定已經有“Bonding”過程(即存儲),如果存儲的數(shù)據庫沒有被認為的清空,后續(xù)的連接不需要再次配對。并不是所有的通信都需要加密進行數(shù)據保護,因此,建立連接之前不一定需要配對和綁定,可以直接建立連接。
2.3 總結
BLE的配對和綁定是一連串的動作,總結下來可以用下圖來表示。
階段1:配對特征交換,得到臨時密鑰(TK)值(配對請求、配對響應)
階段2:身份確認以及短期密鑰(STK)生成(通過安全管理協(xié)議(SMP)配對),確定自己正在和一個真正想要通信的設備通信,而非第三方。即確定對方身份。
階段3:傳輸特定密鑰(密鑰分配)。綁定所需存儲到安全數(shù)據庫的數(shù)據也是在此階段發(fā)送的。
上述三階段總結:
配對認證:主從機一方提供密碼,一方輸入密碼,如果雙方密碼一致,那么此密碼將作為TK(臨時密碼)。
加密鏈路:利用得到的TK(臨時密碼)等信息計算出STK(短期密碼)用來做加密認證
綁定:加密認證通過后,利用STK等信息生成LTK(長期密碼),把LTK保存下來,用于下次連接時做加密認證,不需要再次配對就可以加密鏈路。這就是綁定。
綁定后通訊過程:每次連接時,從機會向主機發(fā)送安全請求。如果主從機相互綁定過,主機不會發(fā)送配對請求,主機直接利用綁定時保存的LTK發(fā)送加密請求。從機也會利用綁定時保存的LTK來做加密回復,三次握手成功后(加密成功,三次握手通訊由底層完成,用戶不可見),從機回復主機加密狀態(tài)success。
建立連接是使用的靜態(tài)密碼,解除綁定/配對是使用的動態(tài)密碼?;剡B也需要密碼,使用的是動態(tài)密碼,這是為了防止竊聽,起保護作用。為了防止泄露信息,用戶也可以自行在應用層去實現(xiàn)相同的功能。
配對和綁定的區(qū)別:
1.連接:通訊的基礎,通訊數(shù)據為明文
2.配對:配對僅僅是為了在連接的基礎上加密(通訊數(shù)據經過加密為密文)。提高藍牙鏈路傳輸?shù)陌踩?。不配對也能連接進行通信。
3.綁定:綁定是配對發(fā)起時的一個可選配置。把配對信息記錄下來,下次不用配對自動進入加密的連接。所以沒有在bonding列表里的設備不影響連接。
在不引起誤解的情況下,經常把paring當成paring和bonding兩者的組合,因為只paring不bonding的應用情況非常少見。
3.Bluetooth BR/EDR/HS安全特性
藍牙BR/EDR/HS定義了可以在對等設備之間通信建立的不同階段實施的認證和加密安全過程。鏈路層安全機制在藍牙物理鏈路完全建立之前進行的身份驗證和加密設置過程。服務層安全機制在藍牙物理鏈路完全建立和邏輯通道部分建立之后發(fā)生的身份驗證和加密設置過程。
在藍牙2.0之前,定義了三種模式,分別指定身份驗證和加密是鏈路層安全機制還是服務層安全機制,并且是可配置的。
在藍牙2.1中增加了第四種模式,重新定義了配對時的用戶體驗,要求如果兩個設備都是藍牙2.1及以上,則需要使用第四種模式。
藍牙BR/EDR/HS系列規(guī)范共定義了四種安全模式。每個藍牙設備必須在其中一種模式下工作,即安全模式1到安全模式4。這些模式決定藍牙設備何時啟動安全性,而不是它是否支持安全特性。
安全模式1設備被認為是不安全的。安全功能(身份驗證和加密)從未啟動,設備和連接容易受到攻擊者的攻擊。這種模式下的藍牙設備不會采用任何機制來阻止其他藍牙設備建立連接。但是,如果遠程設備發(fā)起安全請求,例如配對、身份驗證或加密請求,則安全模式1設備將參與。根據各自的藍牙規(guī)范版本,所有2.0及更早版本的設備都可以支持安全模式1,而2.1及更高版本的設備可以使用安全模式1來向后兼容舊設備。 NIST建議永遠不要使用安全模式1。
安全模式2是一種服務層的安全模式,安全過程可以在連接之后,但在邏輯通道建立之前發(fā)起。對于這種安全模式,本地安全管理器(藍牙架構中規(guī)范的)對特定服務的訪問控制。集中安全管理器維護訪問控制策略以及與其他協(xié)議和設備用戶的接口??梢詾椴⑿胁僮鞯木哂胁煌踩枨蟮膽贸绦蚨x不同的安全策略和信任級別來限制訪問??梢允谟鑼δ承┓盏脑L問權而不提供對其他服務的訪問權。在這種模式下,引入了授權的概念,即決定是否允許特定設備訪問特定服務的過程。通常,藍牙服務發(fā)現(xiàn)可以在任何安全挑戰(zhàn)(即身份驗證、加密和/或授權)之前執(zhí)行。然而,所有其他的藍牙服務應該都需要這些安全機制。
注意:安全模式2的身份驗證和加密機制是在控制器中實現(xiàn)的,所有早于藍牙2.0版本的設備支持安全模式2,如果2.1及之后的版本和2.0及之前的版本只能通過安全模式2進行兼容。
安全模式3是連接層安全模式,在物理鏈接完全建立之前啟動。應用安全模式3的藍牙設備對與之所有的設備連接進行授權和加密。因此,在服務發(fā)現(xiàn)之前,就進行了身份認證、加密和授權。一旦設備具備安全模式3的認證,服務層的認證一般不再執(zhí)行。NIST建議即使使用安全模式3,服務級授權也應使用,以防止“身份驗證濫用”。
安全模式4和安全模式2類似,安全模式4(在藍牙2.1+EDR中引入)是一種服務層安全模式,在物理和邏輯鏈接建立之后啟動。安全模式4使用安全簡單配對(SSP, Secure Simple Pairing),其中鏈接密鑰的生成通過ECDH協(xié)議產生。在藍牙4.0之前,P-192橢圓曲線算法用于鏈接密鑰生成,設備認證和加密算法與藍牙2.0+EDR和早期版本中的算法相同。藍牙4.1引入安全連接特性,使用P-256橢圓曲線算法生成連接密鑰。在藍牙4.1中設備認證算法升級到FIPS批準的消息認證碼(Hash Message Authentication Code Secure Hash Algorithm 256-bit,HMAC- SHA-256)。加密算法升級到FIPS批準的基于AES-CCM模式的CBC-MAC,提供消息完整性保護。安全模式4保護的服務安全需求分為以下幾項:
? Level 4: Authenticated link key using Secure Connections required
? Level 3: Authenticated link key required
? Level 2: Unauthenticated link key required
? Level 1: No security required
? Level 0: No security required. (Only allowed for SDP)
是否需要連接密鑰取決于SSP關聯(lián)模型。當本地和遠程設備都支持安全連接特性時,連接密鑰是通過安全連接生成的,這也是NIST推薦的。安全模式4需要對所有服務進行加密(除服務發(fā)現(xiàn)之外),并強制用于藍牙2.1和以后的BR/EDR設備之間通信。為了向后兼容,安全模式4可以與藍牙2.0和不支持安全模式4的設備通過其他三種安全模式進行通信。
BR/EDR/HS Security Mode 4 Levels Summary
Most Secure Mode for a Pair of Bluetooth Devices
Most Secure Level in Mode 4 for a Pair of Bluetooth Devices
4. 配對和連接密鑰生成
藍牙的認證和加密是通過對稱密鑰進行的。經典藍牙BR/EDR是Link key, BLE低功耗藍牙是LTK(Long Term Key)。傳統(tǒng)低功耗藍牙先生成STK(Short Term Key),使用STK加密連接后再分發(fā)LTK給對端設備, 在低功耗安全連接模式下LTK是各個設備生成,不需要分發(fā)。經典藍牙有2種配對方式:Security Modes 2 and 3使用PIN碼進行配對,Security Modes 4使用SSP(Secure Simple Pairing)。在藍牙4.0和4.1中配對時可以認證也可以不認證,藍牙4.2中,在配對時使用安全連接驗證設備。
對于配對(LK秘鑰的生成)、設備認證以及加密這三個過程所使用的安全算法和流程由于歷史的原因主要分為了三類,即三個安全機制:Legacy、SSP(Secure Simple Pairing)以及SC(Secure Connections)如下表所示。現(xiàn)在許多的藍牙設備由于兼容性考慮,同時具有這三個安全機制。

Master和Slave有兩種可選的配對方法:legacy pairing和Secure Connections。選擇的依據是:當Master和Slave都支持Secure Connections(新方法)的時候,則使用Secure Connections。否則使用legacy pairing。
4.1 PIN/Legacy Pairing
對于PIN/傳統(tǒng)配對,當用戶在一個或兩個設備上輸入完全相同的機密的PIN碼時,根據配置和設備類型,兩個藍牙設備同時獲得鏈接密鑰。下圖從概念上描述了PIN碼輸入和密鑰獲得過程。注意,如果PIN碼小于16字節(jié),會用發(fā)起設備的地址(BD_ADDR)來補足PIN值以生成初始密鑰。那些Ex框代表了藍牙鏈接密鑰獲得過程所使用的加密算法。
從圖中可以看到,初始化秘鑰Kinit是由PIN和一個共同的隨機數(shù)通過E22算法所生成的,E22算法基于SAFER+,在協(xié)議規(guī)格說明書中有詳細說明[4, 980],這里不再對這些算法進一步介紹,只對其的輸入和輸出進行關注。其輸入的PIN可以是設備提供的固定值,也可以是用戶輸入到這兩個設備中。如果設備都是可輸入設備,則規(guī)格說明書更建議使用后者[4, p955]。PIN的大小為1到16字節(jié),若是其小于16字節(jié),則需要加入發(fā)起連接設備的MAC地址(BD_ADDR)來共同生成初始化秘鑰Kinit。Kinit然后會經過一系列的算法最終生成鏈接秘鑰Klink。然后Klink會被用于通信設備的認證
藍牙配對中使用的PIN碼可以是1到16個字節(jié)的二進制數(shù)或更常見的字母數(shù)字字符。對于低風險應用場景,典型的4位數(shù)PIN碼可能是足夠的;對于要求更高安全級別的設備,應當使用更長的PIN碼(例如, 8個字符的字母數(shù)字)
完成鏈接密鑰生成后,設備通過互相認證彼此來完成配對,以驗證他們擁有相同的鏈接密鑰Link key,即Klink是否一致,其包含有兩個角色:申驗者(Claimant)和驗證者(Verifier),當然,一般來講,它們也可以叫作外設(Peripheral)和中心(Central)。整個設備驗證過程分為5個步驟[5]:
1)驗證者向申驗者發(fā)送128位隨機數(shù)(AU_RAND)。
2)申驗者使用E1算法并使用48位自己的藍牙設備地址(BD_ADDR)、鏈接秘鑰Link Key和AU_RAND作為輸入來進行計算。驗證者執(zhí)行相同的計算。其計算獲得的結果一共有128位數(shù)據,其中使用32位最高有效位(即SRES)用于認證,其余的96位稱為ACO值,稍后加入到藍牙會話加密密鑰Kc的創(chuàng)建。
3)申驗者將簽名響應SRES返回給驗證者。
4)驗證者將申驗者的SRES與其計算的值進行比較。
5)如果兩個32位值相等,認證被認為是成功的。如果兩個32位值不相等,認證失敗。
設備成功驗證后,就進入加密秘鑰的生成以及消息的加密流程了,如下圖所示
首先,Master方(或者叫Central)會生成一個128位的隨機數(shù)EN_RAND發(fā)送給Slave方(或者叫Peripheral),它們兩者利用該EN_RAND以及鏈接秘鑰Link Key、COF來通過算法E3來計算獲得加密秘鑰Kc。這里的COF實質上就是前面的設備認證階段生成的ACO,在協(xié)議規(guī)格說明書上COF的由來如下所示:
當然,這里的Kc為16字節(jié),但是由于兼容性和功耗的考慮,藍牙聯(lián)盟最開始規(guī)定的加密秘鑰長度可以是從1字節(jié)到16字節(jié)的,只要設備雙方共同協(xié)商好。但由于之前的KNOB漏洞[4],其規(guī)定最低的加密秘鑰長度改為了7,也就是說加密秘鑰的長度,設備雙方可以協(xié)商的最小長度為7。這個協(xié)商加密秘鑰長度的過程就是圖中的Constraining Mechanism,其根據協(xié)商的長度,從而去取Kc的前幾字節(jié)的字段來獲得最終的加密秘鑰。最后使用該加密秘鑰通過E0算法來加解密明文數(shù)據包。
4.2 Secure Simple Pairing(SSP)
Secure Simple Pairing(SSP)通過提供一些關聯(lián)模型來簡化配對過程。這些模型具有適應不同設備輸入/輸出能力的靈活性。SSP也通過增加ECDH公鑰加密來改進安全性,以防止配對過程中的被動竊聽和中間人(MITM)攻擊。
SSP提供了如下四種關聯(lián)模型:
Numeric Comparison : 數(shù)值比較是針對兩種藍牙設備都能顯示六位數(shù)字并允許用戶輸入“是”或“否”回答的情況而設計的。在配對過程中,用戶會在每臺顯示器上看到一個六位數(shù)的數(shù)字,如果數(shù)字匹配,則在每臺設備上回答“是”。否則用戶回答no,配對失敗。這與傳統(tǒng)配對中使用PIN的一個關鍵區(qū)別是,顯示的數(shù)據不用作生成鏈接密鑰的輸入。因此,能夠看到(或捕獲)顯示值的竊聽者無法利用它來確定最終鏈路或加密密鑰。
Passkey Entry :Passkey Entry設計用于一個藍牙設備有輸入能力(例如鍵盤),而另一個設備有顯示但沒有輸入能力的情況。在這種模型中,只有顯示屏的設備顯示一個6位數(shù)的數(shù)字,然后用戶在具有輸入能力的設備上輸入該數(shù)字。與數(shù)值比較模型一樣,該交易中使用的6位數(shù)字沒有包含在鏈路密鑰生成中,對竊聽者沒有任何用處。
Just Works : 是為至少一個配對設備既沒有顯示器也沒有鍵盤輸入數(shù)字(例如,耳機)的情況而設計的。它執(zhí)行認證階段1的方式與Numeric Comparison相同,只是沒有顯示。用戶需要在不驗證兩個設備上計算出的值的情況下連接,因此Just Works不提供中間人攻擊保護。
Out of Band (OOB) : 為支持常見的額外的無線(例如,近場通信(NFC))或有線技術設備設計的,用于設備發(fā)現(xiàn)和密碼交換。在NFC的情況下,OOB模型允許設備通過簡單地“點擊”一個設備與另一個設備進行配對,然后用戶通過一個按鈕接受配對。值得注意的是,為了使配對過程盡可能安全,OOB技術應該被設計和配置為減輕竊聽和中間人攻擊。
安全模式4要求藍牙服務使用安全連接(第4級)、已驗證鏈接密鑰(第3級)、未驗證鏈接密鑰(第2級)或完全不安全(第1級)指定一個已驗證鏈接密鑰。在上述的關聯(lián)模型中,除了Just Works模型之外,所有模型都提供已驗證鏈接密鑰。
下圖是中描述的SSP的鏈接密鑰Link Key的生成,值得注意的是這里使用的是ECDH公私鑰對來進行生成的,而不是LSC那種使用PIN生成的對稱密鑰。圖中的P-192和P-256為兩種橢圓曲線算法,SC用的后者,SSP用的前者。其通過KDH最終生成了鏈接密鑰Klink。
每個設備都會生成自己的ECDH公私密鑰對。當兩個設備都支持安全連接時,使用P-256橢圓曲線,否則使用P-192橢圓曲線。每臺設備將公鑰發(fā)送給另一臺設備。然后,設備執(zhí)行依賴于關聯(lián)模型的第1階段認證。在此之后,第一個設備計算確認值E1并將其發(fā)送給第二個設備,后者檢查該值。如果成功,第二臺設備將其確認值E2發(fā)送給第一臺設備。假設E2確認值正確,兩個設備都會計算出鏈接密鑰。
設備驗證階段如下圖所示,值得注意的是其與LSC(Legacy Secure Connections)不一樣的地方在于,SSP的設備雙方都是申驗者和驗證者,即通信的設備既會驗證對方的Link Key,也會被對方驗證本方的Link Key,只要有一方驗證失敗,則這整個階段都驗證失敗。而LSC只有一方(Central)是驗證者。
接下來的加密密鑰的生成以及加密算法如下圖所示,可以看到其大致與LSC一致,不過采用的算法完全不一樣,這里采用h3來生成加密密鑰,使用AES- CCM來加密數(shù)據包。
 4.3 SSP 配對過程
Simple Pairing配對過程如圖所示,主要由下面四部分完成:
4.3.1 Pairing Feature Exchange
用于交換雙方有關鑒權的需求(authentication requirements),以及雙方具有怎么
的人機交互能力(IO capabilities)。其中最重要的是IO capabilities exchange。
IO的能力可以歸納為如下的六種:
NoInputNoOutputDisplayOnlyNoInputNoOutput1DisplayYesNoKeyboardOnlyKeyboardDisplay 上述的IO能力決定了后續(xù)的鑒權方式。
4.3.2 Public key exchange
兩個設備之間交換Public key。 一旦設備收到對端設備的公鑰,它就可以開始計算Diffie Hellman Key(DHKey)。耗時較多,應該盡早開始,以便用戶交互可以隱藏計算時間。 在步驟8之前不需要DHKey。 當 Public key的長度大于DM1包的長度時,要使用專門的PDU來進行數(shù)據發(fā)送。
4.3.3 Authentication
LESC paring會做兩次認證。LESC第一階段認證的原理是,設備A和B各生成一個隨機數(shù),然后認證這個隨機數(shù)對不對。LESC第二階段認證過程是:設備A和B通過MacKey各生成一個檢查值,對方確認這個值對不對。通過SMP協(xié)議進行實際的配對操作,根據階段1 “Feature Exchange”的結果,有三種
鑒權方法可選:
1) OOB鑒權
如果雙方都支持OOB鑒權,則選擇該方式(優(yōu)先級最高)。由配對的雙方,在配對過程
之外,額外的交互一些信息(譬如NFC),并以這些信息為輸入,進行后續(xù)的配對操作。
這些額外信息也稱作OOB(out of band),OOB的交互過程稱為OOB protocol。
2) MITM鑒權
(man-in-the-middle)authentication,由兩種方法:
Numeric Comparision方式鑒權:兩個設備自行協(xié)商生成6個數(shù)字,并顯示出來(要求兩個
設備具有顯示能力),用戶比較后進行確認(一致,或者不一致,要求設備有簡單的yes
or no的確認能力)。
3)Passkey Entry方式鑒權:通過輸入配對碼的方式鑒權。
4)Just Work
不需要用戶參與,兩個設備自行協(xié)商。
以LESC Numeric comparison為例,其第一階段認證流程如下所示:
4.3.4 DH Key Checks
DH Key Checks就是LESC的第二階段認證,一旦設備完成鑒權過程,并且DHKey計算已完成,則檢查生成的DHKey值。 如果成功,則兩個設備都將完成向用戶顯示關于該過程的信息,否則控制器向主機發(fā)送消息以通知其停止顯示該信息。
以LESC Numeric comparison為例,其第二階段全工作流程如下所示:
4.3.5 Caculate Link Key
當配對過程完成后,link key就可以從DHKey中計算得到,并用做后續(xù)交互過程的輸入(KEY + 明文 => 加密數(shù)據),通過HCI_Link_Key_Notification來通知host。
經過上述配對過程后,雙方已經產生了加密key,因而可以建立加密的連接。加密連接建立后,可以互相傳送一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。
題外話
初入計算機行業(yè)的人或者大學計算機相關專業(yè)畢業(yè)生,很多因缺少實戰(zhàn)經驗,就業(yè)處處碰壁。下面我們來看兩組數(shù)據:
2023屆全國高校畢業(yè)生預計達到1158萬人,就業(yè)形勢嚴峻;
國家網絡安全宣傳周公布的數(shù)據顯示,到2027年我國網絡安全人員缺口將達327萬。
一方面是每年應屆畢業(yè)生就業(yè)形勢嚴峻,一方面是網絡安全人才百萬缺口。
6月9日,麥可思研究2023年版就業(yè)藍皮書(包括《2023年中國本科生就業(yè)報告》《2023年中國高職生就業(yè)報告》)正式發(fā)布。
2022屆大學畢業(yè)生月收入較高的前10個專業(yè)
本科計算機類、高職自動化類專業(yè)月收入較高。2022屆本科計算機類、高職自動化類專業(yè)月收入分別為6863元、5339元。其中,本科計算機類專業(yè)起薪與2021屆基本持平,高職自動化類月收入增長明顯,2022屆反超鐵道運輸類專業(yè)(5295元)排在第一位。
具體看專業(yè),2022屆本科月收入較高的專業(yè)是信息安全(7579元)。對比2018屆,電子科學與技術、自動化等與人工智能相關的本科專業(yè)表現(xiàn)不俗,較五年前起薪漲幅均達到了19%。數(shù)據科學與大數(shù)據技術雖是近年新增專業(yè)但表現(xiàn)亮眼,已躋身2022屆本科畢業(yè)生畢業(yè)半年后月收入較高專業(yè)前三。五年前唯一進入本科高薪榜前10的人文社科類專業(yè)——法語已退出前10之列。
“沒有網絡安全就沒有國家安全”。當前,網絡安全已被提升到國家戰(zhàn)略的高度,成為影響國家安全、社會穩(wěn)定至關重要的因素之一。
網絡安全行業(yè)特點
1、就業(yè)薪資非常高,漲薪快 2022年獵聘網發(fā)布網絡安全行業(yè)就業(yè)薪資行業(yè)最高人均33.77萬!
2、人才缺口大,就業(yè)機會多
2019年9月18日《中華人民共和國中央人民政府》官方網站發(fā)表:我國網絡空間安全人才 需求140萬人,而全國各大學校每年培養(yǎng)的人員不到1.5W人。獵聘網《2021年上半年網絡安全報告》預測2027年網安人才需求300W,現(xiàn)在從事網絡安全行業(yè)的從業(yè)人員只有10W人。
行業(yè)發(fā)展空間大,崗位非常多
網絡安全行業(yè)產業(yè)以來,隨即新增加了幾十個網絡安全行業(yè)崗位︰網絡安全專家、網絡安全分析師、安全咨詢師、網絡安全工程師、安全架構師、安全運維工程師、滲透工程師、信息安全管理員、數(shù)據安全工程師、網絡安全運營工程師、網絡安全應急響應工程師、數(shù)據鑒定師、網絡安全產品經理、網絡安全服務工程師、網絡安全培訓師、網絡安全審計員、威脅情報分析工程師、災難恢復專業(yè)人員、實戰(zhàn)攻防專業(yè)人員…
職業(yè)增值潛力大
網絡安全專業(yè)具有很強的技術特性,尤其是掌握工作中的核心網絡架構、安全技術,在職業(yè)發(fā)展上具有不可替代的競爭優(yōu)勢。
隨著個人能力的不斷提升,所從事工作的職業(yè)價值也會隨著自身經驗的豐富以及項目運作的成熟,升值空間一路看漲,這也是為什么受大家歡迎的主要原因。
從某種程度來講,在網絡安全領域,跟醫(yī)生職業(yè)一樣,越老越吃香,因為技術愈加成熟,自然工作會受到重視,升職加薪則是水到渠成之事。
黑客&網絡安全如何學習
今天只要你給我的文章點贊,我私藏的網安學習資料一樣免費共享給你們,來看看有哪些東西。
1.學習路線圖
行業(yè)發(fā)展空間大,崗位非常多
網絡安全行業(yè)產業(yè)以來,隨即新增加了幾十個網絡安全行業(yè)崗位︰網絡安全專家、網絡安全分析師、安全咨詢師、網絡安全工程師、安全架構師、安全運維工程師、滲透工程師、信息安全管理員、數(shù)據安全工程師、網絡安全運營工程師、網絡安全應急響應工程師、數(shù)據鑒定師、網絡安全產品經理、網絡安全服務工程師、網絡安全培訓師、網絡安全審計員、威脅情報分析工程師、災難恢復專業(yè)人員、實戰(zhàn)攻防專業(yè)人員…
職業(yè)增值潛力大
網絡安全專業(yè)具有很強的技術特性,尤其是掌握工作中的核心網絡架構、安全技術,在職業(yè)發(fā)展上具有不可替代的競爭優(yōu)勢。
隨著個人能力的不斷提升,所從事工作的職業(yè)價值也會隨著自身經驗的豐富以及項目運作的成熟,升值空間一路看漲,這也是為什么受大家歡迎的主要原因。
從某種程度來講,在網絡安全領域,跟醫(yī)生職業(yè)一樣,越老越吃香,因為技術愈加成熟,自然工作會受到重視,升職加薪則是水到渠成之事。
黑客&網絡安全如何學習
今天只要你給我的文章點贊,我私藏的網安學習資料一樣免費共享給你們,來看看有哪些東西。
1.學習路線圖
攻擊和防守要學的東西也不少,具體要學的東西我都寫在了上面的路線圖,如果你能學完它們,你去就業(yè)和接私活完全沒有問題。
2.視頻教程
網上雖然也有很多的學習資源,但基本上都殘缺不全的,這是我自己錄的網安視頻教程,上面路線圖的每一個知識點,我都有配套的視頻講解。
內容涵蓋了網絡安全法學習、網絡安全運營等保測評、滲透測試基礎、漏洞詳解、計算機基礎知識等,都是網絡安全入門必知必會的學習內容。
3.技術文檔和電子書
技術文檔也是我自己整理的,包括我參加大型網安行動、CTF和挖SRC漏洞的經驗和技術要點,電子書也有200多本,由于內容的敏感性,我就不一一展示了。
4.工具包、面試題和源碼
“工欲善其事必先利其器”我為大家總結出了最受歡迎的幾十款款黑客工具。涉及范圍主要集中在 信息收集、Android黑客工具、自動化工具、網絡釣魚等,感興趣的同學不容錯過。
還有我視頻里講的案例源碼和對應的工具包,需要的話也可以拿走。
這些題目都是大家在面試深信服、奇安信、騰訊或者其它大廠面試時經常遇到的,如果大家有好的題目或者好的見解歡迎分享。
參考解析:深信服官網、奇安信官網、Freebuf、csdn等
內容特點:條理清晰,含圖像化表示更加易懂。
內容概要:包括 內網、操作系統(tǒng)、協(xié)議、滲透測試、安服、漏洞、注入、XSS、CSRF、SSRF、文件上傳、文件下載、文件包含、XXE、邏輯漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,僅展示部分資料,需要點擊下方鏈接即可前往獲取
如果你對網絡安全入門感興趣,那么你需要的話可以點擊這里?網絡安全重磅福利:入門&進階全套282G學習資源包免費分享!
柚子快報激活碼778899分享:網絡 藍牙BLE學習-安全
推薦閱讀
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。