數(shù)字簽名培漏,就是通過在數(shù)據(jù)單元上附加數(shù)據(jù),或?qū)?shù)據(jù)單元進行秘密變換畸悬,從而使接收者可以確認數(shù)據(jù)來源和完整性珊佣。簡單說來咒锻,數(shù)字簽名是防止他人對傳輸?shù)奈募M行破壞,以及確定發(fā)信人的身份的手段蒿辙。
目前的數(shù)字簽名是建立在公共密鑰體制基礎(chǔ)上敦捧,它是公用密鑰加密技術(shù)的另一類應(yīng)用兢卵。它的主要方式是:報文的發(fā)送方從報文文本中生成一個128位的散列值(又稱報文摘要,數(shù)字指紋)甜奄。發(fā)送方用自己的私人密鑰對這個散列值進行加密來形成發(fā)送方的數(shù)字簽名课兄。然后晨继,這個數(shù)字簽名將作為報文的附件和報文一起發(fā)送給報文的接收方。報文的接收方首先從接收到的原始報文中計算出128位的散列值蜒茄,接著再用發(fā)送方的公用密鑰來對報文附加的數(shù)字簽名進行解密。如果兩個散列值相同玩祟、那么接收方就能確認該數(shù)字簽名是發(fā)送方的空扎。通過數(shù)字簽名能夠?qū)崿F(xiàn)對原始報文的鑒別润讥。
采用數(shù)字簽名转锈,能確認以下兩點:
第一象对,信息是由簽名者發(fā)送的勒魔;
第二菇曲,信息自簽發(fā)后到收到為止未曾作過任何修改。這樣數(shù)字簽名就可用來防止電子信息因易被修改而有人作偽常潮,或冒用別人名義發(fā)送信息弟胀『笆剑或發(fā)出(收到)信件后又加以否認等情況發(fā)生孵户。
應(yīng)用廣泛的數(shù)字簽名方法主要有三種,即:RSA簽名岔留、DSS簽名和Hash簽名夏哭。
這三種算法可單獨使用,也可綜合在一起使用献联。用RSA或其它公開密鑰密碼算法的最大方便是沒有密鑰分配問題(網(wǎng)絡(luò)越復(fù)雜竖配、網(wǎng)絡(luò)用戶越多,其優(yōu)點越明顯)里逆。因為公開密鑰加密使用兩個不同的密鑰进胯,其中有一個是公開的,另一個是保密的原押。公開密鑰可以保存在系統(tǒng)目錄內(nèi)盯漂、未加密的電子郵件信息中亚隙、電話黃頁(商業(yè)電話)上或公告牌里,網(wǎng)上的任何用戶都可獲得公開密鑰羞延。而私有密鑰是用戶專用的入愧,由用戶本身持有,它可以對由公開密鑰加密信息進行解密旁赊。RSA算法中數(shù)字簽名技術(shù)實際上是通過一個哈希函數(shù)來實現(xiàn)的。數(shù)字簽名的特點是它代表了文件的特征离福,文件如果發(fā)生改變,數(shù)字簽名的值也將發(fā)生變化。不同的文件將得到不同的數(shù)字簽名笋除。DSS數(shù)字簽名是由美國國家標準化研究院和國家安全局共同開發(fā)的。由于它是由美國政府頒布實施的国拇,主要用于與美國政府做生意的公司也殖,其他公司則較少使用,它只是一個簽名系統(tǒng)捆毫,而且美國政府不提倡使用任何削弱政府竊聽能力的加密軟件,認為這才符合美國的國家利益濒憋。Hash簽名是最主要的數(shù)字簽名方法,也稱之為數(shù)字摘要法(Digital Digest)或數(shù)字指紋法(Digital Finger Print)遏插。它與RSA數(shù)字簽名是單獨的簽名不同胳嘲,該數(shù)字簽名方法是將數(shù)字簽名與要發(fā)送的信息緊密聯(lián)系在一起颜屠,它更適合于電子商務(wù)活動。
對電子文件進行數(shù)字簽名并在網(wǎng)上傳輸粗井,其技術(shù)實現(xiàn)過程大致如下:首先要在網(wǎng)上進行身份認證,然后再進行簽名胆剧,最后是對簽名的驗證。
1. 認證
PKI提供的服務(wù)首先是認證,即身份識別與鑒別匿垄,確認實體即為自己所聲明的實體。認證的前提是甲乙雙方都具有第三方CA所簽發(fā)的證書,認證分單向認證和雙向認證铝条。
(1)單向認證是甲乙雙方在網(wǎng)上通信時,甲只需要認證乙的身份即可。這時甲需要獲取乙的證書莹妒,獲取的方式有兩種绰上,一種是在通信時乙直接將證書傳送給甲渴邦,另一種是甲向CA的目錄服務(wù)器查詢索取谋梭。甲獲得乙的證書后,首先用CA的根證書公鑰驗證該證書的簽名,驗證通過說明該證書是第三方CA簽發(fā)的有效證書。然后檢查證書的有效期及檢查該證書是否已被作廢(LRC檢查)而進入黑名單。
(2)雙向認證。雙向認證是甲乙雙方在網(wǎng)上通信時面徽,甲不但要認證乙的身份织阳,乙也要認證甲的身份碱璃。其認證過程與單向認證過程相同谐丢。
2. 數(shù)字簽名與驗證過程
網(wǎng)上通信的雙方历极,在互相認證身份之后锄列,即可發(fā)送簽名的數(shù)據(jù)電文克婶。數(shù)字簽名的全過程分兩大部分,即簽名與驗證。即發(fā)方將原文用哈希算法求得數(shù)字摘要,用簽名私鑰對數(shù)字摘要加密得數(shù)字簽名,發(fā)方將原文與數(shù)字簽名一起發(fā)送給接受方;收方驗證簽名,即用發(fā)方公鑰解密數(shù)字簽名,得出數(shù)字摘要千诬;收方將原文采用同樣哈希算法又得一新的數(shù)字摘要泵三,將兩個數(shù)字摘要進行比較敞映,如果二者匹配,說明經(jīng)數(shù)字簽名的電子文件傳輸成功。
數(shù)字簽名原理中定義的是對原文做數(shù)字摘要和簽名并傳輸原文,在很多場合傳輸?shù)脑氖且蟊C艿模髮υ倪M行加密的數(shù)字簽名方法如何實現(xiàn)?這里就要涉及到“數(shù)字信封”的概念。“電子信封”基本原理是將原文用對稱密鑰加密傳輸纺腊,而將對稱密鑰用收方公鑰加密發(fā)送給對方。收方收到電子信封,用自己的私鑰解密信封,取出對稱密鑰解密得原文。其詳細過程如下:
(1) 發(fā)方A將原文信息進行哈希運算,得一哈希值即數(shù)字摘要MD;
(2) 發(fā)方A用自己的私鑰PVA,采用非對稱RSA算法,對數(shù)字摘要MD進行加密,即得數(shù)字簽名DS;
(3) 發(fā)方A用對稱算法DES的對稱密鑰SK對原文信息旗芬、數(shù)字簽名SD及發(fā)方A證書的公鑰PBA采用對稱算法加密辆它,得加密信息E飒筑;
(4) 發(fā)方用收方B的公鑰PBB著瓶,采用RSA算法對對稱密鑰SK加密余蟹,形成數(shù)字信封DE葵孤,就好像將對稱密鑰SK裝到了一個用收方公鑰加密的信封里宰啦;
(5) 發(fā)方A將加密信息E和數(shù)字信封DE一起發(fā)送給收方B漓柑;
(6) 收方B接受到數(shù)字信封DE后谚殊,首先用自己的私鑰PVB解密數(shù)字信封剿干,取出對稱密鑰SK榜轿;
(7) 收方B用對稱密鑰SK通過DES算法解密加密信息E飞傀,還原出原文信息幢痘、數(shù)字簽名SD及發(fā)方A證書的公鑰PBA脑沿;
(8) 收方B驗證數(shù)字簽名溶弟,先用發(fā)方A的公鑰解密數(shù)字簽名得數(shù)字摘要MD擒权;
(9) 收方B同時將原文信息用同樣的哈希運算,求得一個新的數(shù)字摘要MD’;
(10)將兩個數(shù)字摘要MD和MD’進行比較,驗證原文是否被修改捌议。如果二者相等檬姥,說明數(shù)據(jù)沒有被篡改秉犹,是保密傳輸?shù)脑Ю停灻钦鎸嵉模环駝t拒絕該簽名。
這樣就做到了敏感信息在數(shù)字簽名的傳輸中不被篡改踏揣,未經(jīng)認證和授權(quán)的人彰亥,看不見原數(shù)據(jù)废酷,起到了在數(shù)字簽名傳輸中對敏感數(shù)據(jù)的保密作用。