999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式軟件的安全設(shè)計

2020-07-06 01:08:50廖麗華
自動化儀表 2020年6期
關(guān)鍵詞:嵌入式故障功能

廖麗華

(1.上海儀器儀表自控系統(tǒng)檢驗測試所有限公司,上海 200233;2.上海工業(yè)自動化儀表研究院有限公司,上海 200233)

0 引言

隨著嵌入式技術(shù)的發(fā)展,嵌入式軟件已廣泛應(yīng)用于石油化工、核電、交通、航空航天等工業(yè)領(lǐng)域,成為工業(yè)信息化、智能化的重點。嵌入式產(chǎn)品或系統(tǒng)的安全投用,與人類的文明發(fā)展息息相關(guān)。所以,一旦嵌入式軟件的設(shè)計沒有考慮到安全性,就有可能使系統(tǒng)或產(chǎn)品發(fā)生故障,對人員、設(shè)備或環(huán)境造成災(zāi)難性后果,例如波音737MAX的墜毀、阿里亞娜5號火箭爆炸事故、溫州動車事故等事件。

人們越來越重視嵌入式軟件的安全設(shè)計,因此在相應(yīng)領(lǐng)域制定了一系列IEC、IEEE、ISO等嵌入式軟件標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)都對嵌入式軟件的安全設(shè)計作出了詳細(xì)的指導(dǎo)和規(guī)范,例如IEC 61508、IEC 60880、IEC 62138、IEEE 1012、ISO 26262、EN 50128、DO-178等。

1 安全與嵌入式軟件

安全即要求沒有不可接受的風(fēng)險。風(fēng)險是危害發(fā)生的概率與危險后果的嚴(yán)重程度的組合,所以識別危害和降低風(fēng)險是安全設(shè)計的基本要求和起點。危害識別是識別安全系統(tǒng)所需安全防御功能的第一步,也是非常重要的一步。如果某個安全防御功能沒有同相應(yīng)的危害或者危害事件聯(lián)系在一起,那么這個安全防御功能是不起任何作用的。一旦所有危害都被識別,安全設(shè)計工作即可完成一半。危害性分析[1]就是對由系統(tǒng)開發(fā)或運(yùn)行導(dǎo)致的軟件不良后果進(jìn)行的系統(tǒng)定性或定量的評價。這些后果可能包括損害、疾病、死亡、任務(wù)失敗、財產(chǎn)損失、環(huán)境破壞或負(fù)面社會影響。

風(fēng)險與安全的關(guān)系如圖1所示。

圖1 風(fēng)險與安全的關(guān)系圖

嵌入式軟件與嵌入式系統(tǒng)是密不可分的。嵌入式系統(tǒng)由國際電氣和電子工程師協(xié)會(IEEE)定義,是一種用于控制、監(jiān)視或者協(xié)助設(shè)備、機(jī)械和車間的裝置[2]。嵌入式軟件是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),且與外部硬件和設(shè)備緊密相連。嵌入式軟件具備以下特點。①一般根據(jù)應(yīng)用需求定向開發(fā);②因為它能在沒有人員干預(yù)的情況下獨(dú)立運(yùn)行,可用于特殊的工況;③實時性高,能夠迅速完成數(shù)據(jù)計算或數(shù)據(jù)傳輸;④靈活性強(qiáng),通常被設(shè)計成一種模塊化軟件,可以非常方便、靈活地運(yùn)用到各種嵌入式系統(tǒng)中,而且不會破壞或更改原有系統(tǒng)的特性和功能[3]。由于嵌入式軟件的主要服務(wù)對象為嵌入式系統(tǒng),如果軟件的存在風(fēng)險,則可能導(dǎo)致系統(tǒng)失效,從而造成嚴(yán)重的后果。所以,提高嵌入式軟件的安全性迫在眉睫。

嵌入式軟件的開發(fā)模型如圖2所示。

圖2 嵌入式軟件的開發(fā)模型

