張尚韜



摘要:為了開展藍牙OBEX協議漏洞挖掘的相關技術研究,該研究首先概述了OBEX的基本概念,接著詳細分析了藍牙OBEX協議格式,并著重研究OBEX對象模型、會話模型及請求/響應數據包格式,為今后藍牙OBEX協議漏洞挖掘研究打下基礎。
關鍵詞:藍牙;OBEX;模型
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2020)16-0045-03
Abstract:In order to carry out the relevant technical research on the vulnerability mining of Bluetooth OBEX protocol, this study first outlines the basic concept of OBEX, then analyzes the format of Bluetooth OBEX protocol in detail, and focuses on the obex object model, session model and request / response packet format, which lays the foundation for the future research on the vulnerability mining of Bluetooth OBEX protocol.
Key words: Bluetooth; OBEX; model
1 OBEX基本概念
[OBEX]是對象交換協議最初紅外數據協會IrDA(Infrared Data Association)開發的用于紅外數據鏈路上數據對象交換的會話層協議。后來作為小范圍無線通信系統的藍牙采納了該協議,這使得原先基于紅外鏈路的OBEX應用可能很方便地移植到藍牙上來或在兩者之間進行切換。協議能夠支持文件傳遞、同步等多個應用,能夠讓不同的設備間完成簡單便捷的交換。藍牙[OBEX]協議被普遍地運用于智能手機、平板電腦、數字相機等各個設備間以此完成數據的傳遞[1-4]。
對OBEX協議進行格式分析須了解OBEX在藍牙棧中所處的層次結構。圖1描述了OBEX在藍牙協議棧中的地位。
圖1給出了OBEX在藍牙體系中的層次以及基于[OBEX]的部分應用。在層次組成的藍牙協議棧中,[OBEX]是一類面向應用層的協議,工作于協議棧的頂端,能夠完成文件傳遞,同步等各項操作,也可以讓不同的設備間完成簡單便捷的交換。可交換的內容包括文件、圖像以及應用支持的各種數據資料。對象交換使用的是建立在查詢/應答基礎上的[Client/Server]模式,任意兩個藍牙設備都能夠構成主從聯系,發起方是主,接收者為從。
藍牙的核心協議和應用規范由SIG制定,它的版本也在不斷升級,[OBEX]協議自身劃分了兩大部分:數據對象模型以及會話協議。前者涵蓋了即將傳遞的數據對象的各類資料和對象自身。整個模型的成立是建立在不同標準下的可分析的信息頭,比較接近于HTTP當中所界定的信息頭定義。會話協議中還提出了數據傳輸的具體流程,[OBEX]采用基于二進制分組的客戶機/服務器模式當作整個流程的具體模型[5-6]。下面分別介紹這兩種模型。
2 OBEX對象模型
對象模型不但要分析對象自身,并且還要分析除此以外的各種描繪信息,詳細措施就是使用不同的對象頭。用于針對性地描述對象的某一點,名稱、類別等,如文件[test.txt]就包含下列幾大對象頭:名稱、類別、長度以及文件自身。
對象頭常見格式為:<頭ID>+<值>。頭ID為單字節的無符號整數,用于分辨識別對象頭涵蓋哪些內容及對應的數值屬于什么格式;頭的值存在多個字節,相應的格式也要按照頭ID進行設定。全部的對象頭都是能夠選擇的,按照應用的具體狀況,可以選擇全部或局部應用,還可以一個都不用。頭ID的作用是使對象頭易于解析,并使對象頭可以按任意順序出現,還可以使應用程序很容易地跳過不支持的對象頭。
[OBEX]定義了一組常用的對象頭,它也支持[HTTP]對象頭,還支持用戶自定義的對象頭,滿足了絕大多數設備的需要。頭ID的最高2位表示對象頭的編碼方式,低6位是對象頭的具體含義。編碼方式決定了對象頭的長度,這樣不支持的對象頭可以被完整地丟棄,而不會影響對下一對象頭的解析。頭ID最高兩位含義見表1。
3 OBEX會話模型
會話協議中描繪了[OBEX]會話的主要構造,涵蓋了設備之間的會話格式以及對應的操作編碼[8]。[OBEX]會話出現于某次[OBEX]連接中,只需要在連接初期傳遞一次設備信息,同時狀態信息可以一直維持。發起連接請求的叫作[OBEX]客戶端,接受的那端叫作[OBEX]服務端。[OBEX]格式是請求/應答對,客戶端傳遞出請求之后,等候服務端的反饋,之后發出下一條請求。一對請求/應答也稱為一個操作。在進行連接時,雙方會商議數據包的內存大小,如果請求超過這個大小,就需要分幾次進行發送。在這樣的狀況下,每個請求數據包都要有應答數據包與其對應。一個操作事實上就是一個請求/應答數據包,而最終的那個數據包會存在特定的標識。兩個數據包對應的格式是相同的,根據順序依次為:1字節的操作碼,2字節的數據包長度,后面對對象頭的需求不固定,數量也同樣能夠設定為多個。操作碼最高位叫作完成位,代表該數據包是否為最終的那個數據包。同時其長度與對象頭的長度比較相似,同樣是采用網絡字節的排序進行傳遞,同時包括了操作碼以及長度所占據的三大字節。由于長度只有2字節,因此數據包長度不可以超出65535。對象頭只可以置于一個數據包當中,不可以使用多個。對象頭排序也并未進行具體的規定,不過可以將描述目標的對象頭置于其自身前面。
按照設備實際狀況,客戶端以及服務端既可以只選擇一個做也可以一起做。而請求的具體操作碼界定情況如表3所示。
應答操作碼還有一個稱呼叫作應答碼,是將一個[HTTP]狀態碼進行編碼同時壓縮至1個字節低7位,其實際含義可以參照對應的[HTTP]文檔。
上面兩個表格里面的操作碼、響應碼中括號里的數其最高位是“1”時的對應值,該位意味著這是請求時的最終的那個數據包。如采用“Put”操作傳遞一個較大的對象過程中,要采用許多的“Put”數據包才能夠實現,不過僅僅是最后的一個“Put”包會獲得最高位設置。
4 總結
通過以上研究,我們認識了藍牙OBEX協議,對藍牙OBEX協議的對象模型、會話模型及請求/響應數據包格式有深入的了解,為下一步開展藍牙OBEX協議格式規范研究奠定基礎。
參考文獻:
[1] 張文安,洪榛,朱俊威,陳博.工業控制系統網絡入侵檢測方法綜述[J].控制與決策,2019,34(11):2277-2288.
[2] 王群,李馥娟,周倩.網絡空間安全體系結構及其關鍵技術研究[J].南京理工大學學報,2019,43(04):495-504.
[3] 楊世超.物聯網云平臺接入安全技術研究[A].中國通信學會.2019年全國公共安全通信學術研討會優秀論文集[C].中國通信學會:中國通信學會,2019:5.
[4] 陸英.大數據時代使用藍牙的風險及解決方案[J].計算機與網絡,2019,45(14):52-53.
[5] 蔣綱,周敬利,余勝生,等.基于Bluetooth OBEX協議的文件傳輸技術的研究[J].小型微型計算機系統,2003,24(4): 687-690.
[6] David Kammer,Gordon McNutt,Brian Senese,Jennifer Bray.Bluetooth Application Developers Guide[M].Elsevier Science Ltd.2005.
[7] Infrared Data Association,(IrDA)Object Exchange Protocol OBEX Version 1.3[EB/OL].http://www.irda.org.oct,2008.
[8] Specification of the Bluetooth System vl.l Profile Part K:SerVice Discovery Application Profile.Bluetooth SIG,2001:48-50.
【通聯編輯:代影】