袁小溪,孫 舟,陳 平,及洪泉,劉祥璐,潘鳴宇,陳思源
(1.國網北京市電力公司電力科學研究院,北京 100075;2.重慶倍來電新能源有限公司,重慶 401122;3.北京理工大學 計算機學院,北京100081)
全球導航衛星系統(GNSS)是一種基于衛星的導航技術,它可以在任何時間、任何地點和任何天氣條件下給出三維位置信息。中國北斗衛星導航系統(BDS)是自主創新的衛星導航系統。它是繼美國全球定位系統(GPS)和俄羅斯格洛納斯衛星導航系統(GLONASS)之后的第三個成熟的衛星導航系統。隨著北斗系統Ⅲ的運行,北斗衛星導航系統覆蓋了世界大部分地區,其綜合定位服務能力部分優于GPS系統,安全性比GPS系統高,還具有短消息數據通信等差別功能。
隨著定位系統和相關技術[1]的發展,定位精度得到了顯著提高。目前存在多種類型的定位形式,如靜態測量、實時動態定位(RTK)和智能手機的位置跟蹤。這些系統用于各種需要精確定位的領域,比如涉及運動變化的無人機、自動駕駛和部分物聯網場景[2-8],都會實時接收校正信息來估計精確的坐標。提供校正的方式分為狀態空間表示(State-Space Representation,SSR)和觀測空間表示(Observation Space Representation,OSR)兩種,典型的方法有單一RTK和網絡RTK[9-11]。此外,還有其他技術,如基于衛星的增強系統(Satellite-Based Augmentation System,SBAS)、廣域RTK(Wide Area RTK,WARTK)和精確點定位RTK(Precise Point Positioning RTK,PPP-RTK)[12-14]。隨著技術和應用的不斷完善,利用北斗衛星導航系統為軍事、資源環境、防災減災、測繪、電力、電信、城市管理、工程建設、機械控制、交通運輸、農業、林業、漁牧業、考古業、物聯網等行業提供服務,將會成為社會生產生活發展的必然趨勢。
不同國家使用GNSS有著不同的需求和規范,在我國,一般導航用戶使用北斗衛星精密定軌徑向精度需優于10 cm,實時動態偽距差分定位精度需2~4 m,測繪、國土資源調查等專業定位用戶可采用精密單點定位、基線相對定位達到厘米和毫米級[15]。在英國和美國,使用網絡RTK進行大地測量需要在3~10 cm的精度范圍。根據測量等級的不同,美國有的情況甚至要求精度高達1 cm,數據延遲小于2 s。在GNSS測量中使用的網絡RTK技術大多是中心式系統,其中連續運行的參考站(Continuously Operating Reference Stations,CORS)的服務器數據是中心化存儲的。基于這種結構[16]使用“漫游”模式進行信號發射和接收。在這個過程中,用戶可以發送偽造的數據,美國海洋電子協會(National Marine Electronics Association,NMEA)和服務提供商可以根據這些數據生成RTCM報文,因此,最壞的情況是所有這些數據都可能是虛假的[17],美國已經發生了多起操縱和偽造GPS數據的案例。隨著導航軟件、輔助駕駛等技術的普及,定位數據不僅可以用來識別物體的位置,還可以通過分析交通狀況,在車輛導航服務中按擁堵程度分配路線,定位數據不僅越來越關乎用戶的駕駛體驗,更直接關系到用戶的生命安全,其可靠性也因此越來越受到廣泛關注。然而,定位數據在接收機和服務器端存在安全性方面的缺陷。Samios等人[18]為地震儀、加速度計和GPS接收機創建了一個攻擊路徑,識別出了系統安全漏洞。圖1展示了RTK基本工作流程,流動站可以篡改NMEA數據發送給服務器得到相應的RTCM數據,由于缺乏有效的數據溯源機制,定位數據使用方一般無法辨別流動站交付的數據是否經過篡改(例如,案件嫌疑人以案發當天的車輛GPS定位數據作為自己不在案發現場的證據,由于數據可以被部分隱藏或者通過后期偽造,使得證據真實性受到質疑)。鑒于此,非常有必要提升定位數據的完整性和可靠性。

