趙國峰, 李衛東, 李 麗, 高 楠
(中國地震臺網中心, 北京 100045)
地震預警服務系統是地震預警系統的重要組成部分,是地震部門向公眾提供及時服務的典型平臺代表。大震突發后,通過地震預警服務系統,搶在地震波傳播到設防地區前,將地震預警信息發布到各地震預警終端,利用提前幾秒至數十秒到達的警報立即進行響應,以減小當地損失,阻止或緩解嚴重災害的形成[1]。
接收到地震預警信息后,只有幾秒到數十秒的響應時間,設防地區需立即進行響應,以降低地震災害損失,確保人民群眾的生命財產安全。地震預警信息需具備高時效性、真實性和完整性,要求:一方面,接收到地震預警信息后,地震預警服務系統應能夠通過互聯網快速將其發布到各地震預警終端,為設防地區人員爭取盡可能多的響應時間,以疏散和轉移人民群眾;另一方面,地震預警服務系統所發布的地震預警信息和各地震預警終端所接收到的地震預警信息都是真實可信的,未受到惡意攻擊者偽造或篡改,從而保證地震預警服務系統的權威性,避免出現“狼來了”的情景。
然而,地震預警服務系統面向公眾提供服務時,地震預警信息主要通過互聯網進行傳輸,由于互聯網自身的匿名性和開放性,使得網上傳輸的地震預警信息數據面臨著偽造、篡改等安全風險,亟需采用可靠技術措施增強信息安全性,防止被偽造或篡改,避免帶來惡劣影響。隨著我國《電子簽名法》[2]、《密碼法》[3]、《網絡安全法》[4]等法律的實施,密碼技術成為解決信息安全問題的重要和有效技術手段,通過密碼技術,如數字簽名技術的應用,可以有效保障網絡交互數據來源的真實性和內容的完整性[5],防止業務數據被非法篡改或偽造[6]。
國外密碼技術往往受到美國影響,可能存在某些未知漏洞和后門,使用時存在安全隱患,如2020年西方媒體曝光的“盧比孔行動”,即美國中央情報局(CIA)和美國國家安全局(NSA)聯手操控全球知名的密碼設備公司Crpyto AG,并在其密碼設備中植入后門進行竊聽[7];美國國家標準與技術研究院(NIST)在制訂一系列標準時,將帶有NSA后門的算法Dual_EC_DRBG放入標準中,全球最具影響力的密碼技術公司RSA在其產品中將帶有后門的算法設置為優先或默認算法[8]。
地震預警信息涉及國家安全和人民群眾的生命財產安全,須選擇使用國產密碼技術進行信息保護。這是因為,國產密碼技術是我國自主可控的密碼技術,且經過國家密碼主管部門認證。根據2020年1月1日實施的《密碼法》,要求使用商用密碼對我國關鍵基礎設施進行保護。因此,地震預警服務系統采用國產商用密碼進行信息保護,通過數字簽名及驗簽來實現(圖1)。

圖1 地震預警信息進行數字簽名和驗簽原理Fig.1 Principle of digital signature and signature verification for EEW information
數字簽名是由信息發送者才能產生的別人無法偽造的一段數字串,作為信息真實性的一個有效證明,通過使用公鑰密碼技術實現,用于鑒別數字信息的真實性和完整性。實現方式為:在信息系統部署簽名驗簽服務器,通過證書認證中心(CA)獲取代表該信息系統真實身份的數字證書,并配置在簽名驗簽服務器中[9]。在信息系統發送信息時,調用簽名驗簽服務器數字簽名服務,實現對所發送信息的數字簽名。接收端在接收信息后對數字簽名進行驗證,通過即表示信息確實來自于可信的信息系統,且在傳輸過程中未被非法篡改,從而有效保障所傳輸信息的真實性、完整性。
基于數字證書傳統的身份鑒別實現方式為:向終端設備發放內置數字證書的智能密碼鑰匙,智能密碼鑰匙作為搭載數字證書的載體,配合服務端密碼應用系統,實現基于數字證書的身份鑒別。采用基于SM2算法[10]的密鑰拆分技術無需配置智能密碼鑰匙,且滿足國家密碼應用技術要求,從而規避普通文件證書的安全隱患。
地震預警服務系統是地震預警系統的重要組成部分,是地震行業部門發布地震預警信息的出口。地震預警系統由地震預警監測臺網(1)地震預警系統分為臺站觀測系統、數據處理系統、通信系統、技術保障系統和預警服務系統等5部分,為討論方便,將前4部分統籌為地震監測臺網,本文側重于討論地震預警服務系統與預警終端安全問題。、地震預警服務系統(平臺)、地震預警終端組成[11-12](圖2),其中地震預警監測臺網包括臺站觀測系統(各類觀測臺站)、數據處理系統等。觀測系統將所采集的地震動數據實時傳輸至預警專業處理系統,數據處理系統實時處理數據并產出預警信息,地震預警服務系統接收到地震監測臺網產出的預警信息后進行解析、預處理等操作,根據發布規則,向下游地震預警終端進行信息發布。地震預警終端接收到地震預警信息后,計算并估計本地地震烈度和到時等信息,基于響應規則,向公眾和各類控制系統進行地震預警信息的聲光電警報展示,促使公眾和各類控制系統及時對地震預警信息進行響應。

