不同行业的软件安全标准介绍和对比
轉載于知乎Jessie Yang :https://zhuanlan.zhihu.com/p/112735361
引言
隨著工業各個領域的系統復雜度和軟件功能的快速發展,在每個行業都有相應的軟件開發保證標準,來保證所研制的軟件達到相應的安全級別。那么各個行業的軟件安全標準之間有什么共性和差別呢?
這里簡要介紹六種不同的軟件開發保證標準,包括民航(DO-178C)、汽車(ISO 26262) 、航天(ECSS-Q-ST-80C)、工業自動化(IEC61508)、核工業(IEC 60880 ) 和軌道(EN 50128),并且比較每個標準在規定的目標、活動、方法和工具上的異同。
各行業安全標準概述
我們先從工業通用標準 IEC61508說起—
- 創始祖師 IEC61508
1985年: IEC成立了一個PESs 工作組,試圖對安全相關軟件設立一個國際安全標準1998-2000: IEC 61508 Part 1~7 發布
2002年: 開始更新改進標準
2005年: IEC61508 - 0 發布 (Part 0: Functional safety and IEC 61508)
2010年: IEC 61508 Edition 2.0 發布
工作組的本意是建立一個基礎模板 — 僅僅用于設定起草各行業標準的規則。但實際上,現在IEC 61508 往往被直接用于工業領域。之后,各分支行業的具體標準從IEC 61508 派生:
各分支行業的具體標準從IEC 61508 派生
過程工業,機械(IEC 61511:2003,62061:2005),電力驅動系統,可編程控制器(IEC 61800:1997,61131-6(CDV)),通信網絡(61784-3:2007) ,爆炸性環境,檢測,測量,設備(EN 60079,50271,5042),醫療設備(IEC 60601:2005),鐵路(EN 50126,50128,50129),汽車(ISO / DIS 26262),其中最接近的一個是過程工業的IEC 61511,因為大多數IEC 61508工作組成員來自該領域。
注:IEC 61508對某些標準的派生關系受到爭議,因為某些“行業特定”標準(例如 IEC 61513 核工業)早于IEC 61508發布,并且開發出非常不同的安全方法。
值得注意的是,盡管系出同門,但各行業在標準應用時,與原有運行標準和整體系統方法往往有沖突。比如航空的DO-178C與IEC 61508有很大差異。
- 核能領域
IAEA(國際原子能機構)于1957年在聯合國成立,旨在促進和支持安全利用核技術促進和平應用,目前有151個成員國。
已有標準: “安全導則”[IAEA NS-G-1.3](2002) 為“核電廠安全重要的儀器與控制(I&C)系統”提供了一般指導,介紹了這些系統的分類,安全要求和設計。它結合和修訂了1980年發布的早期指南(50-SG-D3:保護系統和相關功能)和1984(50-SG-D8:安全相關儀器和控制系統)。
根據與國際原子能機構的協議,IEC 在技術細節方面制定了實施國際原子能機構安全原則的標準。自1980年代以來,IEC已經定制了以下設計和驗證基于計算機的系統的方法,以滿足核電廠的需求:
IEC 61226- 核電廠I&C(儀器和控制)功能分類方法。
IEC 61513-為用于執行安全重要功能的I&C系統提供一般指導,并考慮到其分類。
IEC 60880-對核電站最高級I&C系統的軟件提出要求,以實現高可靠性的軟件。
- 民用航空領域
1980年,無線電航空技術委員會(現在的RTCA)成立了一個開發和記錄軟件實踐委員會,以支持開發基于軟件的機載系統和設備。 歐洲民用航空電子組織(現在的EUROCAE)此前已經成立了一個工作組來制作類似的文件,并于1980年10月準備出版文件ED-35“軟件建議書” 機載系統的實踐與文獻。EUROCAE決定停止編輯自己的文件,并加入RTCA來制定一套通用的指南。 1982年出版了名為ED-12 / DO-178“機載系統和設備認證中的軟件注意事項”的聯合文件,1985年修訂版A,1992年修訂版B。2012年發布 ED-12 / DO-178C,包括特定技術或方法的指導原則。
在修訂DO-178BB的開發過程中,委員會發現,系統級信息需要作為軟件開發過程的輸入。 許多系統級決策對于飛機系統的安全和功能方面至關重要,有必要將與這些決策有關的過程和結果進行監管。因此,SAE(汽車工程師協會)和EUROCAE在1995年出版了ED-79 / ARP-4754“高度集成或復雜的飛機系統的認證注意事項”。 它涉及實現飛機級功能的系統總體生命周期。 它重點關注對系統建立安全性的問題,而不覆蓋各系統、軟件和硬件的具體設計流程。2010年,委員會又進一步發布了ED-79 / ARP-4754A。
2000年4月,EUROCAE / RTCA又發布了文件**ED-80 / DO-254“機載電子硬件設計保證指導”**來解決復雜硬件設計方面的具體要求。
在系統層面,同時還有一個重要的 EUROCAE / SAE文件ED-135 / ARP-4761詳細說明了安全評估過程的方法。
民航領域的主要安全標準
- 航天領域
航天領域的監管歷史可以追溯到上世紀更早期。聯合國COPUOS(和平利用外層空間委員會)于1958年成立,該委員會制定了一系列條約和原則,特別確定了各國本地發射造成的潛在損害的責任。因此,大多數國家已經制定了適用于太空發射活動的規則和法律授權方案。
除了法律制度之外,航天業已經認識到建立和實施空間產品和方案的標準的價值和需要。例如在歐洲,歐空局標準化體系PSS(程序,規范和標準)逐步闡述之后,歐洲航天局與歐洲航天機構和行業在九十年代初建立了歐洲空間標準化組織(ECSS)ECSS,以制定和維護單一、一致、公認的共同標準體系。
ECSS標準不具有法律強制性,可以根據具體情況的協議采用和改編。其實現是通過涉及所有利益攸關方的合作工作來闡述的。
ECSS系列組織為三大分支(M:空間項目管理; Q:空間產品保證; E:空間工程)。
每個分支都有一級標準、可能補充附加文件(更詳細的標準或指導,以應用一級標準,或提供額外的非規范性信息的手冊)。
- 汽車領域
汽車行業最知名、應用最廣泛的安全標準當屬 SAE ISO 26262,ISO 26262:(Road vehicles – Functional Safety)是在IEC 61508 標準的基礎上,以道路車輛電子及電氣系統應用產業的角度,具體規范汽車電子安全系統從開發到使用的安全生命周期的技術與管理要求。
近年來,隨著自動駕駛、智能網聯的快速發展,ISO PAS 21448、21434 、UL4600 等相關標準也在制定中。
- 軌道領域
軌道行業的國際安全標準主要由CENELEC是歐洲鐵路電工設備標準化委員會(替代國家標準)發布,CENELEC與IEC合作,其標準通常被接受為全球標準。目前CENELEC/IEC標準主要包括:
軌道行業主要安全標準
?EN 50126 :1999 (IEC 62278) **(Part2 :2017)**鐵路控制和保護系統的RAMS(可靠性,可用性,可維護性和安全性)規范和演示
?EN 50129:2003 (IEC 62280) 鐵路控制和保護系統的安全案例
?EN 50128:2011 (IEC 62279) 鐵路控制和保護系統軟件
EN 50126 和 EN 50129 關注系統層需求 , EN 50128 關注軟件層需求
預告:下一篇講繼續介紹基于以上標準,各個行業的認證、鑒定、信用批準,以及各個標準的技術比較。
【參考文獻目錄】
引言
上一篇文章簡要介紹了各個行業主要的安全標準,這一篇繼續分享— 基于各行業的安全標準,怎樣進行軟件認證、工具鑒定、信用批準等方面。
首先,我們來看兩個概念----
認證 Certification Vs. 評估 Assessment
談到安全標準,我們就避不開兩個基本概念:認證和評估。
- 評估 Assessment: 為某個實體(個人、組織或人工產品)授予某置信水平的一系列活動。其有效性依賴于: 項目、參與者、使用情況、時間線。
- 認證 Certification: 評估申請人向認證機構證明其工程過程,表明制造商通過遵守安全標準來確保對安全目標的監管。認證旨在驗證在一個領域(如能源或運輸)提供安全關鍵產品或服務的工業行為者確實提供了安全的產品或服務。 認證涉及申請人,標準條例,管理局和必須獨立或部分獨立于申請人的評估機構。
大多情況下,這些標準條例是由國際組織成員國設立的,成員國同意建立共同的規則來防止共同的風險。比如: ICAO在民航,IAEA核工業,聯合國在航天工業。某些情況下,標準條例在國家級生效,然后在國際層面上解決跨境互操作性問題。 比如鐵路行業,歐洲成員國目前正在執行標準的統一進程 — 相互接受其國家證書。
*注意:工業領域的認證并不會導致責任從申請人轉移到認證機構。 在發生嚴重事故的情況下,涉及的制造商或服務提供者是唯一可以起訴的實體。*
此外,還有一個概念也經常被提及,那就是鑒定 Qualification:
鑒定針對**特定項目中的特定任務,**是為一個實體(可以是一個組織、一個人、一個工具)提供置信水平的一系列活動。
例如,用鑒定來確保通過使用工具自動化的軟件生命周期過程將導致與手動執行過程相同或更高質量的輸出。
目前,無論是航空、軌道、汽車等領域,還是工業領域,都對工具使用有著特別的要求,如果通過使用工具,消除或者自動化了部分人工工作,都需要根據所涉及的軟件安全級別,對所使用的工具進行相應等級的工具鑒定。這實際上是把軟件開發人員的部分工作轉移到了工具開發商那邊。
各行業對評估和認證的信用批準
根據各行業的不同情況,管理局和評估機構可能是同一機構(例如,民用航空局的FAA和EASA),也可能只有頒發證書的機構,但沒有與申請人(例如工業自動化和航天業)獨立的評估機構的情況。
申請人和評估機構之間的利益無關,是核工業(IRSN)、鐵路(ERA,EPSF,STRM-TG)和航空(EASA-FAA)認證的關鍵要求。
- 航空
由FAA或EASA等獨立機構負責飛機及其嵌入式系統的安全認證。
認證通常適用于飛機或發動機類型。
認證機構將軟件視為安裝在認證飛機或發動機中的機載系統或設備的一部分; 也就是說,認證機構不會將該軟件作為唯一的獨立產品。 目前,計算機硬件和軟件必須做為每次安裝的一個“系統”被批準。
- 航天
適用于歐洲航天領域的一系列標準,由ECSS、歐洲航天標準化合作,歐洲航天局,國家航天機構和歐洲工業協會為發展和維持共同目標而合作制定。
ECSS標準不是法律強制的,而是通過合同逐案提出、采用、修改。這并不意味著航天業不會以更嚴格的方式進行認證 — 大多數國家對于在其領土上發射的航天設備,都制定了與發射裝置、航天器、發射程序有關的特定法律規則,以及相應的許可證制度。
- 汽車領域
SAE ISO 26262提供了一系列要求,即所謂的確認措施,以確保對E/E方面的安全性進行適當的評估。
執行確認措施的行為人員應具有與負責發展和釋放生產的人員的最低程度的獨立性。 **ASIL(汽車安全完整性等級)**越高,所需的獨立性就越高。 值得注意的是,所需的最高獨立性, 可能允許在同一家公司內。
確認措施包括:
**安全評估,**以驗證關鍵的可交付成果,
安全審計,以驗證過程的適當性,
評估整個安全項目的安全評估。
- 軌道交通
主要認證標準是法律要求的歐洲鐵路標準 CENELEC 5012x系列標準, 它們是歐盟鐵路行業的“實踐守則”,也是鐵路安全相關應用審批的先決條件和促進市場準入的國際標準,在歐洲各國具有法律的約束力。
認證和鑒定根據符合特定標準和/或規范要求確定。可能需要第三方認證,或進行自我評估。
比較成熟的評估體系包括:英國CASS安全評估框架、德國TUV評估體系等,他們主要以EN鐵路標準為基準,依托第三方評估機構對已有線路和在建項目的進行安全性論證。
- 工業自動化
標準IEC 61508 不提供任何類型的認證。
歐洲機械業指令(EMD)要求完成具有CE標識的認證 — 由制造商完成自我認證。
- 核工業
所有使用核能的國家都設立了安全管理局,以控制其使用,保護人民和環境免受輻射的有害影響。比如在法國,安全管理局是ASN大學, 其技術支持是無線電保護和核保安學院(IRSN)。核電廠不是去提交“認證”申請,而是通過授權運營。 根據ASN的提案,授權必須通過政府的正式法令。
一張圖總結:
各行業的申請人、評估機構與認證機構
我們可以看到,通常在航空、軌道、航天、核能領域,都要求由獨立的第三方機構進行認證,而自動化、汽車領域,并沒有強制要求第三方認證(近年來,汽車行業隨著自動駕駛的快速發展,安全性要求進一步提升,已經有改變的趨勢)。
不同行業,評估和認證獨立性要求嚴格程度遞增
預告: 不小心寫太長,下一篇繼續介紹各行業標準的技術比較。
【參考文獻目錄】
引言
上兩篇文章簡要總結了不同行業的軟件安全標準概況和認證、取證,這篇接著來說說各個標準在技術上的具體差別。
Jessie Yang:不同行業的軟件安全標準介紹和對比 (上篇)9 贊同 · 0 評論文章
Jessie Yang:不同行業的軟件安全標準介紹和對比 (中篇)5 贊同 · 0 評論文章
各個標準的軟件安全標準技術比較
不同行業對于軟件安全的標準和要求各有特點,基本上可以從幾個方面來做個比較和總結:
- 集成安全系統 Vs. 獨立安全系統
- 規定目標 Vs. 規定方法
- 嚴重程度和保證級別分類
- 容錯或故障預防
- 概率評估與確定性分析
- 安全案例
1)集成安全系統 Vs. 獨立安全系統
根據不同應用和領域,“安全”是通過不同架構來確保的。
比如, 核電、機械自動化、航天和軌道領域通常采用一個專門的安全系統:安全由一個相對獨立的系統來監控和保證,與執行所需功能的系統區分開來。而汽車和航空領域,安全性通常是“集成”在功能系統中。
在具體實踐中,這種選擇是根據風險與保護系統的結構來確定。例如,如果沒有特定的安全狀態,分離的保護系統是沒有作用的,因為在保護系統故障時,不可能將受控設備驅動到安全狀態。因此,必須專注于安全控制系統,而不是去開發專用的獨立保護系統。
汽車行業,硬件成本是關鍵的設計驅動。因此,不會考慮專用的獨立保護系統。在大多數應用中,控制系統提供內置機制來檢測故障并將系統置于安全狀態。在某些情況下,當可以使用另一個系統的現有功能作為保護機制時,則會考慮外部安全。
2)規定目標 Vs. 規定方法
各個安全標準,或者對滿足高級別安全目標的方法進行規定,或者對目標進行規定,至于方法,則完全由申請人負責。
**方法規范性標準,**在嚴格按照作者所設想條件的情況下,易于使用。然而,它不能很好地應對新技術、方法和工具的出現。
目標規范性標準可適用于各種技術、生命周期、工具等,但需要在使用前進行解釋 ; 并且解釋可能存在問題,可能與標準作者的意圖有很大差異。
在這兩個極端之間,不同的標準采取了各種立場:
IEC 61508和EN 50128是指定方法的,因為它“建議”、“強烈建議”甚至“命令”具體的方法來實現安全目標;
ED-12 / DO-178 一般認為是目標性規定標準;
ISO / DIS 26262和ECSS,通過建議技術方法,混合了一些針對目標的要求。
3)嚴重程度和保證級別分類
在各個行業領域中,標準都有 “級別”的分類,比如安全完整性級別、關鍵類別等。其思想是將系統(或功能,組件等)與潛在故障的最壞后果(嚴重程度)相關聯 ,某些領域(例如汽車)里,可能與曝光頻率相結合。 經典的基于風險評估的方法中,每個“級別”對發生故障的可能性設置了限制,從而將風險控制在可接受的范圍內。
關鍵類別通常都是分配給功能, 這樣就定義了用于開發(和驗證)該功能的實施元素(系統\硬件\軟件項目)的(部分)需求,以便針對不同類別適當地處理可能的故障來源:
- 隨機硬件故障:對于每個類別,安全標準定義了目標最大故障率、導致故障的最小獨立錯誤數。
- 影響系統、硬件或軟件設計的開發錯誤:安全標準定義了適用于所有開發和驗證過程的要求,特別是開發和驗證流程。對于不同的關鍵類別(或類似概念),有著不同的要求,定義不同的DAL(開發保證級別)。 其思想是,不試圖量化評估由于這些錯誤而導致的故障概率,而是考慮滿足這些要求,提供了與風險嚴重程度相當水平的信心。
所有標準在基本原則上都是一致的,并且都認為必須強制隔離不同級別元素之間的故障傳播。但是,針對如何對后果的嚴重程度定義和排序,以及如何分配關鍵類別(例如,是否以及如何,通過在較低級別采用某種冗余方案,來實現某個級別的功能),標準之間存在著明顯的差異。
- IEC 61508 分為SIL 1-4 ,EN50128分為SIL 0-4 ,ISO / DIS 26262分為ASIL A,B,C,D
- ED-12 / DO-178 分為 DAL A,B,C,D ,其中A級針對災難性后果,為最高級別
每個類別相關的要求甚至其性質也存在差異。
- ED-12B / DO-178B對不同的級別規定了過程目標
- IEC 61508或EN 50128明確列出了不同級別推薦的技術
- ISO / DIS 26262和ECSS,通過建議技術方法,混合了一些針對目標的要求。
4)容錯和故障預防
基本上,各個領域中,容錯都是在系統級別要求,而不是在軟件層面進行要求:軟件標準基本上針對如何實現無錯誤的軟件,或明確規定(IEC 60880 或 EN 50128),或隱含要求(ED-12 / DO-178等),通常是通過對過程(例如,清晰全面的文檔、遵守規范、設計和代碼標準)和產品(例如,驗證、確定性結構、管理并行性、完全由輸入確定功能的行為)提出要求。
軟件標準(如 IEC 60880)通常要求的自檢,主要面向隨機硬件故障的檢測,例如內存損壞或傳輸錯誤。在檢測到故障的情況下,標準不要求繼續正常處理,但要求采取預定義的行為(例如,將輸出設置到安全位置)。軟件不考慮對自身錯誤的容錯,因為檢測和重新配置算法,可能比功能軟件本身更復雜,反而增加錯誤的可能性。
- IEC 60880等標準要求自檢不會對預期功能產生不利影響。
- 軌道行業標準 CENELEC EN 50128 指出,不建議軟件的向后和向前恢復、動態重新配置和/或故障校正。
**在系統級別或頂層架構上,可以通過冗余設計,實現對潛在軟件容錯。**例如,系統內的次計算機可以監視主計算機,并使用不同的算法檢查其輸出的合理性,或者基于涉及不同物理測量的不同算法,兩個不同的系統可以獨立地觸發給定的安全動作。這些架構解決方案之間的選擇主要取決于底層受控過程的特征。
5)概率評估與確定性分析
航空,自動化,汽車,核能,鐵路和航天領域的可靠性標準中,系統故障風險量化方法是相同的。
各個領域的標準都沒有要求/支持對軟件故障的概率評估。與硬件相反,軟件被統一視為確定性的人為因素,功能故障只會由規范、設計或實現中的錯誤引起。 因此,軟件安全的建設、評估和衡量,通過設計保證來統一處理 ---- 通過基于流程和產品開發活動的標準組合來實施。各個標準根據不同質量和開發活動目標,對于回避開發缺陷的策略的嚴格程度可分為3~5個級別。但是,每個級別的殘余故障或功能障礙無法量化,對于可能引發系統故障的殘余軟件故障,是通過容錯機制來處理的---- 這些機制無論是在軟件還是硬件中實現,仍然是確定性的。
概率評估一方面可以量化組件級硬件故障的可能性,另一方面,可以量化系統級別針對用戶的災害事件的可能性。所有的標準都在系統級別,根據災害事件的嚴重程度來設置基于概率的目標,從而防范這些事件。
基于“分而治之”的策略,作為實踐中唯一易行的方法,各個標準明確或暗示推薦,針對系統級失效行為的概率評估方法不依賴于系統級行為分析 ---- 而是依賴于架構建模,其中可能包括時間依賴的容錯重配置邏輯,通過可靠性圖表、故障樹或狀態機捕獲事件到功能、功能到部件的依賴關系。
所有標準中,一方面,由設計保證策略規定局部行為(硬件或軟件)的確定性分析,另一方面,基于嚴重程度的概率目標規定了通過“全局功能 – 部件”依賴關系圖對事件進行概率分析。
**軟件安全標準的重點在于確定性驗證。**例如,通過選定的測試來覆蓋所有功能,并進一步驗證通過這些測試達到適當的結構覆蓋。對于安全關鍵軟件(例如,在核能或航空領域),這些測試由獨立于開發團隊的人員完成。
符合行業特定標準的軟件開發,使得根據系統概率目標分配的安全要求得以滿足。
6)安全案例
一個安全案例是“一個文獻記錄的證據體系,提供了令人信服和有效的觀點,即系統對給定環境中的給定應用程序是足夠安全的”, 目的是展示產品的安全性。所以可以說,安全案例其實就是一篇有論點、論據和認證過程的完整議論文,是認證的基石。 它通常在生命周期內逐步生成,并且在某個里程碑交付,比如進展到詳細開發之前,或安裝和調試之前。
安全案例是有因果支撐的論據,是一種記錄和向利益相關者提供保證的方式,保證由于遵守特定的安全標準,系統是可接受的、安全的。它必須在產品的所有生命周期內(甚至在停產后)更新、可用。
根據不同工業領域或國家,安全案例的構成可能不同。它可以像開發過程中產生的信息集合一樣簡單,或者是在完整的安全生命周期中收集的完備證據。
- 軌道領域(CENELEC EN 50129)和汽車領域(ISO / DIS 26262)的安全標準就是一個安全案例,CENELEC EN 50129甚至定義了安全案例的內容。
- 航空,核能或航天領域,標準則沒有明確提及安全案例,但為了符合該領域安全標準而提供的文件和保證,本身也就是安全案例的內容。
題外話
在和各行業安全人員的交流中,大家常常會問,軟件安全分析怎么做?其實,不同行業,軟件安全分析的定位各有不同。
**在民航[ARP-4754A; ARP4761; DO-178C],核[IEC-61513,IEC-60880],航天[ECSS-Q40; ECSS-Q80]領域,在一定程度上,安全分析在系統級和功能、子系統和設備上執行,但不是以專門的安全分析形式應用于軟件。**在這些領域中,軟件主要通過遵守軟件開發和驗證規則來促進系統安全,即通過在相應故障后果的程度上對軟件正確性的置信度進行論證。但值得注意的是,對故障后果進行評估,從而確定開發保證級別或軟件關鍵類別,來源于對系統層的安全分析,而不是軟件層的安全分析。
**相反,在軌道[EN-50129]或汽車[ISO-26262]等領域,總體的安全理論非常相似,但需要對軟件執行專門的安全分析。**在基本安全標準IEC 61508中,軟件安全分析包括一套支持功能安全評估的規范性手段。在過程行業領域標準 IEC 61511 中,這個概念才剛剛出現。
總結
對于如何最小化軟件開發和驗證錯誤帶來的風險,各個領域的安全標準存在許多顯著的差異。但這些標準之間主要的差異點并不是程度的多少:比如規則和標準的多少、結構覆蓋面或核查獨立性的嚴格程度等等,更主要的差異在于一些更原則的問題:規定目標還是規定方法? 安全系統如何規劃等等。
看看不同領域的標準異同,互通有無,也是蠻有啟發的事情。
【參考文獻目錄】
總結
以上是生活随笔為你收集整理的不同行业的软件安全标准介绍和对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于idea,springboot启动最
- 下一篇: 忧愁无处发