丁建球 金鋒 莊健
摘 ?要:電力行業(yè)數(shù)據(jù)由于涉及到敏感信息及能源安全等非常重要的數(shù)據(jù),數(shù)據(jù)傳輸安全就顯得尤為重要。目前常用數(shù)據(jù)傳輸安全手段就是對(duì)數(shù)據(jù)設(shè)置密碼,設(shè)置密碼是為了保護(hù)傳輸數(shù)據(jù)的安全性,提高了數(shù)據(jù)保護(hù)技術(shù),為數(shù)據(jù)傳輸提供可靠保證。文章通過(guò)對(duì)非對(duì)稱(chēng)加密技術(shù)進(jìn)行探討,為傳輸電力數(shù)據(jù)的安全策略提供參考和借鑒。
關(guān)鍵詞:電力數(shù)據(jù);非對(duì)稱(chēng)加密;數(shù)據(jù)傳輸安全
中圖分類(lèi)號(hào):TP393.08 文獻(xiàn)標(biāo)志碼:A ? ? ? ? 文章編號(hào):2095-2945(2020)24-0157-03
Abstract: Data transmission security is particularly important in power industry because it involves sensitive information, energy security and other very important data. At present, data encryption is commonly used as the security means of data transmission. Data encryption is recognized as the only practical method to protect data transmission security and the effective method to protect storage data security. It is the most important defense line of data protection in technology. In this paper, asymmetric encryption technology is discussed to provide reference for the security strategy of power data transmission.
Keywords: power data; asymmetric encryption; data transmision security
1 概述
現(xiàn)代社會(huì)信息化高度發(fā)達(dá),電力系統(tǒng)作為民生支柱型能源供應(yīng)與輸送系統(tǒng)一直走在信息化發(fā)展的前端。隨著社會(huì)的發(fā)展電力系統(tǒng)紛紛加大了網(wǎng)絡(luò)技術(shù)應(yīng)用力度。信息系統(tǒng)建設(shè)與網(wǎng)絡(luò)的應(yīng)用促進(jìn)了企業(yè)管理的創(chuàng)新和改革,但是在具體的應(yīng)用過(guò)程當(dāng)中也會(huì)給企業(yè)帶來(lái)困擾,如果對(duì)互聯(lián)網(wǎng)進(jìn)行安全保護(hù),也會(huì)帶來(lái)嚴(yán)重風(fēng)險(xiǎn)。電力系統(tǒng)也可以根據(jù)信息系統(tǒng)的具體情況,采用合理的方法對(duì)軟硬件數(shù)據(jù)設(shè)置密碼,提高原始數(shù)據(jù)的安全性和可靠性,避免因?yàn)楸Wo(hù)不完善遭受客戶(hù)的侵入。還可以采用指紋認(rèn)證方法將用戶(hù)的指紋輸入到系統(tǒng)當(dāng)中,用戶(hù)們?cè)谑褂脭?shù)據(jù)的時(shí)候就可以指紋認(rèn)證,提高了信息使用的安全性。只有做好安全防護(hù)工作才能保障電力系統(tǒng)安全,提高電力系統(tǒng)的經(jīng)濟(jì)效益。
2 電力系統(tǒng)數(shù)據(jù)傳輸通道介紹
通信技術(shù)在電力生產(chǎn)和管理各個(gè)方面發(fā)揮著重要的作用,促進(jìn)了電力系統(tǒng)的快速發(fā)展。電力系統(tǒng)在具體的運(yùn)行過(guò)程當(dāng)中可以根據(jù)不同的形式分為以下幾種類(lèi)型:第一,因?yàn)檫M(jìn)行業(yè)務(wù)過(guò)程當(dāng)中有不同的屬性,所以要選擇生產(chǎn)和管理兩種形式。第二,電力系統(tǒng)在具體應(yīng)用過(guò)程當(dāng)中會(huì)有統(tǒng)一的監(jiān)測(cè)體系,根據(jù)區(qū)域的差異性來(lái)對(duì)其進(jìn)行科學(xué)合理劃分。第三,開(kāi)展業(yè)務(wù)過(guò)程當(dāng)中還會(huì)根據(jù)不同的需求采用語(yǔ)言和多媒體等不同形式業(yè)務(wù)。第四,不同的系統(tǒng)應(yīng)用時(shí)間有所差別,根據(jù)實(shí)際情況采用實(shí)時(shí)或非實(shí)時(shí)業(yè)務(wù)。第五,根據(jù)業(yè)務(wù)的運(yùn)行狀態(tài)分為集中性、相鄰性的業(yè)務(wù)形式。第六,根據(jù)用戶(hù)們的需求選擇不同形式的供電場(chǎng)所。
2.1 對(duì)稱(chēng)加密技術(shù)
對(duì)稱(chēng)加密技術(shù)在具體的應(yīng)用過(guò)程當(dāng)中,主要應(yīng)用一種密鑰對(duì)兩種算法進(jìn)行應(yīng)用。因?yàn)閷?duì)稱(chēng)加密技術(shù)的應(yīng)用速度比較快,所以在具體的應(yīng)用過(guò)程當(dāng)中要對(duì)大量的數(shù)據(jù)進(jìn)行加密。對(duì)稱(chēng)方法主要就是加密雙方要使用相同的方式對(duì)其進(jìn)行加密。密鑰主要是對(duì)加密的過(guò)程進(jìn)行有效的控制。算法主要是對(duì)加密和解密的過(guò)程進(jìn)行規(guī)定。所以加密的安全性不僅取決于算法的本身,還需要加強(qiáng)管理。因?yàn)榧用芎徒饷艿拿荑€相同,所以在傳遞數(shù)據(jù)過(guò)程當(dāng)中如何才能夠?qū)⒚荑€安全的輸送到另一方,已經(jīng)成為了目前最需要解決的問(wèn)題。
2.2 非對(duì)稱(chēng)加密技術(shù)
(1)它與對(duì)稱(chēng)加密算法有一定的不同,主要是加密和解密使用兩個(gè)密鑰。在對(duì)數(shù)據(jù)設(shè)置密碼的過(guò)程當(dāng)中,要根據(jù)數(shù)據(jù)的不同性質(zhì)使用不同的密鑰方法。如果只應(yīng)用其中的一種密鑰對(duì)數(shù)據(jù)進(jìn)行設(shè)置密碼,那么只能應(yīng)用另一種密鑰才能夠獲得密碼。所以在設(shè)置密碼的過(guò)程當(dāng)中,是采用不同的密鑰對(duì)其進(jìn)行設(shè)置的,這樣的加密方式不僅能夠提高密碼設(shè)置的安全性,還能夠提高數(shù)據(jù)的傳輸速度。
(2)在對(duì)數(shù)據(jù)進(jìn)行設(shè)置密碼的過(guò)程當(dāng)中,主要是通過(guò)密鑰來(lái)對(duì)其進(jìn)行控制的。密鑰的整體安全程度對(duì)密碼有著十分重要的作用?,F(xiàn)代密碼不僅對(duì)加密保密特征進(jìn)行考慮,還需要完善加密的算法。這樣侵入者就能夠在不知道密鑰的情況下,找到嵌入的突破口。根據(jù)密鑰在加密和解密使用過(guò)程當(dāng)中是否相同,判斷加密和解密的密鑰。密碼體制在具體的應(yīng)用過(guò)程當(dāng)中可以分為對(duì)稱(chēng)密碼體制和非對(duì)稱(chēng)型密碼體制。
(3)非對(duì)稱(chēng)性密碼體制主要是利用公鑰來(lái)對(duì)數(shù)據(jù)進(jìn)行加密。在傳統(tǒng)的私鑰密碼體制應(yīng)用過(guò)程當(dāng)中存在許多的問(wèn)題,此項(xiàng)技術(shù)是對(duì)這些問(wèn)題進(jìn)行改善和創(chuàng)它有對(duì)稱(chēng)密碼體制的不同點(diǎn),表現(xiàn)在工業(yè)系統(tǒng)在最初就進(jìn)行設(shè)置密碼的過(guò)程當(dāng)中,設(shè)置密碼與解密是獨(dú)立的,加密和解密會(huì)使用兩種不同的密鑰,加密密鑰在這些使用過(guò)程當(dāng)中是公之于眾誰(shuí)都可以進(jìn)行使用的,解密密鑰只有解密人自己才能使用,這樣的方法不僅能夠?qū)π畔⑦M(jìn)行有效保護(hù),還能夠解決密鑰分配在具體應(yīng)用過(guò)程當(dāng)中存在的問(wèn)題,提高保護(hù)數(shù)據(jù)的手段。
3 對(duì)稱(chēng)與非對(duì)稱(chēng)算法比較
在管理方面:非對(duì)稱(chēng)加密技術(shù)不需要太多的資源就可以實(shí)現(xiàn)目標(biāo),但是它不能夠在廣域網(wǎng)當(dāng)中使用,更主要的是它不能使用數(shù)字簽名。
關(guān)于安全方面:因?yàn)榉菍?duì)稱(chēng)加密的應(yīng)用主要是為了解決數(shù)學(xué)問(wèn)題,不能夠?qū)ζ浣鉀Q。因?yàn)閷?duì)稱(chēng)加密技術(shù),用到了AES,理論上是不能夠得到解決的,但是隨著科學(xué)技術(shù)的進(jìn)步和發(fā)展,能夠?qū)鹘y(tǒng)的技術(shù)進(jìn)行突破和創(chuàng)新。
關(guān)于速度方面:AES得到了快速的發(fā)展,突破了傳統(tǒng)的軟件傳播速度,促進(jìn)了信息數(shù)據(jù)的傳播穩(wěn)定性。
密鑰的管理:加密密鑰管理是一種涉及到密鑰保護(hù)、共享、備份和組織管理的管理任務(wù)。隨著加密業(yè)務(wù)的應(yīng)用與延伸,可能會(huì)有數(shù)以千億的密鑰,所有這些都要安全地存儲(chǔ)、充分地保護(hù)并且確保取用簡(jiǎn)便。為了達(dá)到妥善管理密鑰的目標(biāo)需設(shè)立密鑰管理系統(tǒng),該系統(tǒng)必須做到如下幾個(gè)方面要求:
3.1 密鑰生成與保存
密鑰在具體的生成過(guò)程當(dāng)中需要對(duì)數(shù)據(jù)進(jìn)行采集和整理,根據(jù)數(shù)據(jù)量的多少選擇合適的算法,完全是在系統(tǒng)內(nèi)部完成的,外界是無(wú)法對(duì)其進(jìn)行干擾的,充分保證了密鑰產(chǎn)生的安全和密鑰的質(zhì)量。密鑰在生成之后,通過(guò)系統(tǒng)對(duì)其進(jìn)行設(shè)置密碼,然后存儲(chǔ)到數(shù)據(jù)庫(kù)當(dāng)中。
3.2 密鑰分發(fā)
密鑰生成后安全的存儲(chǔ)在預(yù)生成密鑰庫(kù)中,在認(rèn)證中心需要時(shí)發(fā)送密鑰給認(rèn)證中心,密鑰傳輸過(guò)程采用SSL協(xié)議,保證需求方取得屬于自己的私鑰。
3.3 密鑰的撤消
密鑰由于某些原因(暫時(shí)不使用、懷疑泄密等)需要對(duì)密鑰進(jìn)行撤消,做密鑰更新操作時(shí)原有的密鑰也被撤消。
3.4 密鑰的恢復(fù)
當(dāng)密鑰由于下述原因之一而導(dǎo)致丟失時(shí),可使用密鑰的恢復(fù)功能:
(1)忘記了存儲(chǔ)密鑰的口令。
(2)存儲(chǔ)密鑰的智能設(shè)備遭到破壞。
系統(tǒng)接到認(rèn)證中心轉(zhuǎn)發(fā)的密鑰恢復(fù)申請(qǐng)后,系統(tǒng)將密鑰從數(shù)據(jù)庫(kù)中取出并以安全的方式發(fā)送給需求方。
只有撤消時(shí)標(biāo)示原因?yàn)闀簳r(shí)不使用的密鑰才能被恢復(fù)。
3.5 密鑰的更新
如果證書(shū)到達(dá)一定的日期或者需求方需要根據(jù)實(shí)際需求對(duì)其進(jìn)行改善時(shí),需求方需要到認(rèn)證中心當(dāng)中提出請(qǐng)求,密鑰系統(tǒng)在接受到請(qǐng)求之后才能夠形成新的密鑰形式。
3.6 密鑰的備份
為了保證重要數(shù)據(jù)不丟失,需要對(duì)加密證書(shū)的私鑰進(jìn)行備份。密鑰對(duì)生成并被需求方使用后,密鑰管理系統(tǒng)自動(dòng)將密鑰對(duì)存入該系統(tǒng)的已使用數(shù)據(jù)庫(kù),供以后恢復(fù)及查詢(xún)使用。另外系統(tǒng)提供數(shù)據(jù)備份的功能,可以將所有密鑰信息備份到指定設(shè)備上(硬盤(pán)文件、磁帶等),在需要時(shí)可以重新導(dǎo)入后使用。
4 基于JAVA的電力數(shù)據(jù)傳輸非對(duì)稱(chēng)加密實(shí)現(xiàn)
完成加密算法選擇及密鑰管理體系建設(shè)后,電力系統(tǒng)在具體的運(yùn)行過(guò)程當(dāng)中需要保證數(shù)據(jù)的安全有效性,也就是需要對(duì)用戶(hù)們的簽名證書(shū)和加密證書(shū)進(jìn)行有效的核對(duì),保證需求方身份與證書(shū)一致,還需要向認(rèn)證中心對(duì)身份進(jìn)行核實(shí)和認(rèn)證。對(duì)證書(shū)當(dāng)中的信息設(shè)置密碼,是需求方向密鑰管理系統(tǒng)申請(qǐng)獲取。通常認(rèn)證中心包含上述兩類(lèi)業(yè)務(wù)應(yīng)用。
4.1 密鑰生成
生成公鑰私鑰是基于主流的RSA算法來(lái)實(shí)現(xiàn)。這種算法在具體應(yīng)用過(guò)程中主要是采用素?cái)?shù)的相乘進(jìn)行計(jì)算,雖然運(yùn)算過(guò)程十分簡(jiǎn)單,但是需要對(duì)成績(jī)的結(jié)果進(jìn)行因式分解,才能夠生產(chǎn)密鑰。
算法邏輯:
(1)選擇兩個(gè)不同的大素?cái)?shù)p和q。
(2)計(jì)算乘積n=pq和Φ(n)=(p-1)(q-1)。
(3)選擇大于1小于Φ(n)的隨機(jī)整數(shù)e,使得gcd(e,Φ(n))=1;注:gcd即最大公約數(shù)。
(4)計(jì)算d使得d*e=1mod Φ(n);注:即d*e mod Φ(n) =1。
(5)對(duì)每一個(gè)密鑰k=(n,p,q,d,e),定義加密變換為Ek(x)=xe mod n,解密變換為Dk(x)=yd mod n,這里x,y∈Zn。
(6)p,q銷(xiāo)毀,以{e,n}為公開(kāi)密鑰,{d,n}為私有密鑰。
參考JAVA代碼如下:
/**
* 隨機(jī)生成密鑰對(duì)
* @throws NoSuchAlgorithmException
*/
public static void genKeyPair() throws NoSuchAlgorithmException {
// KeyPairGenerator類(lèi)用于生成公鑰和私鑰對(duì),基于RSA算法生成對(duì)象
KeyPairGenerator keyPairGen=KeyPairGenerator.getInst
ance("RSA");
// 初始化密鑰對(duì)生成器,密鑰大小為96-1024位
keyPairGen.initialize(1024,new SecureRandom());
// 生成一個(gè)密鑰對(duì),保存在keyPair中
KeyPair keyPair = keyPairGen.generateKeyPair();
RSAPrivateKey privateKey=(RSAPrivateKey)keyPair.getPrivate(); // 得到私鑰
RSAPublicKey publicKey =(RSAPublicKey)keyPair.get
Public(); // 得到公鑰
String publicKeyString = new String(Base64.encodeBase64(publicKey.getEncoded()));
// 得到私鑰字符串
String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));
// 將公鑰和私鑰保存到Map
keyMap.put(0,publicKeyString); //0表示公鑰
keyMap.put(1,privateKeyString); //1表示私鑰
}
/**
* RSA公鑰加密
*/
public static String encrypt(String str, String publicKey) throws Exception{
//base64編碼的公鑰
byte[] decoded = Base64.decodeBase64(publicKey);
RSAPublicKey pubKey = (RSAPublicKey)KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeyS
pec(decoded));
//RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
return outStr;
}
/**
* RSA私鑰解密
*/
public static String decrypt(String str, String privateKey) throws Exception{
//64位解碼加密后的字符串
byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
//base64編碼的私鑰
byte[] decoded = Base64.decodeBase64(privateKey);
RSAPrivateKey priKey = (RSAPrivateKey)KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));
//RSA解密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, priKey);
String outStr = new String(cipher.doFinal(inputByte));
return outStr;
}
4.2 簽名證書(shū)
簽名證書(shū)主要是指需求方在申請(qǐng)密鑰的過(guò)程當(dāng)中需要向認(rèn)證中心提供自己的信息得到滿(mǎn)足和規(guī)定標(biāo)準(zhǔn)之后得到簽名證。簽名證書(shū)主要是用來(lái)接收者驗(yàn)證信息。接收者在收到簽名證書(shū)之后,可以向認(rèn)證中心申請(qǐng)得到密鑰,滿(mǎn)足自身需求。
參考JAVA代碼如下:
public String initSignAndRetData(String signature, Str
ing data) throws RuntimeException{
//先驗(yàn)證
if(StringUtils.isBlank(signature)) {
throw new RuntimeException(“數(shù)據(jù)在傳輸過(guò)程中被篡改,請(qǐng)聯(lián)系管理員”);
}else{
//RSA驗(yàn)證密碼
byte[] decodedData = new byte[0];
try {
decodedData=RSACoder.decryptByPrivateKey(data, Constants.PRIVATE_KEY);
data = new String(decodedData);
System.out.println(“RSA解密處理——”+ data);
} catch (Exception e) {
throw new RuntimeException(“數(shù)據(jù)在傳輸過(guò)程中被篡改,請(qǐng)聯(lián)系管理員”);
}
//驗(yàn)證MD5
String key = Constants.KEY_CODE + "&&" + data;
System.out.println(key);
String md5Hex1 = DigestUtil.md5Hex(key);
System.out.println(md5Hex1);
System.out.println(signature);
//MD驗(yàn)證成功
if(!md5Hex1.equals(signature)){
throw new RuntimeException(“數(shù)據(jù)在傳輸過(guò)程中被篡改,請(qǐng)聯(lián)系管理員”);
}
return data;
}
5 結(jié)束語(yǔ)
電力系統(tǒng)安全性在信息化時(shí)代中是極為重要的,通信過(guò)程中加密技術(shù)已應(yīng)用于整個(gè)電力行業(yè)的各個(gè)角落。本文從各類(lèi)加密技術(shù)的介紹及其對(duì)比,加密算法的選擇,密鑰的管理等方面闡述了對(duì)于加密技術(shù)的認(rèn)識(shí)與選擇,結(jié)合電力系統(tǒng)要求,融合加密相關(guān)理論于基于JAVA的電力數(shù)據(jù)傳輸非對(duì)稱(chēng)加密實(shí)現(xiàn)的應(yīng)用中,為電力數(shù)據(jù)傳輸?shù)募用芊雷o(hù)提供了理論與實(shí)踐支撐。
參考文獻(xiàn):
[1]風(fēng)繼林,高煥芝.網(wǎng)絡(luò)安全技術(shù)[M].北京:清華大學(xué)出版社,2009.
[2]張仕斌,萬(wàn)武南,張金全.應(yīng)用密碼學(xué)[M].陜西:西安電子科技大學(xué)出版社,2009.
[3]王海燕,李曉輝,湯佩林.用電信息采集系統(tǒng)的建設(shè)與應(yīng)用[J].電力信息化,2012,10(09):69-73.
[4]朱彬若,杜衛(wèi)華,李蕊.電力用戶(hù)用電信息采集系統(tǒng)數(shù)據(jù)分析與處理技術(shù)[J].華東電力,2011,39(10):1682-1686.
[5]鄧安文.密碼學(xué):加密演算法[M].北京:中國(guó)水利水電出版社,2006.