圖2 地震預警系統結構示意Fig.2 Structure of EEW system
在地震預警服務系統中,當前面臨的主要安全威脅是惡意攻擊者對地震預警信息進行偽造或篡改,破壞其來源的真實性和內容的完整性。上述攻擊主要發生在互聯網側,對專線網絡威脅較小,故文中所提出的地震預警服務系統防篡改框架重點考慮在互聯網側進行安全增強改造,暫不考慮專線側改造,即不考慮預警專業處理系統與地震預警信息發布平臺之間的專線連接安全問題。
由于地震預警服務系統中2個核心操作分別是:地震預警終端與地震預警信息發布平臺建立連接,地震預警信息發布平臺向地震預警終端發送地震預警信息。故本框架重點針對在互聯網側執行的上述2個核心操作,分別提供地震預警終端可信接入能力以及地震預警信息簽名驗簽能力。地震預警服務系統防篡改框架示意見圖3。

圖3 地震預警服務系統防篡改框架示意Fig.3 Tamper-proof framework of EEW information service system
目前,地震預警終端與地震預警信息發布平臺之間采用“用戶名-口令”的單因素身份鑒別方式進行接入鑒別,存在非授權接入等安全風險,特別是面向公眾服務,地震預警終端主要部署在互聯網,非法的預警終端接入會造成業務運行等的一系列安全隱患。鑒于國產商用密碼應用的推進,以及GB/T 39786—2021年《信息安全技術 信息系統密碼應用基本要求》[13]的正式實施,本框架采用在地震預警信息發布平臺部署協同簽名服務器、簽名驗簽服務器,引入CA服務的方式,針對地震預警終端,采用基于數字證書的身份鑒別實現方式,僅需在地震預警終端部署具有協同簽名能力的SDK,使用用戶身份+密鑰機制替代“用戶名-口令”方式,增強了用戶身份識別和終端登錄預警發布系統的安全性。
采用在地震預警信息發布平臺部署簽名驗簽服務器,在地震預警終端部署具有驗簽能力的SDK,本框架即可實現對地震預警信息的數字簽名和驗簽操作。通過功能整合,將在地震預警終端部署的SDK合并為一個具有協同簽名和驗簽能力的SDK,以降低本框架的部署成本和復雜度。
地震預警終端可信接入地震預警信息發布平臺分為地震預警終端初始化和地震預警終端身份鑒別2個步驟。其中,地震預警終端初始化流程見圖4,地震預警終端身份鑒別流程見圖5。

圖4 地震預警終端初始化流程Fig.4 Initialization process of EEW terminal

圖5 地震預警終端身份鑒別流程Fig.5 Identification process of EEW terminal
(1) 地震預警終端初始化流程具體步驟如下:①地震預警終端與協同簽名服務器協同生成簽名密鑰;②地震預警終端將激活終端證書的請求發送至地震預警信息發布平臺;③地震預警信息發布平臺核驗所接收的地震預警終端信息,并將激活終端證書的請求轉發至CA中心;④CA中心根據該請求,簽發地震預警終端證書,并將該證書發送至地震預警信息平臺;⑤地震預警信息發布平臺將地震預警終端證書發送至地震預警終端,完成初始化(即證書簽發)過程,證書私鑰由終端私鑰因子和服務端私鑰因子共同構成,2個密鑰因子分別在終端和服務端各自獨立生成,各自安全存儲。
(2) 地震預警終端身份鑒別流程具體步驟如下:①地震預警終端與協同簽名服務器進行協同簽名,生成身份鑒別數據;地震預警終端將鑒別請求發送給地震預警信息發布平臺;②地震預警信息發布平臺將驗證地震預警終端證書的請求發送給CA中心;③CA中心對地震預警終端證書進行驗證,并將驗證結果發送給地震預警信息發布平臺;④若地震預警終端證書驗證通過,則地震預警信息發布平臺將驗證地震預警終端簽名的請求發送給簽名驗簽服務器;⑤簽名驗簽服務器對地震預警終端簽名進行驗證,并將驗證結果發送給地震預警信息發布平臺;⑥若地震預警終端簽名驗證通過,則地震預警信息發布平臺將鑒別結果發送給地震預警終端;⑦地震預警終端通過身份鑒別,成功接入地震預警信息發布平臺。
地震預警信息簽名驗簽流程見圖6。
地震預警信息簽名驗簽流程具體步驟如下:①地震預警終端接入地震預警信息發布平臺;②地震預警信息發布平臺生成地震預警信息;③地震預警信息發布平臺調用簽名驗簽服務器,對地震預警信息進行數字簽名;④地震預警信息發布平臺將地震預警終端信息推送至地震預警終端;⑤地震預警終端接收地震預警信息;⑥地震預警終端對地震預警信息中的數字簽名進行驗證;⑦如數字簽名驗證通過,地震預警終端將根據地震預警信息,對公眾和各類控制系統進行聲光電警報展示。

