當前位置:
首頁 > 新聞 > 嵌入式系統的安全技術分析(二)

嵌入式系統的安全技術分析(二)

上一篇文章,我介紹的是單片系統和基於單片內核的操作系統,本文我會接著給大家介紹有關基於微內核的操作系統的安全性分析。

Android操作系統

2017年8月22日,谷歌正式發布了Android 8.0的正式版,其正式名稱為:Android Oreo。

2017年12月5日,谷歌正式發布了Android 8.1的正式版,目前是Android操作系統的最新版本。

據開發人員介紹,Android 8.0以後的版本,都包含大量新的信息安全機制。該操作系統中的關鍵安全功能旨在最大程度的緩解漏洞利用和減少攻擊面,其中還使用了最小許可權原則,另外API設計和體系架構也發生了重要變化。具體如下所示:

1.對已經授權的應用程序進行智能保護;

2.在應用程序和操作系統更新期間進行高級驗證,以防止常見類型的攻擊,其中就包括資料庫回滾機制(RollBack)的實現;

3.內置了對HSM(硬體安全模塊)的支持;

4.seccomp過濾器的應用程序沙箱(安全計算限制了應用程序進行系統調用的能力)和WebView組件是隔離的。Android的seccomp過濾器會阻止某些系統調用,如swapon/swapoff(已被捲入一些安全攻擊)和關鍵控制系統調用(對應用沒有作用);

5.支持一組加密配置文件(不同配置文件使用不同的密鑰集);

6.內置了對使用物理密鑰的雙因素身份驗證的支持;

7.採用了複雜的應用程序路徑,這樣應用程序再也不能在它的原來的靜態位置被找到。相反,應用程序每次都會被安裝到新的位置,並且必須對系統進行特殊調用才能訪問應用程序;

8.停止支持過時和易受攻擊的協議和演算法,如SSL v3.0;

毋庸置疑,這些都是必要和有用的措施,使攻擊者利用漏洞和獲得root許可權的難度大大增加。

但是,大家都知道Android是基於Linux內核的操作系統,所以不應忘記Linux系統本身的漏洞。Android中一直在不斷發現新的漏洞,其中很大一部分都能夠執行任意代碼。

微內核操作系統

綜上所述,一個可能的解決方案就是使用微內核系統架構。微內核(Micro kernel)是提供操作系統核心功能的內核的精簡版本,它設計成在很小的內存空間內增加移植性,提供模塊化設計,以使用戶安裝不同的介面,如DOS、Workplace OS、Workplace UNIX等。IBM、Microsoft、開放軟體基金會(OSF)和UNIX系統實驗室(USL)等新操作系統都採用了這一研究成果的優點。簡而言之就是,微內核僅提供過程管理的基本功能和最少的硬體抽象集。大部分工作是在專用用戶進程的幫助下完成的,這些用戶的進程是不在內核的地址空間中運行的。這就有助於顯著減少內核服務的攻擊面,而操作系統的內核可以使用形式化驗證(Formal Verification)方法(這要感謝代碼庫數量非常小的)進行嚴格驗證。要了解有關驗證的更多信息,以及它與一般驗證的不同之處,請查看Ekaterina Rudina寫的這篇文章。

從信息安全形度看,微內核系統架構的安全性優勢已經顯示出來了,例如分離內核方法以及使用MILS系統結構。目前市場上已經開始大量出現了使用不同類型的微內核操作系統,比如QNX、INTEGRITY RTOS、Genode、基於L4微內核的操作系統及其他衍生版本。

QNX:QNX操作系統是由加拿大QSSL公司(QNX Software System Ltd.)開發的分散式實時操作系統。該操作系統既能運行於以Intel X86、Pentium等CPU為核心硬體環境下,也能運行於以PowerPC、MIPS等CPU為核心的硬體環境。QNX操作系統符合POSIX基本標準和實時標準,使其應用可以方便的進行移植。

INTEGRITY RTOS:INTEGRITY是Green Hills Software公司開發的一個安全、無版權稅的實時操作系統。由於沒有那些80年代就已經存在的RTOS需要考慮的兼容性問題,INTEGRITY從設計時就應用最新的RTOS技術,並且包含了前所未有的面向電信、國防、網路、醫療器械行業應用需要的可靠性、可用性、服務性。INTEGRITY RTOS是首個根據「POSIX:IEEE和Open Group認證」計劃和最新的IEEE 1003.1-2003系統介面產品標準進行認證的操作系統。INTEGRITY使用基於硬體的內存保護機制來隔離和保護內核和用戶任務,防止誤操作和惡意攻擊。基於面向對象的設計允許對數據、通信、獨立組件和系統進行嚴格的訪問許可權控制和驗證。它嚴格遵循可證實的資源請求從而允許嵌入系統設計者能夠保證資源的可用性。F-16、F-22戰機使用了Integrity實時操作系統,NASA的Space Technology 5(ST5)mission中也使用了Integrity實時操作系統。

在此,我想稍微介紹一下L4微內核,它是微內核操作系統演化至今的結果。今天,L4實際上已是微內核操作系統開發中的實際標準。

L4微內核

