數(shù)字簽名主要經(jīng)過以下幾個過程: 信息發(fā)送者使用一單向散列函數(shù)(HASH函數(shù))對信息生成信息摘要; 信息發(fā)送者使用自己的私鑰簽名信息摘要; 信息發(fā)送者把信息本身和已簽名的信息摘要一起發(fā)送出去; 信息接收者通過使用與信息發(fā)送者使用的同一個單向散列函數(shù)(HASH函數(shù))對接收的信息本身生成新的信息摘要,再使用信息發(fā)送者的公鑰對信息摘要進行驗證,以確認信息發(fā)送者的身 份和信息是否被修改過。
數(shù)字加密主要經(jīng)過以下幾個過程: 當信息發(fā)送者需要發(fā)送信息時,首先生成一個對稱密鑰,用該對稱密鑰加密要發(fā)送的報文; 信息發(fā)送者用信息接收者的公鑰加密上述對稱密鑰; 信息發(fā)送者將第一步和第二步的結(jié)果結(jié)合在一起傳給信息接收者,稱為數(shù)字信封; 信息接收者使用自己的私鑰解密被加密的對稱密鑰,再用此對稱密鑰解密被發(fā)送方加密的密文,得到真正的原文。 數(shù)字簽名和數(shù)字加密的過程雖然都使用公開密鑰體系,但實現(xiàn)的過程正好相反,使用的密鑰對也不同。
數(shù)字簽名使用的是發(fā)送方的密鑰對,發(fā)送方用自己的私有密鑰進行加密,接收方用發(fā)送方的公開密鑰進行解密,這是一個一對多的關(guān)系,任何擁有發(fā)送方公開密鑰的人都可以驗證數(shù)字簽名的正確性。 數(shù)字加密則使用的是接收方的密鑰對,這是多對一的關(guān)系,任何知道接收方公開密鑰的人都可以向接收方發(fā)送加密信息,只有唯一擁有接收方私有密鑰的人才能對信息解密。
另外,數(shù)字簽名只采用了非對稱密鑰加密算法,它能保證發(fā)送信息的完整性、身份認證和不可否認性,而數(shù)字加密采用了對稱密鑰加密算法和非對稱密鑰加密算法相結(jié)合的方法,它能保證發(fā)送信息保密性。
簽字:
1、安裝驅(qū)動程序
2、在已下載的安裝程序上點擊右鍵,選擇“屬性”
3、選擇“數(shù)字簽名”標簽,可看到該文件由目的公司簽名。
驗證:
1、在已下載的安裝程序上點擊右鍵,選擇“屬性”
2、點擊“詳細信息”,如軟件未被改動,則證書的狀態(tài)為“該數(shù)字簽名正常”;
3、點擊“查看證書”,可看到證書相關(guān)信息。
4、如果文件被非法篡改,在文件屬性里,“數(shù)字簽名”一欄仍顯示該文件有簽名,但詳細信息里會提示“該數(shù)字簽名無效”,查看證書里會提示“沒有驗證對象的數(shù)字簽名”,這時請立即刪除安裝程序并重新下載,然后重復以上的驗證步驟。
常用API java。
security。KeyPairGenerator 密鑰生成器類public static KeyPairGenerator getInstance(String algorithm) throws 以指定的算法返回一個KeyPairGenerator 對象參數(shù): algorithm 算法名。
如:"DSA","RSA"public void initialize(int keysize)以指定的長度初始化KeyPairGenerator對象,如果沒有初始化系統(tǒng)以1024長度默認設(shè)置參數(shù):keysize 算法位長。其范圍必須在 512 到 1024 之間,且必須為 64 的倍數(shù)public void initialize(int keysize, SecureRandom random)以指定的長度初始化和隨機發(fā)生器初始化KeyPairGenerator對象參數(shù):keysize 算法位長。
其范圍必須在 512 到 1024 之間,且必須為 64 的倍數(shù)random 一個隨機位的來源(對于initialize(int keysize)使用了默認隨機器public abstract KeyPair generateKeyPair()產(chǎn)生新密鑰對java。 security。
KeyPair 密鑰對類public PrivateKey getPrivate()返回私鑰public PublicKey getPublic()返回公鑰java。security。
Signature 簽名類public static Signature getInstance(String algorithm) throws 返回一個指定算法的Signature對象參數(shù) algorithm 如:"DSA"public final void initSign(PrivateKey privateKey)throws InvalidKeyException用指定的私鑰初始化參數(shù):privateKey 所進行簽名時用的私鑰public final void update(byte data)throws final void update(byte[] data)throws final void update(byte[] data, int off, int len)throws SignatureException添加要簽名的信息public final byte[] sign()throws SignatureException返回簽名的數(shù)組,前提是initSign和updatepublic final void initVerify(PublicKey publicKey)throws InvalidKeyException用指定的公鑰初始化參數(shù):publicKey 驗證時用的公鑰public final boolean verify(byte[] signature)throws SignatureException驗證簽名是否有效,前提是已經(jīng)initVerify初始化參數(shù): signature 簽名數(shù)組 。
公鑰密碼技術(shù)核心思想是使用公鑰密碼算法的用戶有一對密鑰,其中一個稱謂私鑰,用于解密消息或?qū)ο⑦M行數(shù)字簽名,由用戶自己使用,需妥善保存,防止泄密;另一稱為公鑰,公布在公開位置,由其他人使用,其作用是進行加密或驗證數(shù)字簽名。
假設(shè)用戶A要使用公鑰密碼技術(shù)將消息M加密傳給用戶B,用戶A首先從公開位置查詢到用戶B的公鑰PubKeyB,并用該公鑰加密消息M得到密文PubKeyB(M),然后,用戶A將密文PubKeyB(M)發(fā)送給用戶B。當用戶B收到密文PubKeyB(M)后,利用自己的私鑰PriKeyB解密密文PubKey(M)就可以得到消息M。
對于以上過程,因為消息M是以密文形式傳輸?shù)模€密碼算法保證了只有擁有私鑰PriKeyB才能解密密文,所以,任何別有用心的人都無法通過網(wǎng)絡(luò)竊聽獲取明文消息M。從上述過程可以看出,利用公鑰密碼技術(shù)傳遞消息之前用戶A與用戶B不必通過秘密渠道協(xié)商加密密鑰,用戶A只需在公開位置查詢到用戶B的公鑰就可以了。
公鑰密碼技術(shù)的這一優(yōu)勢是傳統(tǒng)對稱密碼技術(shù)無法比擬的,它不要求通信雙方在進行通信之前通過秘密渠道協(xié)商加密密鑰。但采用公鑰密碼技術(shù)加密信息的速度遠遠低于采用傳統(tǒng)對稱密碼技術(shù)加密信息速度。
因而,在應(yīng)用中經(jīng)常首先利用公鑰密碼技術(shù)傳遞傳統(tǒng)對稱密碼技術(shù)所需要的加密密鑰,然后再使用傳統(tǒng)對稱密碼技術(shù)加密所需傳遞的信息。 公鑰密碼技術(shù)的另一個優(yōu)勢就是消息發(fā)送者可以利用自己的私鑰對發(fā)送消息進行數(shù)字簽名,而消息接收者使用發(fā)送者的公鑰可以驗證發(fā)送者所作的數(shù)字簽名。
通過驗證數(shù)字簽名可以保證消息來源的真實性,也可以防止發(fā)生糾紛時消息發(fā)送者對發(fā)送過的消息進行抵賴。 另外,數(shù)字簽名還可以保證數(shù)據(jù)的完整性,因為消息篡改者無法為篡改后的消息消息偽造原始發(fā)送者所要做的數(shù)字簽名。
在實際應(yīng)用中,每一個用戶通常有兩對密鑰:一對專門用來進行加解密,另一對專門用戶進行數(shù)字簽名與驗證數(shù)字簽名。對應(yīng)的公鑰分別稱為加密公鑰,驗證簽名公鑰,對應(yīng)的私鑰分別稱為解密私鑰,數(shù)字簽名私鑰。
根據(jù)公鑰技術(shù)的特點,用戶的公鑰是存放在公開位置的,需要使用時可以到公開位置查詢,這樣可以大大簡化對密鑰的管理。然而利用公鑰密碼技術(shù)實現(xiàn)數(shù)據(jù)傳輸安全并不意味著不存在密鑰管理問題。
如果用戶B存放在公開位置的公鑰被不法用戶D替換為自己的公鑰,用戶A使用用戶B的公鑰加密信息,不法信息使用自己的私鑰就可以解密通過網(wǎng)絡(luò)傳輸?shù)拿芪摹?因此在利用公鑰密碼技術(shù)實現(xiàn)數(shù)據(jù)的安全傳輸時,必須采取措施讓用戶確信自己使用的公鑰確實是它所期望的用戶的公鑰。
利用公鑰基礎(chǔ)設(shè)施PKI可以使用用戶能夠判斷自己所使用的公鑰正是所期望的公鑰。 二、認證機構(gòu)CA與公鑰證書 根據(jù)公鑰密碼技術(shù)原理,要想在Internet上進行安全的數(shù)據(jù)傳輸,必須保證其中一方擁有另一方的公鑰。
如何在廣域網(wǎng)上安全得到對方的公鑰,以防止假日攻擊,止前主要依賴認證機構(gòu)CA來實現(xiàn)。認證機構(gòu)CA是可信的權(quán)威機構(gòu),其權(quán)威性首先體現(xiàn)在它的所有用戶都知道其驗證簽名公鑰及加密公鑰。
CA的用戶U首先在CA注冊,并提交自己的公鑰。當注冊成功,也就是CA驗證了用戶U身份的真實性后,CA就將用戶名U,用戶的公鑰及另外一些用戶屬性放在一個文本中,對所形成的文本進行數(shù)字簽名處理。
文本及CA對文本的簽名信息,就形成用戶A的公鑰證書。認證機構(gòu)CA作為可信權(quán)威機構(gòu)其可信性體現(xiàn)在CA能保證書中的用戶名與公鑰是致的,也就是說CA能保證基所簽署的標識為用戶A的證書中的公鑰一定是用戶A的,而且證書中的有關(guān)屬性是正確的。
有了CA,用戶擁有了公鑰證書,廣域網(wǎng)上方便快捷的安全的通信便成為了可能。 三、公鑰基礎(chǔ)設(shè)施的結(jié)構(gòu) 公鑰基礎(chǔ)設(shè)施系統(tǒng)通常包括認證機構(gòu)CA、證書與CPL數(shù)據(jù)存儲區(qū)和用戶三部分,其中用戶包括證書申請者與證書使用者,如圖1所示。
公鑰證書申請者首先要生成自己的公私鑰對,并將公鑰與自己的身份證明材料提交給認證機構(gòu)CA。 認證機構(gòu)CA通過用戶提供的身份證明材料,驗證用戶的身份。
如果用戶提供的身份證明材料真實可信,認證機構(gòu)CA為用戶登記注冊,并使用自己的私鑰為用戶簽發(fā)公鑰證書。公鑰證書的結(jié)構(gòu)如圖2所示,從中可以看出公鑰證書通常包括三部分內(nèi)容:需要簽名部分、簽名算法部分和簽名值部分。
需要簽名部分包括證書版本號,序列號,持有者(證書主體)的公鑰,有效期及其他相關(guān)信息。 簽名算法部分的內(nèi)容標識CA對證書進行數(shù)字簽名所使用的公鑰簽名算法。
簽名值部分包含的是CA使用簽名算法部分所標識的簽名算法,使用自己的簽名私鑰對需要簽名部分進行數(shù)字簽名的簽名結(jié)果。 認證機構(gòu)CA將其簽發(fā)的用戶公鑰證書公布在公開位置,如圖1中的數(shù)據(jù)存儲區(qū)。
從圖1中可以看出,數(shù)據(jù)存儲區(qū)中除了存放用戶公鑰證書之外,還存放證書吊銷列表CRL(Certificate Revocation List),它列出了由于種種原因而吊銷了的證書。 當用戶A要使用用戶B的公鑰進行安全數(shù)據(jù)傳輸時,用戶A首先在公鑰基礎(chǔ)設(shè)施的存儲區(qū)查詢用戶B的公鑰證書,然后使用認證機構(gòu)CA的驗證簽名公鑰驗證證書中CA的數(shù)字簽名。
首先應(yīng)該知道,什么是數(shù)字簽名.簡單地說,所謂數(shù)字簽名就是附加在數(shù)據(jù)單元上的一些數(shù)據(jù),或是對數(shù)據(jù)單元所作的密碼變換。
這種數(shù)據(jù)或變換允許數(shù)據(jù)單元的接收者用以確認數(shù)據(jù)單元的來源和數(shù)據(jù)單元的完整性并保護數(shù)據(jù),防止被人(例如接收者)進行偽造。它是對電子形式的消息進行簽名的一種方法,一個簽名消息能在一個通信網(wǎng)絡(luò)中傳輸。
基于公鑰密碼體制和私鑰密碼體制都可以獲得數(shù)字簽名,目前主要是基于公鑰密碼體制的數(shù)字簽名。包括普通數(shù)字簽名和特殊數(shù)字簽名。
普通數(shù)字簽名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir數(shù)字簽名算法、Des/DSA,橢圓曲線數(shù)字簽名算法和有限自動機數(shù)字簽名算法等。特殊數(shù)字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有消息恢復功能的簽名等,它與具體應(yīng)用環(huán)境密切相關(guān)。
顯然,數(shù)字簽名的應(yīng)用涉及到法律問題,美國聯(lián)邦政府基于有限域上的離散對數(shù)問題制定了自己的數(shù)字簽名標準(DSS)。一些國家如法國和德國已經(jīng)制定了數(shù)字簽名法。
實現(xiàn)數(shù)字簽名有很多方法,目前數(shù)字簽名采用較多的是公鑰加密技術(shù),如基于RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。1994年美國標準與技術(shù)協(xié)會公布了數(shù)字簽名標準而使公鑰加密技術(shù)廣泛應(yīng)用。
公鑰加密系統(tǒng)采用的是非對稱加密算法。 目前的數(shù)字簽名是建立在公共密鑰體制基礎(chǔ)上,它是公用密鑰加密技術(shù)的另一類應(yīng)用。
它的主要方式是,報文的發(fā)送方從報文文本中生成一個128位的散列值(或報文摘要)。發(fā)送方用自己的私人密鑰對這個散列值進行加密來形成發(fā)送方的數(shù)字簽名。
然后,這個數(shù)字簽名將作為報文的附件和報文一起發(fā)送給報文的接收方。報文的接收方首先從接收到的原始報文中計算出128位的散列值(或報文摘要),接著再用發(fā)送方的公用密鑰來對報文附加的數(shù)字簽名進行解密。
如果兩個散列值相同、那么接收方就能確認該數(shù)字簽名是發(fā)送方的。通過數(shù)字簽名能夠?qū)崿F(xiàn)對原始報文的鑒別。
在書面文件上簽名是確認文件的一種手段,其作用有兩點:第一,因為自己的簽名難以否認,從而確認了文件已簽署這一事實;第二,因為簽名不易仿冒,從而確定了文件是真的這一事實。 數(shù)字簽名與書面文件簽名有相同之處,采用數(shù)字簽名,也能確認以下兩點:第一,信息是由簽名者發(fā)送的;第二,信息自簽發(fā)后到收到為止未曾作過任何修改。
這樣數(shù)字簽名就可用來防止電子信息因易被修改而有人作偽,或冒用別人名義發(fā)送信息。或發(fā)出(收到)信件后又加以否認等情況發(fā)生。
應(yīng)用廣泛的數(shù)字簽名方法主要有三種,即:RSA簽名、DSS簽名和Hash簽名。這三種算法可單獨使用,也可綜合在一起使用。
數(shù)字簽名是通過密碼算法對數(shù)據(jù)進行加、解密變換實現(xiàn)的,用DES算去、RSA算法都可實現(xiàn)數(shù)字簽名。但三種技術(shù)或多或少都有缺陷,或者沒有成熟的標準。
用RSA或其它公開密鑰密碼算法的最大方便是沒有密鑰分配問題(網(wǎng)絡(luò)越復雜、網(wǎng)絡(luò)用戶越多,其優(yōu)點越明顯)。因為公開密鑰加密使用兩個不同的密鑰,其中有一個是公開的,另一個是保密的。
公開密鑰可以保存在系統(tǒng)目錄內(nèi)、未加密的電子郵件信息中、電話黃頁(商業(yè)電話)上或公告牌里,網(wǎng)上的任何用戶都可獲得公開密鑰。而私有密鑰是用戶專用的,由用戶本身持有,它可以對由公開密鑰加密信息進行解密。
RSA算法中數(shù)字簽名技術(shù)實際上是通過一個哈希函數(shù)來實現(xiàn)的。數(shù)字簽名的特點是它代表了文件的特征,文件如果發(fā)生改變,數(shù)字簽名的值也將發(fā)生變化。
不同的文件將得到不同的數(shù)字簽名。一個最簡單的哈希函數(shù)是把文件的二進制碼相累加,取最后的若干位。
哈希函數(shù)對發(fā)送數(shù)據(jù)的雙方都是公開的只有加入數(shù)字簽名及驗證才能真正實現(xiàn)在公開網(wǎng)絡(luò)上的安全傳輸。加入數(shù)字簽名和驗證的文件傳輸過程如下: 發(fā)送方首先用哈希函數(shù)從原文得到數(shù)字簽名,然后采用公開密鑰體系用發(fā)達方的私有密鑰對數(shù)字簽名進行加密,并把加密后的數(shù)字簽名附加在要發(fā)送的原文后面; 發(fā)送一方選擇一個秘密密鑰對文件進行加密,并把加密后的文件通過網(wǎng)絡(luò)傳輸?shù)浇邮辗剑?發(fā)送方用接收方的公開密鑰對密秘密鑰進行加密,并通過網(wǎng)絡(luò)把加密后的秘密密鑰傳輸?shù)浇邮辗剑?接受方使用自己的私有密鑰對密鑰信息進行解密,得到秘密密鑰的明文; 接收方用秘密密鑰對文件進行解密,得到經(jīng)過加密的數(shù)字簽名; 接收方用發(fā)送方的公開密鑰對數(shù)字簽名進行解密,得到數(shù)字簽名的明文; 接收方用得到的明文和哈希函數(shù)重新計算數(shù)字簽名,并與解密后的數(shù)字簽名進行對比。
如果兩個數(shù)字簽名是相同的,說明文件在傳輸過程中沒有被破壞。 如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進行解密時使用的是發(fā)送方的公開密鑰,只要第三方不知道發(fā)送方的私有密鑰,解密出來的數(shù)字簽名和經(jīng)過計算的數(shù)字簽名必然是不相同的。
這就提供了一個安全的確認發(fā)送方身份的方法。 安全的數(shù)字簽名使接收方可以得到保證:文件確實來自聲稱的發(fā)送方。
鑒于簽。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.768秒