圖6 地震預警信息簽名驗簽流程Fig.6 Signature and signature verification process of EEW information
由于地震預警信息的高時效性特點,在基于本框架對地震預警服務系統進行安全增強改造時需著重考慮對新引入密碼操作的優化,以確保由此引發的時間開銷足夠小,避免因延時過大不可用。在本框架中,所引入的與密碼技術相關的操作集中于地震預警終端可信接入流程、地震預警信息簽名和驗簽流程。鑒于地震預警終端可信接入流程的發生并不頻繁,且與地震預警信息發布的關聯性較小,因此在防篡改方案中地震預警信息簽名和驗簽流程成為其關鍵環節,需要對該環節進行性能測試。
與原地震預警信息發布流程相比,地震預警信息簽名和驗簽流程額外增加1次簽名操作和1次驗簽操作,即地震預警信息發布平臺調用簽名驗簽服務器對地震預警信息進行簽名,地震預警終端對地震預警信息進行驗簽。此外,地震預警服務系統所在網絡架構和網絡環境均保持不變,因此分別對地震預警信息簽名操作和地震預警信息驗簽操作進行測試。測試環境的網絡部署見圖7。
(1) 簽名驗簽服務器對地震預警信息簽名的性能測試。地震預警信息的簽名操作由專用簽名驗簽服務器完成,簽名驗簽服務器使用SM2算法執行簽名,可根據簽名驗簽服務器標稱的性能指標確定信息的平均簽名速度。
對于國家級地震預警信息發布平臺,簽名驗簽服務器執行簽名速率要求不低于10 000次/s,即執行單次簽名操作的平均時間小于0.1 ms;對于省市級地震預警信息發布平臺,簽名驗簽服務器執行簽名速率要求不低于1 000次/s,即執行單次簽名操作的平均時間小于1 ms。
(2) 地震預警終端對地震預警信息驗簽的性能測試。目前,地震預警服務系統使用Android平臺和單片機平臺終端進行地震預警,對2種平臺終端驗簽各進行10次性能測試。在測試過程中,模擬向各平臺終端發送多條地震預警信息并請求驗簽,統計執行多條地震預警信息驗簽的總響應時間以及對1條地震預警信息驗簽的平均響應時間、最小響應時間、最大響應時間、驗簽失敗數目。

圖7 地震預警信息簽名驗簽測試環境Fig.7 Test environment of EEW signature and signature verification
Android平臺地震預警終端采用帝嘉科技桌面預警管理終端(型號X9R)(2)設備操作系統版本:Android 7.1.2,內核版本:Linux 4.4.112;硬件配置為:CPU:ARMv7l 4核,內存:2 GB,存儲:32 GB。,具備多線程并發處理能力,可同時接收不同平臺發送的地震預警信息,單片機平臺地震預警終端不具備并行處理能力,只能接收1個平臺發送的地震預警信息。
對于Android平臺地震預警終端進行了10輪測試,每次開啟5個線程同時執行驗簽操作,每個線程每輪測試執行1 000次驗簽請求,單次測試的總驗簽請求數量為5 000次。測試結果列于表1。

表1 Android平臺驗簽性能測試
單片機平臺地震預警終端(3)單片機平臺地震預警終端配置為:型號:STM32F407,CPU:ARM 32-bit Cortex-M4,SRAM:192 kB,閃存:1 MB。進行了10輪測試,每輪測試執行100次驗簽請求,分別統計驗簽總響應時間、驗簽平均響應時間、最小響應時間、最大響應時間、驗簽失敗數目。測試結果列于表2。

