2017年數(shù)字簽名技術(shù)論文(2)
2017年數(shù)字簽名技術(shù)論文篇二
淺談數(shù)字簽名技術(shù)及數(shù)據(jù)加密系統(tǒng)設(shè)計
摘要:當(dāng)今社會網(wǎng)絡(luò)無處不在,網(wǎng)絡(luò)安全問題同樣無處不在!隨著計算機網(wǎng)絡(luò)應(yīng)用的快速發(fā)展,信息安全和保密問題越來越重要,而密碼學(xué)是信息安全的重中之重。在密碼學(xué)中,數(shù)字簽名技術(shù)以其在保證數(shù)據(jù)的完整性、私有性和不可抵賴性方面占據(jù)了相當(dāng)?shù)牡匚?。本文介紹了基于RSA算法的數(shù)字簽名技術(shù),并設(shè)計了一個單向傳遞數(shù)據(jù)的數(shù)據(jù)加密系統(tǒng)。
關(guān)鍵詞:網(wǎng)絡(luò)安全;數(shù)字簽名;RSA數(shù)據(jù)加密
中圖分類號:TP39 文獻標(biāo)識碼:A
1.概述
我們在日常生活中經(jīng)常會需要簽名,比如我們刷卡購物時,這是為了防止我們對自己行為否認(rèn)的一種手段。在網(wǎng)絡(luò)中,數(shù)字簽名就是同樣的一種存在。而數(shù)據(jù)加密技術(shù)不僅能對數(shù)據(jù)進行加解密,還能夠?qū)崿F(xiàn)數(shù)字簽名、認(rèn)證和鑒別等多種功能,從而保障了在網(wǎng)絡(luò)上傳輸數(shù)據(jù)的機密性、完整性和確認(rèn)性。本文介紹了數(shù)字簽名及其實現(xiàn),并使用ElGamal算法,設(shè)計了一個數(shù)據(jù)加密系統(tǒng)。
2.RSA數(shù)字簽名算法
RSA數(shù)字簽名算法是Diffie和Hellman提出數(shù)字簽名思想后的第一個數(shù)字簽名算法,是由Rivest、Shamir和Adleman三人共同完成的,該算法源于RSA公鑰密碼算法思想,是迄今為止應(yīng)用最為廣泛的數(shù)字簽名算法[1]。
2.1數(shù)字簽名
數(shù)字簽名是指附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換。這種數(shù)據(jù)或變換能使數(shù)據(jù)單元的接收者確認(rèn)數(shù)據(jù)單元的來源和數(shù)據(jù)的完整性,并保護數(shù)據(jù),防止被人進行偽造[2]。數(shù)字簽名針對以數(shù)字形式存儲的消息進行處理,產(chǎn)生一種帶有操作者身份信息的編碼。執(zhí)行數(shù)字簽名的實體稱為簽名者,簽名過程中所使用的算法為簽名算法,本文中我們使用RSA算法,操作中生成的編碼為簽名者對該消息的數(shù)字簽名。
數(shù)字簽名技術(shù)是將摘要信息用發(fā)送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發(fā)送的公鑰才能解密被加密的摘要信息,然后用HASH函數(shù)對收到的原文產(chǎn)生一個摘要信息,與解密的摘要信息對比。如果相同,則說明收到的信息是完整的,在傳輸過程中沒有被修改,否則說明信息被修改過,因此數(shù)字簽名能夠驗證信息的完整性。 數(shù)字簽名算法包含簽名和驗證兩項操作,遵循“私鑰簽名,公鑰驗證”的簽名/驗證方式。通過數(shù)字簽名能夠?qū)崿F(xiàn)對原始信息的鑒別和不可抵賴性。
2.2非對稱密鑰加密體制
非對稱密鑰加密體制又稱公鑰加密體制。該體制的特性是,從公鑰推導(dǎo)出私鑰幾乎不可能,用公鑰密鑰對明文進行加密,只能用私鑰密鑰對其進行解密。公開密鑰都是在某些數(shù)學(xué)上的難解的問題上發(fā)展而來的。公開密鑰加密體制的優(yōu)點有:加密密鑰是公開的,用戶之間不需要傳遞私鑰;能夠很容易地實現(xiàn)數(shù)字簽名,保證交易過程的機密性、身份確認(rèn)性、數(shù)據(jù)完整性和不可否認(rèn)性,因此最適合電子商務(wù)的應(yīng)用需要由于公鑰加密系統(tǒng)是基于尖端的數(shù)學(xué)難題,它的缺點就是計算復(fù)雜,實現(xiàn)速度遠遠趕不上對稱加密系統(tǒng)。根據(jù)所基于的數(shù)學(xué)難題來分類,有整數(shù)因子分解系統(tǒng)(代表性的有RSA)、離散對數(shù)系統(tǒng)(代表性的有DSA)、橢圓曲線離散對數(shù)系統(tǒng)(ECC)。
2.3RSA算法
RSA算法設(shè)計思想:RSA公鑰密碼體制到目前為止還是一種認(rèn)可為安全的體制. RSA算法和用RSA算法實現(xiàn)數(shù)字簽名的理論,以及它們在實際應(yīng)用中的實現(xiàn)。
RSA算法是一種非對稱密碼算法,該算法需要一對密鑰,公鑰和私鑰,如果使用其中一個加密,則需要用另一個才能解密。
RSA的算法涉及三個參數(shù),n、e、d。
其中,n是兩個大質(zhì)數(shù)p、q的積,n的二進制表示時所占用的位數(shù),就是所謂的密鑰長度。
e和d是一對相關(guān)的值,e可以任意取,但要求與(p-1)*(q-1)互質(zhì);再選擇d,要求(e*d)mod((p-1)*(q-1))=1。
RSA加解密的算法完全相同,設(shè)A為明文,B為密文,則:A=B ^ e mod n;B=A^ d mod n;e和d可以互換使用。
3.數(shù)據(jù)加密系統(tǒng)的設(shè)計
3.1數(shù)據(jù)加密模塊
數(shù)據(jù)加密模塊使用常用非對稱加密算法――ElGamal加密算法。非對稱加密算法的主要優(yōu)點是可以適應(yīng)開放性的使用環(huán)境,密鑰管理相對簡單。ElGamal算法是一個單向的過程,這里只有“公鑰加密、私鑰解密”這個過程,若a向b發(fā)送數(shù)據(jù),只有a向b發(fā)送數(shù)據(jù)是安全的,b向a發(fā)送則不安全。
由于Java6并沒有提供ElGamal算法實現(xiàn),要在Java中實現(xiàn)該算法必須配置開源組件包BouncyCastle,在實例化各種操作引擎前需導(dǎo)入BouncyCastle提供者,如:
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastlePovider;
并加入BouncyCastleProvider支持
Security.addProvider(new BouncyCastleProvider());
ElGamal算法實現(xiàn)模型分析:
以甲方向乙方發(fā)送數(shù)據(jù)為模型
(1)乙方構(gòu)造密鑰對(公鑰+私鑰),公布公鑰給甲方。
(2)甲方將要發(fā)送的數(shù)據(jù)用公鑰進行加密,并將加密后數(shù)據(jù)發(fā)送給乙方。
(3)乙方用私鑰對接收到的數(shù)據(jù)進行解密,得到原文。
因為公鑰是通過非安全途徑發(fā)布的,其私鑰加密的數(shù)據(jù)安全意義不大。
3.2數(shù)字簽名模塊
數(shù)據(jù)簽名算法采用RSA數(shù)據(jù)簽名算法,但由于RSA數(shù)字簽名算法存在著因計算方法本身同構(gòu)造成簽名易被偽造和計算時間長的弱點,因此實際對文件簽名前,需要對消息做MD5變換。MD5函數(shù)是一種單向散列函數(shù),它將任意長度的消息壓縮成128位的消息摘要。應(yīng)用MD5的單向性和抗碰撞性,可以實現(xiàn)信息的完整性檢驗。
結(jié)論
數(shù)字簽名技術(shù)是信息安全領(lǐng)域的一項重要技術(shù),是實現(xiàn)信息安全傳輸?shù)闹匾侄沃?,可以確保數(shù)據(jù)的可靠性、保密性、完整性和不可否認(rèn)性。本文介紹了數(shù)字簽名技術(shù),并綜合數(shù)字簽名技術(shù)及數(shù)據(jù)加密技術(shù)設(shè)計了單向的數(shù)據(jù)加密系統(tǒng),該系統(tǒng)簡單,安全性高,并保證了數(shù)據(jù)的完整性、不可否認(rèn)性等。
參考文獻
[1]梁棟.Java加密與解密的藝術(shù)[M].北京:機械工業(yè)出版社,2010.
[2]白娟,周林.數(shù)字簽名技術(shù)及在Java中的一種實現(xiàn)[M].微計算機信息.2004年第20卷第8期.
[3]孟艷紅,王育欣,倪天予.數(shù)據(jù)加密系統(tǒng)的設(shè)計與實現(xiàn)[J]. 沈陽工業(yè)大學(xué)學(xué)報. 2007年6月第29卷第3期.
[4]潘瑜.計算機網(wǎng)絡(luò)安全技術(shù)[M].北京:科學(xué)出版社,2007.
看了“2017年數(shù)字簽名技術(shù)論文”的人還看: