◆馮冠雄 王利明
(中國科學院信息工程研究所 北京 100093)
近年來,智能信息系統(tǒng)逐漸融入生活中的各個領域,成為人類社會中不可或缺的重要組成部分。這些智能系統(tǒng)中通常存在海量日志,包含與系統(tǒng)相關的重要信息,例如系統(tǒng)運行狀態(tài)、用戶行為操作等,通過分析這些數(shù)據(jù)對感知系統(tǒng)狀態(tài)、改善產(chǎn)品的用戶體驗等有重要作用。因此,日志常被攻擊者選為攻擊目標,惡意人員通過對日志的修改會引誘以日志為基礎的系統(tǒng)分析被誤導,進而影響系統(tǒng)安全。
區(qū)塊鏈作為當前信息學科中的熱門技術,自提出以來就在全球范圍內(nèi)引起了廣泛關注,并且被應用于金融、醫(yī)療、法律等領域。區(qū)塊鏈網(wǎng)絡不依靠中心節(jié)點而達成共識,實現(xiàn)了非可信環(huán)境中數(shù)據(jù)的不可篡改性,能夠有效地保證鏈上數(shù)據(jù)完整、真實。其技術特點符合日志安全保護的場景需求,能夠滿足日志不被惡意篡改的需求。
本文設計并實現(xiàn)了基于區(qū)塊鏈的日志安全管理系統(tǒng),該系統(tǒng)可完成日志系統(tǒng)的收集、存儲、檢索、展示四個環(huán)節(jié),并且提出將數(shù)據(jù)持有性證明方法與區(qū)塊鏈結(jié)合的方案,從而保護日志持久化存儲的安全。
針對將區(qū)塊鏈應用于日志安全管理場景的問題,目前已經(jīng)有了一些相關研究。Ahmad 等人[1]提出用于審計的區(qū)塊鏈BlockAudit,并將常規(guī)審計日志無縫轉(zhuǎn)移到BlockAudit 區(qū)塊鏈中,以實現(xiàn)更高的安全性,完整性和容錯性。該方案的不足之處為,將所有的日志文件存儲在鏈上,難以處理數(shù)據(jù)量較大的日志。
呂建富等人[2]提出的方案是將每個日志文件獨有的摘要、元數(shù)據(jù)信息保存在區(qū)塊鏈上,使得用戶在驗證日志真實性時僅需對比其持有的文件摘要與鏈上存儲的摘要,同時將日志文件進行加密在線下存儲來保證日志數(shù)據(jù)存儲的安全性,這樣雖然可以保證安全,但無法兼顧檢索效率。
韓菊茹等人[3]提出了類似的日志審計系統(tǒng),將每條日志信息生成指紋并上鏈,驗證時將本地生成的數(shù)據(jù)指紋與鏈上指紋進行對比,但該方案未考慮日志在云服務提供商CSP 中存儲的安全性。
本文將系統(tǒng)分為日志創(chuàng)建、日志查詢、日志安全校驗三部分,其具體流程如圖1 所示。
圖1 系統(tǒng)流程設計
本文使用Flume 日志采集服務將生產(chǎn)環(huán)境中產(chǎn)生的日志生成文件,并使用存證生成服務為對應的日志文件生成存證。存證信息將被上傳至區(qū)塊鏈網(wǎng)絡,同時,該緩沖區(qū)通過監(jiān)控服務將對接ElasticSearch 集群,通過ElasticSearch 相關的API 為日志創(chuàng)建索引,以實現(xiàn)用戶對日志檢索功能的支持。為了對日志文件進行持久化備份,文件緩沖服務器會將日志文件寫入持久化存儲服務。
為保證安全,日志查詢功能首先需要經(jīng)過Nginx 用戶認證管理,通過認證的用戶方可進行相關操作。日志查詢功能通過Kibana 框架實現(xiàn)。Kibana 的服務器連接ElasticSearch 集群,并對集群進行相應的操作。用戶可以通過Kibana 來搜索、查看、分析存儲在Elasticsearch索引中的數(shù)據(jù)。
本文的日志安全驗證方案包括用戶持有日志的驗證與用戶不持有日志的驗證。
(1)用戶持有日志的安全驗證
用戶持有日志時,在本地日志生成存證信息,并從區(qū)塊鏈中查詢該文件對應的存證,對比二者存證,若相同,則表示文件未被篡改。
(2)用戶不持有日志的安全驗證
用戶不持有日志時,可通過基于區(qū)塊鏈的PDP 驗證系統(tǒng)校驗云存儲服務中的日志是否安全。校驗系統(tǒng)將PDP 技術與區(qū)塊鏈技術相結(jié)合,并且需要由用戶、區(qū)塊鏈、云存儲服務三方配合完成。
(1)初始化階段
設Ga和Gb是具有素數(shù)q的乘法群,e:Ga×Ga→Gb是雙線性圖,g是群Ga的生成器,h:(0,1)*→Ga、h':Ga→表示將字符串映射到點的哈希函數(shù)。f是偽隨機函數(shù)(PRF),π是偽隨機置換(PRP)。用戶生成一個隨機的私鑰x∈和公鑰Y=gx,并將私鑰保存在本地。
(2)標簽生成
用戶在本地為日志文件生成同態(tài)可驗證標簽(Homomorphic Verifiable Tags,HVT)。將原始的文件分割為n個數(shù)據(jù)塊F={b1,b2,...,bn},并隨機選擇元素u∈Ga,計算出每個的標簽σi=,其中PF是F的唯一標識符。標簽生成完成后,將標簽與日志存證一同作為交易存入?yún)^(qū)塊鏈。
(3)發(fā)起審計
用戶通過智能合約發(fā)起審計請求,根據(jù)抽樣生成算法,確定挑戰(zhàn)數(shù)據(jù)塊的數(shù)量z,選擇兩個密鑰k1,k2∈,并使用用戶的密鑰x對(z,k1,k2)簽名,得到σCU=Sigx(z||k1||k2),向智能合約發(fā)起審計請求C=(z,k1,k2,σCU)。
智能合約通過簽名σCU來驗證密鑰。驗證通過后,通過計算挑戰(zhàn)數(shù)據(jù)塊的索引i=及其系數(shù)(其中l(wèi)∈[1,z])來生成挑戰(zhàn)的集合Q={(i,vi)},并發(fā)送給云存儲服務。
(4)存儲服務響應挑戰(zhàn)
云存儲服務收到對應的挑戰(zhàn)集Q后,計算標簽σ=和挑戰(zhàn)塊,并用一個隨機數(shù)r∈來計算。并計算出和μ=αμ'+r來隱藏μ' 。使用密鑰x'為簽名,得到σCSP=。最后,將審核的結(jié)果證明返回給智能合約。
(5)智能合約驗證結(jié)果
智能合約在收到審計反饋的結(jié)果后,從區(qū)塊鏈中獲取證據(jù),首先計算出α=h'(u),然后通過等式是否成立來驗證結(jié)果。如果該驗證公式成立,則表示數(shù)據(jù)是正常的,否則表示數(shù)據(jù)被破壞。
為實現(xiàn)系統(tǒng)設計,本文將系統(tǒng)劃分為日志收集、存證管理、日志存儲、授權(quán)管理、日志檢索、日志驗證六大模塊。
日志收集模塊是整個系統(tǒng)運行的前提與基礎,本文通過Flume框架對多種不同的日志源進行采集,例如:HTTP 日志源、監(jiān)聽端口日志源、文件日志源等,然后將各種日志匯集到Flume 中進行統(tǒng)一處理,處理完成后得到日志文件。
日志存證由以下兩部分組成:
(1)日志Merkle 根:本文通過Merkle 樹算法,將單條原始日志數(shù)據(jù)作為Merkle 樹的葉子節(jié)點,經(jīng)過多層壓縮得到一個Merkle 根,日志數(shù)據(jù)如果被修改或者已損壞,通過Merkle 根即可快速驗證,并定位出具體損壞的位置。
(2)日志HVT 標簽:為了能夠?qū)υ拼鎯Ψ罩械娜罩疚募M行持有性審計,需要為日志文件生成同態(tài)可驗證標簽HVT,該標簽用于PDP 驗證的參數(shù),將與Merkle 根存證一同作為日志存證存儲在區(qū)塊鏈中。
存證生成完畢后,將存證作為交易存入?yún)^(qū)塊鏈中。
本文系統(tǒng)實現(xiàn)中的日志存儲模塊采用ElasticSearch+云存儲服務的模式進行,通過ElasticSearch 集群對日志進行索引,而且云存儲服務作為對ElasticSearch 集群中數(shù)據(jù)的可靠拷貝,可在發(fā)生災難時實現(xiàn)數(shù)據(jù)恢復。
日志的檢索、可視化只有通過身份認證的用戶才可以使用,因此本文采用Nginx 實現(xiàn)用戶的認證,只有輸入正確的用戶密碼才允許訪問Web 內(nèi)容。
針對ElasticSearch 索引的日志,其檢索與可視化模塊主要通過Kibana 日志可視化平臺完成。Kibana 平臺支持對日志的各種維度的查詢和分析,而且可以使用圖形化的界面對存放在Elasticsearch 中的數(shù)據(jù)進行展示,用戶可對這些展示的可視化信息進行審計,監(jiān)測系統(tǒng)實時運行狀況。
本文通過Web 前端頁面實現(xiàn)對日志的驗證,用戶持有日志文件、用戶不持有日志文件兩種場景下均可用其對日志進行驗證。
(1)用戶持有日志文件
用戶持有日志文件時,在瀏覽器中選擇本地文件,由系統(tǒng)為其生成Merkle 根,并從區(qū)塊鏈中獲取其對應的Merkle 根,對比這兩個值如果相等,則可以通過校驗,否則表示日志被篡改或損壞。
(2)用戶不持有日志文件
當用戶不持有日志文件時,使用本文提出的基于區(qū)塊鏈的PDP驗證系統(tǒng)進行驗證,對比云服務提供商計算的結(jié)果與區(qū)塊鏈查詢的結(jié)果,即可驗證日志是否安全。
本文設計基于區(qū)塊鏈的日志安全管理系統(tǒng),通過區(qū)塊鏈保護日志存證,并且將區(qū)塊鏈與數(shù)據(jù)持有性審計技術結(jié)合,可以使用戶在持有或不持有日志的場景下均可驗證日志是否被篡改,保證日志持久化存儲的安全。本文使得區(qū)塊鏈能夠應用于處理日志管理的不同場景,具有實際意義。