魏 星
(天津市第四中心醫院 網絡信息中心,天津 300140)
隨著計算機、無線通信和信息技術的快速發展,手機和平板電腦等智能終端設備快速普及,使電子商務得到了快速發展,為移動支付和網絡支付的應用創造了良好的條件。目前,移動支付已經融合到了日常生活中[1]。但此過程中的支付安全問題也日益凸顯,各種病毒、惡意攻擊、釣魚鏈接對移動支付造成了重大隱患[2],限制了電子商務和物聯網的進一步發展。移動支付逐漸成為醫院交易的主流趨勢,為了進一步提高支付安全性,構建一個安全的支付通信模型意義重大。
目前移動網絡支付安全通信協議模型主要由支付認證機制、基于身份的第三方認證密鑰協商協議的密鑰復制攻擊、基于組密鑰協議的動態口令改進和DNS 協議及中間人攻擊4個部分組成[3]。認證機制發展完善,動態口令修改復雜且易被攻擊,因此對DNS的改進更有意義[4]。國內外學者對其進行了大量研究,文獻[5]提出DBDNS域名系統,采用POA和POW的共識機制,降低了在算力不足時遭受攻擊的可能性。文獻[6]指出以分布式一致性算法來保證根域名數據的一致性。文獻[7]設計了新的3層結構,以解決存儲壓力問題。對DNS的研究進一步提高了根域名系統的數據安全性和可靠性,但仍存在出塊效率低、域名資源浪費的問題。對此,本文提出了基于區塊鏈技術的DNS通信協議模型,保證了DNS資源的有效性和安全性。
區塊鏈技術是一種分布式數據庫技術,最早由日本學者中本聰提出,并作為比特幣的基礎架構。其核心技術主要包含兩大部分:密碼學技術和分布式共識機制[8]。
密碼學技術中通過使用哈希函數,在一定時間內將數據消息通過計算轉換成固定長度的二進制串:RIPEMD160哈希函數主要用來生成比特幣地址;SHA256哈希函數主要用來構造區塊鏈所用的密碼。區塊鏈采用基于橢圓曲線的加密算法,其又稱為非對稱加密算法:每個區塊鏈用戶都擁有私鑰和公鑰,私鑰由自己保存;公鑰公開,用哈希函數生成數值,Base58Check編碼生成標識信息后用于驗證自身產生的數據交易。
在分布式共識機制中,共識算法具有重要意義,工作量證明機制(Proof of Work,PoW)是區塊鏈網絡中的共識策略,每個節點負責計算一個變化的區塊頭散列值,并連續計算哈希值,從而達到最后的目標。權益證明機制(Proof of Stake,PoS)是工作量證明機制的一種節能共識替代方案,相比較而言,它更有效并且更加節省資源。實用拜占庭容錯機制(Practical Byzantine Fault Tolerance, PBFT)可以保證在系統拜占庭故障節點少于1/3的情況下達成共識。
區塊鏈技術具有去中心化、數據分布可靠存儲、開源可移植性等特點,因此在互聯網、金融、醫療等領域都有廣泛的應用[9]。
域名系統(Domain Name System, DNS)主要工作在應用層,是計算機和網絡的命名系統,一般組織成域層次結構,將主機名和域名轉換為IP地址進行工作[10]。DNS域名結構是一個倒掛樹結構,主要有5個類別:根域、頂級域、二級域、子域和主機名[11]。
DNS服務由客戶端到服務器的工作原理如下[12]:
(1)在客戶端輸入域名,查詢本地緩存,若存在這個網址映射關系,則調用這個IP地址映射完成解析,若無則執行下一步;
(2)查詢本地DNS服務器內部緩存,若存在該網址映射關系則完成解析;
(3)本地DNS向根域名服務器查詢,若存在映射關系,根域服務器返回一級域地址;
(4)本地DNS向根域返回的一級域服務器查詢一級域的本地緩存;
(5)查詢到終結果,返回給本地DNS服務器;
(6)本地DNS服務器將解析的結果返回客戶端;
(7)客戶端根據返回結果的IP瀏覽互聯網。

圖1 DNS工作原理Figure 1. DNS working principle
使用區塊鏈技術實現域名系統的革新,系統仍然采用分層理念,核心思想是利用區塊鏈的去中心化對根服務器和根區數據實現分布式管理[13],它主要由自主根和根聯盟兩個部分組成[14]。所在網絡的頂級域名擁有者都可以參與搭建和管理屬于自己的自主根。多個自主根依據互聯網協議組建“根聯盟”,這樣各方都參與了整個域名系統[15],共同決策發布的數據是否有效,組成了一個分布式區塊鏈系統,從而實現共同管理根區的數據,可進一步提高整個DNS系統的安全性和有效性。總體架構如圖2所示。

