版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第五章
數(shù)字簽名與認(rèn)證
5.1數(shù)字簽名的基本概念
1.?dāng)?shù)字簽名及其特點(diǎn)在信息化社會,簽名蓋章和識別簽名是一個(gè)重要的環(huán)節(jié),例如,銀行業(yè)務(wù)、電子資金傳送、股票、證券交易、合同、協(xié)議的簽字等,都需要簽名。在計(jì)算機(jī)廣泛應(yīng)用的時(shí)代,應(yīng)用密碼學(xué)的方法實(shí)現(xiàn)數(shù)字簽名,具有重要的理論意義,更具有重要實(shí)際意義。假設(shè)發(fā)送方sender發(fā)送了一個(gè)簽了名的信息message給收方receiver,那么sender的數(shù)字簽名必須滿足以下條件:1)
receiver能夠證實(shí)sender對信息message的簽名;2)
任何人包括receiver在內(nèi),都不能偽造sender對message的簽名;3)假設(shè)sender否認(rèn)對信息message的簽名,可以通過仲裁解決sender和receiver之間的爭議。假定sender向receiver發(fā)送一則消息message,采用公開密碼系統(tǒng)的簽名過程描述如下:1)sender計(jì)算:c=Da(message)對message簽名。Da是加密變換,所使用的秘密密鑰為sender所私有,任何人,包括receiver在內(nèi),由于不知道sender的秘密鑰,所以不能偽造sender的簽名。2)receiver通過檢查Ea(c)是否恢復(fù)message來驗(yàn)證sender的簽名,Ea是Da的逆變換,Ea變換中所使用的密鑰是sender的公開鑰。3)如果sender和receiver之間發(fā)生爭議,仲裁者可以用2)中的方法鑒定sender的簽名。例:sender表示一個(gè)銀行電子支付系統(tǒng)的客戶,receiver代表sender所在的銀行。Receiver收到sender要求取款1000萬日元的信息后,必須確定這個(gè)信息確實(shí)是由sender簽名發(fā)出的。如果以后sender否認(rèn)這一筆取款,receiver能夠向仲裁者證實(shí),這個(gè)取款單確實(shí)是由sender簽署的。如果采用公開鑰密碼系統(tǒng)簽名,密秘鑰僅為sender所擁有,公開鑰大家都知道,sender無法否認(rèn)自己的簽名。別人由于不知道秘密鑰也無法冒名頂替sender的簽名。在上例中,由于銀行和客戶之間的業(yè)務(wù)信息往來應(yīng)秘密進(jìn)行,所以這個(gè)簽名系統(tǒng)除要求生成簽名和驗(yàn)證外,還要求加密。當(dāng)然,和紙上簽名一樣,并非所有的數(shù)字簽名系統(tǒng)都要求保密性。以上介紹的數(shù)字簽名方案屬于所謂的“常規(guī)數(shù)字簽名方案”這類方案具有如下特點(diǎn):1)簽名者知道他簽署的報(bào)文的內(nèi)容。2)任何人只要知道簽名者的公開密鑰,就可以在任何時(shí)候驗(yàn)證簽名的真實(shí)性,不需要簽名者的“同意”信號或來自其他方面的信號。3)具有基于某種單向函數(shù)運(yùn)算的安全性。但在電子貨幣、電子商業(yè)和其他的網(wǎng)絡(luò)安全通信的實(shí)用中,可能要放寬或加強(qiáng)上列特征中的一個(gè)或幾個(gè),或添加上其他安全性特征,以適應(yīng)各種不同的需要。例如,在因特網(wǎng)上購買商品或服務(wù),要向供應(yīng)商或銀行付款,顧客發(fā)出包含有他的銀行賬號或別的重要信息的付款報(bào)文,由收款者作出(電子)簽名才能有效,但賬號之類的信息又不宜泄露給簽名者,以保證安全。這種情況,就要使用盲簽名方案(BlindSignatureScheme)。盲簽名方案的工作原理是這樣的:用戶A有報(bào)文要求用戶B簽署,但不能讓B知道關(guān)于報(bào)文m的任何信息。設(shè)(n,e)是B的公開密鑰,(n,d)是他的秘密密鑰。A用專用通信軟件生成一個(gè)與n互質(zhì)的隨機(jī)數(shù)r,將m’=remmodn發(fā)送給B,這樣,B收到的是被r“遮蔽”的m值,即m’,它不能從m’獲取有關(guān)m的信息。接著,B發(fā)回簽名值s’=(m’)dmodn=(rem)dmodn=remdmodn,A對收到的s’計(jì)算s’(re)-1modn=mdmodn,就得到了真正的來自于B的對m的簽名s=mdmodn可見,運(yùn)用盲簽名方案,A無法代替或冒充B的簽名,而B則不知道他自己所簽署的報(bào)文的真實(shí)內(nèi)容。除了盲簽名方案之外,還有其它幾種專用數(shù)字簽名方案:“小組簽名方案”(GroupSignatureScheme):一個(gè)小組的任一成員可以簽署文件,驗(yàn)證者可以確認(rèn)簽名來自該小組,但不知道是小組的哪一個(gè)成員簽署了文件。“一次性簽名方案”(OnetimeSignatureScheme):僅能簽署單個(gè)報(bào)文的簽名方案?!安豢傻仲嚭灻桨浮保║ndeniableSignatureScheme):在簽名和驗(yàn)證的常規(guī)成分之外添上“抵賴協(xié)議”(DisavowalProtocol),則僅在得到簽名者許可信息后才能進(jìn)行驗(yàn)證?!皫в袛?shù)字時(shí)間標(biāo)記系統(tǒng)(DigitalTimestampingSystem)的簽名方案”:將不可篡改的時(shí)間信息納入數(shù)字簽名方案。“多重簽名”:使任意n個(gè)簽名人產(chǎn)生的n個(gè)簽名組成一個(gè)單一的簽名。2.?dāng)?shù)字指紋僅用上述的數(shù)字簽名是不夠的,也是不實(shí)用的。因?yàn)閿?shù)字簽名不像紙上簽名那樣,簽名和被簽署的內(nèi)容緊密聯(lián)系在一起,因而不易被篡改。在數(shù)字簽名中,如果sender的簽名未與被簽署的文件本身(message)相聯(lián)系,就留下了篡改、冒充或抵賴的可能性。為了把那些千差萬別報(bào)文(文件)和數(shù)字簽名不可分割的結(jié)合在一起,即簽名與其發(fā)送的信息緊密結(jié)合起來,需要設(shè)法從報(bào)文中提取一種確定格式的、符號性的摘要,稱為“報(bào)文摘要”(messagedigest),更形象的一種說法是“數(shù)字指紋”(digitalfingerprint),然后對它進(jìn)行簽名并發(fā)出??梢哉f,真正的數(shù)字簽名是信息發(fā)送者用其秘密密鑰對從所傳送的報(bào)文中提出的特征數(shù)據(jù)(或稱數(shù)字指紋)進(jìn)行RSA算法操作,以保證發(fā)信人無法抵賴曾發(fā)過該信息(即不可抵賴性),同時(shí),也確保信息報(bào)文在傳遞過程中未被篡改(即完整性)。當(dāng)信息接受者受到報(bào)文后,就可以用發(fā)送者的公開密鑰對數(shù)字簽名進(jìn)行驗(yàn)證。如果實(shí)體A要發(fā)送一個(gè)需要簽署的報(bào)文給實(shí)體B,通信軟件會調(diào)用某種報(bào)文摘要算法處理報(bào)文內(nèi)容,得出一個(gè)數(shù)字指紋,然后用自己的秘密密鑰將它加密,這才是真正的數(shù)字簽名,將它同報(bào)文一并發(fā)送給B。B接到報(bào)文和數(shù)字簽名后,用A的公開密鑰將數(shù)字簽名解密,恢復(fù)出數(shù)字指紋。接著用A所用的一樣的報(bào)文摘要算法處理報(bào)文內(nèi)容,將算出的數(shù)字指紋和接受到的經(jīng)解密的數(shù)字指紋比較,如果兩者完全相同,則A的數(shù)字簽名被B驗(yàn)證成功,可以相信該報(bào)文是真實(shí)的,確實(shí)是發(fā)自于A。否則,報(bào)文可能來自別處,或被篡改過,有理由拒絕該報(bào)文。用上述方法,別人也不難讀取報(bào)文并驗(yàn)證數(shù)字簽名,這在使用中是不妥當(dāng)?shù)摹槭箞?bào)文本身的內(nèi)容不泄露給別人,A只要再添加一個(gè)操作步驟:用B的公開密鑰現(xiàn)將待發(fā)的報(bào)文加密,當(dāng)然,B在驗(yàn)證數(shù)字簽名無誤后,要用其自己的秘密密鑰解密,才能得到原始機(jī)密信息??傊皥?bào)文摘要”是一種防止信息被篡改的方法,在數(shù)字簽名中有重要作用的摘要算法,即生成報(bào)文“數(shù)字指紋”的方法,近年來倍受關(guān)注,構(gòu)成了現(xiàn)代密碼學(xué)的一個(gè)重要側(cè)面。它是通過一類特殊的散列函數(shù)(Hash)生成的,這些函數(shù)的輸入可以是任意大小的信息,而輸出是一個(gè)固定長度的摘要。這些摘要有這樣一個(gè)性質(zhì),如果改變了信息中的任何內(nèi)容,甚至只改變了一位,輸出摘要也將會發(fā)生不可預(yù)測的改變,即輸入信息的每一位都影響輸出的摘要。對這些Hash函數(shù)的特殊要求是:1)
接受的輸入報(bào)文數(shù)據(jù)沒有長度限制。2)
對任何輸入報(bào)文數(shù)據(jù)生成固定長度的摘要(數(shù)字指紋)輸出。3)
從報(bào)文能方便的算出摘要。4)
難以對指定的摘要生成一個(gè)報(bào)文,而由該報(bào)文可以算出該指定的摘要,即不可逆性。5)
兩個(gè)不同的報(bào)文難以生成相同的摘要,即唯一性。顯然,上面前三點(diǎn)是實(shí)用性的要求,保證對長短不一的報(bào)文易于生成同樣大小的“數(shù)字指紋”;后兩點(diǎn)則是安全性的要求,是建立在某種單向函數(shù)的基礎(chǔ)之上的。這樣摘要算法從給定的文本塊中產(chǎn)生的數(shù)字簽名,可以有效地防止從一個(gè)簽名中獲取文本信息或改變文本信息內(nèi)容的行為。顯然,客戶機(jī)和服務(wù)器必須使用相同的算法。數(shù)字簽名不同于手寫簽名:數(shù)字簽名隨文本的變化而變化,手寫簽名反映某個(gè)人個(gè)人特征,是不變的,數(shù)字簽名與文本信息是不可分割的,而手寫簽名是附加在文本之后的,與文本信息是分離的。5.2數(shù)字簽名算法DSA
DSA(digitalsignaturealgorithm)算法是美國國家標(biāo)準(zhǔn)與技術(shù)學(xué)會(NationalInstituteofStandardsandTechnology,NIST)于1994年公布的一個(gè)數(shù)字簽名標(biāo)準(zhǔn)。DSA是一個(gè)公開鑰數(shù)字簽名算法,用于檢驗(yàn)數(shù)據(jù)的完整性和一致性,第三方可以使用它來確認(rèn)數(shù)字簽名的合法性。1.DSA算法描述DSA是Schnorr和ELGamal數(shù)字簽名算法的變體,DSA算法使用的參數(shù)含義如下:p:L比特長的素?cái)?shù),其中L范圍是從512比特到1024比特,并且要求是64的整數(shù)倍(在原始標(biāo)準(zhǔn)中p的尺寸固定的512比特,后來p的尺寸由NIST作了改變)。q:160比特的數(shù),并且要求是p-1的因子。g:gh(p-1)/qmodp,其中h是小于p-1的任意數(shù),并且h(p-1)/qmodp1x:小于q的數(shù)y:ygxmodp前三個(gè)個(gè)參數(shù)數(shù)p、、q、、g是是公開開的,,可以以由一一組網(wǎng)網(wǎng)絡(luò)用用戶共共享。。秘密密密鑰鑰為x,公公開密密鑰為為y。。DSA算法法還利利用了了單項(xiàng)項(xiàng)哈希希函數(shù)數(shù)H(m),該該標(biāo)準(zhǔn)準(zhǔn)還規(guī)規(guī)定了了安全全哈希希算法法。對信息息m進(jìn)進(jìn)行簽簽名過過程可可以描描述如如下::1)發(fā)送方方sender生成成一個(gè)個(gè)隨機(jī)機(jī)數(shù)k,并并且kq2)發(fā)送方方sender生成成簽名名:r=(gkmodp)modqs=(k-1(H(m)+xr))modq參數(shù)r和s是sender的的簽名名,sender把把這些些信息息發(fā)送送給接接收方方receiver。3)receiver通通過計(jì)計(jì)算驗(yàn)驗(yàn)證這這些簽簽名::w=s-1modqu1=(H(m)w)modqu2=(rw)modqv=(modp)modq如果v=r,那那么簽簽名被被證實(shí)實(shí)。1.使使用預(yù)預(yù)先計(jì)計(jì)算來來加快快速度度DSA的實(shí)實(shí)現(xiàn)經(jīng)經(jīng)常是是通過過預(yù)先先計(jì)算算來加加快速速度的的。注注意到到r的的值不不取決決于信信息((由隨隨機(jī)數(shù)數(shù)k確確定))??煽梢陨梢灰淮甼值,,然后后再計(jì)計(jì)算對對應(yīng)的的r值值,也也可以以計(jì)算算k對對應(yīng)應(yīng)的k-1。于是是,當(dāng)當(dāng)對消消息簽簽名時(shí)時(shí),可可以用用給定定的r和k-1進(jìn)行計(jì)計(jì)算。。表5.1給出出了DSA樣本本軟件件速度度。表5.1對對于不不同的的模長長度帶帶有160比特特指數(shù)數(shù)的DSA速度度模長度度簽簽名驗(yàn)驗(yàn)證證512比特特0.20秒秒0.35秒768比特特0.43秒秒0.80秒1024比比特0.57秒秒1.27秒如果p取512比特,,DSA算法對對長期期安全全強(qiáng)度度是不不夠的的,如如果取取1024比特,,DSA算法對對長期期安全全強(qiáng)度度是足足夠的的。3.DSA素?cái)?shù)數(shù)生成成密碼學(xué)學(xué)家Lentra和和Haber指指出DSA的一一些模模是容容易攻攻破的的。如如果一一些網(wǎng)網(wǎng)絡(luò)用用戶使使用這這樣的的模,,那么么他的的簽名名就會會被偽偽造。。但是是這些些模很很容易易被檢檢測,,而且且數(shù)目目很少少,以以至于于選擇擇這樣樣的模模的概概率很很小。。NIST學(xué)學(xué)會推推薦生生成兩兩個(gè)素素?cái)?shù)p、q的一一個(gè)特特別的的方法法,其其中q能整整除p-1,p長長度為為L比比特,,L范范圍是是512比比特到到1024比特特之間間,并并且是是64的整整數(shù)倍倍。素素?cái)?shù)q長度度是160比特特。令令L-1=160n+b,,其中中L是是p的的長度度,n和b是兩兩個(gè)數(shù)數(shù),b160。DSA素?cái)?shù)數(shù)生成成步驟驟如下下:1)選擇至至少有有160比比特的的任意意序列列,稱稱之為為S。。令g是S的比比特長長度;;2)計(jì)算U=SHA(S)SHA((S+1)mod2g,其中中,SHA是安安全哈哈希算算法;;3)設(shè)置U的最最高有有效位位和最最低有有效位位為1,形形成q;4)檢查q是否否是素素?cái)?shù);;5)如果q不是是素?cái)?shù)數(shù),則則轉(zhuǎn)會會步驟驟1;;6)令C=0且且N=2;;7)對應(yīng)k=0,1,2,……,n,令令Vk=SHA((S+N+k)mod2g);8)令W是是一個(gè)個(gè)整數(shù)數(shù)W=V0+2160V1+……+2160(n-1)Vn-1+2160nVn(mod2b)并且令令X=W+2L+1;9)令令p=X––((Xmod2q)––1),,要求求pmod2q=1;10))如如果p2L-1則轉(zhuǎn)到到步驟驟13;11))檢查查p是是否是是素?cái)?shù)數(shù);12))如果果p是是素?cái)?shù)數(shù),則則轉(zhuǎn)到到步驟驟15;13))令C=C+1且且N=N+n+1;;14))如果果C=4096,則則轉(zhuǎn)到到步驟驟1,,否則則轉(zhuǎn)到到步驟驟7;;15))存儲儲S和和C的的值,,用于于生成成p和和q。。上式中中,變變量S稱作““種子子”,,C稱作““計(jì)數(shù)數(shù)器””,N稱作““偏移移量””。4.用用DSA的的RSA加加密假設(shè)DSA算法法由一一個(gè)單單獨(dú)的的函數(shù)數(shù)調(diào)用用實(shí)現(xiàn)現(xiàn):DSAsign(p,q,g,k,x,h,r,s)給函數(shù)數(shù)提供供參數(shù)數(shù)p,,q,,g,,k,,x,,h,,函數(shù)數(shù)返回回簽名名r,,s。。使用RSA加密密是比比較容容易的的,設(shè)設(shè)模為為n,,消息息為m,公公開密密鑰為為e,,調(diào)用用DSAsign(n,n,m,e,0,0,r,s)那么返返回的的r值值就是是密文文,令令c=r。。相應(yīng)的的,用用RSA實(shí)實(shí)現(xiàn)解解密也也是比比較容容易的的,如如果c為密密文,,d為為秘密密密鑰鑰,調(diào)調(diào)用DSAsign(n,n,c,d,0,0,r,s)那么返返回的的r值就是是明文文。5.DSA變體體為了突突出不不同方方面的的實(shí)現(xiàn)現(xiàn)特性性,下下面介介紹幾幾種變變體。。第一種種變體體使簽簽名容容易實(shí)實(shí)現(xiàn),,它是是通過過使用用戶不不去計(jì)計(jì)算k-1來實(shí)現(xiàn)的的,DSA變體體的所有有參數(shù)與與DSA中參數(shù)數(shù)相同。。為了對對信息m簽名,,發(fā)送方方生成兩兩個(gè)隨機(jī)機(jī)數(shù)k和和d,且且kq,dq。簽名名:r(gkmodp)modqs((H(m)+xr)d)modqt(kd)modqreceiver通過過計(jì)算驗(yàn)驗(yàn)證這些些簽名::w(t/s)modqu1(H(m)w)modqu2(rw)modq如果,r(modp)modq那么簽簽名被證證實(shí)。第三種DSA變變體允許許成批地地驗(yàn)證。。接收方方成批地地驗(yàn)證簽簽名。如如果都是是有效的的,則結(jié)結(jié)束;如如果某一一個(gè)無效效,接收收方還得得去找到到這個(gè)簽簽名。遺遺憾的是是,這種種方法不不安全。。簽名者者和驗(yàn)證證者很容容易生成成一組偽偽造的簽簽名來滿滿足驗(yàn)證證的標(biāo)準(zhǔn)準(zhǔn)。第四種變變體是DSA素素?cái)?shù)生成成的變體體,即1)選擇至少少有160比特特的任意意序列,,稱之為為S。令令g是S的比特特長度;;2)計(jì)算U=SHA(S)SHA(S+1)mod2g),其中中SHA是安全全哈希算算法;3)設(shè)置U的的最高有有效位及及最低有有效位均均為1,,形成q;4)檢查q是是否是素素?cái)?shù);5)令p是q、S、、C和SHA(S)的并并置鏈接接,C被被設(shè)置成成32比比特,并并且全為為0;6)p=p––(pmodq)+1;7)p=p+q;;8)如果p中中的C是是0X7fffffff,那那么轉(zhuǎn)到到步驟1;9)檢查p是是否是素素?cái)?shù);10)如如果是合合數(shù),則則轉(zhuǎn)到步步驟7。。關(guān)于這個(gè)個(gè)變體,,可以不不必存儲儲用于生生成p和和q的S和C的的值,他他們與p嵌在一一起。對對于應(yīng)用用,不需需要大量量的存儲儲器,這這一點(diǎn)很很可貴。。但這種種模式是是否降低低了DSA的安安全性,,目前還還不十分分清楚。。4.使用用DSA生成、、驗(yàn)證簽簽名的實(shí)實(shí)例這里介紹紹使用Java語言實(shí)實(shí)現(xiàn)使用用DSA生成、、驗(yàn)證簽簽名的一一個(gè)例子子。1)Java簡介介談?wù)揑nternet和Intranet或網(wǎng)絡(luò)設(shè)設(shè)備而不不談?wù)揓ava是不可能能的。似似乎一夜夜之間Java成為建立立網(wǎng)絡(luò)化化應(yīng)用的的標(biāo)準(zhǔn)平平臺,Java是一種通通用的、、并發(fā)的的、基于于類的、、面向?qū)ο蟮某坛绦蛟O(shè)計(jì)計(jì)語言,,它被設(shè)設(shè)計(jì)得足足夠簡單單以便許許多程序序員很容容易使用用它。Java是一種生生產(chǎn)性語語言而不不是研究究性語言言,Java使用垃圾圾收集器器技術(shù)自自動地進(jìn)進(jìn)行內(nèi)存存管理,,避免不不安全因因素。Java程序設(shè)計(jì)計(jì)語言和和歷史上上任何其其他程序序設(shè)計(jì)語語言相比比被采用用得最快快,并且且Java技術(shù)被大大部分公公司認(rèn)作作一個(gè)關(guān)關(guān)鍵技術(shù)術(shù)來支持持平臺獨(dú)獨(dú)立存取取廣泛的的協(xié)作資資源無疑,Java在軟件件開發(fā)者者中越來來越受歡歡迎。它它對Internet和Intranet應(yīng)用的的開發(fā)和和使用起起到了革革新的作作用。它它提供了了一種新新的、令令人興奮奮的面向向?qū)ο蟮牡木W(wǎng)絡(luò)設(shè)設(shè)計(jì)模型型。這種種模型易易于理解解,使用用這種模模型很容容易地進(jìn)進(jìn)行程序序設(shè)計(jì)。。Java取得得了巨大大的成功功的另一一個(gè)方原原因是::用Java寫寫一次程程序,測測試一次次,然后后可以到到處運(yùn)行行(writeaprogramonce,testitonce,andthenrunitanywhere)而而不需要要考慮所所用的硬硬件和操操作系統(tǒng)統(tǒng)。這可可以實(shí)現(xiàn)現(xiàn)在網(wǎng)絡(luò)絡(luò)上軟件件、信息息的共享享和再利利用。這這個(gè)事實(shí)實(shí)也蘊(yùn)含含一個(gè)潛潛在的優(yōu)優(yōu)勢:軟軟件開發(fā)發(fā)時(shí)間和和成本的的巨大節(jié)節(jié)省。Java.math.BigInteger提供供了任意意精度的的大數(shù)的的模代數(shù)數(shù)運(yùn)算,,如最大大公約數(shù)數(shù)計(jì)算gcd(BigInteger),,素?cái)?shù)生生成測試試BigInteger(intbitLength,intcertainty,,Randomrnd),,余數(shù)計(jì)計(jì)算,指指數(shù)運(yùn)算算modPow(BigInteger),乘法法逆元素素運(yùn)算modInverse(BigInteger)。使用用這些方方法進(jìn)行行程序設(shè)設(shè)計(jì)是很很方便的的,這就就是使用用Java的優(yōu)優(yōu)點(diǎn)之一一。如果果使用其其他的程程序設(shè)計(jì)計(jì)語言,,這些都都要自己己編程。。Java安全API提提供加密密、信息息融合、、密鑰管管理、認(rèn)認(rèn)證、存存取控制制和數(shù)字字簽名功功能,允允許開發(fā)發(fā)者進(jìn)行行底層和和高層的的安全應(yīng)應(yīng)用。2)使用用DSA生成、、驗(yàn)證簽簽名的例例子使用Java安安全API(應(yīng)應(yīng)用程序序接口))為數(shù)據(jù)據(jù)生成一一個(gè)簽名名,并驗(yàn)驗(yàn)證簽名名是真實(shí)實(shí)的。步驟1準(zhǔn)備初始始化程序序結(jié)構(gòu)數(shù)字簽名名的方法法是包括括在java.security的的軟件包包中的,,所以要要輸入來來自于這這個(gè)軟件件包的一一切。還還要輸入入java.io軟件件包,因因?yàn)樗溯斴斎胛募?shù)據(jù)所所需要的的方法。。importjava.io*;importjava.security.*步驟2生成公開開密鑰和和秘密密密鑰為能生成成簽名,,必須做做的第一一件事就就是生成成密鑰對對:秘密密密鑰和和對應(yīng)的的公開密密鑰。密密鑰由隨隨機(jī)數(shù)生生成器生生成。秘秘密鑰用用于生成成數(shù)字簽簽名,對對應(yīng)的公公開鑰用用于驗(yàn)證證簽名。。密鑰對對是通過過使用KeyPairGenerator類來生生成的。。在這個(gè)例例子中,,為“DSA””算法生生成一個(gè)個(gè)公開的的和秘密密的密鑰鑰對。生生成的密密鑰具有有1024bit長度度。生成一個(gè)個(gè)密鑰對對步驟如如下:(1)創(chuàng)創(chuàng)建一個(gè)個(gè)密鑰對對生成器器為DSA簽名算算法生成成密鑰的的第一步步是獲得得一個(gè)密密鑰對對對象。KeyPairGeneratorKeyGen=KeyPairGenerator.getInstance(“DSA”)(2)初初始化密密鑰對生生成器所有的密密鑰對生生成器都都共享““強(qiáng)度””(strength)和““隨機(jī)數(shù)數(shù)源”((sourceofrandomness))的概念念。KeyPairGenerator類類中的方方法initialize有有兩個(gè)類類型變量量。對DSA密密鑰對生生成器強(qiáng)強(qiáng)度Srength設(shè)設(shè)置為1024,隨機(jī)機(jī)數(shù)源必必須是java中的SecureRandom類的一一個(gè)實(shí)例例。簡單單的說,,可使用用SecureRandom的空空的構(gòu)造造函數(shù),,這將自自動的生生成一個(gè)個(gè)隨機(jī)數(shù)數(shù)生成器器所需要要的一個(gè)個(gè)“種子子”(seed)值.KeyGen.initialize(1024,newSecureRandom());(3)生生成密鑰鑰對,并并在KeyPair類類的實(shí)例例中存儲儲密鑰KeyPairPair=KeyGen.GenerateKeyPair()步驟3對對數(shù)數(shù)據(jù)進(jìn)行行簽名在生成秘秘密鑰和和公開鑰鑰之后,,準(zhǔn)備對對數(shù)據(jù)進(jìn)進(jìn)行簽名名。在這這個(gè)實(shí)例例中,將將對文件件中包括括的數(shù)據(jù)據(jù)進(jìn)行簽簽名,可可以從命命令行得得到文件件名。使使用簽名名Signature類的例例子生成成數(shù)字簽簽名。其簽名步步驟描述述如下::(1)得到一一個(gè)簽名對象象(object)通過使用下面面的語句可以以得到一個(gè)使使用DSA算算法生成和驗(yàn)驗(yàn)證簽名的簽簽名對象。Signaturedsa=Signature.getInstance(“SHA/DSA”);一般地,說明明簽名算法名名稱時(shí),也應(yīng)應(yīng)說明這個(gè)簽簽名算法所使使用的信息融融合算法名稱稱。DSA算算法被定義使使用SHA-1信息融合合算法。SHA經(jīng)常被參參考成SHA-1算法。。(2)對簽名名對象進(jìn)行初初始化在簽名對象能能用于簽名((或驗(yàn)證)之之前,必須將將它進(jìn)行初始始化。簽名的的初始化方法法需要秘密密密鑰,可以從從前一步生成成的密鑰對中中抽取和使用用秘密鑰。PrivateKeyPriv=Priv.getPrivate();Dsa.initSign(priv);(3)給簽名名對象提供要要簽名的數(shù)據(jù)據(jù)使用來自于文文件的數(shù)據(jù),,對文件中的的數(shù)據(jù)一次讀讀一個(gè)byte。文件名名是在第一個(gè)個(gè)命令行中說說明的。通過過調(diào)用Updata方法法把數(shù)據(jù)提供供給簽名對象象。FileInputStreamfis=newFileInputStream(arg[0]);Byteb;While(fis,available()!=0){b=(byte)fis,read();dsa,updata(b);}fis.close();(4)生成簽簽名一旦把所有的的數(shù)據(jù)提供給給簽名對象,,就可以對數(shù)數(shù)據(jù)生成數(shù)字字簽名:byte[]sig=dsa.sign();步驟4驗(yàn)驗(yàn)證簽名如果已經(jīng)具有有了經(jīng)過數(shù)字字簽名的數(shù)據(jù)據(jù),通過使用用Java中中的Secuity就可可以驗(yàn)證這個(gè)個(gè)簽名的真實(shí)實(shí)性。驗(yàn)證簽簽名需要以下下三項(xiàng)內(nèi)容::數(shù)據(jù)、簽名名和對應(yīng)簽名名所使用的秘秘密鑰的公開開鑰。使用簽名Signature類的一一個(gè)實(shí)例:Signature=Signature.GetInstance(“DSA”);(1)為了驗(yàn)驗(yàn)證,首先對對簽名對象進(jìn)進(jìn)行初始化簽名對象在簽簽名時(shí)進(jìn)行過過初始化?,F(xiàn)現(xiàn)在,為了驗(yàn)驗(yàn)證,必須將將它進(jìn)行初始始化。用于驗(yàn)驗(yàn)證的初始化化方法需要一一個(gè)公開鑰,,可以從步驟驟2產(chǎn)生的密密鑰對中抽取取和使用公開開鑰。PublicKeyPub=pair.getPublic();dsa.initVerify(pub);(2)給簽名名對象提供要要驗(yàn)證的數(shù)據(jù)據(jù)必須給簽名對對象提供要驗(yàn)驗(yàn)證的數(shù)據(jù)。。這個(gè)數(shù)據(jù)包包括在文件中中,文件名應(yīng)應(yīng)是在第一個(gè)個(gè)命令行變量量中說明的。。像步驟3一一樣,使用FileInputStream變變量fis及及byte變變量b。FileInputStreamfis=newFileInputStream(args[0]);While(fis,available()!=0){b=(byte)fis.read();dsa,updata(b);}fis.close();(3)驗(yàn)證簽簽名一旦給出了簽簽了名的對象象,就可以正正是這個(gè)簽名名的正確性。。booleanverifies=dsa.verify(sig);System.out.println(“Signatureverifies:”+verifies);7.報(bào)文摘摘要算法MD5簡介在數(shù)字簽名中中,報(bào)文摘要要或數(shù)字指紋紋是保證信息息不被篡改的的重要技術(shù)。。從上世紀(jì)80年代到90年代,Rivest開發(fā)了好幾幾種專有的報(bào)報(bào)文摘要算法法,包括MD、MD2、、MD5等。。以1991年發(fā)表的MD5為例,,是克服了MD4算法的的安全缺陷的的產(chǎn)物,“數(shù)數(shù)字指紋”的的大小是128比特。1994年發(fā)發(fā)表的一個(gè)研研究報(bào)告稱,,可以花費(fèi)1000萬美美元去制造一一套專門的機(jī)機(jī)器,針對MD5搜索兩兩個(gè)不同的報(bào)報(bào)文具有相同同的摘要,即即“碰撞”現(xiàn)現(xiàn)象,平均用用24天才能能找到一次碰碰撞。目前,,MD5被認(rèn)認(rèn)為仍是一個(gè)個(gè)安全和最常常用的報(bào)文摘摘要算法,它它可由任意長長度的數(shù)據(jù)計(jì)計(jì)算出一個(gè)128比特的的MD5值。。MD5是一種種在加密軟件件中被用來單單向變換用戶戶口令和對信信息簽名的單單向散列算法法。一種單向向散列的強(qiáng)度度體現(xiàn)在他能能把任意的輸輸入隨機(jī)化到到什么程度并并且能產(chǎn)生唯唯一的輸出。。對單向散列列的直接攻擊擊可以分為普普通直接攻擊擊和“生日””攻擊。對MD5的普普通直接攻擊擊。所謂直接接攻擊又叫野野蠻攻擊。攻攻擊者為了找找到一份和原原始明文m散散列結(jié)果相同同的明文m’,就是H(m)=H(m’)。普通直接接攻擊,顧名名思義就是窮窮舉可能的明明文去產(chǎn)生一一個(gè)和H(m)相同的的散列結(jié)果。。對MD5來來說散列結(jié)果果為128比比特,就是說說如果攻擊者者有一臺每秒秒嘗試1000000000條明文文的機(jī)器需要要計(jì)算約1022年。對MD5的生生日攻擊。生生日攻擊實(shí)際際上只是為了了找到兩條能能產(chǎn)生同樣散散列結(jié)果的明明文。記得那那個(gè)有名的概概率生日問題題嗎,在N個(gè)個(gè)人中至少少有兩個(gè)人的的生日相同的的概率是多少少?所謂生日日攻擊實(shí)際上上只是用概率率來指導(dǎo)散列列沖突的發(fā)現(xiàn)現(xiàn),對于MD5來說如果果嘗試264條明文,那么么它們之間至至少有一對發(fā)發(fā)生沖突的概概率是50%。僅此而已已,對當(dāng)今的的科技能力來來說,它是不不可能的。5.3DSA算法的的改進(jìn)1.改進(jìn)算法法DSA算法的的安全性依賴賴于整數(shù)有限限域上的離散散對數(shù)問題的的困難性,安安全強(qiáng)度和速速度均低于RSA算法,,因此不少人人對DSA算算法提出了改改進(jìn),下面介介紹其中一種種新的改進(jìn)方方案(NDSA)。NDSA簽名名方案中的參參數(shù)選取同DSA,即::p:L比特長長的素?cái)?shù),其其中L范圍是是從512比比特到1024比特,并并且要求是64的整數(shù)倍倍(在原始標(biāo)標(biāo)準(zhǔn)中p的尺尺寸固定的512比特,,后來p的尺尺寸由NIST作了改變變)。q:160比比特的數(shù),并并且要求是p-1的因子子。g:gh(p-1)/qmodp,,其中h是是小于p-1的任意數(shù),,并且h(p-1)/qmodp1x:小于q的的數(shù)y:ygxmodp前三個(gè)參數(shù)p、q、g是是公開的,可可以由一組網(wǎng)網(wǎng)絡(luò)用戶共享享。秘密密鑰鑰為x,公開開密鑰為y。。簽名時(shí),,先產(chǎn)生一個(gè)個(gè)隨機(jī)數(shù)k,,(k<q)簽名方程:r=(gkmodp)modqs=(k-rH(m)x)modq簽名:((r,,s)或(m;(r,s))簽名驗(yàn)證:為為了驗(yàn)證(r,s)的正正確性,驗(yàn)證證者先計(jì)算u1=smodqu2=rH(m)modq,,然后驗(yàn)證方程程:r=是是否成成立。成立則則正確,否則則不正確。2.改進(jìn)算法法(NDSA)的性能NDSA具有有以下性能::1)無逆簽名名由一上簽名和和簽名驗(yàn)證過過程可見,使使用NDSA無論是進(jìn)行行簽名還是進(jìn)進(jìn)行簽名驗(yàn)證證都無需求逆逆,是一個(gè)真真正的無逆簽簽名算法。該該算法既提高高了簽名速度度,又提高了了驗(yàn)證速度,,這一特點(diǎn)是是DSA和以以有些其他算算法所不及的的。2)多重簽名名由于DSA的的特殊結(jié)果,,利用它無法法建立多重簽簽名方案,而而在DSA算算法基礎(chǔ)上能能過實(shí)現(xiàn)多重重簽名方案,,它可使任意意n個(gè)簽名人人產(chǎn)生的n個(gè)個(gè)簽名組合成成一個(gè)單一的的簽名。敘述述如下:簽名產(chǎn)生設(shè)共有n個(gè)簽簽名人Ui(i=1,2,…,n)。每個(gè)個(gè)簽名人Ui計(jì)算并將ci對所有簽名人人公開,因此此每個(gè)簽名人人Ui可計(jì)算并將ci對所有簽名人人公開,因此此每個(gè)簽名人人Ui可計(jì)算和si=(ki–rH(m)xi)modq即Ui關(guān)于m的簽名名為(ci,,si)多重重簽簽名名設(shè)某某人人為為n個(gè)個(gè)簽簽名名人人和和簽簽名名收收方方之之間間的的中中間間人人,,稱稱其其為為組組合合者者C,,每每個(gè)個(gè)簽簽名名人人Ui(i=1,2,……n)都都將將其其關(guān)關(guān)于于m的的簽簽名名送送給給組組合合者者C,,當(dāng)當(dāng)C收收到到((ci,si)(i=1,2,……n)后后,,先先計(jì)計(jì)算算::和在驗(yàn)驗(yàn)證證每每個(gè)個(gè)((ci,si)是是否否滿滿足足(i=1,2,……n)若對對于于所所有有的的i上上式式成成立立,,則則((r,,s))便便是是Ui(i=1,2,……n)關(guān)關(guān)于于消消息息m的的多多重重簽簽名名,,C將將((r,,s))發(fā)發(fā)送送給給接接收收方方。。簽名名驗(yàn)驗(yàn)證證簽名名接接收收方方受受到到((r,,s))后后,,先先驗(yàn)驗(yàn)證證0<r<q和和0<s<q是是否否成成立立,,若若成成立立,,則則計(jì)計(jì)算算::(其其中中yi為Ui的公公鑰鑰))u1=smodqu2=rH(m)modq然后后驗(yàn)驗(yàn)證證方方程程:若方方程程成成立立,,則則簽簽名名驗(yàn)驗(yàn)證證通通過過。。4))盲盲簽簽名名簽名名產(chǎn)產(chǎn)生生設(shè)簽簽名名人人為為A,,簽簽名名驗(yàn)驗(yàn)證證者者和和消消息息擁擁有有者者為為B。。A任任選選隨隨機(jī)機(jī)密密鑰鑰k,,計(jì)計(jì)算算::然后后將將發(fā)發(fā)送送給給B。。B選選隨隨機(jī)機(jī)數(shù)數(shù)a,,bZq。計(jì)計(jì)算算::B將將盲盲消消息息送送簽簽名名人人A。。A利利用用簽簽名名方方程程求求得得部部分分盲盲簽簽名名后后送送B。。B再再計(jì)計(jì)算算完成成簽簽名名::為為A關(guān)關(guān)于于盲盲消消息息的的簽簽名名,,為B給給出出的的為為消消息息m的的簽簽名名。。簽名名驗(yàn)驗(yàn)證證簽名名接接收收方方得得到到簽簽名名、、后后,,只只有有它它們們都都滿滿足足驗(yàn)驗(yàn)證證方方程程才被被通通過過驗(yàn)驗(yàn)證證。。5))分分批批驗(yàn)驗(yàn)證證對簽簽名名進(jìn)進(jìn)行行分分批批驗(yàn)驗(yàn)證證就就是是簽簽名名驗(yàn)驗(yàn)證證人人將將某某個(gè)個(gè)簽簽名名人人簽簽名名方方程程產(chǎn)產(chǎn)生生的的關(guān)關(guān)于于n個(gè)個(gè)不不同同消消息息的的n個(gè)個(gè)簽簽名名進(jìn)進(jìn)行行一一次次性性驗(yàn)驗(yàn)證證,,,,而而不不是是逐逐個(gè)個(gè)驗(yàn)驗(yàn)證證,,從從而而提提高高其其驗(yàn)驗(yàn)證證速速度度。。在在NDSA上上可可建建立立兩兩種種分分批批驗(yàn)驗(yàn)證證方方案案,,它它們們可可以以防防止止除除簽簽名名者者以以外外的的任任何何人人對對簽簽名名的的偽偽造造,,也也就就是是說說,,在在假假定定簽簽名名人人可可信信的的情情況況下下,,NDSA分分批批驗(yàn)驗(yàn)證證方方案案是是安安全全的的。。這這兩兩個(gè)個(gè)分分批批簽簽名名驗(yàn)驗(yàn)證證方方案案介介紹紹如如下下::方案案1:簽名名方方程程:得到到簽簽名名為為::或或((i=1,,2,,……,,))分批批驗(yàn)驗(yàn)證證方方程程:如果果方方程程成成立立,,則則n個(gè)個(gè)簽簽名名驗(yàn)驗(yàn)證證通通過過。。方案案2:簽名名方方程程:((i=1,,2,,……,,n))(i=1,,2,,……,,n))得到到n個(gè)個(gè)簽簽名名::(i,si)((i=1,,2,,……,,n))分批批驗(yàn)驗(yàn)證證方方程程:或如果果驗(yàn)驗(yàn)證證方方程程成成立立,,則則簽簽名名驗(yàn)驗(yàn)證證通通過過。。6))NDSA安安全全性性分分析析偽造造者者要要想想從從公公鑰鑰y=gxmodp求求得得x或或先先任任選選r再再從從r=(gsyrH(m)modp)modq求求部部分分簽簽名名s均均等等于于求求離離散散對對數(shù)數(shù)或或比比求求離離散散對對數(shù)數(shù)還還難難。。如如果果將將y看看作作是是n個(gè)個(gè)簽簽名名人人之之公公鑰鑰在在模模p下下的的乘乘積積,,則則說說明明對對于于多多重重簽簽名名的的偽偽造造也也是是不不可可能能的的。。5.4基基于于離散對對數(shù)的若若干新型型代理簽簽名方案案代理簽名名是一種種新型簽簽名方案案,由于于這種簽簽名機(jī)制制在許多多領(lǐng)域都都有重要要的應(yīng)用用,因此此引起了了人們的的極大興興趣。代代理簽名名的目的的是當(dāng)某某簽名人人(這里里稱為原原始簽名名人)因因公務(wù)或或身體健健康等原原因不能能行使簽簽名權(quán)力力時(shí),將將簽名權(quán)權(quán)委派給給其他人人替自己己行使簽簽名權(quán)。。目前,,一些代代理簽名名方案存存在以下下問題::(1)代理理簽名方方案在驗(yàn)驗(yàn)證方程程中僅含含代理簽簽名者的的公鑰,,從而實(shí)實(shí)際簽名名權(quán)和代代理簽名名權(quán)沒有有實(shí)現(xiàn)有有效地分分離;(2)授授權(quán)方程程的建立立都是采采用交互互式傳遞遞數(shù)據(jù)的的方法,,而且不不包含代代理簽名名者的身身份碼。。因此,,授權(quán)方方程的建建立既煩煩瑣,又又使簽名名收方不不易驗(yàn)證證代理簽簽名人的的真實(shí)性性。(3)對代代理簽名名而言,,如何實(shí)實(shí)現(xiàn)一個(gè)個(gè)人同時(shí)時(shí)受多人人之托,,進(jìn)行代代理多重重簽名。。針對以以上三點(diǎn)點(diǎn)下面介介紹一個(gè)個(gè)新型代代理簽名名方案和和一個(gè)代代理多重重簽名方方案1.代理簽名名方案的的基本要要求在一個(gè)代代理簽名名方案中中,如果果假設(shè)AA委托BB進(jìn)行代代理簽名名,則此此簽名方方案應(yīng)滿滿足以下下三個(gè)最最基本的的條件::·簽名收方方能夠象象驗(yàn)證AA的簽名名那樣驗(yàn)驗(yàn)證B的的簽名·A的簽名名和B的的簽名應(yīng)應(yīng)當(dāng)完全全不同,,并且容容易區(qū)分分·A和B對對簽名事事實(shí)不可可否認(rèn)2.新新型代理理簽名方方案安全參數(shù)數(shù):P為大大素?cái)?shù),,g∈GGF(p)為為本原元元,f是是單向函函數(shù),原原始簽名名人A的的公鑰為為,,代理理簽名人人B的公公鑰為,xB∈(1,p-1),且且gcd(xB,p-1)=1。授權(quán)方程程:當(dāng)當(dāng)A打打算將簽簽名權(quán)委委托給BB時(shí),AA選取隨隨機(jī)數(shù)k∈(1,p-1),,并利用用B的身身份碼IDB計(jì)算r=gkmodpp和和s′=rrxA+IDBkmodq,,然后將將(IDB,r,ss′)送送B。BB收到(IDB,r,ss′)后后,先驗(yàn)驗(yàn)證,,以確確認(rèn)受委委托數(shù)據(jù)據(jù)源的可可靠性。。確認(rèn)數(shù)數(shù)據(jù)可靠靠性之后后B再做做如下計(jì)計(jì)算:,,則則(IDB,r,ss)滿足足。。上上式成立立的原因因是:。。在這這里為為授授權(quán)方程程,它建建立了AA和B兩兩者公鑰鑰之間的的內(nèi)在聯(lián)聯(lián)系,而而這種聯(lián)聯(lián)系只有有在A同同意轉(zhuǎn)讓讓自己的的權(quán)力時(shí)時(shí)才可建建立。其其中B的的簽名密密鑰s只只有B自自己知道道,其他他人包括括A也無無法知道道。代理簽名名:B利用用簽名密密鑰s(嚴(yán)格地地說是利利用代理理簽名密密鑰)的的簽名過過程是::設(shè)m為待待簽名消消息,ff為單向向函數(shù)。。B計(jì)算及其中參數(shù)數(shù)t∈(1,pp-1)為隨機(jī)機(jī)數(shù),簽簽名數(shù)據(jù)據(jù)為cA,B=(mm,r,u,vv)。簽名驗(yàn)收收:收方收收到cA,B=(mm,r,u,vv)后,,利用原原始簽名名人A和和代理簽簽名人BB的公鑰鑰計(jì)算::若u′=u成,,則收方方接受BB關(guān)于信信息m的的代理簽簽名。容易證明明:如果果B是合合法代理理人,則則上述uu′=uu必定成成立。因?yàn)楸M管簽名名收方在在驗(yàn)證簽簽名時(shí)同同時(shí)使用用了兩種種公鑰,,可以明明確原始始簽名和和代理簽簽名的關(guān)關(guān)系,但但當(dāng)收方方仍不放放心B是是否是真真正的代代理人時(shí)時(shí),可再再采用如如下交互互式方法法確認(rèn)BB是否知知道授權(quán)權(quán)方程中中的的s:B(r,,yB,IDB)收收方選v∈(1,pp-1),且gcd(v,pp-1)=1z=ws簽名收方方可以確確定代理理簽名人人的合法法身份及及簽名的的有效性性。性能分析析:以前的的代理簽簽名方案案在驗(yàn)證證方程中中僅含代代理簽名名者的公公鑰,使使得簽名名收方不不易理解解所收到到的簽名名究竟是是某人自自己的真真實(shí)簽名名,還是是受人之之托的代代理簽名名。本方方案克服服了這一一缺點(diǎn),,因?yàn)楹灪灻麉f(xié)議議使得簽簽名收方方在驗(yàn)證證時(shí)必須須同時(shí)使使用原簽簽名人和和代理簽簽名人的的公鑰,,即實(shí)際際簽名權(quán)權(quán)和代理理簽名權(quán)權(quán)實(shí)現(xiàn)了了有效地地分離。。驗(yàn)證一個(gè)個(gè)代理簽簽名人是是否具有有簽名權(quán)權(quán),主要要是依靠靠原始簽簽名人和和代理簽簽名人之之間所建建立的授授權(quán)方程程,而以以前的授授權(quán)方程程的建立立都是采采用交互互式傳遞遞數(shù)據(jù)的的方法,,而且不不包含代代理者的的身份碼碼。本方方案對此此進(jìn)行了了改進(jìn),,授權(quán)方方程包含含代理簽簽名人的的身份碼碼,而且且在建立立授權(quán)方方程時(shí),,原簽名名人只需需將有關(guān)關(guān)數(shù)據(jù)直直接傳給給自己所所選定的的代理人人即可,,這與人人們?nèi)粘3N兴宿k事事的習(xí)慣慣十分相相符。在確認(rèn)認(rèn)簽名名有效效性方方面,,本方方案使使簽名名收方方可根根據(jù)實(shí)實(shí)際情情況實(shí)實(shí)施一一次或或兩次次驗(yàn)證證,實(shí)實(shí)現(xiàn)了了雙重重安全全保護(hù)護(hù)機(jī)制制。原始簽簽名人人A在在給BB授權(quán)權(quán)時(shí),,可將將關(guān)于于B的的身份份碼IDB的簽名(IDB,r,s′′)公開地地送給B.如果除了了B之外還還有G通過過某種渠道道也獲得了了(IDB,r,s′′),當(dāng)GG想冒充BB當(dāng)代理簽簽名人時(shí),,G可能會會計(jì)算,,這時(shí)時(shí)得到的授授權(quán)方程是是,,而不是是。。G若想想將授權(quán)方方程中的IDB改成IDG以得到合法法的授權(quán)方方程時(shí),則則會碰到求求離散對數(shù)數(shù)的難題。。因此上述述方案可抗抗擊假冒代代理人事件件的發(fā)生。。3.代理多多重簽名方方案代理多重簽簽名就是多多個(gè)原始簽簽名人將自自己的簽名名權(quán)同時(shí)委委托給B實(shí)實(shí)施代理多多重簽名。。其實(shí)現(xiàn)方方案簡述如如下:有關(guān)安全參參數(shù)的選取取與上相同同,這里不不再贅述。。設(shè)Ai(i=1,2,…,n)是若若干原始簽簽名人,每每個(gè)人的密密鑰、公鑰鑰和秘密參參數(shù)為(xi,yi,ki)(i=1,2,…,n)。授權(quán)和簽名名過程為::·每個(gè)Ai計(jì)算ri=gkmodp,并將ri在所有Ai中公開,從從而每個(gè)AAi可計(jì)算,和(i=1,2,…,n).·Ai將(IDB,ri,)送BB(i=1,2,…,n)?!ぃ聦⒉捎米冏兂沙蓅i得(IDB,ri,si),它滿足足方程(i=1,2,…,n)?!ち?,,(yG被看成n個(gè)個(gè)原始簽名名人的群公公鑰),則則代理簽名名的授權(quán)方方程為,,其其中為B的代理理多重簽名名密鑰。既然s已經(jīng)經(jīng)獲得,其其余的簽名名和驗(yàn)證過過程與上述述方案相同同。5.5信信息認(rèn)證證1.信息息的完整性性目前對于動動態(tài)傳輸?shù)牡男畔ⅲS許多協(xié)議確確保信息的的完整性的的方法大多多是收錯重重傳、丟棄棄后續(xù)包的的辦法,但但黑客的攻攻擊可以改改變信息包包的內(nèi)容,,所以應(yīng)采采用有效的的措施來進(jìn)進(jìn)行完整性性控制。涉涉及到數(shù)據(jù)據(jù)完整性認(rèn)認(rèn)證的主要要技術(shù)有::報(bào)文認(rèn)證:與數(shù)據(jù)連連路層的CRC控制制類似,將將報(bào)文名字字段(或域域)使用一一定的操作作組成一個(gè)個(gè)約束值,,稱為報(bào)文文的完整性性檢測向量量ICV(IntegratedCheckVector)。然后將將它和數(shù)據(jù)據(jù)封裝在一一起進(jìn)行加加密,傳輸輸過程中由由于侵入者者不能對報(bào)報(bào)文解密,,所以也就就不能同時(shí)時(shí)修改數(shù)據(jù)據(jù)并計(jì)算新新的ICV,這樣接接收方受到到數(shù)據(jù)后解解密并計(jì)算算ICV,,若與明文文中的ICV不同,,則認(rèn)為此此報(bào)文無效效。校驗(yàn)和:一個(gè)最簡單單易行的完完整性控制制方法是使使用校驗(yàn)和和,計(jì)算出出該文件的的校驗(yàn)和值值并與上次次計(jì)算出的的值比較。。若相等,,說明文件件沒有改變變;若不相相等,則說說明文件可可能被未察察覺的行為為改變了。。校驗(yàn)和方方式可以查查錯,但不不能改錯。。加密校驗(yàn)和和:將文件件分成小塊塊,對每一一塊計(jì)算CRC校驗(yàn)驗(yàn)值,然后后再將這些些CRC值值加起來作作為校驗(yàn)和和。只要運(yùn)運(yùn)用恰當(dāng)?shù)牡乃惴?,這這種完整性性控制機(jī)制制幾乎無法法攻破。但但這種機(jī)制制運(yùn)算量大大,并且昂昂貴,只適適用于那些些完整性保保護(hù)極高的的情況。消息完整性性編碼MIC(MessageIntegrityCode):使使用簡單單單向散列函函數(shù)計(jì)算消消息的摘要要,連同消消息發(fā)送給給接收方,,接收方重重新計(jì)算摘摘要,并進(jìn)進(jìn)行比較驗(yàn)驗(yàn)證信息在在傳輸過程程中的完整整性。這種種散列函數(shù)數(shù)的特點(diǎn)是是任何兩個(gè)個(gè)不同的輸輸入不可能能產(chǎn)生兩個(gè)個(gè)相同的輸輸出。因此此,一個(gè)被被修改的文文件不可能能有相同的的散列值。。單向散列列函數(shù)能夠夠在不同的的系統(tǒng)中高高效實(shí)現(xiàn)。。防抵賴技術(shù)術(shù):它包括括對源和目目的地雙方方的證明,,常用方法法是數(shù)字簽簽名,數(shù)字字簽名采用用一定的數(shù)數(shù)據(jù)交換協(xié)協(xié)議,使得得通信雙方方能夠滿足足兩個(gè)條件件:接收方方能過鑒別別發(fā)送方所所宣稱的身身份,發(fā)送送方不能否否認(rèn)他發(fā)送送過這一數(shù)數(shù)據(jù)的事實(shí)實(shí)。另外,,實(shí)現(xiàn)防抵抵賴的途徑徑還有:采采用可信第第三方的權(quán)權(quán)標(biāo)、使用用時(shí)戳、采采用一個(gè)在在線的第三三方、數(shù)字字簽名與時(shí)時(shí)戳相結(jié)合合等。2.報(bào)報(bào)文認(rèn)證信息認(rèn)證的的目的是防防止信息被被篡改、偽偽造、或信信息接收方方事后否認(rèn)認(rèn)。特別對對于某些開開放環(huán)境中中的信息系系統(tǒng)來說,,確保其認(rèn)認(rèn)證十分重重要。認(rèn)證證技術(shù)是現(xiàn)現(xiàn)代各種計(jì)計(jì)算機(jī)通信信網(wǎng)絡(luò)、辦辦公自動化化、電子資資金轉(zhuǎn)帳系系統(tǒng)、自動動零售服務(wù)務(wù)網(wǎng)絡(luò)等系系統(tǒng)設(shè)計(jì)中中的重要組組成部分。。今后,在在IC卡應(yīng)應(yīng)用系統(tǒng)中中必將廣使使用。防止止信信息息被被篡篡改改,,保保證證信信息息的的完完整整性性,,使使得得有有意意或或無無意意的的篡篡改改了了信信息息后后接接受受者者可可以以發(fā)發(fā)現(xiàn)現(xiàn),,其其中中最最簡簡單單的的為為純純認(rèn)認(rèn)證證系系統(tǒng)統(tǒng)。。它它主主要要是是針針對對來來自自進(jìn)進(jìn)行行信信息息驗(yàn)驗(yàn)證證雙雙方方以以外外因因素素的的有有意意或或無無意意的的破破壞壞、、干干擾擾等等,,而而且且必必須須建建立立在在雙雙方方互互相相信信賴賴的的基基礎(chǔ)礎(chǔ)上上。。采采用用認(rèn)認(rèn)證證系系統(tǒng)統(tǒng)的的關(guān)關(guān)鍵鍵在在于于防防止止認(rèn)認(rèn)證證碼碼的的破破譯譯,,必必須須有有良良好好的的認(rèn)認(rèn)證證算算法法和和密密鑰鑰。。它它將將信信息息通通過過密密鑰鑰和和某某一一特特定定算算法法進(jìn)進(jìn)行行加加密密后后壓壓縮縮成成一一個(gè)個(gè)““報(bào)報(bào)文文摘摘要要””,,附附在在信信息息之之后后,,接接受受方方收收到到信信息息和和““報(bào)報(bào)文文摘摘要要””后后,,用用相相同同的的密密鑰鑰和和算算法法對對信信息息進(jìn)進(jìn)行行驗(yàn)驗(yàn)證證,,如如果果信信息息被被篡篡改改,,必必然然與與所所附附““報(bào)報(bào)文文摘摘要要””不不符符,,可可以以及及時(shí)時(shí)發(fā)發(fā)現(xiàn)現(xiàn)。。例例如如可可用用DSA算算法法做做信信息息驗(yàn)驗(yàn)證證,,如如果果信信息息過過長長,,可可用用Hash算算法法先先進(jìn)進(jìn)行行壓壓縮縮,,在在進(jìn)進(jìn)行行驗(yàn)驗(yàn)證證運(yùn)運(yùn)算算。。3..身身份份認(rèn)認(rèn)證證身份份認(rèn)認(rèn)證證是是網(wǎng)網(wǎng)絡(luò)絡(luò)中中的的主主體體進(jìn)進(jìn)行行驗(yàn)驗(yàn)證證的的過過程程,,用用戶戶必必須須提提供供他他是是誰誰的的證證明明,,他他是是某某個(gè)個(gè)雇雇員員,,某某個(gè)個(gè)組組織織的的代代理理,,某某個(gè)個(gè)軟軟件件過過程程,,如如股股票票交交易易系系統(tǒng)統(tǒng)或或Web訂訂貨貨系系統(tǒng)統(tǒng)的的軟軟件件過過程程。。認(rèn)認(rèn)證證的的標(biāo)標(biāo)準(zhǔn)準(zhǔn)方方法法就就是是弄弄清清楚楚他他是是誰誰,,他他具具有有什什么么特特征征,,他他知知道道什什么么可可用用于于識識別別他他的的東東西西。。比比如如說說,,系系統(tǒng)統(tǒng)中中存存儲儲了了他他的的指指紋紋,,他他接接入入網(wǎng)網(wǎng)絡(luò)絡(luò)時(shí)時(shí),,就就必必須須連連接接到到網(wǎng)網(wǎng)絡(luò)絡(luò)的的電電子子指指紋紋機(jī)機(jī)上上提提供供他他的的指指紋紋,,這這就就防防止止他他以以假假的的指指紋紋或或其其它它電電子子信信息息欺欺騙騙系系統(tǒng)統(tǒng),,只只有有指指紋紋相相符符才才允允許許他他訪訪問問系系統(tǒng)統(tǒng)。。更更普普遍遍的的是是通通過過視視網(wǎng)網(wǎng)膜膜血血管管分分布布圖圖來來識識別別,,原原理理與與指指紋紋識識別別相相同同,,聲聲波波紋紋識識別別也也是是商商業(yè)業(yè)系系統(tǒng)統(tǒng)采采用用的的一一種種識識別別方方式式。。通常有三種方方法驗(yàn)證主體體身份:一是是只有該主體體了解的秘密密,如口令、、密鑰;二是是主體攜帶的的物品,如智智能卡和令牌牌卡;三是只只有該主體具具有的獨(dú)一無無二的特征和和能力,如指指紋、聲音、、視網(wǎng)膜或簽簽字等。網(wǎng)絡(luò)通過用戶戶擁有的東西西來識別的方方法,一般是是智能卡或其其它特殊形式式的標(biāo)志,這這類標(biāo)志可以以從連接到計(jì)計(jì)算機(jī)上的讀讀出器讀出來來。至于說到到“他知道什什么”,最普普遍的就是口口令,口令具具有共享秘密密的屬性。例例如要是服務(wù)務(wù)器操作系統(tǒng)統(tǒng)識別要入網(wǎng)網(wǎng)的用戶,那那么用戶必須須把他的用戶戶名和口令送送服務(wù)器。服服務(wù)器就將它它與數(shù)據(jù)庫里里的用戶名和和口令進(jìn)行比比較,如果相相符,就通過過了認(rèn)證,可可以上網(wǎng)訪問問。這個(gè)口令令就由服務(wù)器器和用戶共享享。更保密的的認(rèn)證可以十十幾種方法組組合而成。例例如用ATM卡和PIN卡。用于身身份認(rèn)證的主主要方法有::主體特征認(rèn)證證:利用個(gè)人特特征進(jìn)行認(rèn)證證的方式極有有很高的安全全性。目前已已有的設(shè)備包包括:視網(wǎng)膜膜掃描儀、聲聲音驗(yàn)證設(shè)備備、手型識別別器。這些識識別系統(tǒng)能夠夠檢測如指印印,簽名,聲聲音,零售圖圖案這樣的物物理特征。但但大多數(shù)這樣樣的系統(tǒng)極具具試驗(yàn)性,價(jià)價(jià)格昂貴而且且不是百分之之百的可靠。。任何一個(gè)送送數(shù)據(jù)到遠(yuǎn)程程系統(tǒng)去核實(shí)實(shí)的系統(tǒng)有被被搭線竊聽的的危險(xiǎn),非法法入侵者只需需記錄下送去去系統(tǒng)的校驗(yàn)驗(yàn)信息,以后后再重現(xiàn)這些些信息,就能能竊密。當(dāng)然然這也是標(biāo)記記識別系統(tǒng)的的一個(gè)問題。??诹顧C(jī)機(jī)制:口口令是是相互互約定定的代代碼,,假設(shè)設(shè)只有有用戶戶和系系統(tǒng)知知道。。口令令有時(shí)時(shí)由用用戶選選擇,,有時(shí)時(shí)由系系統(tǒng)分分配。。通常常情況況下,,用戶戶先輸輸入某某種標(biāo)標(biāo)志信信息,,比如如用戶戶名和和ID號,,然后后系統(tǒng)統(tǒng)詢問問用戶戶口令令,若若口令令與文文件中中的相相匹配配,用用戶即即可進(jìn)進(jìn)入訪訪問。??诹盍钣卸喽喾N,,如一一次性性口令令,系系統(tǒng)生生成一一次性性口令令清單單,第第一次次時(shí)必必須使使用X,第第二次次時(shí)必必須使使用Y,等等等;;還有有基于于時(shí)間間的口口令,,即訪訪問使使用的的正確確口令令隨時(shí)時(shí)間變變化,,變化化基于于時(shí)間間和一一個(gè)秘秘密的的用戶戶鑰匙匙。這這樣的的口令令每分分鐘都都在變變化,,使其其更加加難以以猜測測。智能卡卡:訪訪問不不但需需要口口令,,也需需要使使用物物理智智能卡卡。在在允許許其進(jìn)進(jìn)入系系統(tǒng)之之前檢檢查是是否允允許其其物理理接觸觸系統(tǒng)統(tǒng)。智智能卡卡大小小如信信用卡卡,一一般有有微處處理器器、存存儲器器及輸輸入、、輸出出設(shè)施施構(gòu)成成。微微處理理器可可計(jì)算算該卡卡的一一個(gè)唯唯一數(shù)數(shù)(ID))和其其它數(shù)數(shù)據(jù)的的加密密形式式。ID保保證卡卡的真真實(shí)性性,持持卡人人就可可以訪訪問系系統(tǒng)。。為防防止智智能卡卡遺失失或被被竊,,許多多系統(tǒng)統(tǒng)需要要卡和和身份份識別別碼((PIN))同時(shí)時(shí)使用用。若若僅有有卡而而不知知PIN碼碼,則則不能能進(jìn)入入系統(tǒng)統(tǒng)。智智能卡卡比傳傳統(tǒng)的的口令令方法法進(jìn)行行認(rèn)證證更好好,但但其攜攜帶不不方便便,且且開戶戶費(fèi)用用較高高。撥號回回呼(CallBackModem)):它它是維維護(hù)系系統(tǒng)有有效用用戶表表及其其相應(yīng)應(yīng)電話話號碼碼的設(shè)設(shè)備。。當(dāng)用用戶撥撥號進(jìn)進(jìn)入系系統(tǒng)時(shí)時(shí),系系統(tǒng)得得到用用戶的的登錄錄賬戶戶號后后,掛掛起,,再根根據(jù)電電話號號碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年博物館展覽裝飾裝修工程合同
- 2025年保障擔(dān)保合同
- 2025年加盟獨(dú)家合同
- 2025年保險(xiǎn)產(chǎn)品分期付款合同
- 社交媒體視頻制作服務(wù)合同范文
- 杭州市棋類俱樂部租賃合同
- 海運(yùn)合同運(yùn)費(fèi)調(diào)整條款
- 品牌授權(quán)及技術(shù)轉(zhuǎn)讓合同
- 食品加工廠建設(shè)合作合同
- 二零二四年度云計(jì)算服務(wù)與支持合同范本3篇
- 北京市東城區(qū)2023-2024學(xué)年高二下學(xué)期期末英語試題 含解析
- 測繪學(xué)基礎(chǔ)知識單選題100道及答案解析
- 2024年國家焊工職業(yè)技能理論考試題庫(含答案)
- 特魯索綜合征
- 2024年山東省泰安市高考語文一模試卷
- TCL任職資格體系資料HR
- 《中國古代寓言》導(dǎo)讀(課件)2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 五年級上冊計(jì)算題大全1000題帶答案
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 屋面細(xì)石混凝土保護(hù)層施工方案及方法
- 110kv各類型變壓器的計(jì)算單
評論
0/150
提交評論