什么是物聯(lián)網(wǎng)?
一、物聯(lián)網(wǎng)的概念
物聯(lián)網(wǎng)(Internet of Things,IoT)即“萬物相連的互聯(lián)網(wǎng)”,是傳統(tǒng)互聯(lián)網(wǎng)的拓展與延伸[1];ヂ(lián)網(wǎng)是由許多網(wǎng)絡(luò)(局域網(wǎng))連接起來的一個(gè)龐大網(wǎng)絡(luò),為所有計(jì)算機(jī)的信息交互提供通道。逐漸的,這個(gè)互聯(lián)網(wǎng)中不僅接入計(jì)算機(jī),還加入了許多手機(jī)、平板等移動(dòng)終端,就形成了移動(dòng)互聯(lián)網(wǎng)。
而隨著科技的不斷進(jìn)步,人們發(fā)現(xiàn)只要為生活中的各類物品裝上芯片,就能讓它們接入互聯(lián)網(wǎng)中,實(shí)現(xiàn)“萬物互聯(lián)”,這就是物聯(lián)網(wǎng)誕生的初衷。
物聯(lián)網(wǎng)既基于互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)等信息的載體,同時(shí)又在這些載體的基礎(chǔ)上進(jìn)行拓展,加入物聯(lián)網(wǎng)的相關(guān)協(xié)議,諸如RFID、Bluetooth、MQTT、Coap等協(xié)議,讓不同的物理設(shè)備形成互聯(lián)互通的網(wǎng)絡(luò)。通俗來講,物聯(lián)網(wǎng)的概念就是讓生活中的各種設(shè)備具備接入互聯(lián)網(wǎng)的能力,實(shí)現(xiàn)人與物、物與物之間的信息交互。
二、物聯(lián)網(wǎng)的組成
物聯(lián)網(wǎng)通常由3層架構(gòu)組成,由下到上依次為感知層、網(wǎng)絡(luò)層、應(yīng)用層[2]。通俗的來講,分為端、管、云三部分:
端指的是終端。物聯(lián)網(wǎng)終端實(shí)現(xiàn)數(shù)據(jù)信息采集,屬于物聯(lián)網(wǎng)的感知層;
管指的是管道。所有為物聯(lián)網(wǎng)提供數(shù)據(jù)傳輸?shù)脑O(shè)備、系統(tǒng)都屬于管道;
云是大數(shù)據(jù)處理的中樞,提供面向用戶的設(shè)備管理和數(shù)據(jù)匯聚等功能。

以家用智能攝像機(jī)為例,我們通過手機(jī)的APP遠(yuǎn)程訪問家里的攝像機(jī),查看家里的情況,并將視頻實(shí)時(shí)上傳到云上。在這個(gè)過程中,物聯(lián)網(wǎng)模型由用戶(手機(jī))、云端服務(wù)器、攝像頭、傳輸系統(tǒng)四元素組成。交互模型如下圖所示:

攝像頭屬于物聯(lián)網(wǎng)中的感知層,進(jìn)行現(xiàn)實(shí)世界的視頻數(shù)據(jù)采集;云端則為物聯(lián)網(wǎng)的應(yīng)用層,匯聚、處理、分析攝像頭傳輸回來的視頻數(shù)據(jù)等,并與用戶進(jìn)行信息交互。在這個(gè)模型中,為攝像頭與云端提供數(shù)據(jù)傳輸管道的設(shè)備,均屬于網(wǎng)絡(luò)層。
三、物聯(lián)網(wǎng)終端
物聯(lián)網(wǎng)終端是我們?nèi)粘I钪薪佑|最多的部分,本系列文章也以物聯(lián)網(wǎng)終端為核心而展開。
物聯(lián)網(wǎng)終端是物聯(lián)網(wǎng)中連接傳感網(wǎng)絡(luò)與傳輸網(wǎng)絡(luò)層,實(shí)現(xiàn)采集數(shù)據(jù)及向網(wǎng)絡(luò)層發(fā)送數(shù)據(jù)的設(shè)備[3]。物聯(lián)網(wǎng)終端擔(dān)負(fù)著數(shù)據(jù)采集、數(shù)據(jù)處理、加密、傳輸?shù)榷喾N功能,甚至?xí)蛴脩籼峁┕芾泶翱。?dāng)缺少物聯(lián)網(wǎng)終端時(shí),傳感數(shù)據(jù)將無法整合傳輸?shù)皆贫,”物“?lián)網(wǎng)將不復(fù)存在。

