版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
8.1數(shù)字簽名原理
8.2RSA數(shù)字簽名
8.3ElGamal數(shù)字簽名
8.4數(shù)字簽名標準(DSS)
8.5SM2數(shù)字簽名算法
8.6身份認證8.1數(shù)字簽名原理8.1.1數(shù)字簽名的基本概念第6章討論的Hash函數(shù)和消息認證碼能夠幫助合法通信的雙方不受來自系統(tǒng)外部的第三方攻擊和破壞,但卻無法防止系統(tǒng)內(nèi)通信雙方之間的互相抵賴和欺騙。當Alice和Bob進行通信并使用消息認證碼提供數(shù)據(jù)完整性保護,一方面,Alice確實向Bob發(fā)送消息并附加了用雙方共享密鑰生成的消息認證碼,但隨后Alice否認曾經(jīng)發(fā)送這條消息,因為Bob完全有能力生成同樣的消息與消息認證碼;另一方面,Bob也有能力偽造一個消息與消息認證碼,并聲稱此消息來自Alice。如果通信的過程沒有第三方參與的話,這樣的局面是難以仲裁的。因此,安全的通信僅有消息完整性認證是不夠的,還需要有能夠防止通信雙方相互作弊的安全機制,數(shù)字簽名技術正好能夠滿足這一需求。在人們的日常生活中,為了表達事件的真實性并使文件核準、生效,常常需要當事人在相關的紙質(zhì)文件上手書簽字或蓋上表示自己身份的印章。在數(shù)字化和網(wǎng)絡化的今天,大量社會活動正在逐步實現(xiàn)電子化和無紙化,活動參與者主要是在計算機與網(wǎng)絡上執(zhí)行活動過程的,因而傳統(tǒng)的手書簽名和印章已經(jīng)不能滿足新形勢下的需求。在這種背景下,以公鑰密碼理論為支撐的數(shù)字簽名技術應運而生。數(shù)字簽名是對以數(shù)字形式存儲的消息進行某種處理,產(chǎn)生一種類似于傳統(tǒng)手書簽名功效的信息處理過程。它通常將某個算法作用于需要簽名的消息,生成一種帶有操作者身份信息的編碼。通常,將執(zhí)行數(shù)字簽名的實體稱為簽名者,所使用的算法稱為簽名算法,簽名操作生成的編碼稱為簽名者對該消息的數(shù)字簽名。消息連同其數(shù)字簽名能夠在網(wǎng)絡上傳輸,可以通過一個驗證算法來驗證簽名的真?zhèn)?以及識別相應的簽名者。類似于手書簽名,數(shù)字簽名至少應該滿足3個基本要求:(1)簽名者任何時候都無法否認自己曾經(jīng)簽發(fā)的數(shù)字簽名。(2)收信者能夠驗證和確認收到的數(shù)字簽名,但任何人都無法偽造別人的數(shù)字簽名。(3)當各方對數(shù)字簽名的真?zhèn)萎a(chǎn)生爭議時,通過仲裁機構(可信的第三方)進行裁決。數(shù)字簽名與手書簽名也存在許多差異,大體上可以概括為:(1)手書簽名與被簽文件在物理上是一個整體,不可分離。數(shù)字簽名與被簽名的消息是可以互相分離的位串,因此需要通過某種方法將數(shù)字簽名與對應的被簽消息綁定在一起。(2)在驗證簽名時,手書簽名通過物理比對,即將需要驗證的手書簽名與一個已經(jīng)被證實的手書簽名副本進行比較,來判斷其真?zhèn)?。驗證手書簽名的操作也需要一定的技巧,甚至需要經(jīng)過專門訓練的人員和機構(如公安部門的筆跡鑒定中心)來執(zhí)行。而數(shù)字簽名卻能夠通過一個嚴密的驗證算法被準確地驗證,并且任何人都可以借助這個公開的驗證算法來驗證一個數(shù)字簽名的真?zhèn)?。安全的?shù)字簽名方案還能夠杜絕偽造數(shù)字簽名的可能性。(3)手書簽名是手寫的,會因人而異,它的復制品很容易與原件區(qū)分開來,從而容易確認復制品是無效的。數(shù)字簽名的拷貝與其原件是完全相同的二進制位串,或者是兩個相同的數(shù)值,不能區(qū)分哪一個是原件,哪一個是復制品,因此我們必須采取有效的措施來防止一個帶有數(shù)字簽名的消息被重復使用。數(shù)字簽名必須能夠?qū)崿F(xiàn)與手書簽名同等的甚至更強的功能。為達到這個目的,簽名者必須向驗證者提供足夠多的非保密信息,以便驗證者能夠確認簽名者的數(shù)字簽名;但簽名者又不能泄露任何用于產(chǎn)生數(shù)字簽名的機密信息,以防止別人偽造他的數(shù)字簽名。因此,簽名算法必須能夠提供簽名者用于簽名的機密信息與驗證者用于驗證簽名的公開信息,但二者的交叉不能太多,聯(lián)系也不能太直觀。從公開的驗證信息不能輕易地推測出用于產(chǎn)生數(shù)字簽名的機密信息,這是對簽名算法的基本要求之一。一個數(shù)字簽名體制一般包含兩個組成部分,即簽名算法(SignatureAlgorithm)和驗證算法。簽名算法用于對消息產(chǎn)生數(shù)字簽名,它通常受一個簽名密鑰的控制,簽名算法或者簽名密鑰是保密的,由簽名者掌握。驗證算法用于對消息的數(shù)字簽名進行驗證,根據(jù)簽名是否有效來驗證算法能夠給出該簽名為“真”或者“假”的結(jié)論。驗證算法通常也受一個驗證密鑰的控制,但驗證算法和驗證密鑰應當是公開的,以便需要驗證簽名的人能夠方便地驗證。數(shù)字簽名體制是一個滿足下列條件的五元組(M,S,K,SIG,VER),其中:(1)M代表消息空間,它是某個字母表中所有串的集合。(2)S代表簽名空間,它是所有可能的數(shù)字簽名構成的集合。(3)K代表密鑰空間,它是所有可能的簽名密鑰和驗證密鑰對(sk,vk)構成的集合。(4)SIG是簽名算法,VER是驗證算法。對于任意一個密鑰對(sk,vk)∈K,每一個消息m∈M和簽名s∈S,簽名變換SIG:M×K|sk→S和驗證變換VER:M×S×K|vk→{true,false}是滿足下列條件的函數(shù):由上面的定義可以看出,數(shù)字簽名算法與公鑰加密算法在某些方面具有類似的性質(zhì),甚至在某些具體的簽名體制中,二者的聯(lián)系十分緊密,但是從根本上來講,它們之間還是有本質(zhì)的不同。例如,對消息的加解密一般是一次性的,只要在消息解密之前是安全的就行了;而被簽名的消息可能是一個具體法定效用的文件,如合同等,很可能在消息被簽名多年以后才需要驗證它的數(shù)字簽名,而且可能需要多次重復驗證此簽名。因此,簽名的安全性和防偽造的要求應更高一些,而且要求簽名驗證速度比簽名生成速度還要快一些,特別是聯(lián)機的在線實時驗證。8.1.2數(shù)字簽名的特性綜合數(shù)字簽名應當滿足的基本要求,數(shù)字簽名應具備一些基本特性,這些特性分為功能特性和安全特性兩大方面。數(shù)字簽名的功能特性是指數(shù)字簽名為了實現(xiàn)我們需要的功能要求而應具備的一些特性,這類特性主要包括:(1)依賴性:數(shù)字簽名必須依賴于被簽名消息的具體位模式,不同的消息具有不同的位模式,因而通過簽名算法生成的數(shù)字簽名也應當是互不相同的。也就是說,一個數(shù)字簽名與被簽消息是緊密相關、不可分割的,離開被簽消息,簽名不再具有任何效用。(2)獨特性:數(shù)字簽名必須是根據(jù)簽名者擁有的獨特信息產(chǎn)生的,包含了能夠代表簽名者特有身份的關鍵信息。唯有這樣,簽名才不能偽造,也不能被簽名者否認。(3)可驗證性:數(shù)字簽名必須是可驗證的,通過驗證算法能夠確切地驗證一個數(shù)字簽名的真?zhèn)巍?4)不可偽造性:偽造一個簽名者的數(shù)字簽名不僅在計算上不可行,而且通過重用或者拼接的方法偽造簽名也是不可行的。例如,希望把一個簽名者在過去某個時間對一個消息的簽名用來作為該簽名者在另一時間對另一消息的簽名,或者希望將簽名者對多個消息的多個簽名組合成對另一消息的簽名,都是不可行的。(5)可用性:數(shù)字簽名的生成、驗證和識別的處理過程必須相對簡單,能夠在普通的設備上快速完成,甚至可以在線處理,簽名的結(jié)果可以存儲和備份。除了上述功能特性之外,數(shù)字簽名還應當具備一定的安全特性,以確保它提供的功能是安全的,能夠滿足我們的安全需求,實現(xiàn)預期的安全保障。上面的不可偽造性也可以看作是安全特性的一個方面,除此之外,數(shù)字簽名至少還應當具備如下安全特性:(1)單向性:類似于公鑰加密算法,數(shù)字簽名算法也應當是一個單向函數(shù),即對于給定的數(shù)字簽名算法,簽名者使用自己的簽名密鑰sk對消息m進行數(shù)字簽名在計算上是容易的,但給定一個消息m和它的一個數(shù)字簽名s,希望推導出簽名者的簽名密鑰sk在計算上是不可行的。(2)無碰撞性:對于任意兩個不同的消息m≠m',它們在同一個簽名密鑰下的數(shù)字簽名SIGsk(m)=SIGsk(m')的概率是可以忽略的。(3)無關性:對于兩個不同的消息m≠m',無論m與m'存在什么樣的內(nèi)在聯(lián)系,希望從某個簽名者對其中一個消息的簽名推導出對另一個消息的簽名是不可能的。數(shù)字簽名算法的這些安全特性從根本上消除了偽造數(shù)字簽名成功的可能性,使一個簽名者針對某個消息產(chǎn)生的數(shù)字簽名與被簽消息的搭配是唯一確定的,不可篡改,也不可偽造。生成數(shù)字簽名的唯一途徑是將簽名算法和簽名密鑰作用于被簽消息,除此之外別無他法。8.1.3數(shù)字簽名的實現(xiàn)方法現(xiàn)在的數(shù)字簽名方案大多是基于某個公鑰密碼算法構造出來的,這是因為在公鑰密碼體制里,每一個合法實體都有一個專用的公私鑰對,其中,公開密鑰是對外公開的,可以通過一定的途徑查詢;而私有密鑰是對外保密的,只有擁有者自己知曉,可以通過公開密鑰驗證其真實性,因此私有密鑰與其持有人的身份一一對應,可以看作是其持有人的一種身份標識。恰當?shù)貞冒l(fā)信方的私有密鑰處理消息,可以使收信方能夠確信收到的消息確實來自其聲稱的發(fā)信者,同時發(fā)信者也不能對自己發(fā)出的消息予以否認,即實現(xiàn)了消息認證和數(shù)字簽名的功能。圖8-1給出公鑰算法用于消息認證和數(shù)字簽名的基本原理。在圖8-1中,發(fā)信方Alice用自己的私有密鑰skA加密消息m,任何人都可以輕易獲得Alice的公開密鑰pkA,然后解開密文c,因此這里的消息加密起不了信息保密的作用。可以從另一個角度來認識這種不保密的私鑰加密,由于用私鑰產(chǎn)生的密文只能由對應的公鑰來解密,根據(jù)公私鑰一一對應的性質(zhì),別人不可能知道Alice的私鑰。如果收信方Bob能夠用Alice的公鑰正確地還原明文,表明這個密文一定是Alice用自己的私鑰生成的,因此Bob可以確信收到的消息確實來自Alice,同時Alice也不能否認這個消息是自己發(fā)送的。另一方面,在不知道發(fā)信方私鑰的情況下不可能篡改消息的內(nèi)容,因此收信方還可以確信收到的消息在傳輸過程中沒有被篡改,是完整的。也就是說,圖8-1表示的這種公鑰算法使用方式不僅能夠證實消息來源和發(fā)信方身份的真實性,還能保證消息的完整性,即實現(xiàn)了前面所說的數(shù)字簽名和消息認證的效果。在實際應用中,對消息進行數(shù)字簽名,可以選擇對分組后的原始消息直接簽名,但考慮到原始消息一般都比較長,可能以千比特為單位,而公鑰算法的運行速度相對較低,因此通常先對原始消息進行Hash函數(shù)處理,再對得到的Hash碼(即消息摘要)進行簽名。在驗證數(shù)字簽名時,也是針對Hash碼的。通常,驗證者先對收到的消息重新計算它的Hash碼,然后用簽名驗證密鑰解密收到的數(shù)字簽名,再將解密的結(jié)果與重新計算的Hash碼進行比較,以確定簽名的真?zhèn)?。顯然,當且僅當簽名解密的結(jié)果與重新計算的Hash碼完全相同時,簽名為真。一個消息的Hash碼通常只有幾十到幾百比特,例如,SHA-1能對任何長度的消息進行Hash處理,得到160比特的消息摘要。因此,經(jīng)過Hash處理后再對消息摘要簽名能大大提高簽名和驗證的效率,而且Hash函數(shù)的運行速度一般都很快,兩次Hash處理的開銷對系統(tǒng)影響不大。數(shù)字簽名的常見實現(xiàn)方法如圖8-2所示。經(jīng)過學者們長期持續(xù)不懈的努力,大量的數(shù)字簽名方案相繼被提出,它們大體上可以分成兩大類方案,即直接數(shù)字簽名體制和可仲裁的數(shù)字簽名體制。1.直接數(shù)字簽名體制直接數(shù)字簽名僅涉及通信雙方,它假定收信方Bob知道發(fā)信方Alice的公開密鑰,在發(fā)送消息之前,發(fā)信方使用自己的私有密鑰作為加密密鑰對需要簽名的消息進行加密處理,產(chǎn)生的“密文”就可以當作發(fā)信方對所發(fā)送消息的數(shù)字簽名。但是由于要發(fā)送的消息一般都比較長,直接對原始消息進行簽名的成本與相應的驗證成本都比較高,且速度慢,所以發(fā)信方常常先對需要簽名的消息進行Hash處理,然后再用私有密鑰對所得的Hash碼進行上述簽名處理,所得結(jié)果作為對被發(fā)送消息的數(shù)字簽名。顯然,這里用私有密鑰對被發(fā)送消息或其Hash碼進行加密變換,其結(jié)果并沒有保密作用,因為眾所周知相應的公開密鑰,任何人都可以輕而易舉地恢復原來的明文消息,這樣做的目的只是為了數(shù)字簽名。雖然直接數(shù)字簽名體制的思想簡單可行,且易于實現(xiàn),但它也存在一個明顯的弱點,即直接數(shù)字簽名方案的有效性嚴格依賴于簽名者私有密鑰的安全性。一方面,如果一個用戶的私有密鑰不慎泄密,那么,在該用戶發(fā)現(xiàn)他的私有密鑰已泄密并采取補救措施之前,會遭受其數(shù)字簽名有可能被偽造的威脅,更進一步,即使該用戶發(fā)現(xiàn)自己的私有密鑰已經(jīng)泄密并采取了適當?shù)难a救措施,但仍然可以偽造其更早時間(實施補救措施之前)的數(shù)字簽名,這可以通過對數(shù)字簽名附加一個較早的時間戳(實施補救措施之前的任何時刻均可)來實現(xiàn)。另一方面,因為某種原因,簽名者在簽名后想否認他曾經(jīng)對某個消息簽過名,他可以故意聲稱他的私有密鑰早已泄密,被盜用并偽造了該簽名。方案本身無力阻止這些情況的發(fā)生,因此在直接數(shù)字簽名方案中,簽名者有作弊的機會。2.可仲裁的數(shù)字簽名體制為了解決直接數(shù)字簽名體制存在的問題,可以引入一個可信的第三方作為數(shù)字簽名系統(tǒng)的仲裁者。每次需要對消息進行簽名時,發(fā)信方先對消息執(zhí)行數(shù)字簽名操作,然后將生成的數(shù)字簽名連同被簽消息一起發(fā)送給仲裁者;仲裁者對消息及其簽名進行驗證,通過仲裁者驗證的數(shù)字簽名會簽發(fā)一個證據(jù)來證明它的真實性;最后,消息、數(shù)字簽名與簽名真實性證據(jù)一起發(fā)送給收信方。在這樣的方案中,發(fā)信方無法對自己簽名的消息予以否認,而且即使一個用戶的簽名密鑰泄密也不可能偽造該簽名密鑰泄密之前的數(shù)字簽名,因為這樣的偽造簽名不可能通過仲裁者的驗證。然而有得必有失,這種可仲裁的數(shù)字簽名體制比那種直接的數(shù)字簽名體制更加復雜,仲裁者有可能成為系統(tǒng)性能的瓶頸,而且仲裁者必須是公正可信的中立者。下面介紹幾種數(shù)字簽名體制。RSA簽名體制是Diffie和Hellman提出數(shù)字簽名思想后的第一個數(shù)字簽名體制,它是由Rivest、Shamir和Adleman三人共同完成的,該簽名體制來源于RSA公鑰密碼體制的思想,按照數(shù)字簽名的方式使用RSA公鑰體制。8.2.1RSA數(shù)字簽名算法RSA數(shù)字簽名算法系統(tǒng)參數(shù)的選擇與RSA公鑰密碼體制基本一樣,首先,選取兩個不同的大素數(shù)p和q,計算n=p×q。其次,選取一個與φ(n)互素的正整數(shù)e,并計算出d滿足e×d≡1modφ(n),即d是e模φ(n)的逆。最后,公開n和e作為簽名驗證密鑰,秘密保存p、q和d作為簽名密鑰。RSA數(shù)字簽名體制的消息空間和簽名空間都是?n,分別對應于RSA公鑰密碼體制的明文空間和密文空間,而密鑰空間為K={n,p,q,e,d},與RSA公鑰密碼體制相同。當需要對一個消息m∈?n
進行簽名時,簽名者計算得到的結(jié)果s就是簽名者對消息m的數(shù)字簽名。驗證簽名時,驗證者通過下式判定簽名的真?zhèn)?這是因為,類似于RSA公鑰密碼體制的解密變換,有可見,RSA數(shù)字簽名的處理方法與RSA加解密的處理方法基本一樣,不同之處在于,簽名時,簽名者要用自己的私有密鑰對消息“加密”,而驗證簽名時,驗證者要使用簽名者的公鑰對簽名者的數(shù)字簽名“解密”。RSA數(shù)字簽名有效性的驗證正好可以通過7.3節(jié)中RSA解密算法的正確性得到證實。8.2.2RSA數(shù)字簽名的安全問題RSA簽名方案是依據(jù)數(shù)字簽名方式運用RSA公鑰密碼算法產(chǎn)生的,在7.3.2節(jié)中我們已經(jīng)討論了RSA算法安全性的一些問題,并在7.3.3節(jié)中對如何更安全地選擇RSA算法的參數(shù)給出了一些建議,這些討論和建議對RSA算法用于數(shù)字簽名同樣有效。對RSA數(shù)字簽名算法進行選擇密文攻擊可以實現(xiàn)3個目的,即消息破譯、騙取仲裁簽名和騙取用戶簽名。1.消息破譯攻擊者對通信過程進行監(jiān)聽,并設法成功收集到使用某個合法用戶公鑰e加密的密文c。攻擊者想恢復明文消息m,即找出滿足c≡memodn的消息m,則可以按如下步驟處理。第
一
步:攻
擊
者
隨
機
選
取r<n且gcd(r,n)=1,計
算3個
值u≡remodn,y≡u×cmodn和t≡r-1modn;第二步:攻擊者請求合法用戶用其私鑰d對消息y簽名,得到s≡ydmodn;第三步:由u≡remodn可知r≡udmodn,所以t≡r-1modn≡u-dmodn。因此攻擊者容易計算出即得到了原始的明文消息。2.騙取仲裁簽名仲裁簽名是仲裁方(即公證人)用自己的私鑰對需要仲裁的消息進行簽名,起到仲裁的作用。如果攻擊者有一個消息需要仲裁簽名,但由于公證人懷疑消息中包含不真實的成分而不愿意為其簽名,那么攻擊者可以按下述方法騙取仲裁簽名。假設攻擊者希望簽名的消息為m,那么他隨機選取一個值x,并用仲裁者的公鑰e計算y≡xemodn。再令M≡m×ymodn,并將M發(fā)送給仲裁者要求仲裁簽名。仲裁者回送仲裁簽名Mdmodn,攻擊者即可計算立即得到消息m的仲裁簽名。3.騙取用戶簽名騙取用戶簽名實際上是指攻擊者可以偽造合法用戶對消息的簽名。例如,如果攻擊者能夠獲得某合法用戶對兩個消息m1
和m2
的簽名
和
那么他馬上就可以偽造出該用戶對新消息m3=m1×m2
的簽名
因此,當攻擊者希望某合法用戶對一個消息m進行簽名但該簽名者可能不愿意為其簽名時,他可以將m分解成兩個(或多個)更能迷惑合法用戶的消息m1
和m2,且滿足m=m1×m2,然后讓合法用戶對m1和m2
分別簽名,攻擊者最終獲得該合法用戶對消息m的簽名。容易看出,上述選擇密文攻擊都是利用了指數(shù)運算能夠保持輸入的乘積結(jié)構這一缺陷(稱為可乘性)。因此一定要記住,任何時候都不能對陌生人提交的消息直接簽名,最好先經(jīng)過某種處理,比如先用單向Hash函數(shù)對消息進行Hash運算,再對運算結(jié)果簽名。以上這些攻擊方法都是利用了模冪運算本身具有的數(shù)學特性來實施的。還有一種類似的構成RSA簽名體制安全威脅的攻擊方法,這種方法使任何人都可以偽造某個合法用戶的數(shù)字簽名,方法如下:偽造者Oscar選取一個消息y,并取得某合法用戶(被偽造者)的RSA公鑰(n,e),然后計算x=yemodn,最后偽造者聲稱y是該合法用戶對消息x的RSA簽名,達到了假冒該合法用戶的目的。這是因為該合法用戶用自己的私鑰d對消息x合法簽名的結(jié)果正好就是y,即因此,從算法本身不能識別偽造者的假冒行為。如果偽造者精心挑選y,使x具有明確的意義,那么造成的危害將是巨大的。8.3ElGamal數(shù)字簽名ElGamal簽名體制是一種基于離散對數(shù)問題的數(shù)字簽名方案。不同于既能用于加密又能用于數(shù)字簽名的RSA算法,ElGamal簽名算法是專門為數(shù)字簽名設計的,它與用于加密的ElGamal公鑰加密算法并不完全一樣?,F(xiàn)在,這個方案的修正形式已被美國國家標準與技術協(xié)會采納并用于數(shù)字簽名標準的數(shù)字簽名算法。8.3.1ElGamal數(shù)字簽名算法與ElGamal公鑰密碼體制一樣,ElGamal簽名體制也是非確定性的,任何一個給定的消息都可以產(chǎn)生多個有效的ElGamal簽名,并且驗證算法能夠?qū)⑺鼈冎械娜魏我粋€當作可信的簽名。ElGamal簽名方案的系統(tǒng)參數(shù)包括:一個大素數(shù)p(p的大小足以使?p上的離散對數(shù)問題難以求解),?p*的生成元g,一個任取的秘密數(shù)a,一個由g和a計算得到的整數(shù)y,且滿足這些系統(tǒng)參數(shù)構成ElGamal簽名方案的密鑰K=(p,g,a,y),其中(p,g,y)是公開密鑰,a是私有密鑰。在對一個消息m∈?p
簽名時,簽名者隨機選取一個秘密整數(shù)k∈?p*,且gcd(k,φ(p))=1,計算將得到的(γ,δ)作為對消息m的數(shù)字簽名,即簽名s=SIGa(m,k)=(γ,δ),ElGamal簽名體制的簽名空間為?p
×?φ(p)。驗證一個消息m的ElGamal簽名時,驗證者對收到的消息m及其簽名s=(γ,δ)按下式驗證其真?zhèn)?如果簽名構造是正確的,那么在上述ElGamal簽名方案中,同一個消息m,對不同的隨機數(shù)k會得到不同的數(shù)字簽名s=(γ,δ),并且都能通過驗證算法的驗證,這就是我們在前面所說的不確定性,這個特點有利于提高安全性。8.3.2針對ElGamal簽名算法的可能攻擊由于ElGamal簽名驗證算法只是核實同余式y(tǒng)γγδ≡gmmodp是否成立,因此攻擊者可以考慮通過偽造能夠滿足該同余式的數(shù)偶(γ,δ)攻擊此算法。在不知道簽名者私有密鑰a的情況下,攻擊者想偽造這樣的數(shù)偶(γ,δ),并使之能夠成為某個消息m的數(shù)字簽名,他可以選定一個值作為γ,然后嘗試找出合適的δ,但這必須計算離散對數(shù)logγgmy-γ
。同樣,攻擊者也可以通過選擇δ來尋找合適的γ,而這必須求解同余方程來獲得γ,但目前這類方程還沒有可行的解法。如果試圖通過嘗試不同的γ以得到m,仍然需要計算離散對數(shù)loggyγγδ
。如果攻擊者通過選擇γ和δ計算出m,那么他再一次面臨求解離散對數(shù)loggyγγδ
。因此,ElGamal簽名體制的安全性依賴于求解離散對數(shù)問題的困難性,如果求解離散對數(shù)不再困難,那么ElGamal方案也就沒有任何意義。在假定離散對數(shù)問題依然難以求解的情況下,ElGamal簽名方案仍然存在一些安全威脅,這些安全威脅首先來自對方案使用不當造成的可能攻擊,它包括以下兩個方面:(1)對簽名中使用的隨機整數(shù)k保管不當,發(fā)生泄露。如果攻擊者知道k的話,那么只要攻擊者能夠再獲得簽名者對某一個消息m的合法簽名s=(γ,δ),就可以非常容易地計算出簽名者的私有密鑰a≡(m-kδ)γ-1modφ(p)。這時整個系統(tǒng)被完全破壞,攻擊者可以隨意偽造該簽名者的數(shù)字簽名。(2)對ElGamal方案的另一個誤用是重復使用簽名隨機數(shù)k。這同樣可以使攻擊者易于計算出簽名者的私有密鑰a,具體做法如下所示。設(γ,δ1)和(γ,δ2)分別是某個簽名者對消息m1
和m2
的簽名,且m1≠m2modφ(p),我們有兩式相減,得則上面等式變成由于gcd(δ',p')=1,所以可以用擴展的歐幾里得算法求出(δ')-1modp',然后得到于是對于這d個可能的候選值,利用同余式逐一驗證,即可檢測出唯一正確的那個k。找到了簽名隨機數(shù)k,就可以像上述(1)一樣計算出簽名者的私有密鑰a。除了使用不當造成的安全威脅以外,ElGamal簽名方案還面臨著偽造簽名的攻擊,有以下4種方法可以偽造出ElGamal數(shù)字簽名。第一種偽造方法:需要知道合法簽名者的簽名驗證密鑰(即公開密鑰),即可通過任意選擇的γ,構造出δ和m,使(γ,δ)恰好是該簽名者對消息m的簽名。由此可見,攻擊者可以在唯密鑰的情況下進行存在性偽造。設i和j是[0,p-2]上的整數(shù),且γ可表示為γ≡giyjmodp。那么簽名驗證條件是于是有若且則上式成立。因此,在給定i和j,且gcd(j,φ(p))=1的條件下,很容易利用這兩個同余式求出δ和m,結(jié)果如下:
顯然,按照這種方法構造出來的(γ,δ)是消息m的有效簽名,但它是偽造的。8.4數(shù)字簽名標準(DSS)數(shù)字簽名標準(DSS)是由美國國家標準與技術協(xié)會(NIST)于1991年8月公布,并于1994年12月1日正式生效的一項美國聯(lián)邦信息處理標準。DSS本質(zhì)上是ElGamal簽名體制,但它運行在較大有限域的一個小的素數(shù)階子群上,并且在這個有限域上,離散對數(shù)問題是困難的。在對消息進行數(shù)字簽名之前,DSS先使用安全的Hash算法SHA-1對消息進行Hash處理,然后再對所得的消息摘要簽名。這樣不僅可以確保DSS能夠抵抗多種已知的存在性偽造攻擊,同時相對于ElGamal等簽名體制,DSS的簽名長度將會大大地縮短。8.4.1DSS的數(shù)字簽名算法DSS使用的算法稱為數(shù)字簽名算法,它
是
在ElGamal和Schnorr兩個方案的基礎上設計出來的。DSA的系統(tǒng)參數(shù)包括:(1)一個長度為l位的大素數(shù)p,l的大小在512~1024,且為64的倍數(shù)。(2)p-1,即φ(p)的一個長度為160位的素因子q。(3)一個q階元素g可以這樣得到,任選
則令否則重選(4)一個用戶隨機選取的整數(shù)(5)一個Hash函數(shù)H:{0,1}*?p。這里使用的是安全的Hash算法SHA-1。這些系統(tǒng)參數(shù)構成DSA的密鑰空間K={p,q,g,a,y,H},其中(p,q,g,y,H)為公開密鑰,a是私有密鑰。為了生成對一個消息m的數(shù)字簽名,簽名者隨機選取一個秘密整數(shù)k∈?q,并計算出s=(γ,δ)就是消息m的數(shù)字簽名,即SIGa(m,k)=(γ,δ)。由此可見,DSA的簽名空間為?q×?q,簽名的長度比ElGamal體制短了許多。驗證DSA數(shù)字簽名時,驗證者知道簽名者的公開密鑰是(p,q,g,y,H),對于一個消息簽名對(m,(γ,δ)),驗證者計算下面幾個值并判定簽名的真實性:這是因為,如果(γ,δ)是消息m的有效簽名,那么DSA數(shù)字簽名算法的基本框圖如圖8-3所示。8.4.2DSA算法的安全問題DSS公布以后,引起了學術界和產(chǎn)業(yè)界的廣泛關注,人們對它的反應更多的是批評和譴責,認為它的政治性強于學術性。NIST隨后開展了一次征求意見活動,到1992年2月活動結(jié)束時,共收到109篇評論。概括起來,評價的意見主要體現(xiàn)在以下幾個方面:(1)DSA算法不能用于數(shù)據(jù)加密,也不能用于密鑰分配。DSS只是一個數(shù)字簽名標準,但當時美國還沒有法定的公鑰加密標準,因此引起了人們對DSS的猜疑。(2)DSA算法比RSA慢。DSA與RSA生成數(shù)字簽名的速度相當,在驗證簽名時DSA比RSA要慢(3)DSA算法的密鑰長度太短。最初的DSA模數(shù)為512位,由于DSA算法的安全性依賴于求解離散對數(shù)問題的困難性,這種規(guī)模的離散對數(shù)已不能保證長期的安全,所以后來NIST將DSA的密鑰設置為可變的,變化范圍在512位~1024位。(4)DSA算法由美國國家安全局(NationalSecurityAgency,NSA)研制,其設計過程不公開,提供的分析時間不充分,懷疑其中可能存在陷門。這主要是擔心政府借機干涉公民的隱私。(5)其他意見。例如,DSA算法可能侵犯別人的專利。現(xiàn)在看來,DSA算法的安全問題并不像當初很多人猜測的那樣嚴重,有些涉及安全脆弱性的疑慮并不是DSA算法獨有的,并且可以在算法的具體實現(xiàn)過程中通過適當?shù)拇胧┑靡员苊?。在后來的分析過程中,一些有關安全的瑕疵也多次被提出,主要有以下幾個方面:(1)攻擊秘密數(shù)k:k是簽名者選取的秘密數(shù),每一次簽名都需要一個新的k,而且應該是隨機選取的。如果攻擊者能夠恢復一個簽名者對消息簽名時使用的秘密數(shù)k,那么就可以導出簽名者的簽名私鑰a。更危險的是,如果一個簽名者使用同一個秘密數(shù)k對兩個不同的消息進行簽名,那么攻擊者只要能夠截獲這兩個消息及其簽名,則根本不需要求解k就可以直接導出簽名者的簽名私鑰a,進而能夠偽造該簽名者的數(shù)字簽名。因此,在DSA的應用中,隨機秘密數(shù)k非常敏感,一定要十分小心。通常借助一個好隨機數(shù)生成器來應對這個問題,避免出現(xiàn)安全漏洞。(2)共用模數(shù)的危險:DSA算法并沒有為所有用戶指定一個共享的公共模數(shù),但在具體的應用中可能會要求所有人都使用相同的p和q,這給算法的實現(xiàn)帶來一定的方便。雖然現(xiàn)在還沒有發(fā)現(xiàn)共用模數(shù)會有什么問題,但對攻擊者來說,共用模數(shù)顯然是一個誘人的目標。(3)DSA的閾下信道:Simmons發(fā)現(xiàn)在DSA算法中存在一種閾下信道,該閾下信道允許簽名者在其簽名中嵌入秘密消息,只有知道密鑰的人能提取簽名者嵌入的秘密消息。Simmons聲稱,DSA“提供了至今發(fā)現(xiàn)的最合適于閾下信道通信的環(huán)境”。8.5SM2數(shù)字簽名算法8.5.1SM2數(shù)字簽名基礎2017年10月30日至11月3日,我國的SM2與SM9數(shù)字簽名算法在德國柏林召開的第55次ISO/IEC信息安全分技術委員會(SC27)會議上一致通過并成為國際標準,正式進入標準發(fā)布階段。這兩個數(shù)字簽名機制為ISO/IEC148883/AMD1標準研制項目的主體部分,這是我國商用密碼標準首次正式進入ISO/IEC標準,極大地提升了我國在網(wǎng)絡空間安全領域的國際標準化水平。SM2算法共包含3個不同功能的算法:公鑰加密算法、數(shù)字簽名算法、密鑰交換協(xié)議。我們在7.7節(jié)中已經(jīng)詳細介紹了SM2公鑰加密算法,本節(jié)介紹SM2數(shù)字簽名算法。1.SM2系統(tǒng)參數(shù)SM2數(shù)字簽名算法中,橢圓曲線的選取同SM2公鑰加密算法,主要參數(shù)有:用來定義曲線的兩個有限域元素a、b,曲線上的基點G=(xG,yG)。選擇Hash函數(shù)Hv(x),輸出長度為v的Hash值。作為簽名者的用戶A的密鑰對包括私鑰dA∈{1,2,…,n-1}和公鑰PA=dAG=(xA,yA)。用戶A的標識為IDA,其長度entlenA
轉(zhuǎn)換成二進制以后記作ENTLA,選擇雜湊函數(shù)H256,可以按下式計算出用戶A的雜湊值。其中SM2算法規(guī)定H256使用SM3雜湊算法2.SM2簽名算法設待簽名的消息為M,為了獲得其簽名值,用戶A需要執(zhí)行以下操作:(1)計算e=Hv(ZA‖M)。(2)使用隨機數(shù)生成器產(chǎn)生隨機數(shù)k∈{1,2,…,n-1}。(3)計算橢圓曲線點C1=kG=(x1,y1),將x1
轉(zhuǎn)換為整數(shù)。(4)計算r≡(e+x1)modn,若r=0或者r+k=n,則返回(2)。(5)計算s≡((1+dA)-1·(k-r·dA))modn,若s=0,則返回(2)。(6)將r,s的數(shù)據(jù)類型轉(zhuǎn)換為字符串,得到消息M的簽名(r,s)。SM2數(shù)字簽名的流程如圖8-4所示。3.SM2簽名驗證算法設待檢驗的消息為M',其數(shù)字簽名為(r',s'),為了驗證簽名的有效性,用戶B需要執(zhí)行以下操作:(1)檢驗r'∈{1,2,…,n-1}是否成立,若不成立則驗證不通過。(2)檢驗s'∈{1,2,…,n-1}是否成立,若不成立則驗證不通過。(3)計算e'=Hv(ZA‖M'),將其數(shù)據(jù)類型轉(zhuǎn)換為整數(shù)。(4)將r'和s'的數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),計算t≡(r'+s')modn,若t=0,則驗證不通過。(5)計算橢圓曲線點(x',y')=s'G+tPA。(6)將x'的數(shù)據(jù)類型轉(zhuǎn)換為整數(shù),計算R≡(e'+x')modn,檢驗R=r'是否成立,若成立,則驗證通過,否則不通過。SM2數(shù)字簽名算法的驗證過程如圖8-5所示。驗證簽名的流程正確性說明如下:如果(r',s')的確是消息M'經(jīng)SM2簽名算法得到的簽名,則于是因此簽名驗證成功。8.5.2SM2數(shù)字簽名的分析1.安全性分析SM2數(shù)字簽名算法中的系統(tǒng)參數(shù)與SM2公鑰加密算法中的參數(shù)一致,用戶私鑰的安全性等價于求解橢圓曲線上的離散對數(shù)問題,因此SM2數(shù)字簽名算法必須選擇安全的橢圓曲線,避免弱橢圓曲線。關于其安全性的詳細描述可參見7.7.2節(jié),此處不再贅述。針對數(shù)字簽名算法的最強攻擊是適應性選擇消息攻擊,攻擊者可以訪問簽名預言機,而且除了攻擊者正在攻擊的消息之外,還可以獲得任意消息并獲得有效的簽名。攻擊者如果達到以下目標之一,則稱數(shù)字簽名算法被攻破。(1)完全攻破:攻擊者獲得簽名私鑰,可以偽造任意消息的簽名,這是最嚴重的攻破。(2)一般性偽造:攻擊者建立一個有效的算法來模仿簽名,模仿簽名成功的概率足夠高。(3)存在性偽造:存在性偽造也稱為隨機消息簽名偽造。攻擊者利用已知的消息/簽名對,可以生成新的消息/簽名對,新的消息與原來的消息具有相關性,攻擊者不能自主選擇。上述3類攻擊中,存在性偽造
的
破
壞
是
最
低
的。對
于
一
個
數(shù)
字
簽
名
算
法,如
果
攻擊者采用最強的攻擊行
為
仍
然
不
能
達
到
最
低
的
攻
擊
目
標,則
該
數(shù)
字
簽
名
算
法
是
安
全的。Goldwasser等人提出的適應性選擇消息攻擊下存在性不可偽造(EUF-CMA)已經(jīng)成為評估數(shù)字簽名算法安全性的一個標準。SM2數(shù)字簽名算法將簽名者ID、公鑰、原消息一起進行Hash,在Hash算法安全的前提下,可以抵抗密鑰替換攻擊,其安全性是很高的。2.效率分析ECC運算過程中
最
耗
時
的
運
算
是
橢
圓
曲
線
點
乘,無
論
是
軟
件
實
現(xiàn)、FPGA(FieldProgrammableGateArray,現(xiàn)場可編程邏輯門陣列)實現(xiàn)還是集成電路實現(xiàn),點乘運算占據(jù)整個算法運行時間的比例一般超過80%。此外,算法中如果存在有限域元素的求逆,也將占用不可忽略的時間比例。對于SM2數(shù)
字
簽
名
算
法
來
說,其
實
現(xiàn)
效
率
與
國
際
上
同
類
型
算
法ECDSA(EllipticCurveDigitalSignatureAlgorithm,橢圓曲線數(shù)字簽名算法)相當。但是SM2算法中的求逆運算(1+dA)-1modn是可以由用戶A自己提前進行預計算的,對不同的消息進行簽名時,該值恒定不變。因此總體來看,SM2的實現(xiàn)效率還是有很大的提高的。ECC更適合在智能IC卡芯片等資源受限的環(huán)境中使用。通過在硬件協(xié)處理器中采用并行及脈動流水線結(jié)構等技術,SM2算法在ASIC中可以實現(xiàn)很高的運算性能,適用于大型簽名驗證服務器。以我國目前的IC設計和制造技術,已經(jīng)有SM2數(shù)字簽名性能超過1萬次/秒的芯片研制成功并得到應用。
總之,SM2數(shù)字簽名算法的實現(xiàn)效率可以滿足從服務器端到客戶端的不同種類的信息安全設備的需求。8.6身
份
認
證我們生活的現(xiàn)實世界是一個真實的物理世界,每個人都擁有獨一無二的物理身份。而今我們也生活在數(shù)字世界中,一切信息都是由一組特定的數(shù)據(jù)表示,當然也包括用戶的身份信息。如果沒有有效的身份認證管理手段,訪問者的身份就很容易被偽造,使得任何安全防范體系都形同虛設。因此,在計算機和互聯(lián)網(wǎng)絡世界里,身份認證是一個最基本的要素,也是整個信息安全體系的基礎。身份認證是證實客戶的真實身份與其所聲稱的身份是否相符的驗證過程。目前,計算機和網(wǎng)絡系統(tǒng)中常用的身份認證技術主要有以下幾種。1.用戶名/密碼方式用戶名/密碼是最簡單也是最常用的身份認證方法,是基于“whatyouknow”的驗證手段。每個用戶的密碼是由用戶自己設定的,只有用戶自己才知道。只要能夠正確輸入密碼,計算機就認為操作者是合法用戶。實際上,許多用戶為了防止忘記密碼,經(jīng)常采用諸如生日、電話號碼等容易被猜測的字符串作為密碼,或者把密碼抄在紙上放在一個自認為安全的地方,這樣很容易造成密碼泄露。即使能保證用戶密碼不被泄露,由于密碼是靜態(tài)的數(shù)據(jù),在驗證過程中需要在計算機內(nèi)存和網(wǎng)絡中傳輸,而每次驗證使用的驗證信息都是相同的,很容易被駐留在計算機內(nèi)存中的木馬程序或網(wǎng)絡中的監(jiān)聽設備截獲。因此,從安全性上講,用戶名/密碼方式是一種極不安全的身份認證方式。2.智能卡認證智能卡是一種內(nèi)置集成電路的芯片,芯片中存有與用戶身份相關的數(shù)據(jù),智能卡由專門的廠商通過專門的設備生產(chǎn),是不可復制的硬件。智能卡由合法用戶隨身攜帶,登錄時必須將智能卡插入專用的讀卡器讀取其中的信息,以驗證用戶的身份。智能卡認證是基于“whatyouhave”的手段,通過智能卡硬件不可復制來保證用戶身份不會被仿冒。然而由于每次從智能卡中讀取的數(shù)據(jù)是靜態(tài)的,通過內(nèi)存掃描或網(wǎng)絡監(jiān)聽等技術還是很容易截取到用戶的身份驗證信息,因此還是存在安全隱患。3.動態(tài)口令動態(tài)口令技術是一種讓用戶密碼按照時間或使用次數(shù)不斷變化、每個密碼只能使用一次的技術。動態(tài)口令采用一種叫作動態(tài)令牌的專用硬件,內(nèi)置電源、密碼生成芯片和顯示屏。密碼生成芯片運行專門的密碼算法,根據(jù)當前時間或使用次數(shù)生成當前密碼并顯示在顯示屏上。認證服務器采用相同的算法計算當前的有效密碼,用戶使用時只需要將動態(tài)令牌上顯示的當前密碼輸入客戶端計算機,即可實現(xiàn)身份認證。由于每次使用的密碼必須由動態(tài)令牌產(chǎn)生,只有合法用戶才持有該硬件,所以只要通過密碼驗證就可以認為該用戶的身份是可靠的。而用戶每次使用的密碼都不相同,即使黑客截獲了一次密碼,也無法利用這個密碼來仿冒合法用戶的身份。動態(tài)口令技術采用一次一密的方法,有效保證了用戶身份的安全性。但是如果客戶端與服務器端的時間或次數(shù)不能保持良好的同步,就可能發(fā)生合法用戶無法登錄的問題。并且用戶每次登錄時需要通過鍵盤輸入一長串無規(guī)律的密碼,一旦輸錯就要重新操作,使用起來非常不方便。4.USBKey認證基于USBKey的身份認證方式是近幾年發(fā)展起來的一種方便、安全的身份認證技術。USBKey認證采用軟硬件相結(jié)合、一次一密的強雙因子認證模式,很好地解決了安全性與易用性之間的矛盾。USBKey是一種USB接口的硬件設備,它內(nèi)置單片機或智能卡芯片,可以存儲用戶的密鑰或數(shù)字證書,利用USBKey內(nèi)置的密碼算法實現(xiàn)對用戶身份的認證。基于USBKey身份認證系統(tǒng)主要有兩種應用模式:一是基于沖擊/響應的認證模式,二是基于PKI體系的認證模式。5.生物特征認證基于生物特征的身份識別技術主要是指通過可測量的身體或行為等生物特征進行身份認證的一種技術,是基于“whatyouare”的身份認證手段。生物特征是指唯一的可以測量或可自動識別和驗證的生理特征或行為方式。生物特征分為身體特征和行為特征兩類,身體特征包括指紋、掌型、視網(wǎng)膜、虹膜、人體氣味、臉型、手的血管和DNA等;行為特征包括簽名、語音、行走步態(tài)等。從理論上說,生物特征認證是最可靠的身份認證方式,因為它直接使用人的物理特征來表示每一個人的數(shù)字身份,不同的人具有不同的生物特征,因此幾乎不可能被仿冒。但是,近年來隨著基于生物特征的身份識別技術的廣泛應用,相應的身份偽造技術也隨之發(fā)展,對其安全性提出了新的挑戰(zhàn)。由于以上這些身份識別方法均存在一些安全問題,本書將主要討論基于密碼技術和Hash函數(shù)設計的安全的用戶身份識別協(xié)議。從實用角度考
慮,要
保
證
用
戶
身
份
識
別
的
安
全
性,身份識別協(xié)議至少要滿足以下條件:(1)識別者A能夠向驗證者B證明他的確是A。(2)在識別者A向驗證者B證明他的身份后,驗證者B沒有獲得任何有用的信息,B不能模仿A向第三方證明他是A。目前已經(jīng)設計出了許多滿足這兩個條件的識別協(xié)議。例如,Schnorr身份識別協(xié)議、Okanmto身份識別協(xié)議、Guillou-Quisquater身份識別協(xié)議和基于身份的識別協(xié)議等。這些識別協(xié)議均是詢問
應答式協(xié)議。詢問
應答式協(xié)議的基本觀點是:驗證者提出問題(通常是隨機選擇一些隨機數(shù),稱作口令),由識別者回答,然后驗證者驗證其真實性。一個簡單的詢問
應答式協(xié)議的例子如下:(1)識別者A通過用戶名和密碼向驗證者B進行注冊。(2)驗證者B發(fā)給識別者A一個隨機號碼(詢問)。(3)識別者A對隨機號碼進行加密,將加密結(jié)果作為答復,加密過程需要使用識別者A的私鑰來完成(應答)。(4)驗證者B證明識別者A確實擁有相關密鑰(密碼)。對于攻擊者Oscar來說,以上詢問
應答過程具有不可重復性,因為當Oscar冒充識別者A與驗證者B進行聯(lián)系時,將得到一個不同的隨機號碼(詢問),由于Oscar無法獲知識別者A的私鑰,因此他就無法偽造識別者A的身份信息。以上例子中的身份驗證過程是建立在識別者A和驗證者B之間能夠互相信任的基礎上的,如果識別者A和驗證者B之間缺乏相互信任,則以上驗證過程將是不安全的。考慮到實際應用中識別者A和驗證者B之間往往會缺乏信任,因此,在基于詢問-應答式協(xié)議設計身份識別方案時,要保證識別者A的加密私鑰不被分享。根據(jù)攻擊者采取攻擊方式的不同,目前,對身份認證協(xié)議的攻擊包括假冒、重放攻擊、交織攻擊、反射攻擊、強迫延時和選擇文本攻擊。(1)假冒:一個識別者A1聲稱是另一個識別者A2的欺騙。(2)重放攻擊:針對同一個或者不同的驗證者,使用從以前執(zhí)行的單個協(xié)議得到的信息進行假冒或者其他欺騙。對存儲的文件,重放攻擊是重新存儲攻擊,攻擊過程使用早期的版本來代替現(xiàn)有文件。(3)交織攻擊:對從一個或多個以前的或同時正在執(zhí)行的協(xié)議得來的信息進行有選擇的組合,從而假冒或者進行其他欺騙,其中的協(xié)議包括可能由攻擊者自己發(fā)起的一個或者多個協(xié)議。(4)反射攻擊:從正在執(zhí)行的協(xié)議將信息發(fā)送回該協(xié)議的發(fā)起者的交織攻擊。(5)強迫延時:攻擊者截獲一個消息,并在延遲一段時間后重新將該消息放入?yún)f(xié)議中,使協(xié)議繼續(xù)執(zhí)行,此時強迫延時發(fā)生(這里需要注意的是,延時的消息不是重放消息)。(6)選擇文本攻擊:選擇文本攻擊是對詢問
應答協(xié)議的攻擊,其中攻擊者有策略地選擇詢問消息以嘗試獲得識別者的密鑰信息。1991年,Schnorr提出了一種基于離散對數(shù)問題的交互式身份識別方案,能夠有效驗證識別者A的身份。該身份識別方案不僅具有計算量小、通信數(shù)據(jù)量少、適用于智能卡等優(yōu)點,而且識別方案融合了ELGamal協(xié)議、Fiat-Shamir協(xié)議等交互式協(xié)議的特點,具有較好的安全性和實用性,被廣泛應用于身份識別的各個領域。Schnorr身份識別方案首先需要一個信任中心(TrustedAuthority,TA)為識別者A頒發(fā)身份證書。信任中心首先確定以下參數(shù):(1)選擇兩個大素數(shù)p和q,其中q|(p-1)。(2)選擇α∈?p*,其中α的階為q。(3)選擇身份識別過程中要用到的Hash函數(shù)h。(4)確定身份識別過程中用到的公鑰加密算法的公鑰a和私鑰b。該過程通過識別者A選定加密私鑰b∈?q*,同時計算相應的加密公鑰a≡(αb)-1modp。對于需要進行身份識別的每一個用戶,均需要先到TA進行身份注冊,由TA頒發(fā)相應的身份證書,具體注冊過程為:TA首先確認申請者的身份,在此基礎上對每一位申請者指定一個識別名稱Name,Name中包含有申請者的個人信息,如姓名、職業(yè)、聯(lián)系方式等,以及身份識別信息,如指紋信息、DNA信息等。TA應用選定的Hash函數(shù)對用戶提供的Name和加密公鑰a計算其Hash函數(shù)值h(Name,a),并對計算結(jié)果進行簽名得到在TA進行以上處理的基礎上,具體的識別者A和驗證者B之間的身份識別過程描述如下:(1)識別者A選擇隨機整數(shù)k∈?q*,并計算γ≡αkmodp。(2)識別者A發(fā)送C(A)=(Name,a,s)和γ給驗證者B。(3)驗證者B應用TA公開的數(shù)字簽名驗證算法VerTA,驗證簽名VerTA(Name,a,s)的有效性。(4)驗證者B選擇一個隨機整數(shù)r(1≤r≤2t),并將其發(fā)給識別者A,其中t為Hash函數(shù)h的消息摘要輸出長度。(5)識別者A計算y≡(k+br)modq,將計算結(jié)果y發(fā)送給驗證者B。(6)驗證者B通過計算γ≡αyarmodp來驗證身份信息的有效性。以上Schnorr身份認證協(xié)議中,參數(shù)t被稱為安全參數(shù),它的目的是防止攻擊者Oscar偽裝成識別者A來猜測驗證者B選取的隨機整數(shù)r。如果攻擊者能夠知道隨機整數(shù)r的取值,則他可以選擇任意的y,并計算γ≡αyarmodp,攻擊者Oscar將在識別過程(2)將自己計算得到的γ發(fā)送給驗證者B,當驗證者B將選擇的參數(shù)r發(fā)送給Oscar時,Oscar可以將自己計算過的y值發(fā)送給驗證者B,以上提供的數(shù)據(jù)將能夠通過(6)的驗證過程,Oscar從而成功地實現(xiàn)偽造識別者A的身份認證信息。因此,為了保證以上身份認證協(xié)議的安全性,Schnorr建議Hash函數(shù)h的消息摘要長度不小于72位。Schnorr提出的身份認證協(xié)議實現(xiàn)了在識別者A的加密私鑰信息不被驗證者B知道的情況下,識別者A能夠向驗證者B證明他知道加密私鑰b的值,證明過程通過身份認證協(xié)議(5)來實現(xiàn),具體方案是通過識別者A應用加密私鑰b,計算y≡(k+br)modq,回答驗證者B選取的隨機整數(shù)r來完成。整個身份認證過程中,加密私鑰b的值一直沒有泄露,所以這種技術被稱為知識的證明。為保證Schnorr身份認證協(xié)議的計算安全性,加密參數(shù)的選取過程中,參數(shù)q要求長度不小于140位,參數(shù)p的長度則要求至少要達到512位。對于參數(shù)α的選取,可以先選擇一個?p上的本原元g∈?p,通過計算
得到相應的參數(shù)α的取值。對Schnorr身份認證協(xié)議的攻擊涉及離散對數(shù)問題的求解問題,由于當
溫馨提示
- 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年度個人股份優(yōu)先認購權合同參考樣本2篇
- 2025年度個人投資理財合同范本詳細說明4篇
- 建筑設備租賃合同(2篇)
- 2025年農(nóng)業(yè)科技項目研發(fā)合作協(xié)議集錦4篇
- 2025年度員工退休金及福利待遇確認協(xié)議4篇
- 2024年中級經(jīng)濟師考試題庫附完整答案
- 2025年銷售員銷售技巧與產(chǎn)品知識培訓勞務用工協(xié)議3篇
- 2025個人股權買賣及收益分配合同范本4篇
- 貨幣課程設計
- 虛擬仿生課程設計思路
- 2024版智慧電力解決方案(智能電網(wǎng)解決方案)
- 公司SWOT分析表模板
- 小學預防流行性感冒應急預案
- 肺癌術后出血的觀察及護理
- 聲紋識別簡介
- 生物醫(yī)藥大數(shù)據(jù)分析平臺建設-第1篇
- 基于Android的天氣預報系統(tǒng)的設計與實現(xiàn)
- 沖鋒舟駕駛培訓課件
- 美術家協(xié)會會員申請表
- 聚合收款服務流程
- 中石化浙江石油分公司中石化溫州靈昆油庫及配套工程項目環(huán)境影響報告書
評論
0/150
提交評論