圖1 RTK基本工作流程
傳統系統大多采用中心化的數據存儲,數據容易丟失和被篡改,區塊鏈通過多個分布式數據庫達成共識,實現數據的完整性和一致性。區塊鏈天然具有去中心化、防篡改、可溯源等性質,在提升數據可靠性方面有著得天獨厚的優勢[19]。此外,區塊鏈向用戶提供賬本信息,實現了公開可驗證性,提升了數據的透明度和可信度。利用區塊鏈防止數據偽造的研究越來越多:Kowaiski等人[20]通過區塊鏈提升了貿易融資中業務伙伴之間的信任關系和安全性;Majeed等人[21]將區塊鏈技術應用于智慧城市并提高了智慧城市的可靠性和安全性;Li等人[22]提出了一個基于區塊鏈的定位數據使用框架,并通過數據過濾提高了定位精度。蓋等人[23-24]利用區塊鏈技術有效提升了云計算、邊緣計算場景下數據的隱私性和安全性。
本研究是為了解決現有衛星定位數據可能造假的問題。假設基準站、流動站與服務器通信中沒有數據篡改,利用區塊鏈存儲北斗NMEA和RTCM數據保證數據完整性和可靠性,通過流動站統計報文流量,實現按流量計費。在NMEA傳輸過程中,基準站、流動站接收到的NMEA被發送到NTRIP(Networked Transport of RTCM via Internet Protcol)服務器,隨后NTRIP服務器產生RTCM數據并將NMEA和RTCM數據記錄在區塊鏈網絡上。本研究的貢獻如下:(1)在北斗RTK定位過程中,提出了一種基于區塊鏈的RTK服務系統來檢查數據的合規性,利用區塊鏈Keccak-256函數、Merkle樹等密碼學工具保證北斗數據的完整性。(2)區塊鏈上的散列值設計使得定位數據源和定位過程能夠得到溯源和驗證,提高了北斗定位數據的可靠性。(3)優化了計費方案,按實際使用報文流量采用流量計費,使付費模式更加合理精細。
北斗衛星導航系統是中國自主建設和運行的全球衛星導航系統,與世界其他衛星導航系統兼容。北斗衛星導航系統(BDS)的發展戰略分為三個步驟。自20世紀90年代發展起步以來,北斗、北斗Ⅱ、北斗Ⅲ的建設已按照“三步”戰略實施。隨著北斗Ⅲ基礎系統建設的完成,2018年12月27日提供了全球服務。
與北斗Ⅱ相比,北斗Ⅲ網絡覆蓋了全球。該系統在負載、衛星間鏈路和激光通信等方面都得到了改進。此外,還增加了衛星搜救功能和全球位置報告功能。與其他衛星導航系統相比,增加了性能和兼容性更好的B1C和B2a信號,并根據國際標準提供了基于衛星的增強服務。同時,配置了性能更高的銫原子鐘和氫原子鐘,銫原子鐘的穩定性在E-14級,氫原子的穩定性在E-15級。北斗Ⅲ的詳細信息如表1所示。新技術極大地提高了北斗Ⅲ的性能[25]。通過全球測試,對北斗基礎服務的性能進行了評估,如表2所示。北斗Ⅲ在北斗Ⅱ的基礎上,定位精度提高了1~2倍,衛星設計壽命提高到10~12年。保留了短信的通信功能。

表1 北斗系統Ⅲ業務技術指標說明

