謝云開+廖建華+徐曉晗
摘 要:軟件系統(tǒng)模塊間的消息傳遞關(guān)系到系統(tǒng)安全。提出一種解決模塊間消息安全可靠傳遞的軟件設(shè)計(jì)方法,研究模塊間消息傳遞機(jī)制,對傳遞的消息進(jìn)行結(jié)構(gòu)化;解決消息傳遞過程中模塊認(rèn)證、消息完整性和機(jī)密性以及消息訪問控制等問題;最終抽象出一個(gè)結(jié)構(gòu)化消息傳遞模型,用以指導(dǎo)實(shí)現(xiàn)高安全級別的軟件系統(tǒng),以達(dá)到軟件模塊間消息傳遞的安全需求。
關(guān)鍵詞:訪問控制;可信認(rèn)證;消息傳遞;系統(tǒng)安全
DOIDOI:10.11907/rjdk.172021
中圖分類號:TP301
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2017)007-0033-03
0 引言
隨著軟件工程和面向?qū)ο蠹夹g(shù)的發(fā)展,軟件模塊化程度越來越高,從操作系統(tǒng)軟件到應(yīng)用系統(tǒng)軟件都采用大量的模塊化設(shè)計(jì)。一方面使開發(fā)的軟件具有清晰的結(jié)構(gòu),更利于理解;另一方面,提高了軟件代碼的復(fù)用和軟件排錯(cuò)的效率。模塊之間的消息傳遞是軟件系統(tǒng)的神經(jīng),通過消息傳遞將各個(gè)功能模塊連接成有機(jī)的系統(tǒng)。因此,模塊間的消息傳遞在當(dāng)前軟件系統(tǒng)中起著舉足輕重的作用,傳遞各種重要的數(shù)據(jù)信息和控制信息。從另外一方面來說,消息傳遞也是系統(tǒng)安全的一個(gè)脆弱環(huán)節(jié),如果沒有行之有效的安全措施,將會(huì)給系統(tǒng)帶來嚴(yán)重的安全威脅,主要體現(xiàn)在:
(1)功能模塊之間消息傳遞時(shí)缺少必要的模塊身份認(rèn)證。當(dāng)前大部分軟件系統(tǒng),在開發(fā)設(shè)計(jì)時(shí)并沒有將功能模塊間的相互認(rèn)證考慮在內(nèi),甚至是操作系統(tǒng)服務(wù)模塊也不具備認(rèn)證功能。一方面,導(dǎo)致模塊間的調(diào)用關(guān)系混亂,影響進(jìn)程的權(quán)限管理;另一方面,非授權(quán)的模塊得以運(yùn)行,給終端帶來安全風(fēng)險(xiǎn)。
(2)軟件設(shè)計(jì)階段模塊間的調(diào)用指令和數(shù)據(jù)缺乏完整性和機(jī)密性保護(hù),調(diào)用指令和參數(shù)缺乏校驗(yàn)機(jī)制,容易導(dǎo)致調(diào)用指令被篡改,傳遞的消息數(shù)據(jù)被竊取、偽造或者篡改。在現(xiàn)實(shí)應(yīng)用中,直接表現(xiàn)在各種“鉤子”橫行,各種病毒、木馬和間諜軟件大都是利用系統(tǒng)存在的安全漏洞,通過掛接“鉤子”,截獲用戶行為或者截取重要信息,給系統(tǒng)安全帶來嚴(yán)重危害。比如,通過鍵盤“鉤子”,可以截獲用戶的擊鍵動(dòng)作,進(jìn)而可以盜取用戶重要的密碼信息。
(3)應(yīng)用系統(tǒng)要正常運(yùn)行,需要在各功能模塊之間甚至終端之間傳遞各種消息,對傳遞消息的訪問控制是應(yīng)用系統(tǒng)安全的重要方面。缺少對傳遞消息的訪問控制易導(dǎo)致模塊之間非法信息流的存在,主要體現(xiàn)在越權(quán)操作、高敏感級別的信息傳遞到低級別的用戶以及通過存在安全漏洞的系統(tǒng)攻擊操作系統(tǒng)或者其它應(yīng)用系統(tǒng)。
系統(tǒng)安全在軟件設(shè)計(jì)階段就要充分考慮,軟件系統(tǒng)模塊間的消息傳遞關(guān)系到系統(tǒng)安全。本文提出一種解決模塊間消息安全可靠傳遞的軟件設(shè)計(jì)方法。研究模塊間消息傳遞機(jī)制,對傳遞的消息進(jìn)行結(jié)構(gòu)化,解決消息傳遞過程中模塊認(rèn)證、消息的完整性和機(jī)密性以及消息的訪問控制問題,抽象出結(jié)構(gòu)化消息傳遞模型,實(shí)現(xiàn)高安全級別的軟件系統(tǒng),滿足軟件模塊間消息傳遞的安全需求。
1 模型概述
模塊化設(shè)計(jì)的軟件系統(tǒng)都是由功能相對獨(dú)立的模塊組成,模塊間存在相互調(diào)用的指令,傳遞各種數(shù)據(jù),這些指令和數(shù)據(jù)信息統(tǒng)稱為消息,可見消息是將軟件模塊組織成有機(jī)整體的紐帶。模塊范疇也可以進(jìn)一步一般化,指實(shí)際組成軟件系統(tǒng)的功能模塊,也可以指運(yùn)行于計(jì)算機(jī)內(nèi)的進(jìn)程,甚至可以擴(kuò)展至獨(dú)立的終端。本文研究對象是消息以及傳遞消息的實(shí)體——模塊,
提出一種軟件設(shè)計(jì)模型,用于解決模塊間消息傳遞的安全可靠問題。首先,用于消息傳遞的模塊雙方都需要進(jìn)行認(rèn)證,只有安全可信的模塊才能建立消息傳遞,以防止非法的模塊建立連接進(jìn)行破壞,保證源頭的安全可信;其次,模塊之間傳遞的消息需要進(jìn)行完整性和機(jī)密性保護(hù),防止消息在傳遞過程中被惡意篡改、竊聽和偽造,保證消息能安全地從源傳遞到最終接受模塊,保證消息傳遞路徑的安全可信;最后,提出設(shè)計(jì)模型,具有消息訪問控制機(jī)制,一方面防止越權(quán)操作,保證消息按訪問控制策略傳遞,可以保證控制消息的單向傳遞,防止對TCB模塊的攻擊。
2 模型層次結(jié)構(gòu)
為了實(shí)現(xiàn)上述安全目標(biāo),本文提出一種稱之為結(jié)構(gòu)化的消息傳遞模型,模型充分考慮消息傳遞的安全性,采用分層設(shè)計(jì)的思想,從下至上分為傳輸層、可信認(rèn)證層和安全控制層三層結(jié)構(gòu),如圖1所示。每層功能獨(dú)立、各司其職,在邏輯上模塊相同功能層對應(yīng),且都具有與功能相對應(yīng)的協(xié)議體系。
2.1 傳輸層
傳輸層位于結(jié)構(gòu)化消息傳遞模型的最下層,負(fù)責(zé)模塊之間消息的物理傳遞,與業(yè)務(wù)邏輯分開,并不關(guān)心上層的具體業(yè)務(wù)信息,主要任務(wù)是把上層業(yè)務(wù)相關(guān)的消息安全無差別地傳遞到對端模塊,所以傳輸層的核心功能是保證消息傳遞的機(jī)密性和完整性,防止消息在傳遞過程中被惡意篡改或者竊聽,帶來安全隱患。因此傳輸層的功能具體體現(xiàn)在以下兩個(gè)方面:①傳輸協(xié)議,協(xié)商消息傳遞的方式,包括算法和密鑰,保證模塊之間消息順利傳遞而又能保證其安全性;②協(xié)商確定消息傳遞方式之后具體的消息傳遞服務(wù),流程為發(fā)送端傳輸層接收上層信息,按照協(xié)定的方式進(jìn)行封裝,并發(fā)送到接收端,接收端通過逆過程將接收的消息進(jìn)行解封裝,并返回給上層,從而保證消息在傳遞環(huán)節(jié)的安全。
2.2 可信認(rèn)證層
在消息傳輸層保證傳輸環(huán)節(jié)安全的基礎(chǔ)之上,設(shè)置可信認(rèn)證層。模型可信認(rèn)證層位于傳輸層上,主要實(shí)現(xiàn)消息傳輸模塊的互相認(rèn)證,防止非法模塊接入系統(tǒng),同時(shí)也能防止通過攻擊合法的模塊進(jìn)行中間人攻擊。在設(shè)計(jì)實(shí)現(xiàn)時(shí)需要考慮以下內(nèi)容:①在首次消息傳遞機(jī)制建立時(shí)需要認(rèn)證模塊雙方的身份信息,只有通過認(rèn)證消息傳遞通道才能建立;②在后續(xù)消息傳遞過程中,發(fā)送端需要確認(rèn)接收消息的模塊是經(jīng)過認(rèn)證的合法模塊,才允許將消息發(fā)送出去,并在發(fā)送過程中在發(fā)送消息中加入發(fā)送端的身份信息;最后,接收端模塊在收到消息時(shí),對消息源進(jìn)行驗(yàn)證,只有源頭合法的消息才能接收并上傳到更上一層。
2.3 訪問控制層
位于模型最上面的是訪問控制層,訪問控制層與應(yīng)用密切相關(guān),具有與應(yīng)用相關(guān)的語義信息,依據(jù)安全策略對消息傳遞進(jìn)行安全控制,只有符合安全策略的消息才允許進(jìn)行傳遞,而拒絕與安全策略沖突的消息流。訪問控制層裁決的消息流數(shù)據(jù)依次往下層傳遞,先到可信認(rèn)證層,進(jìn)行認(rèn)證并封裝身份認(rèn)證信息;然后再傳遞到傳輸層,對消息進(jìn)行加密保護(hù),發(fā)送到接收端模塊。
3 模型工作流程
結(jié)構(gòu)化消息傳遞模型工作流程如圖2所示,模塊A發(fā)送消息至模塊B的工作流程,可以分為以下6個(gè)步驟:
(1)模塊A對發(fā)送給模塊B的消息,依據(jù)訪問控制策略進(jìn)行訪問控制,拒絕非法信息流,對合法的信息流進(jìn)行封裝,加入與訪問控制相關(guān)的上下文信息,并將封裝后的信息流發(fā)送到可信認(rèn)證層。
(2)發(fā)送端可信認(rèn)證層驗(yàn)證接收端模塊B的身份是否合法,同樣拒絕將消息發(fā)送給非可信接收模塊,并對發(fā)送的信息流進(jìn)行簽名封裝,然后發(fā)送到傳輸層。
(3)發(fā)送端傳輸層使用協(xié)商好的方式將信息流進(jìn)行加密處理,然后發(fā)送給接收端模塊對應(yīng)的傳輸層。
(4)接收端傳輸層將收到的加密處理的信息流進(jìn)行解密處理,并提交給可信認(rèn)證層。
(5)可信認(rèn)證層對接收到的信息流發(fā)送源進(jìn)行驗(yàn)簽認(rèn)證,只有驗(yàn)證合法的消息流才進(jìn)一步提交給訪問控制層,否則拒絕接收。
(6)接收端訪問控制層依據(jù)安全策略以及附加于信息流上的上下文信息進(jìn)行訪問控制決策。
以上描述的是結(jié)構(gòu)化消息傳遞模型發(fā)送消息的工作流程。
4 模型形式化描述
為了更好地對模型進(jìn)行分析,本節(jié)對提出的結(jié)構(gòu)化消息傳遞模型進(jìn)行形式化。
定義1:基本變量。
M表示模塊需要發(fā)送的原始消息集合,包括控制指令也包括數(shù)據(jù)信息;Acon表示訪問控制上下問信息,比如主客體標(biāo)記信息;Mac表示具有訪問控制上下文的消息集合,指訪問控制層與可信認(rèn)證層傳遞的消息,且Mac=M×Acon;Tcon表示可信認(rèn)證相關(guān)的信息,比如模塊完整性信息、身份信息等;Mcert表示具有可信認(rèn)證信息的消息集合,指在可信認(rèn)證層與傳輸層之間傳遞的消息結(jié)構(gòu),且Mcert=Mac×Tcon=M×Acon×Tcon;Menc表示在發(fā)送端及接收端的傳輸層傳遞的消息結(jié)構(gòu),指被密碼算法處理過的消息結(jié)構(gòu);P表示安全策略集合。
定義2:模塊定義。Lac表示功能模塊的訪問控制層;Lcert表示功能模塊的可信認(rèn)證層;Lenc表示功能模塊的加密傳輸層;C表示傳遞消息的主體——功能模塊的集合,且C=Lac×Lcert×Lenc。
定義3:功能函數(shù)定義。
模塊訪問控制層的功能函數(shù)主要包括訪問控制函數(shù)和消息封裝函數(shù),訪問控制函數(shù)fac∈Fac:M×P→{true,false},訪問控制函數(shù)依據(jù)訪問控制策略對消息進(jìn)行判決。訪問控制層的消息封裝函數(shù)是將訪問控制上下文信息封裝成消息頭與原始的消息數(shù)據(jù)共同構(gòu)成訪問控制層的消息結(jié)構(gòu)eac∈Eac:M×Acon→Mac,訪問控制層消息封裝的逆函數(shù)是在接收端將接收到的消息進(jìn)行解封裝,得到原始消息數(shù)據(jù)和訪問控制上下文信息,訪問控制上下文信息隨消息數(shù)據(jù)一起傳遞,因此可以實(shí)現(xiàn)細(xì)粒度的訪問控制,逆函數(shù)e-1ac∈E-1ac:Mac→M×Acon。模塊可信認(rèn)證層的功能函數(shù)也包括可信認(rèn)證函數(shù)以及可信認(rèn)證層消息封裝及解封函數(shù),可信認(rèn)證函數(shù)用于認(rèn)證接收的消息是否從合法模塊傳遞而來,fcert∈Fcert:Mac×Tcon→{true,false};可信認(rèn)證層的封裝函數(shù)用于將可信認(rèn)證相關(guān)的信息封裝到訪問控制消息之上,發(fā)送到對端的可信認(rèn)證層進(jìn)行模塊可信認(rèn)證,封裝函數(shù)ecert∈Ecert:Mac×Tcon→Mcert,以可信認(rèn)證信息作為消息頭與訪問控制層的消息進(jìn)行封裝,得到可信認(rèn)證層消息結(jié)構(gòu);可信認(rèn)證層封裝函數(shù)的逆函數(shù)是解封裝函數(shù),是用于處理接收消息流的,e-1cert∈E-1cert:Mcert→Mac×Tcon,解封之后得到的Mac上傳給訪問控制層,Tcon用于驗(yàn)證消息的可信。模塊傳輸層的主要功能是對消息進(jìn)行加密處理并發(fā)送,或者接收消息然后再解密處理。加密函數(shù)fenc∈Fenc:Mcert→Menc,解密函數(shù)f-1enc∈F-1enc:Menc→Mcert。
5 結(jié)語
本文為解決模塊間消息傳遞的安全可靠問題,提出了一種結(jié)構(gòu)化的消息傳遞模型。對軟件設(shè)計(jì)中模塊間的消息傳輸、模塊接入的可信認(rèn)證、模塊對消息的訪問控制等進(jìn)行了全面的模型抽象及描述。該模型對實(shí)現(xiàn)高安全級別的軟件系統(tǒng)具有指導(dǎo)意義。
參考文獻(xiàn):
[1] 李毓才,小谷誠剛,毛文波,等.可信安全體系架構(gòu)原理與實(shí)踐[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2009,12:27-37.
[2] 湯永新,劉增良.軟件可信性度量模型研究進(jìn)展[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(27):12-16.
[3] 任魁,王普,李亞芬.信息系統(tǒng)中一種訪問控制的實(shí)現(xiàn)策略[J].計(jì)算機(jī)安全,2009,9:41-44.
[4] 周彬,劉連衷.多維授權(quán)對象RBAC模型的設(shè)計(jì)與實(shí)現(xiàn)[J].蘭州理工大學(xué)學(xué)報(bào),2005,31(2):77-80.
[5] 梅宏,曹東剛.軟件可信性:互聯(lián)網(wǎng)帶來的挑戰(zhàn)[J].中國計(jì)算機(jī)學(xué)會(huì)通信,2010,6(2):58-61.
[6] GB/T 16260.1-200X.軟件工程產(chǎn)品質(zhì)量[S].質(zhì)量模型.ISO/IEC 9126-1:2001.
[7] 張秀娟,魏書光,夏建川.數(shù)據(jù)壓縮安全傳輸模型[J].華中科技大學(xué)學(xué)報(bào):自然科學(xué)版,2004,32(9):1-5.