圖2 整體架構Figure 2. Overall architecture
聯盟內系統采用改進的PBFT算法[16]。PBFT共識算法的共識節點對數據進行發布和存儲,利用這些共識節點來保證數據的隱私性、完整性和不可篡改性。PBFT共識算法可以容忍最多1/3的失效節點,需要經過3階段協議投票達成節點間共識。此外,由于網絡抖動、延遲等原因,可能導致部分節點執行速度落后于大多數節點,從而影響了后續的區塊鏈共識流程。采用基于信用機制的改進PBFT共識機制,每次節點對區塊鏈的新高度達成共識后,會對本次共識過程中節點行為進行可信度評估,由每一個階段對節點行為進行評價,以避免在下一階段選擇可能存在問題的節點為共識節點,從而保證共識過程中的高效性。
在區塊鏈網絡運行過程中導致的部分節點執行落后[17-18],這在傳統的PBFT共識算法中無法主動恢復。為了完善此問題,需要主動獲取節點網絡中所有節點的視圖以及最新的區塊高度等信息,然后再更新節點數據狀態,與系統其他正常節點狀態保持一致。
恢復流程主要分為兩步:第一步,NegotiateView同步當前的視圖信息和路由信息;第二步,同步全網最新區塊信息。如圖3所示,其中Primary1為主節點,Replica2和Replica3為副本節點,Replica4為滯后節點等待恢復同步。

圖3 PBFT節點恢復流程圖Figure 3. Flow chart of PBFT node recovery
具體操作流程如下:
(1)待恢復節點向全網廣播QueryView消息,獲取網絡中其他正常節點的最新路由和視圖信息;
(2)其他正常節點收到QueryView消息后,返回當前節點的最新視圖信息View、節點名稱ReplicaID以及路由信息N(總節點數);
(3)待恢復節點如果收到Quorum(2f+1)個包含相同N和View的QueryViewResponse消息,則將本節點的視圖View同步成網絡的View和N;
(4)待恢復節點廣播RecoveryToCheckPoint消息到網絡所有節點,請求其余節點的CheckPoint信息和Pre-Prepare、Prepare階段的數據;
(5)其余正常節點接收到RecoveryToCheckPoint和RecoveryToPQC信息后,返回CheckPoint和PQ信息給待恢復節點;
(6)待恢復節點接收到Quorum個RecoveryToCheckPointResponse信息后,將待恢復的穩定CheckPoint點調用StateUpdate更新至CheckPoint點狀態。若更新后的CheckPoint仍然滯后,則發送RecoveryToPQ消息,獲取PQ消息更新自身Pre-Prepare、Prepare階段的數據信息集合。
基于區塊鏈的DNS體系與傳統DNS體系相比,其在被基于DNS的攻擊和挑戰時,在多種情況下都展示了良好的性能,解決方案簡單且可操作性強,有助于提高整個系統的安全性能,具體如表1所示。

表1 DNS的挑戰和安全解決方案
除此以外,基于區塊鏈的DNS系統還呈現出以下特點:
(1)域名空間統一和域名唯一性。新系統所有的節點既是參與者也是管理者,遵循IANA作為唯一的名字空間管理者,頂級域的發布要聯合判別;
(2)數據安全性。采用改進的PBFT共識算法保證了根區數據在所有根節點的一致,如果某個節點被攻擊或者私鑰發生泄漏而造成數據被篡改,被攻擊或篡改的根將很快發現數據與其他根的不通,這樣就能緊急響應,從而確保數據安全;
(3)數據同步性。通過改進的PBFT共識算法可以主動恢復網絡運行過程中導致的部分節點執行落后問題,落后節點可自行恢復。
傳統DNS通信協議模型在移動網絡的應用中,安全和性能的矛盾日益凸顯,特別是在人流量大的醫院中,安全支付問題受到了很大關注。為了有效改善這一問題,本文將區塊鏈技術引入到DNS體系結構中,通過去中心化的思想使頂級域名聯盟,共同參與域名的管理,保障了域名空間的資源和數據安全。通過改進的PBFT共識算法可以主動恢復網絡運行過程中導致的部分節點執行落后的問題,從而構建更加安全的移動網絡支付通信模型。