3種切實可行的方法來驗證您的IoT設(shè)備
盡管在IoT上下文中嵌入式設(shè)備具有潛力,但目前并不需要許多設(shè)備符合安全標(biāo)準(zhǔn)。但是在物聯(lián)網(wǎng)開發(fā)的敏捷世界中,在已經(jīng)編寫和測試了代碼之后,合規(guī)性要求可能會晚得多。那么,如何為嵌入式物聯(lián)網(wǎng)設(shè)備的未來做好準(zhǔn)備?
物聯(lián)網(wǎng)(IoT)術(shù)語是指發(fā)布和/或使用數(shù)據(jù)的具有網(wǎng)絡(luò)功能的設(shè)備,組件或服務(wù)的系統(tǒng)。物聯(lián)網(wǎng)應(yīng)用正成為我們生活中不可或缺的一部分:從工業(yè)機器人和手術(shù)器械到自動駕駛汽車和自動駕駛無人機。今天,這些設(shè)備中的許多設(shè)備已經(jīng)可以影響其用戶的安全性,隱私權(quán)和安全性。在某些情況下,故障的代價是致命的,因此,按現(xiàn)行標(biāo)準(zhǔn)制造這些設(shè)備至關(guān)重要。
盡管最好從一開始就將合規(guī)性活動嵌入軟件設(shè)計中,但眾所周知的事實是,嚴(yán)格的開發(fā)流程(尤其是沒有自動化的幫助)會影響產(chǎn)品上市時間。沒有多少開發(fā)人員喜歡在正常工作時間之外進行額外的測試和記錄可追溯性,因此,務(wù)實,敏捷和快節(jié)奏的團隊通常不能以在計劃中“可能需要”為前提建立合規(guī)性來失去動力。未來。取而代之的是,許多團隊選擇“在到達那座橋時越過那座橋”。
不幸的是,沒有魔術(shù)棒或銀彈可以追溯“使”代碼兼容。這些組織正在努力學(xué)習(xí)的是,在項目結(jié)束時增加合規(guī)性的成本要比開發(fā)初始工作產(chǎn)品的成本高幾個數(shù)量級。
那么,為了滿足明天的嚴(yán)格合規(guī)性要求,您今天可以采取哪些低影響的措施?
措施1:了解技術(shù)債務(wù)
了解您的項目目前的位置非常重要。技術(shù)債務(wù)的金額是由于代碼復(fù)雜性以及代碼中當(dāng)前存在的任何剩余編碼標(biāo)準(zhǔn)和安全性違規(guī)導(dǎo)致的潛在返工成本。該債務(wù)歸因于隨后的代碼清理,修復(fù)和測試。掌握當(dāng)前項目狀況的一種方法是使用自動靜態(tài)代碼分析。靜態(tài)分析可深入了解代碼庫的質(zhì)量和安全性,并列舉適用的編碼標(biāo)準(zhǔn)違規(guī)情況。
不幸的是,許多使用C和C++開發(fā)嵌入式應(yīng)用程序的團隊仍然依靠他們的編譯器或手動代碼審查來發(fā)現(xiàn)問題,而不是采用靜態(tài)分析。一些團隊出于各種原因而努力采用靜態(tài)分析工具,例如發(fā)現(xiàn)它們嘈雜且難以使用(如果您學(xué)習(xí)了正確的入門方法,就不會有問題),或者無法將其用于日常開發(fā)過程中由于緊急的日常事務(wù)。常見的(誤)理解是,確定哪些違規(guī)值得解決所花費的時間大于實際修復(fù)的價值。
但是我們發(fā)現(xiàn),在項目后期面對功能安全審核時,采用少量關(guān)鍵性和強制性規(guī)則的團隊花費更少的時間來重新編寫代碼。通過實施(例如)CERT C安全編碼準(zhǔn)則,從根本上構(gòu)建安全可靠的系統(tǒng)要容易得多。您可以從小處著手。 CERT擁有完善的優(yōu)先級劃分系統(tǒng)(使用嚴(yán)重性、可能性和補救成本,每三個級別,總共27個級別),并且,如果您使用Parasoft工具,則可以在預(yù)配置的儀表板中輕松查看合規(guī)性狀態(tài)。
靜態(tài)分析還可以通過收集數(shù)據(jù)點來幫助組織了解其技術(shù)欠債,這些數(shù)據(jù)點可以幫助管理層實現(xiàn)安全合規(guī)。管理人員可以輕松評估重要問題,例如:
- 我的基準(zhǔn)是多少?我的代碼庫中存在多少個非關(guān)鍵編碼標(biāo)準(zhǔn)沖突?
- 趨勢數(shù)據(jù):每個版本都報告新的和固定的違規(guī)?我們是好還是壞?
- 我今天的代碼復(fù)雜度是多少?它在增長嗎?
一些標(biāo)準(zhǔn)要求測量圈復(fù)雜度,以使其保持在一定閾值以下。復(fù)雜性指標(biāo)也可以用于估計測試工作——例如,您需要證明100%分支級別覆蓋以符合IEC 61508 SIL 2的測試用例數(shù)量,將與該函數(shù)的McCabe環(huán)復(fù)雜性成比例。
下面是一個儀表板示例,顯示了Parasoft DTP(Parasoft的報告和分析中心)中項目對MISRA的遵守情況:
這與CERT C相同:
查看代碼指標(biāo)的價值可能有助于揭露更復(fù)雜的區(qū)域,以便進行其他代碼審查,并監(jiān)視測試對這些區(qū)域的覆蓋程度。這是度量指標(biāo)儀表板的示例:
因此,您可以從基礎(chǔ)開始。一旦團隊對管理最關(guān)鍵的錯誤感到滿意,就可以增加違反標(biāo)準(zhǔn)的范圍。并非所有規(guī)則都是一成不變的,因此,重要的是要確定哪些規(guī)則在項目編碼標(biāo)準(zhǔn)之內(nèi)或之外。至少,在幾個關(guān)鍵編碼標(biāo)準(zhǔn)中采用強制性規(guī)則集(例如MISRA強制性或CERT C規(guī)則)可以使連接設(shè)備將來的安全性和安全性論證更加容易。
措施2:建立合格的單元測試框架并衡量代碼覆蓋率
大多數(shù)務(wù)實的工程師傾向于同意盲目地為所有功能創(chuàng)建單元測試并不能提供良好的投資回報率。但是,如果您的團隊可以將單元測試框架作為項目沙箱的一部分進行訪問,則這是一筆寶貴的投資。當(dāng)工程師認(rèn)為需要單獨測試某些復(fù)雜算法或數(shù)據(jù)操作時,可以智能地使用單元測試。在開發(fā)單元測試的過程中,還有一個重要的價值——我們從組織中看到的是,簡單地編寫和執(zhí)行單元測試的做法會使代碼更健壯和設(shè)計更好。
當(dāng)出現(xiàn)安全性或安全性合規(guī)性要求時,組織可以通過臨時增加人員來迅速提高單元測試的工作量。但是,為了迅速擴大工作量,在整個項目過程中應(yīng)該已經(jīng)理解并記錄了單元測試框架和過程??紤]到未來合規(guī)性的可伸縮單元測試框架的共同特征是:
- 符合給定安全標(biāo)準(zhǔn)的預(yù)期用途(例如通過TüV證書)
- 集成到自動化構(gòu)建系統(tǒng)中
- 報告所需的代碼覆蓋率指標(biāo)(例如MC/DC)
- 記錄每次構(gòu)建并隨時間推移執(zhí)行的測試的結(jié)果和覆蓋范圍
- 可用于多個項目和團隊
關(guān)鍵要點是部署未來安全標(biāo)準(zhǔn)要求的所有測試技術(shù),但要以最小的規(guī)模進行。當(dāng)出現(xiàn)認(rèn)證需求時,這比從頭開始更容易擴展。
措施3:隔離關(guān)鍵功能
設(shè)計嵌入式系統(tǒng)需要考慮很多“缺點”:簡單性、可移植性、可維護性、可伸縮性和可靠性,同時還要解決延遲、吞吐量、功耗和大小限制之間的折衷。在設(shè)計可能會連接到大型IoT生態(tài)系統(tǒng)的系統(tǒng)時,許多團隊并未將安全性和安全性放在其他一些質(zhì)量因素之上。
為了使將來的安全合規(guī)性變得更容易(并遵循良好的架構(gòu)實踐),您可以在時間和空間上分離組件。例如,您可以設(shè)計一個系統(tǒng),其中所有關(guān)鍵操作都在單獨的專用CPU上執(zhí)行,而所有非關(guān)鍵操作都在另一個CPU上運行,從而實現(xiàn)物理隔離。另一個選擇是采用“分離內(nèi)核管理程序”和“微內(nèi)核”概念。還有其他選擇,但是關(guān)鍵是采用關(guān)鍵架構(gòu)方法,將關(guān)注點分離、縱深防御和盡早混合關(guān)鍵性分離。這些方法不僅減少了遵守安全標(biāo)準(zhǔn)的工作量,而且還提高了應(yīng)用程序的質(zhì)量和彈性。例如,以下是一些隔離關(guān)鍵代碼的方法:
- 空間域:
- 檔案
- 模組
- 目錄
- 圖書館
- 執(zhí)行域:
- 線程,RTOS任務(wù),管理程序
- CPU核心,獨立的CPU
將關(guān)鍵功能與非關(guān)鍵功能分開可以減少將來為證明合規(guī)性而進行的驗證工作的范圍。
總結(jié)
物聯(lián)網(wǎng)生態(tài)系統(tǒng)中的許多邊緣設(shè)備提供的關(guān)鍵服務(wù)可能屬于未來的安全標(biāo)準(zhǔn)。 當(dāng)然,在不知道是否需要標(biāo)準(zhǔn)的情況下嘗試遵守標(biāo)準(zhǔn)并不是一種經(jīng)濟有效的策略。為了為未來做準(zhǔn)備,組織可以采用關(guān)鍵設(shè)計技術(shù),單元測試方法和靜態(tài)分析工具,并收集度量標(biāo)準(zhǔn)來支持未來的需求。如果足夠早地開始,軟件團隊可以將這些方法無縫地應(yīng)用到其現(xiàn)有流程中。從正確的方法開始,盡早進行擴展,然后再進行擴展,以防止在開發(fā)、測試和部署軟件代碼時合力地付出努力。