表2 北斗系統Ⅲ服務表現
導航定位是衛星導航系統提供的基本服務。北斗系統的導航服務可分為基本導航服務、差分導航服務和精確定位服務[26]。
基本導航業務分為兩種模式:衛星無線電測定業務(Radiodetermination Satellite Service,RDSS)和衛星無線電導航業務(Radio Navigation Satellite Service,RNSS)。RDSS的定位精度一般在100 m左右,在有標定站的區域將提高到20 m。
差分導航服務是一種基于基本導航服務的精度增強服務,主要是基于地面差分站的修正誤差來提高精度。差分服務可分為局域差分和廣域差分。北斗全球系統為授權的RNSS用戶提供基于衛星的增強導航服務,定位精度可達米級。
精密定位服務是測量用戶的應用。精確定位可分為精確單點定位、相對定位和差分定位。北斗精度單點定位精度:水平2~4 cm,海拔5~6 cm。北斗和GPS的結合將提高收斂時間。
區塊鏈技術基于P2P網絡,并使用分布式賬本[27]構建系統。該技術解決了現有中心化系統[28-30]存在的許多問題。由于必須超過51%的節點被黑客攻擊才能進行數據操作,因此保障了數據完整性和可靠性,實際上自2008年誕生以來比特幣網絡還從未被篡改。此外,即使某些節點由于DDoS攻擊而失效,其他節點也會繼續提供服務,區塊鏈系統不會癱瘓。區塊鏈中數據對所有人開放,數據源的透明度解決了信息不對稱的問題。
區塊鏈的特性保證了程序生成數據的完整性,基于此可以解決現有計算機系統中存在的各種數據可靠性問題。以太坊,也被稱為第二代區塊鏈,在區塊鏈網絡[31]上運行一種名為Solidity的圖靈完整性語言編寫代碼。圖靈完備性語言很重要,因為理論上可以通過圖靈完備性語言解決任何可計算的問題。以太坊利用它來創建智能合約,以解決此前計算機系統無法解決的合約問題。
區塊鏈存在各種框架,根據對節點參與資格的限制,區塊鏈分為三種類型:公有鏈、私有鏈和聯盟鏈。節點之間根據區塊鏈類型和功能的不同采用不同的共識算法。比特幣和以太坊屬于公有鏈,對于節點的數量和節點的參與權限并沒有限制,因此附加了加密貨幣的概念,對維護系統的節點進行補償。在私有鏈和聯盟塊鏈中,只允許授權的節點和用戶參與。與公有鏈委托匿名用戶進行服務維護不同,私有鏈和聯盟塊鏈不需要對節點維護進行代幣補償,它使用成員節點現有的資源。
區塊鏈能夠確保數據完整性,防止數據被篡改。由于區塊鏈提高了數據的可靠性,也可以通過區塊鏈來提高北斗數據的準確性。區塊鏈具有遭受51%攻擊的弱點,因為它信任所有節點,而不評估節點聲譽[32]。然而,51%攻擊需要巨大的成本,即使成功也不會有數據的更改和損失,攻擊是為了經濟利益,一般以盜竊公有鏈中的加密貨幣為主要目標。因此,采用聯盟鏈或私有鏈存儲北斗數據可以有效提高北斗數據的可靠性,避免被惡意篡改。
本文設計了基于區塊鏈的北斗RTK服務系統架構,系統中兩臺接收機(一臺基準站,一臺流動站)都在接收北斗衛星NMEA(National Marine Electronics Association)數據,是美國國家海洋電子協會為海用電子設備制定的標準格式,目前業已成了GPS/北斗導航設備統一的RTCM標準協議。同時,基準站通過將所接收的載波相位信號(或載波相位差分校正信號)進行處理,轉換格式后通過網絡傳輸給NTRIP服務器,服務器把GNSS差分數據提交給NTRIP分發服務器;分發服務器接收、發送GNSS差分數據;流動站注冊NTRIP客戶端并登錄后,NTRIP分發服務器把GNSS差分數據發送給它。流動站不僅要指定掛載點,還要發送自身的坐標給NTRIP分發服務器,分發服務器根據這個坐標選擇或產生差分數據,將NMEA和RTCM數據上傳至區塊鏈并發送給流動站。流動站基于這些數據開展位置校正,通過流動站上的固化軟件進行一定時間的反復運算,就可以實現差分計算[33],從而精確地定出基準站與流動站的空間相對位置關系,并利用區塊鏈提高北斗數據的完整性和可靠性。系統架構如圖2所示。

圖2 系統架構圖
一是完整性。全過程NMEA和RTCM數據被存儲在區塊鏈中,由于區塊鏈由分布式節點維護,個別節點宕機并不會使賬本中數據丟失;另一方面,賬本公開可見,流動站無法對數據接收方部分隱藏數據,從而保證了數據完整性。
二是可靠性。設第n個區塊blockn存儲數據為datan,區塊體哈希值Hashn=Hash(datan)。若流動站要對該區塊數據進行篡改,則需找到使得Hashn=由哈希函數的抗碰撞性保證無法找到從而保證了數據的可靠性。
基準站可以采用樹莓派/Windows計算機運行STRSVR軟件,利用Ucenter設置基準站,讓UART2輸出RTCM數據,并將數據傳輸到RTK2gO網站。流動站使用RTCM數據流,流動站可以采用RTK客戶端電路板并設置RTK播發數據,實現數據流采集。配置如圖3~圖5所示。

圖3 基準站配置

圖4 流動站配置

圖5 NTRIP分發服務器轉發
在北斗測量過程中,當接收站與NTRIP分發服務器建立連接之后,NTRIP分發服務器需要將NMEA和RTCM數據記錄在區塊鏈網絡中,以確保數據完整性,通過HTTP提供程序建立了到網絡的連接,并創建了一個Web3實例,然后使用從中提取的ABI和字節碼以及編譯的Solidity代碼來部署合同,詳見算法1。同時,可根據流動站數據流量統計收取費用,詳見算法2~3。

本文利用以太坊開源客戶端geth(go-ethreum)搭建了私有鏈測試環境,假設根據流動站流量計費,用戶應該向RTK服務提供商支付5eth,創建客戶賬戶的以太坊賬戶“Beidou_User”和RTK服務提供商賬戶“RTK_Provider”,用戶解鎖賬戶并向RTK服務提供商發起轉賬交易,經過區塊鏈打包上鏈后最終完成轉賬,如圖6所示。

圖6 私有鏈測試環境
本文提出了一種基于區塊鏈的高可靠北斗RTK服務系統,利用區塊鏈使所有用戶都可以使用合約地址檢查特定地點的RTK數據以及操作流程,確保了數據的完整性,提升了服務的可靠性;優化了計費方案,按實際使用報文流量采用流量計費,使付費模式更加合理精細,并在私有鏈中進行了實現。地籍調查等容易被操縱和造成個人經濟損失,本研究如果應用于此類事件中,將有助于政府記錄并給出令人信服的調查全流程信息,可以有效防止法律糾紛,提高行政效率。