盡管嵌入式設(shè)備在物聯(lián)網(wǎng)中的作用可能十分重要,但目前并未強(qiáng)制要求這些設(shè)備都符合安全標(biāo)準(zhǔn)。由于物聯(lián)網(wǎng)發(fā)展很快,合規(guī)要求可能滯后很多,有時(shí)候甚至在代碼寫(xiě)好并測(cè)試之后才出現(xiàn)。那么,如何為嵌入式物聯(lián)網(wǎng)設(shè)備的未來(lái)做好準(zhǔn)備?
物聯(lián)網(wǎng)(IoT)是由網(wǎng)絡(luò)設(shè)備、組件或服務(wù)組成的系統(tǒng),能產(chǎn)生和/或使用數(shù)據(jù)。物聯(lián)網(wǎng)應(yīng)用逐漸成為人們生活中不可或缺的部分:從工業(yè)機(jī)器人和手術(shù)器械,到自動(dòng)駕駛汽車(chē)和自主飛行的無(wú)人機(jī)。今天,很多這些設(shè)備已經(jīng)對(duì)用戶(hù)的安全、隱私和安防產(chǎn)生影響,有一些甚至是致命的。因此,為物聯(lián)網(wǎng)設(shè)備制定通用標(biāo)準(zhǔn)至關(guān)重要。
如果軟件設(shè)計(jì)一開(kāi)始就能符合規(guī)范當(dāng)然是最好的,但眾所周知,嚴(yán)格的開(kāi)發(fā)流程,特別是在沒(méi)有實(shí)現(xiàn)自動(dòng)化的情況下,會(huì)影響產(chǎn)品上市時(shí)間。沒(méi)有幾個(gè)開(kāi)發(fā)人員愿意加班完成額外的測(cè)試工作并記錄可追溯性,如果費(fèi)時(shí)費(fèi)力地建立合規(guī)性只是出于將來(lái)“可能需要”,務(wù)實(shí)、敏捷和快速的開(kāi)發(fā)團(tuán)隊(duì)是不會(huì)為此而損失元?dú)獾摹O喾矗S多團(tuán)隊(duì)相信“船到橋頭自然直”。
然而,沒(méi)有什么魔法可以讓時(shí)光倒流“使”代碼從開(kāi)始就符合規(guī)范。這些團(tuán)隊(duì)最后得到的教訓(xùn)是,等項(xiàng)目結(jié)束時(shí)再考慮合規(guī)性所需的成本,比開(kāi)發(fā)伊始就考慮的成本要高出幾個(gè)數(shù)量級(jí)。
所以,為了滿足未來(lái)嚴(yán)格的規(guī)范要求,現(xiàn)在可以采取哪些有效措施呢?
措施1:清楚了解自己的技術(shù)負(fù)債
了解項(xiàng)目當(dāng)前的狀況非常重要。由于代碼太復(fù)雜,加上代碼中存在任何原本的編碼標(biāo)準(zhǔn)及安全違規(guī)時(shí),需要重寫(xiě)代碼花費(fèi)的成本即技術(shù)負(fù)債量。技術(shù)負(fù)債來(lái)自隨后要完成的代碼清理、修復(fù)和測(cè)試。靜態(tài)代碼自動(dòng)分析是掌握項(xiàng)目當(dāng)前狀況的一種方法,它可以對(duì)代碼庫(kù)質(zhì)量和安全性進(jìn)行深入分析,并列出編碼標(biāo)準(zhǔn)的違規(guī)(如果有的話)。
然而,許多用C和C++語(yǔ)言開(kāi)發(fā)嵌入式應(yīng)用程序的團(tuán)隊(duì)并沒(méi)有采用靜態(tài)分析法,而是依賴(lài)編譯器或通過(guò)手動(dòng)檢查代碼來(lái)找出問(wèn)題。一些團(tuán)隊(duì)因?yàn)楦鞣N原因,如發(fā)現(xiàn)靜態(tài)分析工具噪聲太多且很難使用,或者由于緊急的日常事務(wù)而不能將其納入日常開(kāi)發(fā)流程,而難以決定是否使用靜態(tài)分析工具。一種常見(jiàn)的誤解是,確定哪些違規(guī)值得修復(fù)所需的時(shí)間,遠(yuǎn)超過(guò)實(shí)際修復(fù)的價(jià)值。
但我們發(fā)現(xiàn),如果一個(gè)團(tuán)隊(duì)在項(xiàng)目的前期就強(qiáng)制性地采用了少許重要的規(guī)則,那么當(dāng)項(xiàng)目后期面臨功能安全審查時(shí),重寫(xiě)代碼花費(fèi)的時(shí)間要少得多。如果從一開(kāi)始就將安全性植入其中,例如實(shí)施CERT C安全編碼規(guī)則,則更容易建成一個(gè)安全可靠的系統(tǒng)。我們可以從簡(jiǎn)單的規(guī)則開(kāi)始。CERT擁有先進(jìn)的優(yōu)先級(jí)系統(tǒng)(包含嚴(yán)重性、可能性和補(bǔ)救成本三個(gè)指標(biāo),每個(gè)指標(biāo)分為3個(gè)等級(jí),總共27個(gè)級(jí)別),如果使用自動(dòng)化測(cè)試工具,通常很容易在預(yù)先設(shè)置好的控制面板(dashboard)中查看合規(guī)狀態(tài)。
靜態(tài)分析通過(guò)采集數(shù)據(jù)點(diǎn),幫助管理安全與安防合規(guī)性,使公司能夠了解其技術(shù)負(fù)債。管理者可以輕松評(píng)估一些重要的問(wèn)題,比如:
·底線是什么?代碼庫(kù)中不嚴(yán)重的編碼違規(guī)有多少?
·趨勢(shì)數(shù)據(jù):是否每個(gè)新版本都報(bào)告了新的和已修復(fù)的違規(guī)?情況變好了還是變差了?
·目前的代碼復(fù)雜度是什么?復(fù)雜度在增加嗎?
有些標(biāo)準(zhǔn)要求衡量環(huán)路復(fù)雜度(cyclomatic complexity),并使其低于某個(gè)閾值。復(fù)雜度指標(biāo)也可用于估計(jì)測(cè)試工作量——例如,對(duì)某個(gè)函數(shù)進(jìn)行IEC 61508 SIL 2合規(guī)測(cè)試,若要達(dá)到100%的分支級(jí)覆蓋率,則所需的測(cè)試用例數(shù)與該函數(shù)的McCabe環(huán)路復(fù)雜度成比例。
圖1的例子來(lái)自一個(gè)控制面板,顯示了某項(xiàng)目的MISRA合規(guī)性。
圖1:項(xiàng)目的MISRA合規(guī)性。
圖2顯示的是CERT合規(guī)性。
圖2:項(xiàng)目的CERT合規(guī)性。
查看代碼指標(biāo)有助于暴露更復(fù)雜的地方,從而進(jìn)一步檢查代碼,同時(shí)監(jiān)控測(cè)試是否對(duì)這些地方實(shí)現(xiàn)了良好覆蓋。圖3是指標(biāo)控制面板示例。
圖3:指標(biāo)控制面板示例。
首先從基本的開(kāi)始。一旦開(kāi)發(fā)團(tuán)隊(duì)能夠輕松自如地管理最嚴(yán)重的錯(cuò)誤,就可以增大管理標(biāo)準(zhǔn)違規(guī)的范圍。并非所有規(guī)則都是“一成不變”的,因此決定將哪些規(guī)則納入項(xiàng)目編碼標(biāo)準(zhǔn)非常重要。在一些關(guān)鍵編碼標(biāo)準(zhǔn)中至少采用一組強(qiáng)制性的規(guī)則(例如MISRA強(qiáng)制性規(guī)范或環(huán)路復(fù)雜度C規(guī)則),將使聯(lián)網(wǎng)設(shè)備未來(lái)的安全與安防論證變得更容易。
措施2:建立合格的單元測(cè)試框架并衡量代碼覆蓋率
大多數(shù)務(wù)實(shí)的工程師都會(huì)認(rèn)同,盲目地為所有功能設(shè)置單元測(cè)試并不能獲得良好的投資回報(bào)率(ROI)。但是,如果開(kāi)發(fā)團(tuán)隊(duì)可以訪問(wèn)的單元測(cè)試框架是沙盒(sandbox)項(xiàng)目的一部分,那么這就是一項(xiàng)有價(jià)值的投資。當(dāng)需要單獨(dú)測(cè)試某些復(fù)雜的算法或數(shù)據(jù)操作時(shí),可以根據(jù)實(shí)際情況來(lái)選擇進(jìn)行單元測(cè)試。完成單元測(cè)試這個(gè)過(guò)程本身也很有價(jià)值——從公司的角度來(lái)看,僅僅是編寫(xiě)和執(zhí)行單元測(cè)試就可以使代碼更加強(qiáng)健,并且代碼設(shè)計(jì)得更好。
當(dāng)安全與安防合規(guī)要求增加時(shí),公司只需臨時(shí)增加測(cè)試人員,就可加快單元測(cè)試工作。但要快速擴(kuò)展測(cè)試工作,就需要在整個(gè)項(xiàng)目進(jìn)程中了解單元測(cè)試框架和流程,并形成文檔。一個(gè)考慮了未來(lái)合規(guī)性的可擴(kuò)展單元測(cè)試框架應(yīng)具有以下特征:
·適合指定安全標(biāo)準(zhǔn)的應(yīng)用(例如通過(guò)TüV認(rèn)證)
·集成到自動(dòng)打包系統(tǒng)中
·報(bào)告所需的代碼覆蓋率指標(biāo)(例如MC/DC)
·按時(shí)間記錄每個(gè)版本完成的測(cè)試結(jié)果和覆蓋范圍
·適用于多個(gè)項(xiàng)目和開(kāi)發(fā)團(tuán)隊(duì)
最重要的是,要以最小的規(guī)模來(lái)部署未來(lái)安全標(biāo)準(zhǔn)需要的所有測(cè)試技術(shù)。這樣的話,如果需要認(rèn)證就更容易擴(kuò)展,而不用從頭開(kāi)始。
措施3:隔離關(guān)鍵功能
構(gòu)建嵌入式系統(tǒng)需要考慮大量的“非功能性需求”,如簡(jiǎn)單性、可移植性、可維護(hù)性、可擴(kuò)展性和可靠性,同時(shí)還要綜合考慮延遲、吞吐量、功耗和尺寸限制等因素。在設(shè)計(jì)可能與大型物聯(lián)網(wǎng)生態(tài)相連的系統(tǒng)架構(gòu)時(shí),許多團(tuán)隊(duì)優(yōu)先考慮的是一些與質(zhì)量相關(guān)的因素,而不是安全與安防。
如果將組件在時(shí)間和空間上分離出來(lái),未來(lái)它們便更容易符合安全規(guī)范(并具有良好的架構(gòu))。例如,在設(shè)計(jì)系統(tǒng)時(shí),可以將所有的關(guān)鍵操作都放在單獨(dú)的專(zhuān)用CPU上執(zhí)行,所有的非關(guān)鍵操作放在另一個(gè)CPU上執(zhí)行,從而實(shí)現(xiàn)物理隔離。另一種方法是采用分離內(nèi)核管理程序(Separation Kernel Hypervisor)和微內(nèi)核(Microkernel)概念。當(dāng)然還有其它方法,但重點(diǎn)是要盡早采用關(guān)鍵架構(gòu)方法,如關(guān)注點(diǎn)分離、深度防御和混合關(guān)鍵性分離。這些方法不僅減少了遵守安全與安防標(biāo)準(zhǔn)所需的工作量,還提高了應(yīng)用程序的質(zhì)量與復(fù)原性。例如,以下是隔離關(guān)鍵代碼的一些方法:
·空間域:
文件
模塊
目錄
庫(kù)
·執(zhí)行域:
線程、RTOS任務(wù)、管理程序
CPU內(nèi)核、獨(dú)立CPU
將關(guān)鍵功能與非關(guān)鍵功能分離,未來(lái)檢查合規(guī)性時(shí),驗(yàn)證范圍就可以縮小。
結(jié)語(yǔ)
物聯(lián)網(wǎng)生態(tài)中的許多邊緣設(shè)備提供關(guān)鍵性服務(wù),它們可能需要符合未來(lái)的安全與安防標(biāo)準(zhǔn)。努力滿足標(biāo)準(zhǔn)要求卻不管是否真正需要,顯然并不是一種合算的方法。但我們還是應(yīng)該為未來(lái)做好準(zhǔn)備,比如采用關(guān)鍵設(shè)計(jì)技術(shù)、單元測(cè)試方法和靜態(tài)分析工具,同時(shí)收集各項(xiàng)指標(biāo)數(shù)據(jù)來(lái)支持未來(lái)的需求。如果盡早啟動(dòng),軟件開(kāi)發(fā)團(tuán)隊(duì)就可以將這些方法無(wú)縫應(yīng)用到現(xiàn)有流程中。同時(shí)也應(yīng)盡早采用具有可擴(kuò)展性的正確方法,避免在開(kāi)發(fā)、測(cè)試和部署軟件時(shí)花費(fèi)更大的力氣使代碼合規(guī)。
-
嵌入式
+關(guān)注
關(guān)注
5092文章
19177瀏覽量
307657 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2913文章
44923瀏覽量
377010 -
編碼
+關(guān)注
關(guān)注
6文章
957瀏覽量
54951 -
物聯(lián)網(wǎng)設(shè)備
+關(guān)注
關(guān)注
1文章
235瀏覽量
19831
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
物聯(lián)網(wǎng)嵌入式系統(tǒng)
一篇文章揭開(kāi)嵌入式與物聯(lián)網(wǎng)的神秘面紗
嵌入式物聯(lián)網(wǎng)的硬件設(shè)計(jì)挑戰(zhàn)
嵌入式系統(tǒng)在物聯(lián)網(wǎng)應(yīng)用中有哪些優(yōu)勢(shì)?
物聯(lián)網(wǎng)與嵌入式系統(tǒng)的關(guān)系
入門(mén)物聯(lián)網(wǎng),嵌入式是關(guān)鍵
入門(mén)物聯(lián)網(wǎng),嵌入式是關(guān)鍵
入門(mén)物聯(lián)網(wǎng),嵌入式是關(guān)鍵
嵌入式系統(tǒng)與物聯(lián)網(wǎng)之間有什么關(guān)系?
嵌入式轉(zhuǎn)變物聯(lián)網(wǎng)
嵌入式與物聯(lián)網(wǎng)之間的關(guān)系
嵌入式技術(shù)在物聯(lián)網(wǎng)中的應(yīng)用是什么
求一種嵌入式物聯(lián)網(wǎng)最佳存儲(chǔ)解決方案
嵌入式系統(tǒng)與物聯(lián)網(wǎng)的關(guān)系
![<b class='flag-5'>嵌入式</b>系統(tǒng)與<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>的關(guān)系](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論