物聯(lián)網(wǎng)終端實(shí)際上是傳統(tǒng)嵌入式設(shè)備的拓展,通常由MCU(微型計(jì)算機(jī))、傳感器、執(zhí)行器、通信模塊與操作系統(tǒng)組成。終端的形式多種多樣,從使用的行業(yè)領(lǐng)域來分,可以分為工業(yè)物聯(lián)網(wǎng)終端、農(nóng)業(yè)物聯(lián)網(wǎng)終端、物流物聯(lián)網(wǎng)終端、安防物聯(lián)網(wǎng)終端等;按便攜性可以分固定終端、移動(dòng)終端與手持終端等。
四、硬件基礎(chǔ)
深入學(xué)習(xí)物聯(lián)網(wǎng)終端安全知識(shí)之前,首先需要掌握基本的硬件基礎(chǔ)知識(shí)。本節(jié)我們將介紹PCBA的基本概念及其板載常見的元器件和各種接口、芯片。

4.1 PCBA的基本概念
PCBA(printed circuit board assembly)簡(jiǎn)稱主板,就是將PCB(printed circuit board,簡(jiǎn)稱印刷電路板)與元器件組裝起來,是物聯(lián)網(wǎng)設(shè)備的硬件模塊。PCBA通常包括中央處理器、存儲(chǔ)器、電源、輸入設(shè)備、輸出設(shè)備、數(shù)據(jù)通路/總線和外部資源接口等一系列硬件組件。
4.2 認(rèn)識(shí)電子元器件

在物聯(lián)網(wǎng)終端的PCBA上,最為常見的電子元器件包括電阻、電容、電感、二極管、晶振等。
4.3 了解儲(chǔ)存芯片
ROM存儲(chǔ)芯片

圖示 winbond ROM
ROM是Read Only Memory的縮寫,譯為只讀存儲(chǔ)器。ROM可以在掉電的情況下,依然保存原有的數(shù)據(jù),但無法修改內(nèi)容,適合存儲(chǔ)長(zhǎng)期使用的數(shù)據(jù)、程序,也就是我們常稱的外存。如今的ROM已經(jīng)發(fā)展出了EEPROM(帶電可擦可編程只讀存儲(chǔ)器),可以按字節(jié)進(jìn)行有限次數(shù)的內(nèi)容刷寫,在終端運(yùn)行時(shí),可以進(jìn)行數(shù)據(jù)的修改。傳統(tǒng)物聯(lián)網(wǎng)終端的程序與數(shù)據(jù)通常存放在EEPROM中。
RAM儲(chǔ)存芯片

圖示 SDRAM芯片
RAM:RAM(Random Access Memory)稱為隨機(jī)訪問存儲(chǔ)器,是易失性存儲(chǔ)器。當(dāng)RAM斷電時(shí),其保存內(nèi)容將全部丟失,但讀寫速度相對(duì)較快,適用于保存短時(shí)間使用的數(shù)據(jù)與程序,這也是我們常稱的內(nèi)存。
FLASH儲(chǔ)存芯片

