陳康 陸君一 沈堯 胡文華 / 上海市計量測試技術研究院
隨著物聯網技術的發(fā)展,生產企業(yè)對工作用計量器具進行升級改造。新產品為了實現智能化、網聯化,在原有計量功能基礎上,增加嵌入式智能系統(tǒng)以及網絡通信模塊。以列入《實施強制管理的計量器具目錄》的出租汽車計價器為例,生產企業(yè)研發(fā)的新型網聯計價器更好地融合計價計時、駕駛員管理、車輛運營管理等各項功能,適應行業(yè)發(fā)展需求。相較于傳統(tǒng)計價器通過調整窗調整器具計量參數,新型網聯計價器可通過通信端口利用移動網絡調整計量相關參數。根據JJG 517-2016 《出租汽車計價器》檢定規(guī)程要求[1],檢定合格的計價器須在調整窗和殼體位置加裝物理封印,防止未經授權調整參數。然而網聯計價器可遠程調整參數,這給計量器具法制監(jiān)管帶來挑戰(zhàn)。在出租汽車計價器國際建議中[2],計價器軟件保護要求是通過物理封印或者軟件加密方式,防止內部軟件和參數被移除、篡改或破壞。所以,探討在計價器強檢中應用數據保護技術有確實的實際意義和應用價值。
現階段典型的數據保護加密算法有數據加密標準(Data Encryption Standard,DES)、高級加密標準(Advanced Encryption Standard,AES)的對稱加密算法和RSA(Rivest Shamir Adleman)的非對稱加密算法[3],其均為國外商用密碼算法,存在很大的隱患[4]。自2012年以來,國家密碼管理局以《中華人民共和國密碼行業(yè)標準》的方式,陸續(xù)公布了SM2/SM3/SM4等密碼算法標準及應用規(guī)范。其中SM2為基于橢圓曲線密碼的公鑰密碼算法標準,包含數字簽名、密鑰交換和公鑰加密,用于替換RSA等國際算法,SM3為密碼雜湊算法,適用于數字簽名和驗證等,用于替代MD5信息摘要(Message-Digest)等國際算法;SM4為分組密碼算法,用于替代DES/AES等國際算法。在計價器強檢的數據加密驗證設計中使用國家商用密碼(簡稱國密)算法,可增強計量檢定系統(tǒng)的安全性、自主性。
表1 國密算法與規(guī)范
與傳統(tǒng)的物理封印作用類似,數據保護封印的作用為鎖定計量程序和參數不被外界任意篡改,并對計價器終端通信接口實施監(jiān)管。所有計價器終端在處理計價計時工作以及調整參數時,應只允許與授權的中心管理服務器終端通信。中心管理服務器具備調整計價器參數和發(fā)送封印數據包的權限。計價器終端應接收受保護的數據包,并驗證數據包完整、無篡改。然后,在計價器加載運行程序時解密數據包,加載計量參數。因此,需要從中心管理服務器和計價器如何相互驗證數據包和保護數據包兩方面進行設計。
計價器首次安裝在運營車輛上后,排除修理更換等原因,應始終跟隨運營車輛直至報廢。目前,上海主要出租汽車運營公司的運營車輛車牌號大部分不會隨意變更,運營公司通過車牌號管理車輛日常工作。所以車牌號可作為計價器封印數據的特征值。此外,計價器本身型號以及出廠編號也是區(qū)別不同終端的主要特征值。這些特征值可作為對稱加密算法的密鑰生成根數據,從而使每臺計價器終端都擁有唯一密鑰,降低使用統(tǒng)一密鑰時的泄露風險。在計價器檢定后,檢定日期、檢定使用設備編號、脈沖K值、合格證編號等可作為檢定用的數據特征值。由此計價器檢定需要的封印數據內容和格式(#后為注釋)為:
PlateNO:ADC1111 # 車牌號,省略滬
Type:QSJ-AC # 型號
Code:21F1111 # 出廠編號
KValue:1000 # 脈沖K值
Instrument:01 # 檢定使用設備編號
Date:2021-01-01 # 檢定日期
Certificate:210004000000 # 合格證編號
計價器內部程序所需的計費方法、計價模式等參數一般情況下不會經常修改,在周期檢定時不作為檢定項目,所以可與檢定需要的數據區(qū)別處理。這些內部參數經過加密后存儲在計價器終端,未經授權不能篡改。遇到篡改情況,在程序運行解密加載參數時應報錯終止運行。
計價器內部程序數據包在生產以及后續(xù)遠程更新時應保證完整性、一致性,具備內部驗證機制。程序數據包未被授權,篡改后,計價器內部驗證后發(fā)現問題時應暫停使用,并返修。中心管理服務器需要更新程序數據包,向計價器終端下發(fā)加密數據包時,計價器終端應驗證該數據包完整性,避免因通信問題損壞數據包內容,導致計價器更新后出現問題。驗證數據包完整性的程序設計流程如圖1所示。
圖1 中心管理服務器與計價器終端驗證數據包的程序設計流程
國密SM3密碼雜湊算法可以用于驗證計量相關程序數據包完整性、一致性,避免數據包未經授權,篡改或者通信過程中的損壞。該算法可以把計量相關程序數據包的二進制比特串作為輸入數據,經過算法填充、迭代壓縮和輸出選載后,輸出一個固定256比特的雜湊值[5],用于驗證摘要消息。只要更改數據包內容中任一字節(jié),那么輸出的雜湊值就不相同。因此,中心管理服務器向計價器終端發(fā)送加密數據包以及數據包經SM3算法得到的摘要消息A,計價器終端利用SM3算法處理接收到的數據包,得到摘要消息B,驗證摘要消息A和B是否一致,即可判斷數據包是否完整、非篡改或損壞。計價器檢定需要的封印數據需要經常更新,可以分開作為單獨數據包傳輸,中心管理服務器可存儲由當前有效封印數據輸出的摘要消息,不定期地與計價器終端內部封印數據輸出的摘要消息進行一致性驗證,起到日常監(jiān)督管理的作用。
中心管理服務器與各計價器終端傳輸的數據包應使用加密技術保證數據的保密性,防止被截獲讀取后計量程序被破解修改。國密SM4分組密碼算法利用128比特的密鑰對輸入數據包進行加密[6]。加密數據包從中心管理服務器傳輸至計價器終端。計價器終端利用保存在內部的相同密鑰對加密數據包進行解密后,加載運行程序。為了避免密鑰泄露造成對所有終端的影響,中心管理服務器應根據每個計價器終端的不同硬件信息生成獨有的密鑰,并分別保存。每個計價器終端只保存自己的密鑰,即使單獨計價器終端被非法獲取密鑰,也不會影響其他終端。
隨著國家密碼技術規(guī)范的相繼出臺,技術開發(fā)者以國密規(guī)范為基礎發(fā)布各種開發(fā)平臺的密碼模塊。以GmSSL項目為例,由北京大學的密碼學研究組開發(fā)維護,是一個開源的密碼工具箱,支持SM2/SM3/SM4/SM9/ZUC等國密算法,并支持Java、Go、PHP等多語言接口綁定和REST服務接口。新型網聯計價器生產者可基于各自平臺選擇相應的開源包實現計量相關數據包的加密、解密與驗證。
在python平臺上,有許多開發(fā)者發(fā)布國密相關的開源代碼,如gmssl、pysm4,這些項目提供encrypt加密函數、decrypt解密函數等。密鑰生成是保護計價器強檢加密實現的重要技術路線。密鑰需要16字節(jié)數據,其中8字節(jié)數據指定使用隨機數據,另外,8字節(jié)數據可根據計價器安裝的車牌號、型號、出廠編碼挑選生成。該算法設計實現思路可利用車牌號、計價器型號、出廠編號作為密鑰前8字節(jié)的密鑰根,隨機選取8字節(jié)數據并利用隨機函數生成其余8字節(jié)數據,組合兩部分數據作為輸出密鑰。
本文探討了計價器強檢中應用數據驗證技術的可行性,介紹了密碼保護的相關技術規(guī)范,設計了計價器強檢的數據保護要求和方式,并提出用于數據包保護的密鑰生成算法設計思路。研究表明,新型網聯計價器利用國密算法技術可保證內部計量程序與參數的完整性、一致性和保密性,達到強制檢定計量器具要求的監(jiān)督管理目的。