嵌入式軟件安全設(shè)計的最終目的就是將風(fēng)險降低到可接受范圍,而不是要求軟件完全無風(fēng)險。嵌入式軟件的安全分析貫穿系統(tǒng)/軟件安全生命周期的相關(guān)階段,所以應(yīng)在系統(tǒng)/產(chǎn)品的質(zhì)量保證計劃和安全計劃中,考慮軟件的安全分析。從嵌入式軟件的開發(fā)模型分析,嵌入式軟件的需求包含硬件自身對軟件的需求,所以硬件的安全性由軟件來保證。本文分別從硬件和軟件方面,闡述嵌入式軟件的安全設(shè)計。

2 相關(guān)硬件的安全分析

嵌入式系統(tǒng)結(jié)構(gòu)如圖3所示。

圖3 嵌入式系統(tǒng)結(jié)構(gòu)圖

整個嵌入式系統(tǒng)由硬件層、驅(qū)動層和軟件層組成。硬件層一般由電源、內(nèi)存、輸入輸出接口、人機(jī)交互接口、處理器、時鐘、定時器、內(nèi)部通信等組成。驅(qū)動層是硬件驅(qū)動及應(yīng)用服務(wù)接口層,不僅要實現(xiàn)硬件設(shè)備的基本功能和提供控制硬件的操作,還為應(yīng)用層提供調(diào)用驅(qū)動程序的接口,使得軟件開發(fā)者不用理會底層硬件的具體操作。在嵌入式系統(tǒng)中,軟件通過控制硬件來實現(xiàn)監(jiān)測和控制功能,并診斷出硬件的故障,使不可診斷的危險失效變?yōu)榭稍\斷的危險失效,以保證嵌入式系統(tǒng)不可診斷的危險失效足夠低。所以在嵌入式軟件安全設(shè)計之前,需先分析相關(guān)硬件的潛在失效模式,通過嵌入式軟件的安全設(shè)計提高嵌入式系統(tǒng)的整體安全。

嵌入式系統(tǒng)硬件從與嵌入式軟件的關(guān)系可分為兩類。一類是與嵌入式軟件運(yùn)行直接相關(guān)的硬件,包括處理器、寄存器、地址尋址、RAM、EPPROM、時鐘等。這些硬件故障會直接導(dǎo)致軟件運(yùn)行的錯誤。另一類是與嵌入式軟件正常運(yùn)行沒有直接關(guān)系,但是與嵌入式系統(tǒng)實現(xiàn)的功能相關(guān)的軟件,如ADC、DAC、SPI等。硬件安全設(shè)計除需選擇通用且長期使用的芯片和元器件之外,還應(yīng)使軟件具備如下功能。

①對電源過壓、欠壓、切換和斷電等情況的診斷功能,排除電源故障。

②對于可變內(nèi)存(如RAM等)的診斷功能,包括排除數(shù)據(jù)和地址的DC故障、內(nèi)存單元的動態(tài)交叉、軟錯誤引起的信息改變、尋址等故障。一般采用跳步模式或透明模式RAM測試法、Abraham RAM測試法、軟件比較和讀/寫測試的雙RAM[4]等算法。

③對于不可變內(nèi)存(如EPPROM等)的診斷功能,排除內(nèi)存中數(shù)據(jù)的存儲故障。一般采用多位冗余字保護(hù)、修正校驗、單字或雙字簽名和塊復(fù)制[4]等算法。

④對于外部的輸入輸出接口,必須先確定數(shù)據(jù)傳輸?shù)母袷健㈩愋秃头秶?;每次傳輸都至少使用防御性編程防止?shù)據(jù)的不合理性,采用奇偶校驗來檢驗其正確性。

⑤對于硬件接口,在進(jìn)行讀寫操作時,軟件須能檢測外部輸入或輸出設(shè)備的失效,且在硬件失效時,軟件能恢復(fù)到某個可接受的安全狀態(tài)。

⑥合理設(shè)置看門狗,保證程序運(yùn)行序列正確。