表2 單片機平臺驗簽性能測試
(3) 性能測試結果分析。通過上述性能測試可以發現,Android平臺地震預警終端通過開啟5個線程執行5 000次驗簽請求(即單線程執行1 000次驗簽請求)的平均總響應時間為98.5 ms,單次驗簽請求的平均響應時間為93.9 ms、平均最大響應時間為281.9 ms、最大響應時間極值為429 ms,無驗簽失敗情況發生。
單片機平臺地震預警終端的大部分單線程驗簽性能指標低于Android平臺,即執行100次驗簽請求的平均總響應時間為12.5 ms,單次驗簽請求的平均響應時間為128.5 ms。但單片機平臺在單次驗簽請求的平均最大響應時間和最大響應時間極值2個指標上優于Android平臺,其中單次驗簽請求的平均最大響應時間為187.6 ms,最大響應時間極值為309 ms,這是因為單片機為串行處理,不存在多線程切換時的中斷延遲。此外,單片機平臺地震預警終端無驗簽失敗情況發生。
在本方案中引入地震預警信息簽名和驗簽流程,對地震預警服務系統性能影響的測試結果列于表3。由表3可見,平臺地震預警終端和地震預警信息發布平臺隨意組合,在正常情況下,簽名操作時間開銷的數量級均為1 ms,而驗簽操作時間開銷的數量級均為100 ms,簽名驗簽服務器執行簽名操作的時間開銷約為地震預警終端執行驗簽操作的1%,且執行一次簽名驗簽操作的平均響應時間低于130 ms(即0.13 s),對地震預警服務系統的性能影響較小。即使在極端情況下,執行一次簽名驗簽操作的最大響應時間也低于450 ms(即0.45 s),不會對地震預警業務的正常開展構成大的影響。

表3 地震預警信息簽名和驗簽性能測試
由于單片機平臺地震預警終端性能較低,產生的額外時間開銷較大,可考慮對其展開性能優化。一方面,可將該類終端執行的驗簽操作代碼改為匯編代碼,通過提升代碼執行效率的方式減小時間開銷;另一方面,對驗簽操作中執行的SM2算法進行基于算法層面的計算優化,包括采用雅克比加重射影坐標系減少求模逆的次數、采用巴雷特約減方法提高求模的運算效率以及對基礎乘法運算采用匯編方式提升計算效率等,進一步減小時間開銷。通過優化,單片機平臺地震預警終端驗簽性能約提升30%,有效減小了時間開銷,并使得其單次驗簽性能達到與Android平臺地震預警終端相當的水平。
在基于本框架對地震預警服務系統進行安全增強改造時,由于地震預警終端不會在同一時刻統一完成改造,故實際改造是一個漸進式過程,即在改造過程中,要求已改造和未改造的地震預警終端同時接入系統。為保證地震預警終端的可用性,基于本框架的改造方案需支持漸進式改造,能夠兼容未改造的地震預警終端。此外,為了降低兼容性優化的復雜度,將按照地震預警信息發布平臺、地震預警終端的順序進行改造。在此基礎上,對地震預警終端初始化、終端身份鑒別、地震預警信息簽名驗簽進行未改造地震預警終端的兼容性優化。
(1) 地震預警終端初始化過程。在地震預警終端與地震預警信息發布平臺的通信協議中保留“用戶名”和“口令”字段,在激活請求中增加“證書請求”字段,并放置簽名密鑰對等信息,在響應中增加“證書”字段,并放置證書內容。
(2) 地震預警終端身份鑒別過程。在地震預警終端與地震預警信息發布平臺的通信協議中增加“簽名信息”字段;在地震預警信息發布平臺處配置為支持“用戶名+口令”和“數字證書”的雙身份鑒別模式,對于未改造的地震預警終端只需通過“用戶名+口令”的身份鑒別,就返回通過鑒別的信息,不再向CA中心發送請求和調用簽名驗簽服務器。
(3) 地震預警信息簽名驗簽過程。在地震預警終端與地震預警信息發布平臺的通信協議中增加“簽名信息”字段,未改造終端自動忽略該字段,而已改造終端則進行驗簽操作。
經上述漸進式改造,本方案向后兼容性良好,即地震預警信息發布平臺完成改造后,已改造和未改造的地震預警終端均可正常接入地震預警服務系統,執行相應功能。
針對地震預警信息被惡意攻擊者進行偽造或篡改的安全威脅,提出基于國產密碼的地震預警服務系統防篡改框架,采用國產密碼技術增強系統安全,并能夠向后兼容未改造的地震預警終端。在此基礎上,對所提出框架中使用的簽名和驗簽操作造成的額外時間開銷進行測試和分析,并進行合理優化,在該框架下,額外時間開銷小,兼顧了地震預警信息的安全性和高時效性,可作為地震預警服務系統安全提升的技術解決方案,對地震預警服務系統的安全強化具有重要意義。