本站小編為你精心準(zhǔn)備了淺談分布式日志系統(tǒng)安全接口設(shè)計(jì)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫(xiě)作靈感。歡迎深入閱讀并收藏。
0引言
在復(fù)雜的多系統(tǒng)應(yīng)用中,日志系統(tǒng)的建立對(duì)于日志的分析、查詢(xún)有重要作用,多應(yīng)用系統(tǒng)組成平臺(tái)中,一般采用分布式日志系統(tǒng)用于日志的存儲(chǔ)、分析與查詢(xún)[1]。采用易于識(shí)別和理解的REST日志服務(wù)接口是分布式日志系統(tǒng)建立的關(guān)鍵[2],基于REST的日志服務(wù)能提供統(tǒng)一接口和資源定位,簡(jiǎn)化日志服務(wù)接口的設(shè)計(jì)和實(shí)現(xiàn),降低日志服務(wù)接口的復(fù)雜性[3]。但是REST本身缺少安全特性,存在著接口易被破解的危險(xiǎn),如果破壞者通過(guò)日志服務(wù)資源地址進(jìn)行猜解,獲取了操作某一日志資源的接口并對(duì)該日志服務(wù)接口進(jìn)行攻擊,那么很容易造成日志系統(tǒng)數(shù)據(jù)的破壞。本文針對(duì)REST中易于破解的危險(xiǎn)性問(wèn)題,根據(jù)復(fù)雜的多系統(tǒng)應(yīng)用平臺(tái)在分布式日志系統(tǒng)中需求,探索日志服務(wù)的安全接口方法,設(shè)計(jì)一種基于REST接口安全認(rèn)證方法。
1REST安全接口設(shè)計(jì)
一個(gè)安全的REST日志服務(wù)接口是需要對(duì)請(qǐng)求賬戶(hù)的認(rèn)證與授權(quán)的鑒定,同時(shí)避免日志服務(wù)接口被大規(guī)模非法調(diào)用,出現(xiàn)系統(tǒng)資源的消耗,影響系統(tǒng)的正常訪問(wèn),甚至導(dǎo)致系統(tǒng)癱瘓、數(shù)據(jù)泄露、偽造(篡改)數(shù)據(jù)、制造垃圾數(shù)據(jù)等嚴(yán)重后果。
1.1安全接口模型
客戶(hù)端為第三方應(yīng)用系統(tǒng),請(qǐng)求對(duì)分布式日志系統(tǒng)增刪查服務(wù)。服務(wù)端為安全接口認(rèn)證服務(wù)端,第三方應(yīng)用系統(tǒng)在調(diào)用分布式日志REST服務(wù)接口之前,需要根據(jù)簽名機(jī)制為其HTTP請(qǐng)求計(jì)算一個(gè)簽名(sign),并使用簽名機(jī)制后的URL請(qǐng)求分布式日志REST服務(wù)接口。REST日志接口服務(wù)器在接收到請(qǐng)求時(shí)會(huì)獲取請(qǐng)求賬戶(hù)、請(qǐng)求時(shí)間戳、請(qǐng)求的URI,然后根據(jù)請(qǐng)求賬戶(hù)去數(shù)據(jù)庫(kù)查找對(duì)應(yīng)的密鑰,然后REST日志接口服務(wù)端根據(jù)簽名機(jī)制為請(qǐng)求的參數(shù)重新計(jì)算簽名,并判斷其簽名值是否與第三方應(yīng)用傳遞過(guò)來(lái)的簽名值參數(shù)值一致,以此判定客戶(hù)端HTTP請(qǐng)求是否被第三者偽造或篡改。
1.2安全接口認(rèn)證方法
安全接口認(rèn)證方法是服務(wù)端對(duì)客戶(hù)端做認(rèn)證授權(quán),包含請(qǐng)求簽名值的生成、防止接口重放攻擊、認(rèn)證方法三個(gè)部分。
1.2.1請(qǐng)求簽名值的生成
教育電子身份號(hào)(EducationElectronicIdentity,EEID)已廣泛應(yīng)用于網(wǎng)絡(luò)實(shí)名制管理[5]。采用教育電子身份證號(hào)作為第三方應(yīng)用標(biāo)識(shí)(請(qǐng)求賬戶(hù)),但是僅僅依靠教育電子身份證號(hào)(EEID)作為第三方應(yīng)用標(biāo)識(shí)做身份認(rèn)證的憑證還是存在一定的安全隱患,所以采用MD5(信息-摘要算法5)算法根據(jù)EEID生成一個(gè)安全密鑰(secretKey)。將EEID與安全密鑰作為服務(wù)端對(duì)客戶(hù)端做身份認(rèn)證。分布式日志系統(tǒng)提供日志服務(wù)的過(guò)程中,身份憑證是連接客戶(hù)端與服務(wù)端之間的紐帶,客戶(hù)端通過(guò)攜帶身份憑證、時(shí)間戳、簽名值訪問(wèn)分布式日志系統(tǒng)資源,為防止身份憑證篡改而防范攻擊,憑證傳遞、時(shí)間戳、簽名值傳遞的安全性至關(guān)重要。所以為了身份憑證傳遞的安全性,為每一次請(qǐng)求計(jì)算一個(gè)簽名值,簽名值作為傳遞過(guò)程中是否數(shù)據(jù)的篡改的校驗(yàn)。請(qǐng)求簽名值的生成方法為:將請(qǐng)求賬戶(hù)(appkey)、請(qǐng)求賬戶(hù)相對(duì)應(yīng)的密鑰、請(qǐng)求的時(shí)間戳(timestrap)、請(qǐng)求的URI(rest_uri)采用一定的規(guī)則組成一個(gè)字符串,對(duì)該字符串采用HMAC-SHA1加密算法得到一個(gè)hash值的二進(jìn)制數(shù)組,然后將該二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為十六進(jìn)制的字符串,該字符串為此次請(qǐng)求的簽名值。
1.2.2防止接口重放攻擊
重放攻擊也成為新鮮性攻擊,即攻擊者通過(guò)重放消息或消息片段達(dá)到對(duì)主體進(jìn)行欺騙的攻擊行為,在一個(gè)開(kāi)放的空間中,攻擊者利用竊聽(tīng)到消息進(jìn)行重放,從而到達(dá)破壞消耗系統(tǒng)資源的目的。基于REST日志接口服務(wù)端校驗(yàn)時(shí)間戳用來(lái)防止重放攻擊,首先服務(wù)端獲取客戶(hù)端傳遞過(guò)來(lái)的時(shí)間戳和生成服務(wù)端的時(shí)間戳,比較客戶(hù)端傳入的時(shí)間戳與服務(wù)端生成的時(shí)間戳是否在指定超時(shí)范圍內(nèi),通過(guò)校驗(yàn)后再校驗(yàn)客戶(hù)端簽名值在服務(wù)端是否使用,保證簽名值在服務(wù)端只能使用一次。只有通過(guò)以上校驗(yàn)過(guò)程,日志資源提供服務(wù)器才會(huì)響應(yīng)請(qǐng)求資源。
1.2.3認(rèn)證方法
安全接口認(rèn)證方法是服務(wù)器校驗(yàn)客戶(hù)端是否正常請(qǐng)求的過(guò)程。客戶(hù)端在調(diào)用分布式日志REST服務(wù)接口時(shí)攜帶簽名值,基于REST日志接口服務(wù)端校驗(yàn)時(shí),獲取請(qǐng)求參數(shù)和數(shù)據(jù)庫(kù)中請(qǐng)求賬戶(hù)對(duì)應(yīng)的密鑰,重新計(jì)算簽名,并判定服務(wù)端計(jì)算的簽名值與客戶(hù)端傳遞過(guò)來(lái)的簽名值參數(shù)值是否一致,以此對(duì)傳輸過(guò)來(lái)的身份憑證是否有效性進(jìn)行驗(yàn)證。
2REST安全接口實(shí)現(xiàn)
分布式日志系統(tǒng)REST安全接口認(rèn)證方法實(shí)現(xiàn)分為客戶(hù)端與服務(wù)端的實(shí)現(xiàn)。客戶(hù)端為分布式日志系統(tǒng)接口調(diào)用方,即日志的生產(chǎn)者方。服務(wù)端為分布式日志系統(tǒng)接口提供方,即日志的儲(chǔ)存和分析平臺(tái)方。
2.1請(qǐng)求賬戶(hù)申請(qǐng)
在客戶(hù)端與服務(wù)端實(shí)現(xiàn)前,需要進(jìn)行請(qǐng)求賬戶(hù)申請(qǐng)。請(qǐng)求賬戶(hù)申請(qǐng)首先在賬戶(hù)管理平臺(tái)上申請(qǐng)請(qǐng)求賬戶(hù),管理員對(duì)請(qǐng)求賬戶(hù)申請(qǐng)進(jìn)行審核與資源授權(quán),賬戶(hù)管理平臺(tái)自動(dòng)根據(jù)EEID生成應(yīng)請(qǐng)求賬戶(hù)是根據(jù)教育電子身份證號(hào)(EEID)生成第三方應(yīng)用標(biāo)識(shí)碼作為請(qǐng)求賬戶(hù),而EEID生成第三方應(yīng)用標(biāo)識(shí)碼可以保證請(qǐng)求賬戶(hù)的唯一性。密鑰生成采用MD5(信息-摘要算法5)生成做為密鑰的基礎(chǔ)算法,從申請(qǐng)賬戶(hù)計(jì)算MD5值做為密鑰較容易,同時(shí)任意長(zhǎng)度申請(qǐng)賬戶(hù)計(jì)算出密鑰的值長(zhǎng)度是固定的,同時(shí)申請(qǐng)賬戶(hù)的數(shù)據(jù)任意改動(dòng),得到密鑰的值有很大區(qū)別,有很大的抗修改性。簡(jiǎn)單的MD5生成做為密鑰是不安全的,在MD5散列的過(guò)程中,加入足夠長(zhǎng)的salt(即干擾字符串)生成MD5,而加干擾字符串后的MD5生成出密鑰是無(wú)法看到MD5具體的處理過(guò)程,即實(shí)現(xiàn)了申請(qǐng)賬戶(hù)對(duì)應(yīng)唯一的密鑰,同時(shí)根據(jù)申請(qǐng)賬戶(hù)是不能偽造出密鑰的。
2.2客戶(hù)端實(shí)現(xiàn)
客戶(hù)端根據(jù)簽名機(jī)制算法計(jì)算簽名值,并使用簽名機(jī)制后的URL請(qǐng)求資源。初始時(shí),在請(qǐng)求賬戶(hù)管理平臺(tái)上得到請(qǐng)求賬戶(hù)和請(qǐng)求賬戶(hù)相對(duì)應(yīng)的密鑰;然后將請(qǐng)求賬戶(hù)、請(qǐng)求賬戶(hù)相對(duì)應(yīng)的密鑰、請(qǐng)求的時(shí)間戳、請(qǐng)求的URI通過(guò)簽名機(jī)制算法得到簽名機(jī)制后的URL;最后通過(guò)HTTP方法請(qǐng)求簽名機(jī)制后的URL。
2.3服務(wù)端實(shí)現(xiàn)
基于分布式日志系統(tǒng)中REST的安全接口設(shè)計(jì)中服務(wù)端考慮所有的客戶(hù)端HTTP請(qǐng)求,都需要經(jīng)過(guò)身份認(rèn)證后才能進(jìn)入后端業(yè)務(wù)邏輯,固采用MVC攔截器注入的方式,這樣業(yè)務(wù)邏輯和身份認(rèn)證邏輯可以解耦。在攔截器中preHandle預(yù)處理回調(diào)方法中,實(shí)現(xiàn)服務(wù)端身份認(rèn)證邏輯。服務(wù)端身份認(rèn)證得到客戶(hù)端HTTP的請(qǐng)求中獲取請(qǐng)求賬戶(hù)、時(shí)間戳、簽名值和請(qǐng)求的URI,進(jìn)行傳入?yún)?shù)的校驗(yàn)、時(shí)間戳的檢驗(yàn)、重放攻擊的防止、請(qǐng)求賬戶(hù)狀態(tài)的校驗(yàn)、簽名的校驗(yàn)、請(qǐng)求資源的鑒權(quán)等一系列身份認(rèn)證通過(guò)后,然后進(jìn)入請(qǐng)求對(duì)應(yīng)的資源并返回。
3測(cè)試
目前國(guó)內(nèi)外有效可行的Web服務(wù)安全性測(cè)試技術(shù)研究甚少,更加缺少對(duì)于Web服務(wù)安全性全面系統(tǒng)性的測(cè)試方法。本文采用httpclient和apache-jmeter-2.12作為模擬應(yīng)用系統(tǒng)端對(duì)分布式日志系統(tǒng)REST安全接口進(jìn)行性能測(cè)試,并對(duì)比分布式日志系統(tǒng)不采取安全接口與采取分布式日志系統(tǒng)設(shè)計(jì)REST安全接口的安全性與性能。性能測(cè)試中以不采取計(jì)安全接口中系統(tǒng)能承受最大并發(fā)線程數(shù)800,間隔時(shí)間1秒,循環(huán)次數(shù)為10。
4結(jié)束語(yǔ)
本文研究了基于教育電子身份號(hào)的REST接口安全認(rèn)證方法,設(shè)計(jì)了分布式日志系統(tǒng)中日志服務(wù)安全接口,并對(duì)該安全接口進(jìn)行測(cè)試。測(cè)試結(jié)果表明,該安全接口既能夠有效地對(duì)請(qǐng)求做身份認(rèn)證,又能實(shí)現(xiàn)請(qǐng)求過(guò)程中數(shù)據(jù)的防止篡改、防止重放攻擊和能夠?qū)φ?qǐng)求資源進(jìn)行鑒別的功能,對(duì)于復(fù)雜的多系統(tǒng)中接口的安全設(shè)計(jì)有一定的推廣作用。