有些硬件只在上電時進(jìn)行一次診斷就可以保證其安全性。但對于存儲、通信及相關(guān)的硬件,只有一次診斷是不行。所以在使用系統(tǒng)/產(chǎn)品時,軟件設(shè)計還要對該類硬件進(jìn)行定期監(jiān)督診斷或檢驗。對于通信,可以在數(shù)據(jù)傳輸之前對數(shù)據(jù)傳輸通道進(jìn)行定期的檢測,以確保數(shù)據(jù)傳輸?shù)恼_性。

如果嵌入式軟件設(shè)有人機(jī)交互接口(LCD/觸摸屏、鍵盤、鼠標(biāo)等),且設(shè)有需要操縱員訪問或更改數(shù)據(jù)的功能,則軟件應(yīng)提供限制訪問權(quán)限功能,從而使得未授權(quán)人員或系統(tǒng)不能讀取或修改數(shù)據(jù)。對于人因可能帶來的安全性威脅,軟件在相關(guān)的設(shè)計、配置和(或)參數(shù)分配中,應(yīng)采取以下有效保護(hù)措施。

①分析配置和(或)參數(shù)修改的數(shù)據(jù)是否為安全數(shù)據(jù)。安全數(shù)據(jù)盡量限制其在配置狀態(tài)進(jìn)行配置。

②設(shè)備運(yùn)行過程中,通過界面修改安全數(shù)據(jù)。首先,應(yīng)限制其權(quán)限,再對修改后的數(shù)據(jù)進(jìn)行校驗,并反饋數(shù)據(jù)是否配置、修改成功。

③軟件設(shè)計應(yīng)考慮參數(shù)修改的可追溯性,以能記錄參數(shù)修改時間、修改人等信息為宜。

④軟件設(shè)計應(yīng)便于操作員采用單一操作即可讓系統(tǒng)退出潛在不安全狀態(tài),恢復(fù)到安全狀態(tài)。

⑤設(shè)計保護(hù)措施避免誤觸發(fā)操作,造成無意激活。例如設(shè)計啟動安全功能時,可由兩個或多個人員在“與”方式下操作,或者一個人至少兩個以上的操作才能觸發(fā)。

⑥安全操作手冊應(yīng)提供清晰、簡明且無歧義性的界面操作步驟、圖標(biāo)、顯示信息等。

3 軟件安全分析

目前,常用的安全分析方法有檢查表分析法、假設(shè)分析法、軟件失效模式及影響分析(software failure mode and impact analysis,SFMEA)[5]、軟件故障樹分析法(software fault tree analysis,SFTA)[6]、事件樹分析法(event tree analysis,ETA)和危害與可操作性分析法(hazard and operability analysis,HAZOP)。在軟件安全分析方面,最實用的是軟件失效分析,而且在軟件的生命周期階段的系統(tǒng)需求、軟件需求及設(shè)計階段都應(yīng)進(jìn)行分析。例如,在需求和設(shè)計階段,對軟件初始化模塊進(jìn)行失效分析,得到相應(yīng)的軟件需求規(guī)格書(software requirements specification,SRS)。軟件設(shè)計說明(software design discription,SDD)。初始化模塊的軟件失效分析結(jié)果如表1所示。

表1 初始化模塊的軟件失效分析結(jié)果

4 軟件設(shè)計

軟件設(shè)計描述是便于分析、計劃、實施和決策而創(chuàng)建的軟件表示。一般采用一種或數(shù)種較高級的形式進(jìn)行描述,例如數(shù)理邏輯、集合論、偽代碼、真值表、邏輯圖等。為了避免其歧義性,應(yīng)盡可能地讓所有系統(tǒng)都使用相同的架構(gòu)和技術(shù)方法(例如均采用自上而下的方法),以防設(shè)計產(chǎn)生錯誤。例如,軟件的安全性設(shè)計可以從以下幾個方面考慮。