近幾年來,L4微內核越來越受到大家的關注。最初開發L4微內核只是為了證明創建適用於實際通用操作系統的微內核是可以行得通的。這種嘗試可以被認為是相當成功的,現在已經有一整套利用L4的研究和商業項目。目前,L4微內核已經被移植到大量的硬體平台上了。需要注意的是,基於L4的解決方案支持硬實時模式下的操作。硬實時(hard real-time)系統是指能夠在指定的期限完成實時任務(即便在最壞的處理負載下也能如此)的操作系統。

在當前支持的微內核實現中,目前有以下版本:

1.seL4 :第一個正式驗證的微內核,目前仍在積極開發中;

2.Codezero:K4微內核的商業應用版本。內核的源代碼在GPLv3許可下可用,而附加模塊和庫的源代碼是封閉的,要想操作必須得經過商業許可;

3.OC :由德累斯頓工業大學開發並根據GPLv2許可開發的版本,需要商業許可才能使用;

對於以上列出的操作系統,你是可以使用不同的虛擬化解決方案的。還有其他基於L4微內核的虛擬化解決方案也是值得一提的,它們是OKL4,NOVA和PikeOS操作系統。

L4系列的微內核也了用於以下操作系統:

1.Genode;

2.TUD:OS:是德累斯頓工業大學基於L4Re開發的操作系統,L4Re是基於L4的解決方案框架。

3.CAamkES:由Data61的Trustworthy Systems Research Group機構開發的基於L4微內核的框架。

4.L4Linux:基於L4系列內核並把Linux操作系統移植過來的系統。所以在這個L4的實現中,Linux扮演與其他L4應用程序(包括實時組件)同時運行的用戶模式服務的角色,Linux內核版本目前已經到了4.14版,支持x86和ARM的硬體平台。

從安全形度來看,seL4內核是L4系列中最重要的一個版本。

微內核seL4實現了object-capability模型,並其進行了形式化驗證,這意味著操作系統的屬性可以在特定的概念和假設下得到保證,這就使整體解決方案的保護機製得到了提升。但是,如果輸入假設不正確,則可能會出現問題。例如,在seL4驗證過程中,形式模型的一個重大缺陷是它排除了幾個進程同時執行的可能性,你可以設想一個單處理器系統出現阻塞中斷的情形。

object-capability模型提供了對系統行為的詳細控制,但絕不能藉助它來描述所有的安全性屬性。還有許多其他的安全模型,它們的屬性是無法基於object-capability模型來表達的。例如,安全屬性可能取決於系統狀態、考慮到時間關係等。為了描述這些屬性,需要在安全解決方案中添加額外的機制,如果是這種情況下,seL4的優勢就將喪失。

KasperskyOS就使用了seL4中的許多思想,但是,它也允許使用卡巴斯基安全系統(Kaspersky security System ,KSS)作為KasperskyOS體系架構的一部分來描述任何安全屬性。

混合操作系統

混合內核是把單片和微內核系統架構的屬性組合在了一起,基於混合內核的操作系統體系架構本質上是一個經過改良的微內核,它允許在內核空間中執行操作系統模塊以加速操作。

使用混合內核的操作系統目前已經在市場上出現了,開發它的主要想法就是嘗試使用微內核體系架構的優勢,同時儘可能多地保留經過充分測試的單內核代碼。然而,就算在混合操作系統中,信息安全問題仍未解決,因為攻擊面仍然很大。

為什麼至今市面上的操作系統都無法滿足嵌入式系統的要求

許多傳統的操作系統最初都是在沒有考慮安全的情況下開發的,後期再引入安全功能後,會帶來很多問題,比如原有的功能機制將停止運行,並出現兼容性問題。但出於各種原因,開發者不可能完全重新設計這些體系架構,所以只能修修補補,增加一些與安全性相關的屬性。有很多這樣的解決方案的例子,其中就包括QNX,Linux和FreeBSD。

只有那些在系統一開發時,就考慮的信息安全的操作系統才能確保真正的安全機制,且不會影響各種運行功能。經過安全設計的操作系統有seL4,INTEGRITY RTOS,MUEN RTOS,KasperskyOS等。

KasperskyOS介紹

KasperskyOS是卡巴斯基實驗室從頭打造的一款系統,與2017年2月正式發布,它不基於市面上的任何操作系統,比如Linux,開發過程前後經歷了14年。按照卡巴斯基實驗室的說法,KasperskyOS不是為家用PC而作的,設計KasperskyOS的目的就是為了保護工業系統和嵌入式設備(物聯網)免受第三方或惡意代碼執行的網路攻擊。

之所以會有KasperskyOS的出現,是因為目前流行的一些操作系統在設計的時候並沒有過多的考慮到安全性,特別是針對新興的物聯網。所以與其對原有的系統修修補補,還不如從頭做一個新系統簡單和安全。

按著卡巴斯基實驗室的預估,KasperskyOS幾乎是不可能被黑,因為KasperskyOS內置的安全系統可以控制應用程序操作和系統模塊。攻擊者要想破解安裝有KasperskyOS設備的數字簽名,就需要一台量子計算機。

