




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第3章電子商務簽名技術3.1數(shù)字簽名概念3.2
RSA數(shù)字簽名3.3
DSS簽名3.4哈希簽名3.5幾種特殊數(shù)字簽名方法第3章電子商務簽名技術3.1數(shù)字簽名概念[本章要點]
數(shù)字簽名是與伴隨信息一起發(fā)送或與信息有一定邏輯關聯(lián)的數(shù)據(jù)項,用來確定信息的發(fā)送源,確認信息自簽名后未被修改過。數(shù)字簽名的方法包括基于RSA的方法、Hash簽名、美國數(shù)字簽名標準DSS以及橢圓曲線數(shù)字簽名算法(ECDSA)。此外,還介紹了在電子商務領域一些被廣泛應用的特殊數(shù)字簽名方法,如盲簽名、雙聯(lián)簽名、團體簽名、不可爭辯簽名、數(shù)字時間戳等。[本章要點]數(shù)字簽名是與伴隨信息一起發(fā)送或與信息有一3.1數(shù)字簽名概念3.1.1數(shù)字簽名概念3.1.2數(shù)字簽名使用模式3.1.3數(shù)字簽名的技術保障3.1.4數(shù)字簽名方案分類3.1.5數(shù)字簽名使用原理3.1數(shù)字簽名概念3.1.1數(shù)字簽名概念3.1.1數(shù)字簽名概念數(shù)字簽名與書面文件簽名有相同之處,采用數(shù)字簽名,也能確認以下兩點:第一,信息是由簽名者發(fā)送的;第二,信息自簽發(fā)后到收到為止未曾作過任何修改。這樣數(shù)字簽名就可用來防止電子信息因易被修改而有人作偽,或冒用別人名義發(fā)送信息?;虬l(fā)出(收到)信件后又加以否認等情況發(fā)生。3.1.1數(shù)字簽名概念數(shù)字簽名與書面文件簽名有相同之處,3.1.1數(shù)字簽名概念在電子商務安全保密系統(tǒng)中,數(shù)字簽名技術有著特別重要的地位,在電子商務安全服務中的源鑒別、完整性服務、不可否認服務中,都要用到數(shù)字簽名技術。在電子商務中,完善的數(shù)字簽名應具備簽字方不能抵賴、他人不能偽造、在公證人面前能夠驗證真?zhèn)蔚哪芰?。?shù)字簽名機制提供了一種鑒別方法,普遍用于銀行、電子貿(mào)易等,以解決如下問題:3.1.1數(shù)字簽名概念在電子商務安全保密系統(tǒng)中,數(shù)字簽名3.1.1數(shù)字簽名概念(1)身份認證。收方通過發(fā)方的電子簽名才能夠確認發(fā)方的確切身份,但無法偽造。(2)保密。雙方的通信內(nèi)容高度保密,第三方無從知曉。(3)完整性。通信的內(nèi)容無法被篡改。(4)不可抵賴。發(fā)方一旦將電子簽字的信息發(fā)出,就不能再否認。3.1.1數(shù)字簽名概念(1)身份認證。收方通過發(fā)方的電子3.1.1數(shù)字簽名概念電子交易的安全依賴于技術上采用適當?shù)陌踩胧?,如電子簽名技術,以確認使用人的身份,確保信息保密及完整無缺,和保障已進行的交易不被推翻。但是,數(shù)字簽名技術在法律上的地位卻不明確。數(shù)字簽名就需要人們對它的“簽名”功能賦予合法的法律地位。聯(lián)合國《電子商務示范法》對電子記錄的法律問題提出了一系列解決方案,分別就數(shù)據(jù)電文的法律承認、書面性、簽名、原件、證據(jù)性、留存等做出了原則性的規(guī)定。3.1.1數(shù)字簽名概念電子交易的安全依賴于技術上采用適當3.1.2數(shù)字簽名使用模式目前使用的電子簽名主要有三種模式:(1)智慧卡式。(2)密碼式。(3)生物測定式。3.1.2數(shù)字簽名使用模式目前使用的電子簽名主要有三種模式:3.1.3數(shù)字簽名的技術保障
普遍使用的電子簽名技術是基于PKI的數(shù)字簽名技術,PKI技術的詳細介紹請參看本教材第8章,數(shù)字簽名的基礎保障主要有以下四個方面:1.認證機構CA2.數(shù)字證書3.公鑰密碼技術4.數(shù)字摘要3.1.3數(shù)字簽名的技術保障普遍使用的電子簽名技3.1.4數(shù)字簽名方案分類
應用廣泛的數(shù)字簽名方法主要有三種,即:RSA簽名、DSS簽名和Hash簽名。此外,也有使用對稱密碼算法實現(xiàn)數(shù)字簽名。這四種算法可單獨使用,也可綜合在一起使用。數(shù)字簽名是通過密碼算法對數(shù)據(jù)進行加、解密變換實現(xiàn)的,用DES算去、RSA算法都可實現(xiàn)數(shù)字簽名。但三種技術或多或少都有缺陷,或者沒有成熟的標準。3.1.4數(shù)字簽名方案分類應用廣泛的數(shù)字簽名方法主1.RSA簽名2.DSS簽名3.Hash簽名4.對稱密碼算法簽名3.1.4數(shù)字簽名方案分類1.RSA簽名3.1.4數(shù)字簽名方案分類安全的數(shù)字簽名使接收方可以得到保證:文件確實來自聲稱的發(fā)送方。鑒于簽名私鑰只有發(fā)送方自己保存,他人無法做一樣的數(shù)字簽名,因此他不能否認他參與了交易。數(shù)字簽名的加密解密過程和私有密鑰的加密解密過程正好相反,使用的密鑰對也不同。數(shù)字簽名使用的是發(fā)送方的密鑰對,發(fā)送方用自己的私有密鑰進行加密,接收方用發(fā)送方的公開密鑰進行解密。這是一個一對多的關系:任何擁有發(fā)送方公開密鑰的人都可以驗證數(shù)字簽名的正確性,而私有密鑰的加密解密則使用的是接收方的密鑰對,這是多對一的關系:任何知道接收方公開密鑰的人都可以向接收方發(fā)送加密信息,只有唯一擁有接收方私有密鑰的人才能對信息解密。在實用過程中,通常一個用戶擁有兩個密鑰對,另一個密鑰對用來對數(shù)字簽名進行加密解密,一個密鑰對用來對私有密鑰進行加密解密。這種方式提供了更高的安全性。在實際運用中,直接用公開密碼的私鑰對文件進行簽字并不完全可行,如果需要對相當長的文件進行簽名認證速度就太慢。通常的解決辦法是引入可公開的密碼。3.1.4數(shù)字簽名使用原理安全的數(shù)字簽名使接收方可以得到保證:文件確實來自聲稱的發(fā)送方3.2
RSA數(shù)字簽名
RSA方法的加密算法和解密算法互為逆變換,所以可用于數(shù)字簽名系統(tǒng)。RSA是最流行的數(shù)字簽名方法,許多產(chǎn)品內(nèi)核中都有RSA的軟件和類庫。RSA算法在第2章已有詳細介紹。3.2RSA數(shù)字簽名RSA方法的加密算法和解密算法3.2RSA數(shù)字簽名RSA算法中數(shù)字簽名技術實際上是通過一個哈希函數(shù)來實現(xiàn)的。數(shù)字簽名的特點是它代表了文件的特征,文件如果發(fā)生改變,數(shù)字簽名的值也將發(fā)生變化。不同的文件將得到不同的數(shù)字簽名。一個最簡單的哈希函數(shù)是把文件的二進制碼相累加,取最后的若干位。哈希函數(shù)對發(fā)送數(shù)據(jù)的雙方都是公開的。
用RSA或其它公開密鑰密碼算法的最大方便是沒有密鑰分配問題(網(wǎng)絡越復雜、網(wǎng)絡用戶越多,其優(yōu)點越明顯)。因為公開密鑰加密使用兩個不同的密鑰,其中有一個是公開的,另一個是保密的。公開密鑰可以保存在系統(tǒng)目錄內(nèi)、未加密的電子郵件信息中、電話黃頁(商業(yè)電話)上或公告牌里,網(wǎng)上的任何用戶都可獲得公開密鑰。而私有密鑰是用戶專用的,由用戶本身持有,它可以對由公開密鑰加密信息進行解密。
3.2RSA數(shù)字簽名RSA算法中數(shù)字簽名技術實際上是通過一3.2RSA數(shù)字簽名RSA方法的加密算法和解密算法互為逆變換,所以可用于數(shù)字簽名系統(tǒng)。假定用戶的公開鑰是(nA,eA),秘密鑰是dA,加密和解密變換分別為EA和DA,則A發(fā)送的簽名后的消息是M′≡DA(M)≡M^dA(modnA)。收到M′后的B,可以用A的公開變換EA恢復M:EA≡EA(M)≡M^(dAeA)(modnA)因為只有A知道dA,所以簽名不可能偽造,并且A與B之間的任何爭議都可以通過仲裁加以解決。在具體環(huán)境中,RSA算法中數(shù)字簽名技術實際上是通過一個哈希函數(shù)來實現(xiàn)的,其原理如圖3-1所示。3.2RSA數(shù)字簽名RSA方法的加密算法和解密算法互為逆變3.2RSA數(shù)字簽名dAeA圖3-1RSA簽名原理3.2RSA數(shù)字簽名dAeA圖3-1RSA簽名原理3.2RSA數(shù)字簽名其操作步驟如下:①使用散列編碼將發(fā)送文件加密產(chǎn)生固定長的數(shù)字摘要;②發(fā)送方用自己的專用密鑰對摘要再加密,形成數(shù)字簽名;③將原文和加密的摘要同時傳給對方;④接收方用發(fā)送方的公共密鑰對摘要解密,同時對收到的文件用散列編碼加密產(chǎn)生同一摘要;⑤將解密后的摘要和收到的文件在接受方重新加密產(chǎn)生的摘要相互對比,如果兩者一致,則說明在傳送過程中信息沒有破壞和篡改。否則,則說明信息已經(jīng)失去安全性和保密性。一個最簡單的哈希函數(shù)是把文件的二進制碼相累加,取最后的若干位。哈希函數(shù)對發(fā)送數(shù)據(jù)的雙方都是公開的。3.2RSA數(shù)字簽名其操作步驟如下:3.3DSS簽名
美國國家標準技術研究所已經(jīng)公布了聯(lián)邦信息處理標準FIPSPUB186,即所謂的數(shù)字簽名標準(DigitalSignatureStandard,DSS)。DSS利用了安全散列算法(SecureHashAlgrithm,SHA)并提出了一種新的數(shù)字簽名技術,即數(shù)字簽名算法(DigitalSignatureAlgrithm,DSA)。DSS最早發(fā)表于1991年,并根據(jù)公眾對該體制安全性擔心的反應在1993年進行了修改。1996年由進行了更進一步的小修改。3.3DSS簽名美國國家標準技術研究所已經(jīng)公布3.3.1DSS基本原理
DSA算法設計用來提供唯一的數(shù)字簽名函數(shù),不像RSA還可用作加密和密鑰交換。DSS方法也利用了一個散列函數(shù)。散列碼和一個用作這個特殊簽名的隨機數(shù)K作為簽名函數(shù)的輸入。簽名函數(shù)還依賴于發(fā)方的私有密鑰(KRa)和一個對許多通信原則來說是知名的參數(shù)集。我們可以認為這個集合組成一個全局公開密鑰(KUG)。結果是簽名由兩個分量組成,記為s和r。在接收端,將計算所收到報文的散列碼,該散列碼和簽名將作為驗證函數(shù)的輸入。驗證函數(shù)還依賴于全局公開密鑰和與發(fā)方私有密鑰配對的發(fā)方公開密鑰。如果簽名是有效的,驗證函數(shù)的輸出值就等于簽名分量r。簽名函數(shù)就是這樣的:只有發(fā)方用掌握的私有密鑰才能產(chǎn)生有效的簽名。3.3.1DSS基本原理
DSA算法設計用來提供唯一的數(shù)3.3.1DSS基本原理
圖3-2DSS原理DSA簽名和RSA簽名一樣不存在哈希簽名的局限性,因為他們都采用了公鑰算法,即每個人都有兩個密鑰,其中一個產(chǎn)生簽名,并秘密保存,另一個公開,用來驗證簽名。3.3.1DSS基本原理
3.3.2數(shù)字簽名算法數(shù)字簽名算法DSA是Schnorr和ElGamal簽名算法的變種,DSA是基于離散對數(shù)的難度。1.DSA算法參數(shù)說明DSA算法中應用了下述參數(shù):p:Lbits長的素數(shù)。L是64的倍數(shù),范圍是512到1024;q:p-1的160bits的素因子;g:g=hp-1modp,h滿足h<p-1,h(p-1)/qmodp>1;x:1<x<q,x為私鑰;y:y=gxmodp
,(p,q,g,y)為公鑰;H(x):單向Hash函數(shù)。在DSS中選用安全散列算法(SecureHashAlgorithm,SHA)。p,q,g:可由一組用戶共享,但在實際應用中,使用公共模數(shù)可能會帶來一定的威脅。3.3.2數(shù)字簽名算法數(shù)字簽名算法DSA是Schnorr和E3.3.2數(shù)字簽名算法2.簽名及驗證協(xié)議簽名及驗證協(xié)議如下:(1)P產(chǎn)生隨機數(shù)k,k<q;(2)P計算r=(gkmodp)modq和s=(k-1(H(m)+xr))modq簽名結果是(m,r,s)。(3)驗證時計算w=s-1modq計算u1=(H(m)w)modq計算u2=(rw)modq計算v=((gu1yu2)modp)modq若v=r,則認為簽名有效。3.3.2數(shù)字簽名算法2.簽名及驗證協(xié)議3.3.2數(shù)字簽名算法DSA是基于整數(shù)有限域離散對數(shù)難題的,其安全性與RSA相比差不多。DSA的一個重要特點是兩個素數(shù)公開,這樣,當使用別人的p和q時,即使不知道私鑰,也能確認它們是否是隨機產(chǎn)生的。而RSA算法卻作不到。圖3-3描述了DSS的簽名和驗證函數(shù)。3.3.2數(shù)字簽名算法DSA是基于整數(shù)有限域離散對數(shù)難題的,3.4哈希簽名Hash簽名是利用哈希函數(shù)(Hashfunction,也叫摘要函數(shù),散列函數(shù))進行數(shù)字簽名的一種方法。Hash簽名是當前最主要的數(shù)字簽名方法之一,也稱之為數(shù)字摘要法(DigitalDigest)或數(shù)字指紋法。它與RSA數(shù)字簽名是單獨的簽名不同,該數(shù)字簽名方法是將數(shù)字簽名與要發(fā)送的信息緊密聯(lián)系在一起,它更適合于電子商務活動。將一個商務合同的個體內(nèi)容與簽名結合在一起,比合同和簽名分開傳遞,更增加了可信度和安全性。3.4哈希簽名Hash簽名是利用哈希函數(shù)(Hashfu3.4哈希簽名Hash函數(shù)與加密函數(shù)類似。事實上有些Hash函數(shù)就是稍加修改的加密函數(shù)。大多數(shù)函數(shù)的作法是每次取一個數(shù)據(jù)塊,對數(shù)據(jù)塊的每一位用一個簡單的編碼函數(shù)進行編碼。Hash算法的工作方式類似通信協(xié)議中的校驗和;發(fā)信方將一個數(shù)據(jù)包的所有字節(jié)加起來,將和添加在包上;收信方執(zhí)行同樣的運算并比較兩個和,以決定是否被正確地傳輸。校驗算法的主要作用是根據(jù)報文內(nèi)容通過單向的Hash算法計算出一個校驗來,如果報文被改動或增減,無法根據(jù)同樣的算法算出相同的校驗來。一般在實際應用中,對于只有數(shù)據(jù)完整性要求的數(shù)據(jù)只對其校驗進行加密就可以了,這樣能夠大大減少數(shù)據(jù)加密的工作量。3.4哈希簽名Hash函數(shù)與加密函數(shù)類似。事實上有些Ha一個Hash函數(shù)滿足:①H可以作用于一個任意長度的數(shù)據(jù)塊;②H產(chǎn)生一個固定長度的輸出;③H(x)對任意給定的x計算相對容易,無論是軟件還是硬件實現(xiàn);④對任意給定碼h,找到x滿足H(x)=h具有計算不可行性;⑤對任意給定的數(shù)據(jù)塊x,找到滿足H(y)=H(x)的yx具有計算不可行性;⑥找到任意數(shù)據(jù)對(x,y),滿足H(x)=H(y)是計算不可行的。3.4哈希簽名一個Hash函數(shù)滿足:3.4哈希簽名單向Hash函數(shù)是在一個方向上工作的Hash函數(shù),從預映射的值很容易計算其Hash值,但要產(chǎn)生一個預映射的值使其Hash值等于一個特殊值卻是很難的。好的hash函數(shù)也是無沖突的:難于產(chǎn)生兩個預映射的值,使他們的hash值相同。Hash函數(shù)是公開的,對處理過程不用保密。單向hash函數(shù)的安全性是它的單向性。無論怎么看,輸出不依賴于輸入。預映射單個比特的改變,平均而言,將引起hash值中一半的比特改變。已知一個hash值,要找到預映射的值,使它的hash值等于已知的hash值在計算上是不可行的。3.4哈希簽名單向Hash函數(shù)是在一個方向上工作的Hash函數(shù),從預映射的利用散列函數(shù)進行數(shù)字簽名和驗證的文件傳輸過程如下:⑴發(fā)送方首先用哈希函數(shù)從原文得到摘要值;⑵發(fā)送方采用發(fā)送方的私有密鑰對摘要進行加密,并把加密后的摘要附加在要發(fā)送的原文后面一起發(fā)送給接收方;⑶接收方用發(fā)送方的公開密鑰對數(shù)字摘要進行解密,得到數(shù)字摘要的明文;⑷接收方用得到的原文和哈希函數(shù)重新計算數(shù)字簽名,并與解密后的數(shù)字摘要進行對比。如果兩個數(shù)字摘要是相同的,說明文件在傳輸過程中沒有被破壞。上述流程可用圖3-4表示。3.4.1哈希簽名基本原理利用散列函數(shù)進行數(shù)字簽名和驗證的文件傳輸過程如下:3.4.1如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進行解密時使用的是發(fā)送方的公開密鑰,只要第三方不知道發(fā)送方的私有密鑰,解密出來的數(shù)字摘要和經(jīng)過計算的數(shù)字摘要必然是不相同的。這就提供了一個安全的確認發(fā)送方身份的方法。3.4.1哈希簽名基本原理如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進行解密時使用的是發(fā)送方的公開密鑰,只要第三方不知道發(fā)送方的私有密鑰,解密出來的數(shù)字摘要和經(jīng)過計算的數(shù)字摘要必然是不相同的。這就提供了一個安全的確認發(fā)送方身份的方法。3.4.2安全哈希算法如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進安全Hash算法SHA主要適用于數(shù)字簽名標準DSS里面定義的數(shù)字簽名算法DSA。對于長度小于264bit的消息,SHA-1會產(chǎn)生一個160bit的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數(shù)據(jù)的完整性。在傳輸?shù)倪^程中,數(shù)據(jù)很可能會發(fā)生變化,那么這時候就會產(chǎn)生不同的消息摘要。SHA在1993年由美國國家標準和技術協(xié)會提出,并作為聯(lián)邦信息處理標準(FIPSPUB180)公布;1995年又發(fā)布了一個修訂版FIPSPUB180-1,通常稱之為SHA-1。SHA-1是基于MD4算法的,并且它的設計在很大程度上是模仿MD4的?,F(xiàn)在已成為公認的最安全的散列算法之一,并被廣泛使用。SHA-1,SHA-224,SHA-256,SHA-384和SHA-512都被需要安全散列算法的美國聯(lián)邦政府所應用,他們也使用其他的密碼算法和協(xié)定來保護敏感的未保密資料。FIPSPUB180-1也鼓勵私人或商業(yè)組織使用SHA-1加密。3.4.2安全哈希算法安全Hash算法SHA主要適用于數(shù)字簽名標準DSS里面定義的1.SHA-1算法概述
SHA-1算法由美國國家標準和技術協(xié)會(NIST)與美國國家安全局(NSA)設計,并且被美國政府采納,成為美國國家標準。事實上SHA-1目前是全世界使用最為廣泛的哈希算法,已經(jīng)成為業(yè)界的事實標準。可以對長度不超過264bit的消息進行計算,輸入以512bit數(shù)據(jù)塊為單位處理,產(chǎn)生160bit的消息摘要作為輸出。該算法的處理流程大致分為5個步驟:(1)附加填充比特。對輸入的數(shù)據(jù)進行填充,使得數(shù)據(jù)位長度對512求余的結果為448。填充比特串的最高位補一個1,其余位補0。附加填充總是要進行的,即使消息的長度滿足所要求的長度。(2)附加長度值。將64bit加在報文后表示報文的原始長度,使報文長度為512bit的倍數(shù)。3.4.2安全哈希算法1.SHA-1算法概述3.4.2安全哈希算法(3)初始化MD緩存。一個160位MD緩沖區(qū)用以保存中間和最終散列函數(shù)的結果。它可以表示為5個32位的寄存器(A,B,C,D,E)。初始化為:
A=67452301B=EFCDAB89C=98BADCFE
D=10325476E=C3D2E1F0
前四個與MD5相同。(4)以512bit(16個字)分組處理消息。此算法的核心就是稱為壓縮函數(shù)模塊,這個模塊包括4次循環(huán),每次循環(huán)又包含20個處理步驟。4次循環(huán)具有相似的結構,但每次循環(huán)使用不同的基本邏輯函數(shù),稱為f1,f2,f3,f4。3.4.2安全哈希算法(3)初始化MD緩存。一個160位MD緩沖區(qū)用以保存中間和最(5)輸出。全部L個512位數(shù)據(jù)處理完畢后,輸出160bit消息摘要。
CV=IV
CVq+1=SUM(CVq,ABCDEq)
MD=CVL
其中:IV=ABCDE的初始值;L=數(shù)據(jù)塊的個數(shù);SUM32=對每一個輸入對的值單獨相加,使用模232加法;MD=最后的消息摘要值。3.4.2安全哈希算法(5)輸出。全部L個512位數(shù)據(jù)處理完畢后,輸出160bi2.SHA-1壓縮函數(shù)A,B,C,D,E←(E+f(t,B,C,D)+S5(A)+Wt+Kt),A,S30(B),C,D其中:(1)A,B,C,D,E:緩沖區(qū)的5個字。
(2)t:步數(shù),0<t<=79;f(t,B,C,D)=步t的基本邏輯函數(shù)。
(3)Sk:循環(huán)左移k位給定的32位字。(4)Wt:一個用于加法的常量,對應四個不同的值,計算方法如下:Wt=Mt
0≤t≤15;Wt=(Wt-3⊕Wt-8⊕Wt-14⊕Wt-16⊕)16≤t≤79;其中:Mt即源數(shù)據(jù)塊對應的字(32bit)。(5)所有“+”都是模232加。(6)t,Kt,f(t,B,C,D)的運算規(guī)則如表3-1所示。表3-1SHA-1壓縮函數(shù)運算規(guī)則表3.4.2安全哈希算法2.SHA-1壓縮函數(shù)3.4.2安全哈希算法3.4.2安全哈希算法TKtf(t,B,C,D)0≤t≤19Kt=827999(B∧C)∨(B∧D)20≤t≤39Kt=6ED9EBA1B⊕C⊕D40≤t≤59Kt=1BBCDC(B∧C)∨(B∧D)∨(C∧D)60≤t≤79Kt=CA1D6B⊕C⊕D3.4.2安全哈希算法TKtf(t,B,C,D)0≤t≤193.4.2安全哈希算法壓縮函數(shù)的結構示意如圖3-5所示。3.4.2安全哈希算法壓縮函數(shù)的結構示意如圖3-5所示。3.5幾種特殊數(shù)字簽名方法
根據(jù)電子商務具體應用的需要,形成了許多特殊的數(shù)字簽名應用,如盲簽名、雙聯(lián)簽名、團體簽名、不可爭辯簽名、數(shù)字時間戳等。3.5幾種特殊數(shù)字簽名方法根據(jù)電子商務具體應用的需要,形般數(shù)字簽名中,總是要先知道文件內(nèi)容而后才簽署,這正是通常所需要的。但有時需要某人對一個文件簽名,但又不讓他知道文件內(nèi)容,稱為盲簽名,它是由Chaum在1983年最先提出的。在選舉投票和數(shù)字貨幣協(xié)議中通常會使用到盲簽名。利用盲變換可以實現(xiàn)盲簽名。Chaum利用盲變換可以實現(xiàn)盲簽名的基本原理如下:(1)A取一文件并以一隨機值乘之,稱此隨機值為盲因子;(2)A將此盲文件簽名;(3)B對盲文件簽名;(4)A以盲因子除之,得到B對原文件的簽名。3.5.1盲簽名般數(shù)字簽名中,總是要先知道文件內(nèi)容而后才簽署,這正是通常所需盲簽名與通常的數(shù)字簽名的不同之處在于,簽名者并不知道他所要簽發(fā)文件的具體內(nèi)容。盲數(shù)字簽名在簽名時,接收者首先將被簽的消息進行盲變換,把變換后的消息發(fā)送給簽名者,簽名者對盲消息進行簽名并把消息送還給接收者,接收者對簽名再做逆盲變換,得出的消息即為原消息的盲簽名。3.5.1盲簽名SigBT(m)盲變換T盲變換T簽名者B簽名SigBT(m)SigB(m)接收者A接收者A圖3-6盲數(shù)字簽名方案的簽名過程盲簽名與通常的數(shù)字簽名的不同之處在于,簽名者并不知道他所要簽有一類特殊的盲簽名叫完全盲簽名,其性質(zhì)是這樣的:簽名者在文件上的簽名是有效的,簽名是其簽署文件的證據(jù)。如果把文件給簽名者看,他可確信他簽署過這份文件。但是,簽名者不能把簽署文件的行為與簽署了的文件相關聯(lián)。即使他記下了他所作的每一個盲簽名,他也不能確定他在什么時候簽署了該文件。3.5.1盲簽名有一類特殊的盲簽名叫完全盲簽名,其性質(zhì)是這樣的:簽名者在文件3.5.2雙聯(lián)簽名在實際商務活動中經(jīng)常出現(xiàn)這種情形,即持卡人給商家發(fā)送訂購信息和自己的付款帳戶信息,但不愿讓商家看到自己的付款帳戶信息,也不愿讓處理商家付款信息的第三方看到定貨信息。在電子商務中要能做到這點,需使用雙聯(lián)簽名技術。雙聯(lián)簽名的使用方法如下:(1)持卡人將發(fā)給商家的信息M1和發(fā)給第三方的信息M2分別生成報文摘要MD1和報文摘要MD2;(2)持卡人將MD1和MD2合在一起生成MD,并簽名;(3)將M1、MD2和MD發(fā)送給商家,將M2、MD1和MD發(fā)送給第三方;接收者根據(jù)收到的報文生成報文摘要,再與收到的報文摘要合在一起,比較結合后的報文摘要和收到的MD,確定持卡人的身份和信息是否被修改過。雙聯(lián)簽名解決了三方參加電子貿(mào)易過程中的安全通信問題。3.5.2雙聯(lián)簽名在實際商務活動中經(jīng)常出現(xiàn)這種情形,即持卡人3.5.3團體簽名
DavidChaum提出了下述問題:一個公司有幾臺計算機,每臺都連在局域網(wǎng)上。公司的每個部門有它自己的打印機(也連在局域網(wǎng)上),并且只有本部門的人員才被允許使用他們部門的打印機。因此,打印前,必須使打印機確信用戶是在那個部門工作的。同時,公司想保密,不可以暴露用戶的姓名。然而,如果有人在當天結束時發(fā)現(xiàn)打印機用得太頻繁,主管者必須能夠找出誰濫用了那臺打印機,并給他一個帳單。3.5.3團體簽名DavidChaum提出了下述問題:一對這個問題的解決方法稱為團體簽名。它具有以下特性:①只有該團體內(nèi)的成員能對消息簽名;②簽名的接收者能夠證實消息是該團體的有效簽名;③簽名的接收者不能決定是該團體內(nèi)哪一個成員簽的名;④在出現(xiàn)爭議時,簽名能夠被“打開”,以揭示簽名者的身份。A和B怎么對同一數(shù)字文件簽名呢?不用單向哈希函數(shù),有兩種選擇。第一種選擇是A和B分別對文件的副本簽名,結果簽名的信息是原文的兩倍。第二種就是A首先簽名,然后B對A的簽名再進行簽名,這是可行的,但是在不驗證B的簽名的情況下就驗證A的簽名是不可能的。3.5.3團體簽名
對這個問題的解決方法稱為團體簽名。它具有以下特性:①只有該團采用單向哈希函數(shù),團體簽名是容易實現(xiàn)的:(1)A對文件的哈希簽名。(2)B對文件的哈希簽名。(3)B將他的簽名交給A。(4)A把文件、簽名和B的簽名發(fā)給C。(5)C驗證A和B的簽名。A和B能同時或順序地完成①和②,在⑤C可以只驗證其中一人的簽名而不用驗證另一人的簽名。3.5.3
團體簽名
采用單向哈希函數(shù),團體簽名是容易實現(xiàn)的:3.5.3團體簽名下面是一個具有可信仲裁者T的團體簽名方案:(1)T生成一大批公開密鑰/私鑰密鑰對,并且給團體內(nèi)每個成員一個不同的唯一私鑰表。在任何表中密鑰都是不同的(如果團體內(nèi)有n個成員,每個成員得到m個密鑰對,那么總共有nm個密鑰對)。(2)T以隨機順序公開該團體所用的公開密鑰主表。T保持一個哪些密鑰屬于誰的秘密記錄。(3)當團體內(nèi)成員想對一個文件簽名時,他從自己的密鑰表中隨機選取一個密鑰。(4)當有人想驗證簽名是否屬于該團體時,只需查找對應公開鑰主表并驗證簽名。(5)當爭議發(fā)生時,T知道哪個公鑰對應于哪個成員。3.5.3
團體簽名
下面是一個具有可信仲裁者T的團體簽名方案:3.5.3團體簽3.5.4無可爭辯簽名不可爭辯簽名是在沒有簽名者自己的合作下不可能驗證簽名的簽名。無可爭辯簽名是為了防止所簽名文件被復制,有利于產(chǎn)權擁有者控制產(chǎn)品的散發(fā)。不可爭辯簽名1989年由Chaum和Antwerpen引入,這類簽名有一些特點,適用于某些應用,如電子出版系統(tǒng),以利于對知識產(chǎn)權的保護。在簽名人合作下才可能驗證簽名,又會給簽名者一種機會,在不利于他時可拒絕合作,因而不具有“不可否認性”。不可爭辯簽名除了一般簽名體制中的簽名算法和驗證算法(或協(xié)議)外,還需要第三個組成部分,即否認協(xié)議;簽名者利用不可爭辯簽名可向法庭或公眾證明一個偽造的簽名的確是假的;但如果簽名者拒絕參與執(zhí)行否認協(xié)議,就表明簽名真的由他簽署。3.5.4無可爭辯簽名不可爭辯簽名是在沒有簽名者自己的合3.5.5多重簽名一個文件經(jīng)多個人的私鑰簽名多重數(shù)字簽名方案可分為兩類:有序多重數(shù)字簽名方案廣播多重數(shù)字簽名方案。
3.5.5多重簽名一個文件經(jīng)多個人的私鑰簽名3.5.6數(shù)字時間戳
如果在簽名時加上一個時間標記,即是有數(shù)字時間戳(digitaltimestamp)的數(shù)字簽名。
時間戳(time-stamp)是一個經(jīng)加密后形成的憑證文檔,它包括三個部分:
①需加時間戳的文件的摘要;
②DTS收到文件的日期和時間;
③DTS的數(shù)字簽名。
3.5.6數(shù)字時間戳如果在簽名時加上一個時間標記,即是有數(shù)獲得數(shù)字時間戳的過程
獲得數(shù)字時間戳的過程數(shù)字時間戳協(xié)議必須具有如下性質(zhì):①數(shù)據(jù)本身必須有時間標記,而與它所用的物理媒介無關。②不存在哪怕改變文件的1個比特而文件時間戳卻沒有明顯變化的情形。③不可能用不同于當前日期和時間的日期和時間來簽署文件。數(shù)字時間戳協(xié)議必須具有如下性質(zhì):問題與討論什么是數(shù)字簽名?討論什么情況下用數(shù)字簽名比用加密更合適?2.雙聯(lián)簽名的概念是什么?其基本原理是什么?3.試設計一個數(shù)字簽名方法,以便使接收方能驗證簽名。4.用DSS,因為每個簽名將產(chǎn)生不同的k值,因此即使分別在不同的場合對相同的報文簽名,產(chǎn)生的簽名也不相同。RSA簽名是不能這樣的。這樣的不同有什么實際意義?5.數(shù)字時間戳是如何簽署的?6.某個人寫了一份遺囑需要多個律師簽名,以保障遺囑的合法性和可認證性,但不想讓任何律師知道。問此人應該使用什么技術?7.如果選舉單位要采用電子投票的方式進行投票,應該采用什么技術來保證投票的公正性、匿名性?
問題與討論什么是數(shù)字簽名?討論什么情況下用數(shù)字簽名比用加密更第3章電子商務簽名技術3.1數(shù)字簽名概念3.2
RSA數(shù)字簽名3.3
DSS簽名3.4哈希簽名3.5幾種特殊數(shù)字簽名方法第3章電子商務簽名技術3.1數(shù)字簽名概念[本章要點]
數(shù)字簽名是與伴隨信息一起發(fā)送或與信息有一定邏輯關聯(lián)的數(shù)據(jù)項,用來確定信息的發(fā)送源,確認信息自簽名后未被修改過。數(shù)字簽名的方法包括基于RSA的方法、Hash簽名、美國數(shù)字簽名標準DSS以及橢圓曲線數(shù)字簽名算法(ECDSA)。此外,還介紹了在電子商務領域一些被廣泛應用的特殊數(shù)字簽名方法,如盲簽名、雙聯(lián)簽名、團體簽名、不可爭辯簽名、數(shù)字時間戳等。[本章要點]數(shù)字簽名是與伴隨信息一起發(fā)送或與信息有一3.1數(shù)字簽名概念3.1.1數(shù)字簽名概念3.1.2數(shù)字簽名使用模式3.1.3數(shù)字簽名的技術保障3.1.4數(shù)字簽名方案分類3.1.5數(shù)字簽名使用原理3.1數(shù)字簽名概念3.1.1數(shù)字簽名概念3.1.1數(shù)字簽名概念數(shù)字簽名與書面文件簽名有相同之處,采用數(shù)字簽名,也能確認以下兩點:第一,信息是由簽名者發(fā)送的;第二,信息自簽發(fā)后到收到為止未曾作過任何修改。這樣數(shù)字簽名就可用來防止電子信息因易被修改而有人作偽,或冒用別人名義發(fā)送信息?;虬l(fā)出(收到)信件后又加以否認等情況發(fā)生。3.1.1數(shù)字簽名概念數(shù)字簽名與書面文件簽名有相同之處,3.1.1數(shù)字簽名概念在電子商務安全保密系統(tǒng)中,數(shù)字簽名技術有著特別重要的地位,在電子商務安全服務中的源鑒別、完整性服務、不可否認服務中,都要用到數(shù)字簽名技術。在電子商務中,完善的數(shù)字簽名應具備簽字方不能抵賴、他人不能偽造、在公證人面前能夠驗證真?zhèn)蔚哪芰?。?shù)字簽名機制提供了一種鑒別方法,普遍用于銀行、電子貿(mào)易等,以解決如下問題:3.1.1數(shù)字簽名概念在電子商務安全保密系統(tǒng)中,數(shù)字簽名3.1.1數(shù)字簽名概念(1)身份認證。收方通過發(fā)方的電子簽名才能夠確認發(fā)方的確切身份,但無法偽造。(2)保密。雙方的通信內(nèi)容高度保密,第三方無從知曉。(3)完整性。通信的內(nèi)容無法被篡改。(4)不可抵賴。發(fā)方一旦將電子簽字的信息發(fā)出,就不能再否認。3.1.1數(shù)字簽名概念(1)身份認證。收方通過發(fā)方的電子3.1.1數(shù)字簽名概念電子交易的安全依賴于技術上采用適當?shù)陌踩胧?,如電子簽名技術,以確認使用人的身份,確保信息保密及完整無缺,和保障已進行的交易不被推翻。但是,數(shù)字簽名技術在法律上的地位卻不明確。數(shù)字簽名就需要人們對它的“簽名”功能賦予合法的法律地位。聯(lián)合國《電子商務示范法》對電子記錄的法律問題提出了一系列解決方案,分別就數(shù)據(jù)電文的法律承認、書面性、簽名、原件、證據(jù)性、留存等做出了原則性的規(guī)定。3.1.1數(shù)字簽名概念電子交易的安全依賴于技術上采用適當3.1.2數(shù)字簽名使用模式目前使用的電子簽名主要有三種模式:(1)智慧卡式。(2)密碼式。(3)生物測定式。3.1.2數(shù)字簽名使用模式目前使用的電子簽名主要有三種模式:3.1.3數(shù)字簽名的技術保障
普遍使用的電子簽名技術是基于PKI的數(shù)字簽名技術,PKI技術的詳細介紹請參看本教材第8章,數(shù)字簽名的基礎保障主要有以下四個方面:1.認證機構CA2.數(shù)字證書3.公鑰密碼技術4.數(shù)字摘要3.1.3數(shù)字簽名的技術保障普遍使用的電子簽名技3.1.4數(shù)字簽名方案分類
應用廣泛的數(shù)字簽名方法主要有三種,即:RSA簽名、DSS簽名和Hash簽名。此外,也有使用對稱密碼算法實現(xiàn)數(shù)字簽名。這四種算法可單獨使用,也可綜合在一起使用。數(shù)字簽名是通過密碼算法對數(shù)據(jù)進行加、解密變換實現(xiàn)的,用DES算去、RSA算法都可實現(xiàn)數(shù)字簽名。但三種技術或多或少都有缺陷,或者沒有成熟的標準。3.1.4數(shù)字簽名方案分類應用廣泛的數(shù)字簽名方法主1.RSA簽名2.DSS簽名3.Hash簽名4.對稱密碼算法簽名3.1.4數(shù)字簽名方案分類1.RSA簽名3.1.4數(shù)字簽名方案分類安全的數(shù)字簽名使接收方可以得到保證:文件確實來自聲稱的發(fā)送方。鑒于簽名私鑰只有發(fā)送方自己保存,他人無法做一樣的數(shù)字簽名,因此他不能否認他參與了交易。數(shù)字簽名的加密解密過程和私有密鑰的加密解密過程正好相反,使用的密鑰對也不同。數(shù)字簽名使用的是發(fā)送方的密鑰對,發(fā)送方用自己的私有密鑰進行加密,接收方用發(fā)送方的公開密鑰進行解密。這是一個一對多的關系:任何擁有發(fā)送方公開密鑰的人都可以驗證數(shù)字簽名的正確性,而私有密鑰的加密解密則使用的是接收方的密鑰對,這是多對一的關系:任何知道接收方公開密鑰的人都可以向接收方發(fā)送加密信息,只有唯一擁有接收方私有密鑰的人才能對信息解密。在實用過程中,通常一個用戶擁有兩個密鑰對,另一個密鑰對用來對數(shù)字簽名進行加密解密,一個密鑰對用來對私有密鑰進行加密解密。這種方式提供了更高的安全性。在實際運用中,直接用公開密碼的私鑰對文件進行簽字并不完全可行,如果需要對相當長的文件進行簽名認證速度就太慢。通常的解決辦法是引入可公開的密碼。3.1.4數(shù)字簽名使用原理安全的數(shù)字簽名使接收方可以得到保證:文件確實來自聲稱的發(fā)送方3.2
RSA數(shù)字簽名
RSA方法的加密算法和解密算法互為逆變換,所以可用于數(shù)字簽名系統(tǒng)。RSA是最流行的數(shù)字簽名方法,許多產(chǎn)品內(nèi)核中都有RSA的軟件和類庫。RSA算法在第2章已有詳細介紹。3.2RSA數(shù)字簽名RSA方法的加密算法和解密算法3.2RSA數(shù)字簽名RSA算法中數(shù)字簽名技術實際上是通過一個哈希函數(shù)來實現(xiàn)的。數(shù)字簽名的特點是它代表了文件的特征,文件如果發(fā)生改變,數(shù)字簽名的值也將發(fā)生變化。不同的文件將得到不同的數(shù)字簽名。一個最簡單的哈希函數(shù)是把文件的二進制碼相累加,取最后的若干位。哈希函數(shù)對發(fā)送數(shù)據(jù)的雙方都是公開的。
用RSA或其它公開密鑰密碼算法的最大方便是沒有密鑰分配問題(網(wǎng)絡越復雜、網(wǎng)絡用戶越多,其優(yōu)點越明顯)。因為公開密鑰加密使用兩個不同的密鑰,其中有一個是公開的,另一個是保密的。公開密鑰可以保存在系統(tǒng)目錄內(nèi)、未加密的電子郵件信息中、電話黃頁(商業(yè)電話)上或公告牌里,網(wǎng)上的任何用戶都可獲得公開密鑰。而私有密鑰是用戶專用的,由用戶本身持有,它可以對由公開密鑰加密信息進行解密。
3.2RSA數(shù)字簽名RSA算法中數(shù)字簽名技術實際上是通過一3.2RSA數(shù)字簽名RSA方法的加密算法和解密算法互為逆變換,所以可用于數(shù)字簽名系統(tǒng)。假定用戶的公開鑰是(nA,eA),秘密鑰是dA,加密和解密變換分別為EA和DA,則A發(fā)送的簽名后的消息是M′≡DA(M)≡M^dA(modnA)。收到M′后的B,可以用A的公開變換EA恢復M:EA≡EA(M)≡M^(dAeA)(modnA)因為只有A知道dA,所以簽名不可能偽造,并且A與B之間的任何爭議都可以通過仲裁加以解決。在具體環(huán)境中,RSA算法中數(shù)字簽名技術實際上是通過一個哈希函數(shù)來實現(xiàn)的,其原理如圖3-1所示。3.2RSA數(shù)字簽名RSA方法的加密算法和解密算法互為逆變3.2RSA數(shù)字簽名dAeA圖3-1RSA簽名原理3.2RSA數(shù)字簽名dAeA圖3-1RSA簽名原理3.2RSA數(shù)字簽名其操作步驟如下:①使用散列編碼將發(fā)送文件加密產(chǎn)生固定長的數(shù)字摘要;②發(fā)送方用自己的專用密鑰對摘要再加密,形成數(shù)字簽名;③將原文和加密的摘要同時傳給對方;④接收方用發(fā)送方的公共密鑰對摘要解密,同時對收到的文件用散列編碼加密產(chǎn)生同一摘要;⑤將解密后的摘要和收到的文件在接受方重新加密產(chǎn)生的摘要相互對比,如果兩者一致,則說明在傳送過程中信息沒有破壞和篡改。否則,則說明信息已經(jīng)失去安全性和保密性。一個最簡單的哈希函數(shù)是把文件的二進制碼相累加,取最后的若干位。哈希函數(shù)對發(fā)送數(shù)據(jù)的雙方都是公開的。3.2RSA數(shù)字簽名其操作步驟如下:3.3DSS簽名
美國國家標準技術研究所已經(jīng)公布了聯(lián)邦信息處理標準FIPSPUB186,即所謂的數(shù)字簽名標準(DigitalSignatureStandard,DSS)。DSS利用了安全散列算法(SecureHashAlgrithm,SHA)并提出了一種新的數(shù)字簽名技術,即數(shù)字簽名算法(DigitalSignatureAlgrithm,DSA)。DSS最早發(fā)表于1991年,并根據(jù)公眾對該體制安全性擔心的反應在1993年進行了修改。1996年由進行了更進一步的小修改。3.3DSS簽名美國國家標準技術研究所已經(jīng)公布3.3.1DSS基本原理
DSA算法設計用來提供唯一的數(shù)字簽名函數(shù),不像RSA還可用作加密和密鑰交換。DSS方法也利用了一個散列函數(shù)。散列碼和一個用作這個特殊簽名的隨機數(shù)K作為簽名函數(shù)的輸入。簽名函數(shù)還依賴于發(fā)方的私有密鑰(KRa)和一個對許多通信原則來說是知名的參數(shù)集。我們可以認為這個集合組成一個全局公開密鑰(KUG)。結果是簽名由兩個分量組成,記為s和r。在接收端,將計算所收到報文的散列碼,該散列碼和簽名將作為驗證函數(shù)的輸入。驗證函數(shù)還依賴于全局公開密鑰和與發(fā)方私有密鑰配對的發(fā)方公開密鑰。如果簽名是有效的,驗證函數(shù)的輸出值就等于簽名分量r。簽名函數(shù)就是這樣的:只有發(fā)方用掌握的私有密鑰才能產(chǎn)生有效的簽名。3.3.1DSS基本原理
DSA算法設計用來提供唯一的數(shù)3.3.1DSS基本原理
圖3-2DSS原理DSA簽名和RSA簽名一樣不存在哈希簽名的局限性,因為他們都采用了公鑰算法,即每個人都有兩個密鑰,其中一個產(chǎn)生簽名,并秘密保存,另一個公開,用來驗證簽名。3.3.1DSS基本原理
3.3.2數(shù)字簽名算法數(shù)字簽名算法DSA是Schnorr和ElGamal簽名算法的變種,DSA是基于離散對數(shù)的難度。1.DSA算法參數(shù)說明DSA算法中應用了下述參數(shù):p:Lbits長的素數(shù)。L是64的倍數(shù),范圍是512到1024;q:p-1的160bits的素因子;g:g=hp-1modp,h滿足h<p-1,h(p-1)/qmodp>1;x:1<x<q,x為私鑰;y:y=gxmodp
,(p,q,g,y)為公鑰;H(x):單向Hash函數(shù)。在DSS中選用安全散列算法(SecureHashAlgorithm,SHA)。p,q,g:可由一組用戶共享,但在實際應用中,使用公共模數(shù)可能會帶來一定的威脅。3.3.2數(shù)字簽名算法數(shù)字簽名算法DSA是Schnorr和E3.3.2數(shù)字簽名算法2.簽名及驗證協(xié)議簽名及驗證協(xié)議如下:(1)P產(chǎn)生隨機數(shù)k,k<q;(2)P計算r=(gkmodp)modq和s=(k-1(H(m)+xr))modq簽名結果是(m,r,s)。(3)驗證時計算w=s-1modq計算u1=(H(m)w)modq計算u2=(rw)modq計算v=((gu1yu2)modp)modq若v=r,則認為簽名有效。3.3.2數(shù)字簽名算法2.簽名及驗證協(xié)議3.3.2數(shù)字簽名算法DSA是基于整數(shù)有限域離散對數(shù)難題的,其安全性與RSA相比差不多。DSA的一個重要特點是兩個素數(shù)公開,這樣,當使用別人的p和q時,即使不知道私鑰,也能確認它們是否是隨機產(chǎn)生的。而RSA算法卻作不到。圖3-3描述了DSS的簽名和驗證函數(shù)。3.3.2數(shù)字簽名算法DSA是基于整數(shù)有限域離散對數(shù)難題的,3.4哈希簽名Hash簽名是利用哈希函數(shù)(Hashfunction,也叫摘要函數(shù),散列函數(shù))進行數(shù)字簽名的一種方法。Hash簽名是當前最主要的數(shù)字簽名方法之一,也稱之為數(shù)字摘要法(DigitalDigest)或數(shù)字指紋法。它與RSA數(shù)字簽名是單獨的簽名不同,該數(shù)字簽名方法是將數(shù)字簽名與要發(fā)送的信息緊密聯(lián)系在一起,它更適合于電子商務活動。將一個商務合同的個體內(nèi)容與簽名結合在一起,比合同和簽名分開傳遞,更增加了可信度和安全性。3.4哈希簽名Hash簽名是利用哈希函數(shù)(Hashfu3.4哈希簽名Hash函數(shù)與加密函數(shù)類似。事實上有些Hash函數(shù)就是稍加修改的加密函數(shù)。大多數(shù)函數(shù)的作法是每次取一個數(shù)據(jù)塊,對數(shù)據(jù)塊的每一位用一個簡單的編碼函數(shù)進行編碼。Hash算法的工作方式類似通信協(xié)議中的校驗和;發(fā)信方將一個數(shù)據(jù)包的所有字節(jié)加起來,將和添加在包上;收信方執(zhí)行同樣的運算并比較兩個和,以決定是否被正確地傳輸。校驗算法的主要作用是根據(jù)報文內(nèi)容通過單向的Hash算法計算出一個校驗來,如果報文被改動或增減,無法根據(jù)同樣的算法算出相同的校驗來。一般在實際應用中,對于只有數(shù)據(jù)完整性要求的數(shù)據(jù)只對其校驗進行加密就可以了,這樣能夠大大減少數(shù)據(jù)加密的工作量。3.4哈希簽名Hash函數(shù)與加密函數(shù)類似。事實上有些Ha一個Hash函數(shù)滿足:①H可以作用于一個任意長度的數(shù)據(jù)塊;②H產(chǎn)生一個固定長度的輸出;③H(x)對任意給定的x計算相對容易,無論是軟件還是硬件實現(xiàn);④對任意給定碼h,找到x滿足H(x)=h具有計算不可行性;⑤對任意給定的數(shù)據(jù)塊x,找到滿足H(y)=H(x)的yx具有計算不可行性;⑥找到任意數(shù)據(jù)對(x,y),滿足H(x)=H(y)是計算不可行的。3.4哈希簽名一個Hash函數(shù)滿足:3.4哈希簽名單向Hash函數(shù)是在一個方向上工作的Hash函數(shù),從預映射的值很容易計算其Hash值,但要產(chǎn)生一個預映射的值使其Hash值等于一個特殊值卻是很難的。好的hash函數(shù)也是無沖突的:難于產(chǎn)生兩個預映射的值,使他們的hash值相同。Hash函數(shù)是公開的,對處理過程不用保密。單向hash函數(shù)的安全性是它的單向性。無論怎么看,輸出不依賴于輸入。預映射單個比特的改變,平均而言,將引起hash值中一半的比特改變。已知一個hash值,要找到預映射的值,使它的hash值等于已知的hash值在計算上是不可行的。3.4哈希簽名單向Hash函數(shù)是在一個方向上工作的Hash函數(shù),從預映射的利用散列函數(shù)進行數(shù)字簽名和驗證的文件傳輸過程如下:⑴發(fā)送方首先用哈希函數(shù)從原文得到摘要值;⑵發(fā)送方采用發(fā)送方的私有密鑰對摘要進行加密,并把加密后的摘要附加在要發(fā)送的原文后面一起發(fā)送給接收方;⑶接收方用發(fā)送方的公開密鑰對數(shù)字摘要進行解密,得到數(shù)字摘要的明文;⑷接收方用得到的原文和哈希函數(shù)重新計算數(shù)字簽名,并與解密后的數(shù)字摘要進行對比。如果兩個數(shù)字摘要是相同的,說明文件在傳輸過程中沒有被破壞。上述流程可用圖3-4表示。3.4.1哈希簽名基本原理利用散列函數(shù)進行數(shù)字簽名和驗證的文件傳輸過程如下:3.4.1如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進行解密時使用的是發(fā)送方的公開密鑰,只要第三方不知道發(fā)送方的私有密鑰,解密出來的數(shù)字摘要和經(jīng)過計算的數(shù)字摘要必然是不相同的。這就提供了一個安全的確認發(fā)送方身份的方法。3.4.1哈希簽名基本原理如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進行解密時使用的是發(fā)送方的公開密鑰,只要第三方不知道發(fā)送方的私有密鑰,解密出來的數(shù)字摘要和經(jīng)過計算的數(shù)字摘要必然是不相同的。這就提供了一個安全的確認發(fā)送方身份的方法。3.4.2安全哈希算法如果第三方冒充發(fā)送方發(fā)出了一個文件,因為接收方在對數(shù)字簽名進安全Hash算法SHA主要適用于數(shù)字簽名標準DSS里面定義的數(shù)字簽名算法DSA。對于長度小于264bit的消息,SHA-1會產(chǎn)生一個160bit的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數(shù)據(jù)的完整性。在傳輸?shù)倪^程中,數(shù)據(jù)很可能會發(fā)生變化,那么這時候就會產(chǎn)生不同的消息摘要。SHA在1993年由美國國家標準和技術協(xié)會提出,并作為聯(lián)邦信息處理標準(FIPSPUB180)公布;1995年又發(fā)布了一個修訂版FIPSPUB180-1,通常稱之為SHA-1。SHA-1是基于MD4算法的,并且它的設計在很大程度上是模仿MD4的?,F(xiàn)在已成為公認的最安全的散列算法之一,并被廣泛使用。SHA-1,SHA-224,SHA-256,SHA-384和SHA-512都被需要安全散列算法的美國聯(lián)邦政府所應用,他們也使用其他的密碼算法和協(xié)定來保護敏感的未保密資料。FIPSPUB180-1也鼓勵私人或商業(yè)組織使用SHA-1加密。3.4.2安全哈希算法安全Hash算法SHA主要適用于數(shù)字簽名標準DSS里面定義的1.SHA-1算法概述
SHA-1算法由美國國家標準和技術協(xié)會(NIST)與美國國家安全局(NSA)設計,并且被美國政府采納,成為美國國家標準。事實上SHA-1目前是全世界使用最為廣泛的哈希算法,已經(jīng)成為業(yè)界的事實標準??梢詫﹂L度不超過264bit的消息進行計算,輸入以512bit數(shù)據(jù)塊為單位處理,產(chǎn)生160bit的消息摘要作為輸出。該算法的處理流程大致分為5個步驟:(1)附加填充比特。對輸入的數(shù)據(jù)進行填充,使得數(shù)據(jù)位長度對512求余的結果為448。填充比特串的最高位補一個1,其余位補0。附加填充總是要進行的,即使消息的長度滿足所要求的長度。(2)附加長度值。將64bit加在報文后表示報文的原始長度,使報文長度為512bit的倍數(shù)。3.4.2安全哈希算法1.SHA-1算法概述3.4.2安全哈希算法(3)初始化MD緩存。一個160位MD緩沖區(qū)用以保存中間和最終散列函數(shù)的結果。它可以表示為5個32位的寄存器(A,B,C,D,E)。初始化為:
A=67452301B=EFCDAB89C=98BADCFE
D=10325476E=C3D2E1F0
前四個與MD5相同。(4)以512bit(16個字)分組處理消息。此算法的核心就是稱為壓縮函數(shù)模塊,這個模塊包括4次循環(huán),每次循環(huán)又包含20個處理步驟。4次循環(huán)具有相似的結構,但每次循環(huán)使用不同的基本邏輯函數(shù),稱為f1,f2,f3,f4。3.4.2安全哈希算法(3)初始化MD緩存。一個160位MD緩沖區(qū)用以保存中間和最(5)輸出。全部L個512位數(shù)據(jù)處理完畢后,輸出160bit消息摘要。
CV=IV
CVq+1=SUM(CVq,ABCDEq)
MD=CVL
其中:IV=ABCDE的初始值;L=數(shù)據(jù)塊的個數(shù);SUM32=對每一個輸入對的值單獨相加,使用模232加法;MD=最后的消息摘要值。3.4.2安全哈希算法(5)輸出。全部L個512位數(shù)據(jù)處理完畢后,輸出160bi2.SHA-1壓縮函數(shù)A,B,C,D,E←(E+f(t,B,C,D)+S5(A)+Wt+Kt),A,S30(B),C,D其中:(1)A,B,C,D,E:緩沖區(qū)的5個字。
(2)t:步數(shù),0<t<=79;f(t,B,C,D)=步t的基本邏輯函數(shù)。
(3)Sk:循環(huán)左移k位給定的32位字。(4)Wt:一個用于加法的常量,對應四個不同的值,計算方法如下:Wt=Mt
0≤t≤15;Wt=(Wt-3⊕Wt-8⊕Wt-14⊕Wt-16⊕)16≤t≤79;其中:Mt即源數(shù)據(jù)塊對應的字(32bit)。(5)所有“+”都是模232加。(6)t,Kt,f(t,B,C,D)的運算規(guī)則如表3-1所示。表3-1SHA-1壓縮函數(shù)運算規(guī)則表3.4.2安全哈希算法2.SHA-1壓縮函數(shù)3.4.2安全哈希算法3.4.2安全哈希算法TKtf(t,B,C,D)0≤t≤19Kt=827999(B∧C)∨(B∧D)20≤t≤39Kt=6ED9EBA1B⊕C⊕D40≤t≤59Kt=1BBCDC(B∧C)∨(B∧D)∨(C∧D)60≤t≤79Kt=CA1D6B⊕C⊕D3.4.2安全哈希算法TKtf(t,B,C,D)0≤t≤193.4.2安全哈希算法壓縮函數(shù)的結構示意如圖3-5所示。3.4.2安全哈希算法壓縮函數(shù)的結構示意如圖3-5所示。3.5幾種特殊數(shù)字簽名方法
根據(jù)電子商務具體應用的需要,形成了許多特殊的數(shù)字簽名應用,如盲簽名、雙聯(lián)簽名、團體簽名、不可爭辯簽名、數(shù)字時間戳等。3.5幾種特殊數(shù)字簽名方法根據(jù)電子商務具體應用的需要,形般數(shù)字簽名中,總是要先知道文件內(nèi)容而后才簽署,這正是通常所需要的。但有時需要某人對一個文件簽名,但又不讓他知道文件內(nèi)容,稱為盲簽名,它是由Chaum在1983年最先提出的。在選舉投票和數(shù)字貨幣協(xié)議中通常會使用到盲簽名。利用盲變換可以實現(xiàn)盲簽名。Chaum利用盲變換可以實現(xiàn)盲簽名的基本原理如下:(1)A取一文件并以一隨機值乘之,稱此隨機值為盲因子;(2)A將此盲文件簽名;(3)B對盲文件簽名;(4)A以盲因子除之,得到B對原文件的簽名。3.5.1盲簽名般數(shù)字簽名中,總是要先知道文件內(nèi)容而后才簽署,這正是通常所需盲簽名與通常的數(shù)字簽名的不同之處在于,簽名者并不知道他所要簽發(fā)文件的具體內(nèi)容。盲數(shù)字簽名在簽名時,接收者首先將被簽的消息進行盲變換,把變換后的消息發(fā)送給簽名者,簽名者對盲消息進行簽名并把消息送還給接收者,接收者對簽名再做逆盲變換,得出的消息即為原消息的盲簽名。3.5.1盲簽名SigBT(m)盲變換T盲變換T簽名者B簽名SigBT(m)SigB(m)接收者A接收者A圖3-6盲數(shù)字簽名方案的簽名過程盲簽名與通常的數(shù)字簽名的不同之處在于,簽名者并不知道他所要簽有一類特殊的盲簽名叫完全盲簽名,其性質(zhì)是這樣的:簽名者在文件上的簽名是有效的,簽名是其簽署文件的證據(jù)。如果把文件給簽名者看,他可確信他簽署過這份文件。但是,簽名者不能把簽署文件的行為與簽署了的文件相關聯(lián)。即使他記下了他所作的每一個盲簽名,他也不能確定他在什么時候簽署了該文件。3.5.1盲簽名有一類特殊的盲簽名叫完全盲簽名,其性質(zhì)是這樣的:簽名者在文件3.5.2雙聯(lián)簽名在實際商務活動中經(jīng)常出現(xiàn)這種情形,即持卡人給商家發(fā)送訂購信息和自己的付款帳戶信息,但不愿讓商家看到自己的付款
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年運城a2貨運資格證模擬考試
- 醫(yī)療器械設備買賣合同書
- 山茶油現(xiàn)貨購銷合同
- 跨部門協(xié)作優(yōu)化方案
- 游戲世界搭建與運營手冊
- 【機械制造】CAXA實體設計模版課件
- 綠色生態(tài)農(nóng)業(yè)示范區(qū)創(chuàng)建規(guī)劃綱要
- 建(構)筑物消防員基礎知識及初級技能培訓課件
- 事業(yè)單位簽合同協(xié)議書
- 2025年四川a2貨運資格證考試題
- 大學物理馬文蔚版PPT
- 內(nèi)蒙古自治區(qū)高層建筑工程結構抗震基本參數(shù)表(2022年版)
- FZ/T 07010-2021綠色設計產(chǎn)品評價技術規(guī)范針織服裝
- 2023年北京市中學生數(shù)學競賽高一年級復賽試題及解答
- 乙?;蚁┩p烯酮;二乙烯酮;雙乙烯酮)的理化性質(zhì)及危險特性表
- 酒店機房巡視簽到表
- API-650-1鋼制焊接石油儲罐
- 鼠疫演練腳本
- 變壓器試驗精品課件
- 煤礦機電運輸類臺賬(各種記錄匯編)
- 危險化學品從業(yè)單位安全生產(chǎn)標準化宣貫
評論
0/150
提交評論