(1)模塊設(shè)計方面。①應(yīng)選擇模塊化設(shè)計,且要求清晰簡單、可測試,以盡可能降低后期的修改對軟件的影響。②軟件模塊間內(nèi)聚耦合應(yīng)采用高內(nèi)聚低耦合。③除中斷外,每個模塊只能有一個入口和一個出口,以避免死循環(huán)。④模塊的大小盡量限制在兩個屏幕之內(nèi),即大約200行之內(nèi)。⑤高層模塊高扇出,底層模塊高扇入,可適當(dāng)增加模塊的扇入,避免代碼重復(fù)。⑥最小化共模故障,便于共因故障的檢測。⑦應(yīng)確定模塊的存儲量、輸入輸出通道的吞吐能力及處理時間要求,從而確認(rèn)留下足夠的余量要求(例如,安全軟件要求余量大于30%,內(nèi)存建議大于40%)。⑧每個模塊都應(yīng)有足夠詳細(xì)的功能性或算法注釋,注釋率至少大于20%。

(2)功能設(shè)計方面。①軟件設(shè)計要求沒有本身的設(shè)計故障,例如死鎖、訪問非授權(quán)的資源、資源泄漏等。②如有軟件組件或硬件自帶代碼,必須考慮其軟件接口。特別是有些自帶診斷功能的硬件,要增加報警功能。③根據(jù)設(shè)備的特性確定時間周期,如采樣周期、數(shù)據(jù)計算處理周期、控制周期、自診斷周期、輸入輸出周期等。④確保執(zhí)行安全防御功能在規(guī)定的時間內(nèi)執(zhí)行,且故障響應(yīng)時間應(yīng)小于最小安全時間。⑤采取適當(dāng)?shù)姆烙跃幊?,以防止?shù)據(jù)結(jié)構(gòu)的改變和破壞,特別是在數(shù)據(jù)出現(xiàn)壞值或超量程時。⑥安全功能可設(shè)為受控于兩個獨(dú)立的功能[7],避免誤動作降低設(shè)備的可用性。⑦執(zhí)行安全或其相關(guān)功能的模塊應(yīng)盡量放在一起,并同其他模塊隔離,以便對其進(jìn)行保護(hù)。⑧與硬件狀態(tài)變化有關(guān)的設(shè)計應(yīng)考慮狀態(tài)監(jiān)測的時間或次數(shù)。若無此要求,則可利用循環(huán)等待次數(shù)作為依據(jù),超出之后作為超時處理,以防軟件進(jìn)入死循環(huán)。⑨能由軟件自己完成的功能,應(yīng)盡量避免人工干預(yù)。

安全設(shè)計前后的算法流程如圖4所示。

圖4 安全設(shè)計前后的算法流程圖

(3)編程設(shè)計方面。

① 編寫編碼標(biāo)準(zhǔn),使用安全語言子集編程。特別是對于高級語言程序,不可用非結(jié)構(gòu)化控制流。

② 限制使用中斷,以防產(chǎn)生同步問題或運(yùn)行時間問題。特別是在被執(zhí)行的關(guān)鍵部分(例如時間轉(zhuǎn)折、數(shù)據(jù)改變),應(yīng)禁用中斷。當(dāng)使用中斷時,不可中斷的部分應(yīng)規(guī)定最大計算時間,以及允許禁止一次中斷的時間。

③ 限制使用遞歸,以防不可驗證或測試的子程序調(diào)用。如果必須使用,則應(yīng)制定一個明顯的、可預(yù)測遞歸深度的判據(jù)。

④ 在建立動態(tài)變量或動態(tài)對象過程中,需提供在線檢查功能。在分配之前,借助硬件或軟件檢查被分配存儲器是空閑的,從而保證在軟件運(yùn)行時動態(tài)變量和對象的內(nèi)存分配不會影響現(xiàn)存的變量、數(shù)據(jù)或代碼。

⑤ 任何數(shù)據(jù)都應(yīng)規(guī)定其合理的范圍,并有明確的邊界值。需要特別注意特殊數(shù)據(jù)的處理,例如零除數(shù)、空白ASCII字符、空棧或者表元素、滿矩陣等。

