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