?

混合型數字簽名技術在Java中的實現

2020-07-04 18:24曹虎山劉國彥曾小舟
科學與財富 2020年14期
關鍵詞:數字簽名面向對象網絡安全

曹虎山 劉國彥 曾小舟

摘 要:數字簽名技術建立在數據加密的基礎上,目前常用的加密方式有對稱加密和非對稱加密,對稱加密使用同一把密鑰加解密,而非對稱加密技術使用私鑰和公鑰實現加密過程,兩種加密技術各有優缺點。在互聯網應用中,信息的完整性和傳遞的時效性同等重要,在保證數據可靠性的同時兼顧好用戶體驗,提出混合型數字簽名技術,并簡單介紹其實現原理,并且通過面向對象編程語言Java來實現。

關鍵詞:混合型;數字簽名;網絡安全;面向對象

隨著信息技術的飛速發展,互聯網技術滲透到當今社會的每個角落,“互聯網+”概念的推廣,傳統產業加快了信息化建設的腳步,網絡作為信息傳遞的途徑,信息的安全和保密越發變得重要。目前,為了保證數據在互聯網傳遞時的保密性,常用的技術手段有訪問控制、身份認證及安全審計等。但是這些手段主要是從外部保護數據在傳遞過程中的安全性,一旦數據在發送前或接收后遭到攻擊,則不能驗證信息的完整性。因此,數字簽名技術因此誕生,數字簽名技術是在數據加密的基礎上演化而來,目前加密的方式主要有兩種:一種是對稱加密,另一種是非對稱加密。對稱加密指的是加密和解密使用的是同一把密鑰,它的優點是加密速度快,效率高,缺點是密鑰分發及管理比較困難;而非對稱加密分為公鑰和私鑰,公鑰解決了密鑰分發的問題,但是公鑰的加解密操作速度較慢。因此,結合兩種加密方式的優缺點,提出混合數字簽名技術,在保證信息完整性的同時,提高數據加密的效率,對當前各類互聯網應用有積極的促進作用。

1.加密技術

1.1對稱加密技術

對稱加密也稱單密鑰加密,指的是通信雙方使用的同一個密鑰,既可以加密又可以解密。對稱加密通常在消息發送方需要加密大量數據時使用,具有加密速度快、計算量小、加密效率高、算法公開等特點。但是在數據傳送前,發送方和接收方必須約定好密鑰,且雙方都能保管好密鑰,否則只要一方的密鑰泄露,那么信息也就不安全了。此外,每次通信雙方都需要使用其他人不知道的唯一密鑰,多次通信則意味收、發雙方所擁有的密鑰變得越來越多,密鑰的管理成為雙方的負擔。常用的對稱加密算法有DES、AES等。

1.2非對稱加密技術

非對稱加密的密鑰由公鑰和私鑰組成,并且可以使用多對密鑰。通常有以下幾種加解密方式:私鑰解密公鑰加密,公鑰解密私鑰加密數據,私鑰公鑰可以互相加密解密。私鑰只能由一方保管,公鑰交給請求方。非對稱加密速度較慢,但密鑰的管理較方便,也更安全。常見的非對稱加密算法有RSA等。

1.3混合型加密技術

在實際的網絡環境中,通常是將兩者混合使用,這樣即解決了密鑰管理的問題,也保證了在非安全信道中密鑰交換的安全性,同時大大提高了加解密的速度。尤其是在安全性與用戶體驗同等重要的互聯網應用中,混合型加密技術是一種非常有效的數字簽名技術。

1.4數字簽名

不管是對稱加密還是非對稱加密,都只能保證數據的完整性,在網絡通信中,數據的不可抵賴性則要借助證書中心(Certificate Authority,簡稱CA)來實現,證書中心的作用是為公鑰作認證,CA通過自己的私鑰,對通信雙方的公鑰和一些相關信息一起加密,生成“數字證書”。該證書能使通信接收方確認數據的來源和數據完整性,防止被他人偽造。當通信雙方發生爭議時,CA根據消息上的簽名來判定這條消息是否確實由發送方發出,因為數字簽名的本質是簽名只能通過簽名者的私鑰才能產生,從而保證數據在傳輸過程中的不可抵賴性。

2.混合型數字簽名技術在Java中的實現

Java作為最熱門的Web應用開發語言,在網絡安全編程中實現數字簽名具有很大的優勢,它提供了兩種API實現數據的加密與解密,即JCA和JCE。在此我們采用混合密鑰算法實現數字簽名,不僅可以提高信息在傳輸過程中的保密性,也使服務器端的工作效率大大提高。例如針對客戶機/服務器模型(C/S架構),實現過程如下:

(1)服務器Server使用 Hash 算法對所發送的數據內容進行計算得到信息摘要,用自己的私鑰ServerPrivateKey對其加密形成數字簽名;

(2)服務器Server生成對稱密鑰 ServerSingleKey,使用客戶端Client的公鑰ClientPublicKey對其加密;

(3)服務器Server使用對稱密鑰ServerSingleKey對信息內容進行加密;

(4)服務器Server將加密后的對稱密鑰和加密后的密文打包;

(5)服務器Server將打包后的數據和數字簽名發送至客戶端Client;

(6)客戶端Client收到加密的數據包后,用客戶端的私鑰ClientPrivateKey解密得到ServerSingleKey;

(7)客戶端Client使用解密后的對稱密鑰ServerSingleKey對密文數據包解密,得到明文內容;

驗證數字簽名過程:

(1)客戶端Client獲取數字簽名;

(2)客戶端Client采用相同的Hash算法對解密后的數據內容進行計算得到信息摘要,并使用服務器Server的公鑰ServerPublicKey檢驗數字簽名;

(3)如果數字簽名相同,那么就可以確認該數字簽名是來自服務器Server,并且數據在傳輸過程中沒有遭到破壞或篡改。

服務器Server實現密鑰生成和簽名的部分代碼:

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");//初始化參數

keyPairGenerator.initialize(512);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

RSAPublicKey ServerPublicKey = (RSAPublicKey)keyPair.getPublic();//服務器公鑰

RSAPrivateKey ServerPrivateKey = (RSAPrivateKey)keyPair.getPrivate();//服務器私鑰

//執行簽名

PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(ServerPrivateKey.getEncoded());

KeyFactory keyFactory = KeyFactory.getInstance("RSA");

PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);

Signature signature = Signature.getInstance("MD5withRSA");

signature.initSign(privateKey);

signature.update(src.getBytes());

byte[] result = signature.sign();

客戶端Client驗證簽名的部分代碼:

X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(ServerPublicKey.getEncoded());

keyFactory = KeyFactory.getInstance("RSA");

PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);

signature = Signature.getInstance("MD5withRSA");

signature.initVerify(publicKey);

signature.update(src.getBytes());

boolean bool = signature.verify(result);//驗證簽名

3.結束語

在網絡通信過程中,數字簽名技術是保障信息安全的重要手段?;旌闲图用芩惴ú粌H實現了數字簽名,而且保證了數據在傳輸過程中的保密性與可靠性,以及通信雙方的不可抵賴,同時提高了加解密過程的效率,在保證信息安全的基礎上對用戶體驗的影響也降到最小,是一項值得推廣的互聯網安全應用技術。

參考文獻:

[1]王方鑫.基于RSA簽名方案的研究[J].電腦知識與技術,2018,14(36):28-29.

[2]段鎮源.探究網絡安全技術中數字簽名的基本原理[J].通訊世界,2019,26(04):31-32.

[3]趙悅. 基于RSA加密解密的即時通訊系統的設計與實現[D].吉林大學,2016.

[4]鄭鴻雁. 移動數字簽名關鍵技術研究[D].北京郵電大學,2014.

[5]李瑞俊.基于混合密碼體制的數據加密模型的研究[J].赤峰學院學報(自然科學版),2014,30(18):10-11.

作者簡介:

曹虎山(1967—),男,漢族,湖南益陽,教授,湖南生物機電職業技術學院,研究方向:信息技術。

劉國彥(1978—),男,漢族,湖南益陽,副教授,湖南生物機電職業技術學院,研究方向:軟件測試。

曾小舟(1986—),男,漢族,湖南常德,講師,湖南生物機電職業技術學院,研究方向:軟件工程。

基金項目:

湖南省教育廳科學研究項目《混合型數字簽名技術在O2O電子商務網絡安全中的應用研究》(項目編號:15C0810)階段性成果。

猜你喜歡
數字簽名面向對象網絡安全
淺析計算機安全防護中數字簽名技術的應用
網絡安全
網絡安全人才培養應“實戰化”
面向對象的計算機網絡設計軟件系統的開發
上網時如何注意網絡安全?
面向對象的數據交換協議研究與應用
基于數字簽名的QR碼水印認證系統
數字簽名簡述
面向對象Web開發編程語言的的評估方法
我國擬制定網絡安全法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合