圖示 Nand Flash芯片
FLASH又稱閃存,是廣義上的ROM,融合了RAM與ROM的優(yōu)點(diǎn),能夠多次擦寫,讀寫速度快,并且斷電時(shí)不丟失數(shù)據(jù)。所以FLASH也常作為物聯(lián)網(wǎng)終端設(shè)備的代碼存儲(chǔ)空間。
常見的FLASH存儲(chǔ)器又分為兩種:NAND FLASH與NOR FLASH。NAND FLASH的改寫速度要比NOR FLASH快許多,且容量更大;而NOR FLASH讀取速度則稍快一些,傳輸效率更高。因此NAND FLASH適合存儲(chǔ)大量數(shù)據(jù),NOR FLASH則更適合存儲(chǔ)少量代碼。
相較于EEPROM,F(xiàn)LASH按照扇區(qū)操作修改數(shù)據(jù),電路邏輯更簡(jiǎn)單,成本更低,但無法在設(shè)備運(yùn)行時(shí)對(duì)數(shù)據(jù)進(jìn)行修改。因此,在一些物聯(lián)網(wǎng)設(shè)備中,會(huì)同時(shí)配置EEPROM與FLASH兩個(gè)存儲(chǔ)芯片,EEPROM負(fù)責(zé)保存設(shè)備的數(shù)據(jù),方便隨時(shí)修改;而FLASH則負(fù)責(zé)保存設(shè)備的程序。在一些廉價(jià)的終端設(shè)計(jì)中,可能只有FLASH一種存儲(chǔ)芯片,同時(shí)保存程序與數(shù)據(jù)。
介紹完常見的存儲(chǔ)芯片,接下來我們了解一下在安全研究過程中常用的設(shè)備調(diào)試接口。
4.4 調(diào)試接口
在物聯(lián)網(wǎng)終端開發(fā)流程中,調(diào)試是一個(gè)必不可少的環(huán)節(jié)。開發(fā)工程師可以通過調(diào)試接口對(duì)設(shè)備進(jìn)行軟件的功能完備性測(cè)試,整體系統(tǒng)的性能測(cè)試與壓力測(cè)試等。安全研究人員則能通過設(shè)備的調(diào)試接口讀取設(shè)備的運(yùn)行數(shù)據(jù)、日志,下載設(shè)備的軟件,調(diào)試設(shè)備的系統(tǒng)等。在對(duì)設(shè)備進(jìn)行安全分析時(shí),合理利用調(diào)試接口能夠達(dá)到事半功倍的效果。
UART接口
UART(Universal Asynchronous Receiver/Transmitter)接口是訪問設(shè)備最為常見的方式,屬于異步串行通信協(xié)議接口。廠商在部署設(shè)備時(shí)可以通過UART接口進(jìn)行設(shè)備診斷、日志記錄等操作,所以在研究終端設(shè)備時(shí),我們需要重點(diǎn)關(guān)注設(shè)備的UART接口。
物聯(lián)網(wǎng)終端中的UART接口常采用的TTL電平標(biāo)準(zhǔn)進(jìn)行信號(hào)傳輸,這種邏輯門電路采用二進(jìn)制規(guī)定,+5V或+3.3V等價(jià)于邏輯“1”,0V等價(jià)于邏輯“0”。
UART接口在工作時(shí)不需要外部時(shí)鐘,而是根據(jù)固定的波特率進(jìn)行數(shù)據(jù)采樣,根據(jù)TTL電平規(guī)則轉(zhuǎn)換成相應(yīng)的二進(jìn)制,然后將采樣結(jié)果通過規(guī)定二進(jìn)制長(zhǎng)轉(zhuǎn)換成字符串形式。如果接口設(shè)置的波特率與設(shè)備的波特率不匹配,轉(zhuǎn)換出的二進(jìn)制結(jié)果將不正確,會(huì)導(dǎo)致轉(zhuǎn)換出的字符串顯示亂碼。物聯(lián)網(wǎng)終端常見的波特率通常為9600、115200。UART接口通常有4個(gè)引腳,分別是Tx、Rx、Vcc和GND。

圖示 PCBA上的UART
Tx引腳是設(shè)備的數(shù)據(jù)發(fā)送端;Rx引腳是設(shè)備的數(shù)據(jù)接收端;Vcc是電壓電源端,通常是3.3V或5V,與Tx、Rx兩引腳的電壓通常相近;GND是設(shè)備的接地引腳,電壓為0V。

圖示 USB轉(zhuǎn)TTL模塊
在進(jìn)行調(diào)試時(shí),需要通過USB轉(zhuǎn)TTL工具,連接計(jì)算機(jī)與PCBA的UART接口。在進(jìn)行連接時(shí),需要注意相關(guān)的接口順序:

JTAG接口
JTAG接口類似于UART接口,同樣能夠?qū)υO(shè)備進(jìn)行調(diào)試。通過JTAG接口還能夠直接訪問FLASH或RAM,進(jìn)行數(shù)據(jù)轉(zhuǎn)儲(chǔ)等。JTAG接口包含5個(gè)引腳:
TDI:數(shù)據(jù)輸入引腳
TDO:數(shù)據(jù)輸出引腳
TMS:測(cè)試模式選擇
TCK:測(cè)試時(shí)鐘
TRST:測(cè)試復(fù)位