⑥ 應(yīng)盡量采用簡單的算術(shù)表達(dá)式代替復(fù)雜表達(dá)式,以便測試及修正。

⑦ 不使用邏輯“0”或“1”表示“安全”或“危險”狀態(tài),其判斷條件不依賴于全“0”或全“1”[7]。

⑧ 使用簡單的數(shù)據(jù)結(jié)構(gòu),不使用非結(jié)構(gòu)化控制流。

5 結(jié)論

嵌入式軟件的安全性設(shè)計主要是將軟件中出現(xiàn)故障和錯誤的風(fēng)險降至最小,從而確保遺留在軟件中的風(fēng)險不會導(dǎo)致不可接受的后果,使設(shè)備滿足安全相關(guān)要求。但如何保證安全設(shè)計時所采取技術(shù)或措施的有效性和正確性,就要求對軟件進(jìn)行驗證與確認(rèn)[8]。只有經(jīng)過驗證與確認(rèn)后的軟件,才能保證系統(tǒng)/產(chǎn)品的安全性[9]。

猜你喜歡
嵌入式故障功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
故障一點通
搭建基于Qt的嵌入式開發(fā)平臺
關(guān)于非首都功能疏解的幾點思考
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
奔馳R320車ABS、ESP故障燈異常點亮
故障一點通
江淮車故障3例
Altera加入嵌入式視覺聯(lián)盟
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 亚洲一区二区三区在线视频| 女同国产精品一区二区| 熟妇无码人妻| 国产欧美在线观看一区| 亚洲欧州色色免费AV| 在线a视频免费观看| 婷婷亚洲天堂| 99热6这里只有精品| 欧美人与牲动交a欧美精品| 91精品国产自产在线观看| 日韩欧美91| 亚洲国产精品无码AV| 福利在线免费视频| 99久久性生片| 97在线视频免费观看| 青草午夜精品视频在线观看| 毛片网站在线看| 国产福利影院在线观看| 国产乱子伦精品视频| 97一区二区在线播放| 一级毛片基地| 欧美另类图片视频无弹跳第一页 | 国产一区二区丝袜高跟鞋| 人妻丰满熟妇AV无码区| 久久亚洲高清国产| 欧美日韩精品一区二区视频| 国产成人艳妇AA视频在线| 人妻丰满熟妇αv无码| av一区二区三区在线观看| 国产精品久久久久久搜索| 国产欧美日韩91| 欧美日韩一区二区在线播放 | 国模极品一区二区三区| 毛片国产精品完整版| 欧洲熟妇精品视频| 少妇露出福利视频| 亚洲色图欧美在线| 大陆国产精品视频| 婷婷综合色| 毛片网站观看| 亚洲欧美激情小说另类| 草草影院国产第一页| 国产va在线观看免费| 精品在线免费播放| 日韩a级毛片| 午夜无码一区二区三区| 精品少妇人妻av无码久久 | 久久精品丝袜高跟鞋| 亚洲第一天堂无码专区| 亚洲精品国产综合99| 久久久波多野结衣av一区二区| 久久青草热| 日韩欧美网址| 高潮毛片无遮挡高清视频播放| 亚洲天堂网2014| 亚洲国模精品一区| 青青草国产在线视频| 亚洲无码高清视频在线观看| 熟女日韩精品2区| 99视频精品在线观看| 亚洲国产日韩欧美在线| 日韩色图在线观看| 国产视频你懂得| 欧美日韩免费| 亚洲第一精品福利| 国产精品.com| jizz在线免费播放| 天堂网亚洲系列亚洲系列| 国产亚洲精久久久久久无码AV| 欧美成人第一页| 手机永久AV在线播放| 成人午夜在线播放| 免费看a级毛片| 免费人成又黄又爽的视频网站| 91久久夜色精品国产网站| 最新国产精品第1页| 白丝美女办公室高潮喷水视频 | 国产精品人成在线播放| 毛片三级在线观看| 不卡无码网| 97se亚洲综合在线天天| 97se亚洲综合在线韩国专区福利|