季海濤,張芳敏,黃柳勝,孫孟玉,黃炳潔
(1.上海電力大學(xué)電子與信息工程學(xué)院,上海 200000;2.江蘇林洋能源股份有限公司,江蘇 啟東 226200)
智能電表作為電網(wǎng)中的終端設(shè)備,將信息流、業(yè)務(wù)流、電力流高度融合一體化,實(shí)現(xiàn)分布式計(jì)量、達(dá)到客戶(hù)與電表終端雙向互動(dòng)服務(wù)。計(jì)量信息涉及用戶(hù)與供電部門(mén)的利益,數(shù)據(jù)安全防護(hù)至關(guān)重要。信息安全解決方案在AMI 聯(lián)網(wǎng)抄表系統(tǒng)及智能電網(wǎng)基礎(chǔ)設(shè)施中得以廣泛部署[1-2],從各國(guó)的智能電網(wǎng)系統(tǒng)環(huán)境結(jié)合電表通信的規(guī)劃和應(yīng)用分析,各批次智能電表因存儲(chǔ)空間及CPU 等資源的局限性,更好地實(shí)現(xiàn)電表安全也因此受到限制。當(dāng)下主流的安全方案也漸漸成為智能電表的需求。文獻(xiàn)[3]研究了一種新的基于分布式區(qū)塊鏈的保護(hù)方案,以增強(qiáng)電表抵御網(wǎng)絡(luò)攻擊的能力。IPsec 安全協(xié)議必須處理可靠性和分片的問(wèn)題[4]。TLS 協(xié)議是應(yīng)用最為廣泛的安全通信協(xié)議,新一代TLS 協(xié)議1.3 版本的安全性和高速性得到很大提高[5-7]。TLS1.3 協(xié)議采用高強(qiáng)度的加密及認(rèn)證機(jī)制實(shí)現(xiàn)了信息的安全防護(hù)。
由于主流安全協(xié)議的復(fù)雜性和處理開(kāi)銷(xiāo),無(wú)法更好地應(yīng)用于智能電表。該文從電力系統(tǒng)基礎(chǔ)設(shè)施、電表所用芯片性能、成本及通信安全強(qiáng)度等方面進(jìn)行綜合考慮,在傳統(tǒng)智能電表通信網(wǎng)絡(luò)協(xié)議棧中嵌入TLS1.3 協(xié)議,設(shè)計(jì)了一套TLS1.3 協(xié)議在電表上的應(yīng)用方案,實(shí)現(xiàn)電表的高強(qiáng)度安全通信,使電表更好地融入智能電網(wǎng)。
當(dāng)前智能電表愈加智能化和網(wǎng)絡(luò)化,多數(shù)已知的安全漏洞都與通信媒介及協(xié)議相關(guān)[8-9]。電表作為電力信息采集的計(jì)量設(shè)備,一般采用RS485串口通信協(xié)議或其他方式連接終端設(shè)備,基于電表在智能電網(wǎng)中的實(shí)際應(yīng)用,從以下方面分析電表安全協(xié)議需求。
基于電表硬件性能的限制,在電表與主站系統(tǒng)的信息處理方面存在一定的不足,其業(yè)務(wù)處理能力受制于電表采用的微控制單元MCU 的性能。TLS1.3協(xié)議涉及密鑰協(xié)商、數(shù)字簽名、簽名驗(yàn)證、公鑰生成等算法[10-11]。在電表上采用TLS1.3 協(xié)議,需要考慮電表運(yùn)行安全協(xié)議的速度,即電表對(duì)主站系統(tǒng)的響應(yīng)時(shí)間。電表需要按規(guī)定時(shí)間響應(yīng)主站系統(tǒng)的消息請(qǐng)求,當(dāng)電表選擇運(yùn)行不同的密碼套件、橢圓曲線類(lèi)型或者握手子消息時(shí),電表耗時(shí)差距很大,若電表MCU 主頻較低時(shí),TLS1.3 握手耗時(shí)長(zhǎng),可能出現(xiàn)超時(shí)處理,造成網(wǎng)絡(luò)連接失敗等。TLS1.3 協(xié)議在智能電表中的處理流程如圖1 所示。
圖1 TLS1.3協(xié)議在智能電表中的處理流程
安全強(qiáng)度高的加密算法對(duì)電表MCU 的計(jì)算性能要求高。若MCU 主頻較低,電表使用復(fù)雜的安全算法,雖然安全強(qiáng)度更高,但加密運(yùn)算時(shí)間過(guò)長(zhǎng),無(wú)法及時(shí)應(yīng)答主站,將會(huì)導(dǎo)致網(wǎng)絡(luò)癱瘓等后果。方案基于電表MCU 性能,選擇合適的TLS1.3 加密套件,結(jié)合TLS1.3 協(xié)議子消息的設(shè)計(jì),使電表在保證傳輸安全的同時(shí),及時(shí)響應(yīng)主站請(qǐng)求。TLS1.3 協(xié)議根據(jù)已發(fā)生的攻擊行為,刪除了一些不安全的加密算法[12-14]。支持的加密套件,每個(gè)都有明顯的優(yōu)勢(shì),智能電表可根據(jù)算法的安全強(qiáng)度和硬件資源進(jìn)行選擇。方案選擇密碼套件的依據(jù)如下:
1)AES_128_CCM_8_SHA256 密碼套件。CCM模式的標(biāo)準(zhǔn)認(rèn)證標(biāo)簽為16 個(gè)字節(jié),CCM_8 模式的密碼套件將標(biāo)簽減少到8 個(gè)字節(jié),從而節(jié)省了8 個(gè)字節(jié)的開(kāi)銷(xiāo),但代價(jià)是更高的偽造概率。
2)若電表支持加密和認(rèn)證硬件加速,優(yōu)先選擇AES_128_GCM_SHA256 加密套件,安全強(qiáng)度高且運(yùn)算速度快。若電表只支持AES 硬件加速,優(yōu)先選擇TLS1.3 加密套件AES_128_CCM_SHA256,CCM 模式?jīng)]有GCM 模式的輸入大小限制,比GCM模式更容易實(shí)現(xiàn)。
3)智能電表若沒(méi)有硬件加速資源,加密和認(rèn)證算法采用純軟件來(lái)實(shí)現(xiàn),AEC_GCM/CCM 算法運(yùn)算速度慢,優(yōu)先選擇CHACHA20_POLY1305_SHA256套件。
4)若電表采用性能較高的MCU,追求更高的安全強(qiáng)度,可以選擇TLS1.3 協(xié)議加密套件AES_256_GCM_SHA384,對(duì)于Grover 算法攻擊有更高的抵抗力,可以使電表通信更加安全,但提高了成本,且對(duì)電表要求較高。
TLS1.3 標(biāo)準(zhǔn)協(xié)議較為復(fù)雜,由握手協(xié)議和記錄協(xié)議組成[15-16]。握手協(xié)議旨在通過(guò)認(rèn)證密鑰交換機(jī)制來(lái)協(xié)商密鑰,負(fù)責(zé)電表與集中器協(xié)商會(huì)話狀態(tài)的密鑰參數(shù)。為了提高該電表安全方案的拓展性、復(fù)用性和靈活性,著重設(shè)計(jì)了TLS1.3 的握手協(xié)議。握手協(xié)議由眾多子消息組成,可根據(jù)實(shí)際應(yīng)用進(jìn)行裁剪。記錄協(xié)議負(fù)責(zé)加解密及封裝數(shù)據(jù),可依據(jù)協(xié)議標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì),此處不做贅述。該方案的電表握手過(guò)程如圖2 所示。
圖2 電表握手流程
握手步驟可總結(jié)如下:
1)為與終端設(shè)備GateWay 密鑰進(jìn)行協(xié)商,智能電表解析了ClientHello 數(shù)據(jù)幀。ClientHello 數(shù)據(jù)幀中擴(kuò)展extension 還會(huì)帶有supported_groups 擴(kuò)展,這個(gè)擴(kuò)展表明了GateWay 支持的用于密鑰交換的命名組,按照優(yōu)先級(jí)從高到低,電表按照支持組件supported_groups 中得到的匹配項(xiàng),匹配共享密鑰key_share擴(kuò)展中的類(lèi)型。電表選擇GateWay支持的橢圓曲線類(lèi)型,使用橢圓曲線的基點(diǎn)計(jì)算電表的公鑰。
2)電表提取ClientHello 中的key_share 擴(kuò)展對(duì)應(yīng)的公鑰,計(jì)算主秘鑰放在ServerHello 的key_share 擴(kuò)展中,密鑰協(xié)商計(jì)算完成后,電表以ServerHello 作為響應(yīng)數(shù)據(jù)幀,向GateWay 傳輸電表協(xié)商成功的相關(guān)信息。該方案禁止電表重協(xié)商,若電表完成協(xié)商后又收到ClientHello 數(shù)據(jù)幀,將立即告警并斷開(kāi)連接。電表TLS1.3 握手協(xié)議中,ServerHello 需要攜帶supproted_versions 擴(kuò)展,且包含自己supproted_versions 中選擇的TLS 協(xié)議版本號(hào)。電表不作降級(jí)處理,GateWay 請(qǐng)求TLS1.3 協(xié)議連接,則電表以TLS1.3 協(xié)議響應(yīng),否則將斷開(kāi)連接。
3)在該方案中,電表從ClientHello 數(shù)據(jù)幀中獲得密鑰協(xié)商的相關(guān)信息,結(jié)合電表參數(shù),完成橢圓曲線密鑰協(xié)商,之后將使用握手層密鑰加密握手信息。為保證電表的擴(kuò)展信息安全,可將一些重要的協(xié)商參數(shù)放在加密擴(kuò)展EncrypytedExtensions 幀中進(jìn)行傳輸,但影響握手速度,增加了系統(tǒng)開(kāi)銷(xiāo),因此可設(shè)置為空。
4)方案采用證書(shū)進(jìn)行雙向認(rèn)證,為了加快身份認(rèn)證,當(dāng)電表向GateWay 發(fā)送證書(shū)請(qǐng)求消息時(shí),同時(shí)從EEPROM 讀取自己的證書(shū)并發(fā)送。該方式避免GateWay 向電表發(fā)送證書(shū)請(qǐng)求,減少設(shè)備認(rèn)證耗時(shí)。
5)為防止上述信息被篡改,電表對(duì)之前的握手?jǐn)?shù)據(jù)進(jìn)行計(jì)算簽名,并通過(guò)Certificate Verify 數(shù)據(jù)幀發(fā)送。該消息必須在Certificate 消息之后、Finished消息之前發(fā)送。
6)電表發(fā)送Finished 數(shù)據(jù)幀作為電表身份認(rèn)證階段的最后一條信息。若GateWay 通過(guò)驗(yàn)證電表的Certificate Verify 數(shù)據(jù)幀和Finished 數(shù)據(jù)幀,將發(fā)送應(yīng)用層數(shù)據(jù)。
7)若終端驗(yàn)證電表證書(shū)成功,將響應(yīng)電表的請(qǐng)求并發(fā)送證書(shū)。電表驗(yàn)證證書(shū)和Finished 數(shù)據(jù)幀成功后,握手完成。智能電表導(dǎo)出記錄層所需的密鑰材料,以交換通過(guò)認(rèn)證加密保護(hù)的應(yīng)用層數(shù)據(jù)。
GateWay基于主站系統(tǒng)組網(wǎng)要求,發(fā)送TLS1.3協(xié)議握手請(qǐng)求,為了與電表協(xié)商握手信息,ClientHello數(shù)據(jù)幀將攜帶大量的擴(kuò)展信息。智能電表收到ClientHello 消息后,按照次序逐個(gè)解析擴(kuò)展信息,依據(jù)電表的需求,處理并響應(yīng)相關(guān)擴(kuò)展,其余擴(kuò)展為了降低電表開(kāi)銷(xiāo)而不作處理。
基于該方案設(shè)計(jì)的TLS1.3 握手流程,電表須響應(yīng)的擴(kuò)展類(lèi)型信息如表1 所示,選擇響應(yīng)的擴(kuò)展信息并作出響應(yīng)。
表1 電表擴(kuò)展信息類(lèi)型
基于PKI 體系的證書(shū)認(rèn)證方式無(wú)法適用于電力基礎(chǔ)設(shè)施薄弱的地區(qū),如公司某海外項(xiàng)目。為了使電表完成TLS1.3 協(xié)議中的設(shè)備認(rèn)證,在一定程度上簡(jiǎn)化了電表認(rèn)證實(shí)現(xiàn)的復(fù)雜度。電表建立通信時(shí),執(zhí)行證書(shū)初始化,通過(guò)密鑰協(xié)商生成加密密鑰,主站系統(tǒng)向電表傳輸電表和GateWay 的兩張證書(shū)及其對(duì)應(yīng)私鑰,電表解密成功并寫(xiě)入EEPROM。在證書(shū)預(yù)裝過(guò)程中使用通信開(kāi)銷(xiāo)較低的對(duì)稱(chēng)加密和哈希函數(shù),證書(shū)初始化完成后,電表與GateWay 進(jìn)行TLS1.3 連接。
為降低系統(tǒng)開(kāi)銷(xiāo),電表在TLS1.3 握手雙向認(rèn)證時(shí),不完全解析GateWay 發(fā)送的證書(shū),只與預(yù)裝的GateWay 證書(shū)作比較,若一致則認(rèn)證成功。
該方案已用于公司項(xiàng)目,電表所用MCU 為FM33A048,主頻最高達(dá)40 MHz,RAM 容量為32 kB,電表應(yīng)用層為SML 協(xié)議,自動(dòng)抄表系統(tǒng)底層通信協(xié)議為鏈路層。電表所用的MCU 性能較低。安全方案應(yīng)用于項(xiàng)目的關(guān)鍵信息如下:
1)在保證安全強(qiáng)度的前提下,電表選擇支持TLS1.3 協(xié)議AES_128_GCM_SHA256 加密套件和CHACHA20_POLY1305_SHA256套件,為減少電表與GateWay建立TLS1.3握手的耗時(shí),電表執(zhí)行TLS1.3密鑰協(xié)商,優(yōu)先選擇CHACHA20_POLY1305_SHA256加密套件。
2)智能電表支持的曲線類(lèi)型:secp256r1、secp384r1、BrainpoolP384r1。可根據(jù)客戶(hù)方的電網(wǎng)需求進(jìn)行選擇。
3)電表對(duì)收到的證書(shū)未全面解析,只將其中的公鑰取出,未作抄表客戶(hù)端證書(shū)驗(yàn)證,只與證書(shū)初始化中傳遞過(guò)來(lái)的SGW 證書(shū)作比較。
4)智能電表的數(shù)據(jù)流采用內(nèi)存復(fù)用方案,即采用應(yīng)用層SML、TLS 層、物理層HDLC 三層數(shù)據(jù)流共用一個(gè)空間的形式來(lái)減少內(nèi)存空間的使用,電表應(yīng)用層將數(shù)據(jù)放入數(shù)據(jù)流時(shí),根據(jù)TLS1.3 握手協(xié)商出的安全套件預(yù)留出不同的TLS1.3 頭尾空間,以便TLS 層進(jìn)行應(yīng)用層數(shù)據(jù)加密。
該電表安全方案采用純軟件來(lái)實(shí)現(xiàn),TLS1.3協(xié)議中的ECC 算法運(yùn)算量大、耗時(shí)較長(zhǎng),算法中使用不同類(lèi)型的橢圓曲線,通過(guò)涉及的Compute Shared Secret、Key Generation、Public Key Validation、Signature Generation 和Signature Verification 算法運(yùn)行過(guò)程耗時(shí)來(lái)體現(xiàn),為了使電表及時(shí)響應(yīng)和減少所需空間,通過(guò)調(diào)整window size、編譯器優(yōu)化等級(jí)和ECC 算法單次執(zhí)行比特位stepNum 的大小,測(cè)試電表的最佳運(yùn)行狀態(tài)。
算法性能與密鑰長(zhǎng)度關(guān)系很大,由表2 中的信息分析可得,簽名驗(yàn)證算法在電表運(yùn)行中耗時(shí)最長(zhǎng),使用橢圓曲線BrainpoolP384r1 簽名驗(yàn)證平均耗時(shí)約20 s。根據(jù)主站系統(tǒng)的響應(yīng)時(shí)間要求選擇ECC 曲線類(lèi)型。
表2 windows size=2電表耗時(shí)
為了使電表運(yùn)行在最佳狀態(tài),須確定ECC算法中滑動(dòng)窗口的大小,以TLS1.3 協(xié)議Signature Generation算法為例進(jìn)行說(shuō)明,簽名使用的橢圓曲線類(lèi)型為BrainpoolP384r1,其他測(cè)試環(huán)境變量不變。由表2 和表3 的數(shù)據(jù)進(jìn)行分析,相比電表在windows size=4,單次執(zhí)行k的位數(shù)stepNum=10 的運(yùn)行環(huán)境下,當(dāng)選擇的windows size=2 時(shí),單次運(yùn)行算法平均耗時(shí)增加約0.89 s,TLS1.3 總體握手協(xié)議運(yùn)行時(shí)間增加約為10 s,但優(yōu)勢(shì)是空間節(jié)省了0.87 kB。
表3 windows size=4電表耗時(shí)
綜上所述,電表密鑰協(xié)商、簽名生成及驗(yàn)證使用NIST P-256(secp256r1)、NIST P-384 (secp384r1)和BrainpoolP384r1 三條曲線進(jìn)行測(cè)試。在本公司的項(xiàng)目中,滑動(dòng)窗口大小設(shè)置為4 bit。編譯器IAR 開(kāi)啟高級(jí)優(yōu)化,經(jīng)過(guò)批量測(cè)試,程序運(yùn)行穩(wěn)定;ECC 算法標(biāo)量乘單次執(zhí)行比特位StepNum 為10 bit,執(zhí)行結(jié)束退出ECC 運(yùn)算,并保存當(dāng)前運(yùn)算數(shù)據(jù),在其他任務(wù)完成后再次進(jìn)入退出時(shí)的斷點(diǎn)繼續(xù)進(jìn)行運(yùn)算,該數(shù)值依據(jù)MCU 的主頻進(jìn)行設(shè)置,若主頻較高,可以增大單次執(zhí)行比特位。經(jīng)過(guò)長(zhǎng)期大量測(cè)試,電表運(yùn)行穩(wěn)定。
在電網(wǎng)的建設(shè)中,接入大量性能各異的智能電表,隨著電力公司對(duì)電表通信安全的要求不斷提高,某些海外地區(qū)要求電表升級(jí)支持TLS1.3 協(xié)議,以對(duì)抗網(wǎng)絡(luò)攻擊。由于TLS1.3 協(xié)議龐大復(fù)雜,一些智能電表因節(jié)省成本而采用低端且無(wú)硬件加密的芯片,處理速度及硬件資源成為實(shí)施TLS1.3 協(xié)議的瓶頸。因此,該文對(duì)TLS1.3 協(xié)議進(jìn)行二次開(kāi)發(fā),在安全強(qiáng)度、公私鑰尺寸和計(jì)算速度等方面作出平衡,在電表上以純軟件實(shí)現(xiàn)TLS1.3 協(xié)議,設(shè)計(jì)TLS1.3 握手協(xié)議和認(rèn)證機(jī)制以兼容現(xiàn)有的電力基礎(chǔ)設(shè)施。該方案已用于德國(guó)智能電表,結(jié)果表明其滿足實(shí)際安全需求,電表接入當(dāng)?shù)刂悄茈娋W(wǎng)安全、穩(wěn)定。