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