KasperskyOS使用的是微內核體系結構,其中微內核系統工具將系統劃分為安全域或KasperskyOS術語中的「實體(entities)」。所有安全域(進程間通信,IPC)之間的所有通信都是使用微內核執行的,並由其控制,任何通信都不允許繞過微核。

所有通信都是分類的,實體的介面用IDL(介面定義語言)描述,只有這個介面可以用於IPC,這是KasperskyOS與其他大多數操作系統差別很大的地方。

KasperskyOS的微內核與卡巴斯基安全系統(KSS)聯合運行,KSS是計算安全判斷的子系統。對於每個IPC,KasperskyOS微內核都會向KSS請求一個安全判斷,並將其作為允許或阻止該特定IPC的基礎。對於安全判斷計算,不僅要考慮到通信的事實和類型,還要考慮系統的拓撲結構,通信發生的環境以及在一組正式安全框架內描述的分配策略。

KSS支持大量的正式安全模型,例如域型強制實行模型 (Domain Type Enforcement,DTE);Object Capability模型;RBAC(Role-Based Access Control )基於角色的訪問控制,簡單地說,一個用戶擁有若干角色,每一個角色擁有若干許可權,這樣,就構造成「用戶-角色-許可權」的授權模型,不同時序邏輯方言(diverse temporal logic dialect)等等。當KasperskyOS需要時,可以添加這些新模型。

這就為開發人員提供了一個靈活的工具,可根據需要以高度詳細的級別描述安全策略。安全策略是用高級語言定義的,這大大簡化了按照規定的要求驗證解決方案。這也使得對所描述的屬性進行形式驗證成為可能。

隨著解決方案逐漸變得越來越複雜,不同的協議、演算法、功能等的增加不可能保證其中沒有漏洞。必須採取特殊措施確保這些漏洞無法被利用,或者其利用時不會導致不良後果。這些保護措施應該包括隔離進程,限制對資源的訪問,攻擊檢測系統和對策等。在這種情況下,安全屬性必須由系統的可信組件來保證,即由操作系統內核,安全特性,子系統特定類型的保護,如密碼保護等。

與此同時,需要以一種越來越詳細的方式來定義相關的安全策略,當政策細化的能力達到極限時就會出現這種情況。例如,基於Capability模型的策略可以允許或拒絕對某個資源的訪問。在這種情況下,所需的安全性屬性被認為是功能性需求,並在解決方案的代碼中與其他功能一起實施。這導致需要控制的代碼量的逐漸增長,並確保其可驗證性成為越來越具有挑戰性的任務。因此,解決方案再次變得不安全。

但是,在KasperskyOS和KSS的幫助下,可以根據需要提供詳細的安全屬性描述,並且通過分解解決方案,選擇包含所需的最低功能要求驗證的有限單個模塊集。這樣,這些模塊就可以被視為獨立的,驗證也變得容易了。

KasperskyOS可以生成負責實現解決方案安全策略的KSS的代碼庫,並正式驗證,從這個意義上講,它是可信的。這就解決了代碼庫不受控制地增長的問題,而代碼庫則是安全的源頭。

由於安全屬性的定義與功能邏輯無關,因此開發人員可以為其解決方案構建一個安全系統,而無需考慮具體組件的實施細節。

KasperskyOS所描述的功能使開發一個絕對安全的解決方案成為可能,步驟如下:

1.威脅分析和威脅建模;

2.開發一套正式的安全策略以應對第1步中描述的威;

3.將解決方案分解成安全域,並根據步驟2獲得的數據定義IPC介面;

4.根據步驟3獲得的數據執行解決方案,並執行與步驟2獲得的結果一致的安全策略;

這就確保了KasperskyOS的主要優勢,即可以構建複雜的系統以滿足特定的信息安全特性。

KasperskyOS在Kaspersky安全管理程序(KSH)應用程序的幫助下支持虛擬化,它可以與KSS一起實現與管理程序內部資源的虛擬機訪問控制相關的安全策略。KSH是一款輕量級解決方案,這使得驗證其代碼庫成為可能,這還意味著它可以被視為可信平台的一部分。即使在沒有發生跨域交互的情況下,Kaspersky安全管理程序也可以將KSS的安全判斷應用於其內部進程。KasperskyOS的此功能在任何其他虛擬化解決方案中都沒有出現過,它們只能設置規則來定義特定虛擬機如何與系統的其他隔離組件進行交互。

總結

在物聯網時代,圍繞聯網設備的網路安全問題正變得越來越重要。卡巴斯基實驗室的研究人員認為,操作系統的安全性決定了整個嵌入式系統的整體網路安全水平。不幸的是,在傳統的操作系統的開發過程中,信息安全問題還沒有得到充分的考慮。上文提到的近一半操作系統,信息安全方面的問題要麼沒有得到解決,要麼解決的不令人滿意的。

小編希望本文能夠讓那些嵌入式系統操作系統的開發者更加關注網路安全問題,另外,幫助用戶為他們的項目選擇合適的放心的操作系統。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

針對間諜軟體InvisiMole的RC2CL模塊分析

TAG:嘶吼RoarTalk |