沈淵飛 金雷 楊映輝 談建 姜瑩波
(1.浙江省寧波市檔案館 浙江省寧波市 315000 2.浙江省慈溪市檔案館 浙江省慈溪市 315300)
(3.浙江愛(ài)立示信息科技有限公司 浙江省慈溪市 315300)
無(wú)鑰簽名是傳統(tǒng)公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure, PKI)的替代解決方案?!盁o(wú)鑰”一詞并不意味著在簽名創(chuàng)建期間不使用密鑰,密鑰仍然是進(jìn)行身份驗(yàn)證所必需的,但是不需要依賴(lài)密鑰的保密性,簽名就可以可靠地驗(yàn)證。無(wú)鑰簽名不易受到密鑰泄露的影響,從而為數(shù)字簽名的長(zhǎng)期有效性問(wèn)題提供了一種解決方案。傳統(tǒng)的PKI 簽名可能受到時(shí)間戳的保護(hù),但只要時(shí)間戳技術(shù)本身是基于PKI 的,密鑰泄露問(wèn)題仍然沒(méi)有得到解決。
在無(wú)鑰簽名系統(tǒng)中,簽名者的身份認(rèn)證功能和證據(jù)的完整性保護(hù)功能是分開(kāi)的,并由適合這些功能的加密工具完成。例如,簽名者的身份認(rèn)證仍然可以通過(guò)使用非對(duì)稱(chēng)加密來(lái)完成,但是簽名的完整性可以通過(guò)使用無(wú)鑰簽名來(lái)保護(hù)。所謂的單向無(wú)沖突哈希函數(shù),是公開(kāi)、標(biāo)準(zhǔn)化且不涉及任何密鑰的數(shù)據(jù)轉(zhuǎn)換模式。
無(wú)鑰簽名可以實(shí)現(xiàn)同一時(shí)間簽名多份文件。簽名過(guò)程包括以下幾個(gè)步驟:
(1)哈希:對(duì)要簽名的文檔進(jìn)行哈希運(yùn)算,哈希值代表該文檔用于之后的流程;
(2)聚合:每次簽名創(chuàng)建一個(gè)全球的臨時(shí)哈希樹(shù),代表本次簽名的所有文檔。每次持續(xù)時(shí)間可能不同,在實(shí)際中,它被固定為一秒鐘;
(3)發(fā)布:每次聚合樹(shù)的前3 個(gè)哈希值被收集到永久哈希樹(shù)(所謂的日歷哈希鏈)中,并且該樹(shù)的頂部哈希值作為信任錨發(fā)布。
要在實(shí)際中使用此類(lèi)簽名,需要一個(gè)完善的無(wú)鑰簽名基礎(chǔ)設(shè)施(KSI),類(lèi)似于傳統(tǒng)簽名解決方案中的PKI。這樣的基礎(chǔ)設(shè)施由多層級(jí)的聚合服務(wù)組成,并由這些服務(wù)生成每秒全球哈希樹(shù)。第一層聚合服務(wù)——無(wú)鑰簽名網(wǎng)關(guān),負(fù)責(zé)直接從客戶端收集請(qǐng)求。每層聚合服務(wù)接收來(lái)自較低層級(jí)服務(wù)的請(qǐng)求,生成哈希樹(shù)并將每層頂部的哈希值作為請(qǐng)求發(fā)送到較高層級(jí)服務(wù)。然后,等待更高層級(jí)服務(wù)的響應(yīng),并通過(guò)將接收到的響應(yīng)與自身哈希樹(shù)中對(duì)應(yīng)的哈希鏈相結(jié)合,為每個(gè)更低層級(jí)的服務(wù)創(chuàng)建和傳遞響應(yīng)。
本文討論了可能出現(xiàn)的一些服務(wù)質(zhì)量和可用性問(wèn)題,并形成了解決方案。該方案避免了單點(diǎn)故障,并保證了服務(wù)的合理和穩(wěn)定。愛(ài)立示(Aletheia)運(yùn)行KSI 基礎(chǔ)設(shè)施已經(jīng)8年了——通過(guò)在實(shí)際應(yīng)用中獲得的經(jīng)驗(yàn)教訓(xùn)總結(jié)了關(guān)于可用性和可伸縮性的一些結(jié)論。本文描述了KSI 基礎(chǔ)設(shè)施的主要原理和操作原則,并簡(jiǎn)要概述了最小化安全風(fēng)險(xiǎn)的設(shè)計(jì)方案。
哈希樹(shù)(Hash Trees):哈希樹(shù)時(shí)間戳使用單向哈希函數(shù)將一系列文檔轉(zhuǎn)換為與時(shí)間相關(guān)聯(lián)的固定長(zhǎng)度摘要。用戶將文檔的哈希值發(fā)送給服務(wù)器并接收簽名文件,證明該文檔數(shù)據(jù)在某個(gè)時(shí)間存在并通過(guò)特定訪問(wèn)點(diǎn)接收請(qǐng)求。所有接收到的請(qǐng)求都被聚合到一個(gè)大型哈希樹(shù)中,樹(shù)的頂部哈希值每秒鐘被固定和保留(圖1)。
圖1:哈希樹(shù)的計(jì)算
圖2:基于二叉哈希樹(shù)的時(shí)間戳
圖3:系統(tǒng)架構(gòu)和聚合網(wǎng)絡(luò)
日歷哈希鏈:每秒的頂部哈希值在一個(gè)全球唯一的哈希樹(shù)(稱(chēng)為日歷哈希鏈)中鏈接在一起,這樣新一秒的頂部哈希值只添加到哈希樹(shù)的一側(cè)。時(shí)間值被編碼為日歷的形狀,其他用戶可以顯而易見(jiàn)地看到它的修改,因?yàn)槿諝v哈希鏈的哈希根植會(huì)定期在廣泛見(jiàn)證的公共媒體上發(fā)布。
底層數(shù)據(jù)結(jié)構(gòu)保證了即使在惡意客戶端和惡意服務(wù)提供者合作的情況下,也不可能發(fā)布偽造的、過(guò)期的或誤導(dǎo)性的簽名文件。哈希根植被提交到全球唯一的公共日歷哈希鏈,使得對(duì)系統(tǒng)的篡改,尤其是對(duì)時(shí)間的篡改,對(duì)所有用戶而言都是高度可見(jiàn)的。該系統(tǒng)的安全性不依賴(lài)于私鑰的長(zhǎng)期保密性,因?yàn)闊o(wú)法證明密鑰實(shí)際上沒(méi)有被泄漏。
在每個(gè)聚合周期內(nèi),聚合樹(shù)的頂部數(shù)據(jù)存儲(chǔ)在日歷數(shù)據(jù)庫(kù)中。為了不可撤銷(xiāo)地提交日歷數(shù)據(jù)庫(kù)中序列化的值,它們被鏈接到一個(gè)二叉哈希樹(shù)中,這樣新葉只被添加到一側(cè),就像時(shí)間線上的標(biāo)記一樣(參見(jiàn)圖2 中的t)。這個(gè)數(shù)據(jù)庫(kù)是全球唯一且公共的,向所有第三方開(kāi)放以提供審計(jì)、存檔和驗(yàn)證。
圖2 顯示出了系統(tǒng)如何依次(t,t+1,t+2,…)運(yùn)行,即每次產(chǎn)生一個(gè)聚合樹(shù)。系統(tǒng)的容量(N)由最大樹(shù)大小N=2l確定,其中l(wèi) 表示聚合樹(shù)的深度。
系統(tǒng)架構(gòu)如圖3 所示。文件的哈希運(yùn)算發(fā)生在形成簽名(或時(shí)間戳)請(qǐng)求的應(yīng)用程序中,有軟件工具可供使用。請(qǐng)求被發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)是向最終用戶提供服務(wù)的系統(tǒng)組件。網(wǎng)關(guān)對(duì)在其聚合周期中接收到的請(qǐng)求執(zhí)行初始聚合,然后將其聚合請(qǐng)求發(fā)送到上層聚合。請(qǐng)求通過(guò)多層聚合服務(wù)進(jìn)行聚合,核心層選擇一個(gè)全球唯一的哈希根值,同時(shí)該響應(yīng)立即通過(guò)聚合網(wǎng)絡(luò)返回。
每個(gè)聚合周期的哈希根值都儲(chǔ)存在“日歷數(shù)據(jù)庫(kù)”中,并通過(guò)“日歷緩存”分發(fā)到擴(kuò)展服務(wù)(該服務(wù)通常與網(wǎng)關(guān)主機(jī)位于同一位置),客戶端應(yīng)用程序使用擴(kuò)展服務(wù)進(jìn)行驗(yàn)證。
為了提高服務(wù)的可用性,必須避免單點(diǎn)故障,我們?cè)谙到y(tǒng)中的所有位置都采用冗余設(shè)計(jì)。每個(gè)聚合服務(wù)器都由在地理上分散分布的、并行工作的聚合服務(wù)器集群所替代,以便較低級(jí)別的服務(wù)器向集群的每個(gè)成員發(fā)送請(qǐng)求,并使用第一個(gè)接收到的服務(wù)器作為有效答復(fù)。如果假設(shè)單個(gè)聚合服務(wù)器的可用系數(shù)為0.99(即大約每年停機(jī)3.5 天),那么在假設(shè)停機(jī)事件完全獨(dú)立的情況下,具有兩個(gè)服務(wù)器的集群的可用性大約為0.9999。同時(shí),集群可以在不停機(jī)的情況下進(jìn)行擴(kuò)展和重新配置。
頂層聚合步驟也由具有冗余設(shè)計(jì)的服務(wù)器集群執(zhí)行。為確保全球哈希日歷的唯一性,最上層集群(稱(chēng)為核心集群)的服務(wù)器之間必須存在某種協(xié)議??赡苄枰幚淼那闆r包括:
(1)一些請(qǐng)求可能無(wú)法到達(dá)核心服務(wù)器的所有服務(wù)器;
(2)核心服務(wù)器可能以不同的順序接收請(qǐng)求;
(3)一些站點(diǎn)可能被斷開(kāi)連接、關(guān)閉、維護(hù)等。
總體上,可能所有核心服務(wù)器都有不同的哈希根值。該問(wèn)題的解決方案是,服務(wù)器使用多方協(xié)議將其哈希根值發(fā)送到所有核心節(jié)點(diǎn),在每個(gè)可能重疊的回合結(jié)束時(shí),多數(shù)核心服務(wù)器具有相同的哈希根值,并且具有不同哈希根值的服務(wù)器將知道它們不屬于多數(shù)。只有屬于多數(shù)的核心服務(wù)器才能根據(jù)它們同意的哈希根值填寫(xiě)日歷數(shù)據(jù)庫(kù)中的值,并響應(yīng)它們的請(qǐng)求。只要仲裁服務(wù)器可以相互通信,協(xié)議就可以工作。由于網(wǎng)絡(luò)連接問(wèn)題或本地托管問(wèn)題而從核心服務(wù)集群中斷的服務(wù)器將自動(dòng)恢復(fù)。
核心網(wǎng)絡(luò)中,平均達(dá)成共識(shí)協(xié)議的時(shí)間是連接的核心服務(wù)器之間往返時(shí)間的1.5 倍。之所以能夠做到這一點(diǎn),是因?yàn)槲覀儾徊捎脨阂獾陌踩P?,也不需解決完整的拜占庭協(xié)議(Byzantine Agreement)問(wèn)題。在全網(wǎng)狀連接模型中,每條消息都使用不同的路由進(jìn)行廣播。
圖4:無(wú)鑰簽名區(qū)塊鏈技術(shù)對(duì)數(shù)字檔案的完整性驗(yàn)證展示效果圖
隨著國(guó)家信息化建設(shè)的發(fā)展和浙江省“互聯(lián)網(wǎng)+政務(wù)服務(wù)”的廣泛應(yīng)用、“最多跑一次”改革的深入推進(jìn)要求,近年來(lái),檔案部門(mén)加快推行“最多跑一次”事項(xiàng)電子化歸檔,建立數(shù)字化檔案資源在線歸檔、保存、移交和利用長(zhǎng)效機(jī)制,極大便利了群眾查檔需求,促進(jìn)了檔案資源社會(huì)化功能的發(fā)揮。
然而由于數(shù)字檔案其虛擬性,具有易篡改、易損毀、環(huán)境依賴(lài)性強(qiáng)等特點(diǎn),對(duì)數(shù)字檔案資源全生命周期內(nèi)的安全性、原始性、可靠性提出了新的挑戰(zhàn)。
慈溪市檔案館、寧波市檔案館以服務(wù)“最多跑一次”改革為抓手,從如何確保電子文件歸檔安全、數(shù)字檔案存儲(chǔ)安全的角度,進(jìn)行研究和探索應(yīng)用。并率先應(yīng)用無(wú)鑰簽名區(qū)塊鏈技術(shù),通過(guò)對(duì)數(shù)字檔案文件添加“可信任標(biāo)簽”,提取數(shù)字指紋,保證數(shù)字檔案在形成之初、辦理流轉(zhuǎn)、共享利用、長(zhǎng)久儲(chǔ)存等各個(gè)環(huán)節(jié)的完整性和可靠性,從而確保電子文件和數(shù)據(jù)在各環(huán)節(jié)不被篡改,實(shí)現(xiàn)電子化歸檔全生命周期安全管理和數(shù)字檔案的溯源管理。
區(qū)塊鏈技術(shù)在檔案領(lǐng)域的成功應(yīng)用也將為政務(wù)數(shù)據(jù)的開(kāi)放共享、安全管理提供新的解決思路。無(wú)鑰簽名區(qū)塊鏈技術(shù)對(duì)數(shù)字檔案的完整性驗(yàn)證展示效果圖如圖4 所示。