劉剛,許艾,徐延明,李維
(1.北京四方繼保自動化股份有限公司,北京100085;2. 北京四方繼保工程技術有限公司,北京100085)
近兩年,隨著國家對電力關鍵基礎設施安全重視程度越來越高,電網公司相繼提出了自主可控新一代變電站二次系統(tǒng)安全防護措拖,確保變電站二次系統(tǒng)在原有安全防護基礎上進一步安全加固與優(yōu)化。現(xiàn)有或在建的智能變電站絕大多數(shù)基于IEC 61850標準建設,由于變電站內智能設備的廣泛應用以及變電站內的信息大都通過TCP/IP協(xié)議進行網絡傳輸,因此變站內通信系統(tǒng)將面臨著極大的安全風險與隱患[1 - 3]。
國際電工委員會第57技術委員會制定了IEC 62351標準。IEC 62351標準是目前國內外變電站安全防護的重要參考標準,國內眾多學者基于IEC 62351標準提出的安全機制進行了多種嘗試并取得了較好的實踐成果[4 - 7]。
現(xiàn)階段我國的一些重要行業(yè)中的信息系統(tǒng)使用的密碼體系大部分依賴國外,這給行業(yè)應用系統(tǒng)帶來了極大的風險[8 - 11]。因此,大力推進國產密碼算法在各行各業(yè)的應用,實現(xiàn)國產密碼算法逐步取代國際算法已成為業(yè)界的重要共識。基于IEC 62351標準對變電站安全防護的文獻不少,文獻[12]提出基于公鑰加密算法RSA的數(shù)字簽名與認證方案;文獻[13]提出了基于IEC 62351安全機制解決變電站內安全通信問題;文獻[14]基于IEC 62351標準實現(xiàn)了變電站內站控層安全通信領域的互操作驗證等。但上述文獻主要研究基于公匙基礎設施(public key infrastructure,PKI)安全體系內的國際算法與數(shù)字證書在變電站內的安全應用。
本文引入基于SM9[15]標識密碼身份認證機制并結合標識密碼體系,研究基于標識身份的數(shù)字簽名技術在智能變電站的應用,以調度到變電站通信協(xié)議的身份認證及加密機制為基礎,實現(xiàn)標識密碼算法體系在變電站通信中的應用。
國內電力二次系統(tǒng)的安全防護主要依據(jù)發(fā)改委14號令與國家能源局36號文有關規(guī)定[16 - 17]實施,而電力監(jiān)控系統(tǒng)安全防護的安全策略是“安全分區(qū)、網絡專用、橫向隔離、縱向認證”,側重點是邊界安全防護,通過加強邊界防護來抵御病毒、黑客等發(fā)起的惡意破壞和攻擊。由于前期重點考慮了邊界防護并沒有過多考慮通信系統(tǒng)的協(xié)議安全,而近年來隨著信息技術的發(fā)展,針對通信協(xié)議的攻擊也不斷增加,因此本文提出的基于SM9標識密碼算法是實現(xiàn)調度到變電站及變電站內通信協(xié)議安全防護的重要參考方案。
目前,調度主站與變電站遠動機通信數(shù)據(jù)是通過調度與變電站兩側的縱向加密認證裝置來保護,調度與變電站遠動機通信協(xié)議大多采用IEC 104協(xié)議,其實從嚴格意義上講IEC 104不是一種安全的通信協(xié)議,容易被偽造、篡改及重放攻擊。調度到變電站架構如圖1所示。
圖1 調度到變電站架構圖Fig.1 Architecture diagram from dispatching to substation
由圖1可知,在調度主站側的縱向加密認證裝置前接入非法設備就可以偽造、篡改協(xié)議報文,而調度與變電站兩端的縱向加密認證裝置并不能識別協(xié)議的真?zhèn)危虼巳菀自斐勺冸娬臼鹿剩辉谧冸娬径说目v向加密認證裝置后接入非法設備也存在同樣的安全隱患;這就可能導致變電站系統(tǒng)由于不能鑒別發(fā)送方的身份從而發(fā)生惡劣的電網安全事故。
近年來,在調度到變電站安全通信方面有不少的研究,文獻[18]研究了基于SM2密碼體系的傳輸層安全性協(xié)議(transport layer security,TLS)在智能變電站遠動通信中“長連接”與“短連接”相互配合的安全策略機制。采用TLS協(xié)議在傳輸層對數(shù)據(jù)進行了機密性保護,TLS協(xié)議本身比較復雜,維護也比較麻煩,且TLS協(xié)議大多都是基于OpenSSL開源庫實現(xiàn),而近幾年OpenSSL庫多次爆出漏洞,如2014年震驚世界的“心臟出血漏洞”就是OpenSSL的漏洞[19],提供底層安全的算法庫出現(xiàn)安全漏洞,那么它支撐的安全防護系統(tǒng)的安全性也受到極大的安全威脅。
本文基于協(xié)議的安全防護策略采用安全協(xié)議的方式進行數(shù)據(jù)傳輸,使協(xié)議具備身份認證與報文傳輸?shù)臋C密性。通過改造IEC 104協(xié)議的結構,擴展安全域,增加身份認證及數(shù)字信封功能,對協(xié)議本身做較小改動;因此,相較于TLS協(xié)議防護屬于輕量級的安全防護,協(xié)議的第一階段連接握手也沒有TLS的復雜、耗時,體現(xiàn)了協(xié)議的便捷、輕量及安全性。
基于標識密碼體系(identity-based cryptograph,IBC)是在傳統(tǒng)的公鑰基礎設施(public key infrastructure,PKI)基礎上發(fā)展而來,除了保有PKI的技術優(yōu)點外,主要解決了具體安全應用中PKI需要大量交換數(shù)字證書的問題。IBC密碼技術使用的是非對稱密碼體系,加密與解密、簽名與驗證使用2套不同的密鑰,公鑰就是身份標識,比如手機號、e-mail地址,使用比較方便[20 - 21]。
我國研發(fā)的SM9標識密碼算法在2016年4月公開發(fā)布。SM9標識密碼算法是基于橢圓曲線離散對數(shù)的問題,同時增加了對橢圓曲線對雙線性的應用,其使用的雙線性對需要滿足雙線性、非退化性、可計算性。SM9算法由數(shù)字簽名算法、公鑰加密算法、密鑰交換協(xié)議和密鑰封裝4個算法組成。本文應用場景只用到了前2個算法,下面將介紹加解密與簽名驗證算法原理。
SM9加解密算法主要由4個算法組成,即生成系統(tǒng)參數(shù)算法GenPara;生成密鑰算法GenKey;加密算法Crypt和解密算法Uncrypt組成。算法具體說明如下。
1)GenPara:通過安全參數(shù)sk生成系統(tǒng)參數(shù)sysParas和主密鑰mKey。公用參數(shù)為sysParas,密鑰生成中心KGC保存主密鑰mKey。
2)GenKey:通過sysParas、mKey和ID∈{0,1}產生私鑰priKeyID,ID作為公鑰,priKeyID為私鑰。
3)Crypt:通過sysParas和公鑰ID對明文Plain進行運算,計算出密文Cipher即Cipher = Crypt(sysParas, Plain,ID)。
4)Uncrypt:通過sysParas和私鑰priKeyID對密文Cipher進行解密,計算出明文Plain,即Plain=Decrypt(sysParas, Cipher, priKeyID)。
為了更好地描述SM9簽名算法與驗證算法,表1列出了算法涉及到的符號及含義。
表1 算法符號表Tab.1 Algorithm symbol table
SM9簽名算法實現(xiàn)步驟如圖2所示,用戶A通過系統(tǒng)參數(shù)、簽名公鑰、明文消息和簽名密鑰進行7個步驟的運算,最終計算得到簽名值。
圖2 SM9 簽名過程Fig.2 SM9 signing process
SM9簽名驗證算法步驟如圖3所示,用戶B通過系統(tǒng)參數(shù)、簽名公鑰、識別符hid、標識IDA、明文消息及簽名值進行9個步驟的運算,并最終驗證簽名值的正確性。
圖3 SM9 驗證過程Fig.3 SM9 verification process
調度需建立密鑰中心,密鑰中心為調度主站與變電站分發(fā)身份私鑰,公鑰則可通過公共系統(tǒng)參數(shù)與身份ID計算出來,調度密鑰中心如圖4所示。
圖4 調度密鑰中心Fig.4 Dispatching key center
基于SM9標識密碼的密鑰中心根據(jù)調度主站與變電站遠動機的身份標識ID為其生成各自的私鑰并分發(fā),調度與變電站遠動機又可通過各自身份ID與公共參數(shù)計算出各自公鑰,因此只要知道對方的身份ID就可以計算出對方的公鑰,省去了數(shù)字證書管理與通信中身份證書的交換過程。
調度主站與變電站遠動機通信前要進行TCP連接,通常需進行3次TCP握手后完成連接。TCP的3次握手并沒有對通信雙方的身份進行嚴格的鑒別,而基于IEC 104協(xié)議的主子站通信也沒有身份認證機制,所以本文在調度與變電站遠動機業(yè)務數(shù)據(jù)傳輸前增加安全認證及密鑰協(xié)商安全流程,為后續(xù)的業(yè)務數(shù)據(jù)傳輸提供機密性、不可抵賴性保護。
調度到變電站遠動機間的雙向身份認證協(xié)議格式設計如下。
1)認證請求報文
調度與遠動機建立TCP連接后,調度向遠動機發(fā)起認證請求報文,請求報文格式如表2所示。
表2 請求報文格式Tab.2 Request message format
2)認證應答報文
遠動機收到調度的認證請求報文后,驗證通過則向調度發(fā)送應答報文,否則斷開連接,認證應答報文格式如表3所示。
表3 認證應答報文格式Tab.3 Authentication response message format
3)認證確認報文
調度收到遠動機的認證應答報文后,驗證通過,則向遠動機發(fā)送確認報文;否則斷開連接,重新建立TCP連接并開始認證過程,認證確認報文格式如表4所示。
表4 認證確認報文格式Tab.4 Format of authentication confirmation message
4)密鑰協(xié)商請求報文
調度與遠動機完成雙向身份認證后,調度生成隨機數(shù)利用遠動機公鑰ID加密、調度私鑰簽名后發(fā)送給遠動機,密鑰協(xié)商請求報文如表5所示。
表5 密鑰協(xié)商請求報文Tab.5 Key agreement request message
5)密鑰協(xié)商應答報文
遠動機收到密鑰協(xié)商請求報文后,對隨機數(shù)密文驗證、解密通過后,將隨機數(shù)作為雙方的會話密鑰,密鑰協(xié)商應答報文格式,密鑰協(xié)商應答報文如表6所示。
表6 密鑰協(xié)商應答報文Tab.6 Key agreement response message
圖5為調度與遠動機雙向身份認證與密鑰協(xié)商流程設計。
圖5 調度-遠動機雙向認證與密鑰協(xié)商流程設計Fig.5 Process design of dispatching-remote machine mutual authentication and key agreement
通過對調度與變電站遠動機安全流程設計,實現(xiàn)了調度到變電站雙向身份認證、會話密鑰協(xié)商的2個關鍵流程,正是這2個安全過程保證了后續(xù)協(xié)議報文傳輸?shù)臋C密性和不可抵賴性。
3.1節(jié)完成了調度與變電站遠動機之間的雙向身份認證、會話密鑰協(xié)商流程,這只是在前期保證了業(yè)務數(shù)據(jù)傳輸前的身份鑒別,而后續(xù)基于IEC 104協(xié)議傳輸業(yè)務數(shù)據(jù)的機密性、防重放及防篡改還沒有安全技術保護,因此,本文在IEC 104協(xié)議的基礎上增加安全域來保障協(xié)議報文的機密性與不可抵賴性,同時采用3.1節(jié)中產生的會話密鑰來保護協(xié)議報文的機密性。表7為協(xié)議增加安全域的報文結構。
表7 IEC 104協(xié)議安全報文Tab.7 IEC 104 protocol Security message
通過表7安全報文格式可以看出,采用SM4算法對原IEC 104協(xié)議的控制域和ASDU域進行加密保護,并在協(xié)議的末尾擴展了安全域,擴展安全域采用SM9算法來保證協(xié)議報文的完整性、抗抵賴性及防篡改與重放,這樣可以實現(xiàn)從調度到變電站的端到端安全認證。圖6以控制報文為例的安全報文交互流程。
圖6 調度-遠動機安全報文傳輸過程Fig.6 Dispatching-remote motor security message transmission process
3.1節(jié)和3.2節(jié)設計并論述了調度主站到變電站遠動機的雙向身份認證、密鑰協(xié)商及安全報文傳輸流程。具體來講可以解決以下幾方面的問題。
1)調度到變電站協(xié)議報文加密的必要性
目前,調度到變電站的通信數(shù)據(jù)都經過縱向加密認證裝置來保護,縱向加密認證裝置是電力調度專用安全設備,在網絡層對數(shù)據(jù)進行加密保護,實現(xiàn)調度到變電站間傳輸鏈路的安全防護。這里有一個問題,調度端縱向加密認證裝置前的數(shù)據(jù)報文沒有保護,也就是說沒有從協(xié)議源頭解決報文的機密性。本文在協(xié)議源頭杜絕了協(xié)議的不安全性,對調度到變電站協(xié)議報文加密防護,杜絕協(xié)議報文傳輸過程中任何一個環(huán)節(jié)被竊取的可能性。
2)基于標識密碼認證與基于數(shù)字證書安全認證比較
基于SM9標識密碼體系實現(xiàn)通信雙方身份認證及安全加密比基于證書實現(xiàn)起來簡單、方便。采用數(shù)字證書的身份認證機制是基于PKI體系中CA機構簽發(fā)證書,涉及數(shù)字證書申請、簽發(fā)、使用、吊銷、管理等多個環(huán)節(jié),工程應用比較復雜、繁瑣,不利于大規(guī)模推廣應用;而標識密碼比較簡便,只需要自身擁有一個標識身份的ID號,并保管好自己的私鑰就可以與對方進行安全通信,也容易實現(xiàn)工程規(guī)模化。
3)與其他研究的比較
文獻[12]提出了基于國際公鑰加密算法RSA的數(shù)字簽名與認證方案;文獻[20]提出了基于IEC 62351安全機制國密算法身份認證與加密方案。前者大量采用國際算法與現(xiàn)階段國家大力推廣國產密碼算法現(xiàn)狀相悖;后者則采用了開源OpenSSL安全組件的TLS協(xié)議,而OpenSSL本身開源,且不時地報出安全隱患,再加上頻繁升級,工程維護工作量的增加使得依賴該組件的系統(tǒng)升級變得越來越頻繁。
本文基于SM9算法實現(xiàn)輕量級協(xié)議安全防護,通過改造IEC 104協(xié)議的結構,對協(xié)議本身做較少地改動,實現(xiàn)協(xié)議安全所需的功能,相較于TLS協(xié)議防護屬于輕量級的安全防護,且協(xié)議的握手協(xié)商也沒有TLS的復雜、耗時,體現(xiàn)了協(xié)議的便捷、輕量及安全性。
調度主站與遠動機是基于TCP協(xié)議建立連接,TCP 3次握手建立連接后,需要進行雙向身份認證與密鑰協(xié)商,根據(jù)測試目的,搭建測環(huán)境,其主要軟硬件資源的配置信息如表8所示。
表8 設備配置信息Tab.8 Device configuration information
基于上表軟硬件配置的測試環(huán)境,驗證協(xié)議的雙向安全認證與密鑰協(xié)商機制,通過建立5次連接進行雙向安全認證與密鑰協(xié)商并記錄相關測試數(shù)據(jù),測試結果如表9所示。
表9 安全認證密鑰協(xié)商時效性Tab.9 Timeliness of security authentication key agreement
通過表9的實驗結果可以看出,在原有IEC 104協(xié)議通信前增加雙身份認證與密鑰協(xié)商機制,實現(xiàn)通信雙方端到端安全認證,由于認證過程主要是SM9簽名、驗證操作,所增加的時間是毫秒級,平均總耗時約在600 ms左右。文獻[22]指出基于國密SM2算法與調度證書建立TLS協(xié)議需增加的時間范圍在2~4 s,TLS協(xié)議流程復雜且需進行多次證書交換與密鑰協(xié)商,而本文基于SM9算法進行協(xié)議層輕量級安全防護,在安全認證和密鑰協(xié)商方面具有一定的時效性優(yōu)勢,再加上調度與遠動機的連接操作并不頻繁,因此,從實際業(yè)務角度考慮連接所增加的耗時是可以接受的。
本文基于CPU主頻2.6 GHz、內存8 GB、操作系統(tǒng)CentOS7.1作為SM9算法的測試環(huán)境,對算法進行120多次簽名驗證,并參考相關文獻[23]和文獻[24],得出驗證結果如表10所示。
表10 SM9算法性能驗證Tab.10 SM9 algorithm performance verification
通過表10的實驗結果可以看出,SM9算法的簽名與驗證操作總耗時約在62 ms左右,在實時性要求不是很高的業(yè)務環(huán)境下,基本可以忽略不計。
協(xié)議的安全認證與密鑰協(xié)商是用來保護后續(xù)協(xié)議報文的機密性、完整性及不可抵賴性。通過3.1節(jié)中的圖5可以看出,調度主站與遠動機的雙向身份認證流程是基于隨機數(shù)的安全簽名機制實現(xiàn),雙方各自用自己的私鑰對隨機數(shù)進行簽名,并各自用對方的ID及算法驗證,這樣由于攻擊者沒有通信雙方的私鑰而不能篡改、偽造認證協(xié)議報文,因此身份認證過程是安全的。密鑰協(xié)商過程是由調度生成16 Byte隨機數(shù)并通過遠動機的ID與SM9算法加密,再利用調度私鑰對密文簽名并一起發(fā)送遠動機,遠動機利用調度ID及算法驗證密文的安全性,包括是否被篡改、偽造等情形,并利用遠動的私鑰對隨機數(shù)密文解密生成16 Byte隨機數(shù)明文,此16 Byte隨機數(shù)可作為后續(xù)報文加密密鑰。密鑰協(xié)商過程運用了SM9的公鑰加密算法來保護16 Byte密鑰的安全傳輸,由于對方只能用自己的私鑰解密,因此這一過程也是安全的。
協(xié)議報文的安全是由加密密鑰的安全來保證,由于調度與遠動機每進行一次連接都將生成一個新的隨機動態(tài)密鑰,因此利用SM4算法基于動態(tài)隨機密鑰對報文加密,其安全性也是可以保證的。
本文基于SM9標識密碼算法實現(xiàn)了調度到變電站的安全通信,是一種基于新的密碼體系的嘗試。在調度到變電站通信前增加身份認證、密鑰協(xié)商安全流程,實現(xiàn)了通信雙方的身份鑒別并產生加密密鑰;在調度與變電站協(xié)議報文傳輸前可利用加密密鑰對協(xié)議報文加密并簽名,實現(xiàn)了調度到變電站通信的端到端安全認證;同時也杜絕了協(xié)議報文在傳輸過程被竊取、偽造、篡改及重放的可行性。
基于國密SM9標識密碼算法建立調度級的密鑰中心,為調度主站與變電站簽發(fā)身份密鑰,為調度與變電站的安全通信奠定了基礎安全平臺。采用標識密碼體系與基于PKI體系的CA數(shù)字證書有本質的區(qū)別,首先,通信雙方不需要管理復雜的數(shù)字證書,只需要擁有對方身份ID即可完成對方的身份的鑒別;其次,基于標識密碼算法的密鑰協(xié)商也不是基于數(shù)字證書實現(xiàn),省去了證書的傳遞和驗證,提高協(xié)商效率;最后,基于標識密碼算法也是對現(xiàn)有調度到變電站通信基于縱向加密認證裝置的一個安全補充。