• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      數(shù)字簽名及其實(shí)現(xiàn)

      2012-12-29 07:23:40朱文艷
      關(guān)鍵詞:數(shù)字簽名公鑰校驗(yàn)

      朱文艷

      (勝利石油管理局 海洋鉆井公司,山東 東營(yíng) 257000)

      數(shù)字簽名及其實(shí)現(xiàn)

      朱文艷

      (勝利石油管理局 海洋鉆井公司,山東 東營(yíng) 257000)

      隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)以及其他高科技技術(shù)的發(fā)展,信息的安全性、數(shù)據(jù)的保密性也越來(lái)越重要。以Visual C++6.0為開(kāi)發(fā)工具,開(kāi)發(fā)數(shù)字簽名的簽名和認(rèn)證程序。結(jié)果表明,開(kāi)發(fā)的程序能夠?qū)ξ谋旧傻臄?shù)字摘要通過(guò)簽名算法進(jìn)行簽名,并對(duì)簽名值利用認(rèn)證算法進(jìn)行認(rèn)證,判斷簽名的有效性,保證數(shù)據(jù)的完整性、發(fā)送信息的不可否認(rèn)性和身份的確定性。

      數(shù)字簽名;數(shù)字摘要;簽名算法;認(rèn)證

      1 研究目的

      隨著油田協(xié)同辦公平臺(tái)研究的不斷深入,領(lǐng)導(dǎo)簽批業(yè)務(wù)呈擴(kuò)大化的趨勢(shì),網(wǎng)上簽批作為其中重要的一環(huán),如果解決不好勢(shì)必影響整個(gè)辦公系統(tǒng)的效率,將先進(jìn)的網(wǎng)上簽批技術(shù)融合到協(xié)同辦公系統(tǒng),能夠提高網(wǎng)上審批的安全性和權(quán)威性,拓展辦公系統(tǒng)現(xiàn)有網(wǎng)上審批功能,提高辦公效率,逐步深入實(shí)現(xiàn)數(shù)字化辦公。因此需要對(duì)網(wǎng)絡(luò)簽批業(yè)務(wù)進(jìn)行整體規(guī)劃,實(shí)現(xiàn)統(tǒng)一簽批模式、統(tǒng)一安全認(rèn)證。為此,一種用來(lái)保證信息完整性的安全技術(shù)——數(shù)字簽名技術(shù)成為人們非常關(guān)心的話題。本文在數(shù)字簽名技術(shù)的原理和數(shù)字簽名中的簽名和認(rèn)證過(guò)程的基礎(chǔ)上,以Visual C++6.0為開(kāi)發(fā)工具,實(shí)現(xiàn)數(shù)字簽名的簽名和認(rèn)證程序,對(duì)文本生成的數(shù)字摘要通過(guò)簽名算法進(jìn)行簽名,并對(duì)簽名值利用認(rèn)證算法進(jìn)行認(rèn)證,判斷簽名的有效性。

      2 數(shù)字簽名的理論知識(shí)

      數(shù)字簽名是通過(guò)一個(gè)單向函數(shù)對(duì)要傳送的報(bào)文進(jìn)行處理得到的用以認(rèn)證報(bào)文來(lái)源并核實(shí)報(bào)文是否發(fā)生變化的一個(gè)字母數(shù)字串[1]。

      在傳統(tǒng)的辦公系統(tǒng)中,通常都利用書(shū)面文件的親筆簽名或印章來(lái)規(guī)定契約性的責(zé)任,在協(xié)同辦公平臺(tái)中,傳送的文件是通過(guò)電子簽名證明當(dāng)事人身份與數(shù)據(jù)真實(shí)性的,數(shù)據(jù)加密是保護(hù)數(shù)據(jù)的最基本方法,但也只能防止第三者獲得真實(shí)數(shù)據(jù)。電子簽名則可以解決否認(rèn)、偽造、篡改及冒充等問(wèn)題,具體要求:發(fā)送者事后不能否認(rèn)發(fā)送的報(bào)文簽名、接收者能夠核實(shí)發(fā)送者發(fā)送的報(bào)文簽名、接收者不能偽造發(fā)送者的報(bào)文簽名、接收者不能對(duì)發(fā)送者的報(bào)文進(jìn)行部分篡改、網(wǎng)絡(luò)中的某一用戶不能冒充另一用戶作為發(fā)送者或接收者。

      3 數(shù)字簽名相關(guān)技術(shù)

      實(shí)現(xiàn)數(shù)字簽名有很多方法,目前數(shù)字簽名采用較多的是公鑰加密技術(shù),如基于RSA Date Security公司的 PKCS(public key cryptography standards)、Digital Signature Algorithm、x.509、PGP(pretty good privacy)。1994年美國(guó)標(biāo)準(zhǔn)與技術(shù)協(xié)會(huì)公布了數(shù)字簽名標(biāo)準(zhǔn)(DSS)而使公鑰加密技術(shù)廣泛應(yīng)用。&127公鑰加密系統(tǒng)采用的是非對(duì)稱加密算法。

      3.1 用非對(duì)稱加密算法進(jìn)行數(shù)字簽名

      3.1.1 算法的含義

      此算法使用兩個(gè)密鑰:公開(kāi)密鑰(public key)和私有密鑰(private key),&127;分別用于對(duì)數(shù)據(jù)的加密和解密,即如果用公開(kāi)密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私有密鑰才能進(jìn)行解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,則只有用對(duì)應(yīng)的公開(kāi)密鑰才能解密。

      3.1.2 簽名和驗(yàn)證過(guò)程

      (1)發(fā)送方首先用公開(kāi)的單向函數(shù)對(duì)報(bào)文進(jìn)行一次變換,得到數(shù)字簽名,然后利用私有密鑰對(duì)數(shù)字簽名進(jìn)行加密后附在報(bào)文之后一同發(fā)出。

      (2)接收方用發(fā)送方的公開(kāi)密鑰對(duì)數(shù)字簽名進(jìn)行解密變換,得到一個(gè)數(shù)字簽名的明文。發(fā)送方的公鑰是由一個(gè)可信賴的技術(shù)管理機(jī)構(gòu)即驗(yàn)證機(jī)構(gòu)(CA:certification authority)發(fā)布的。

      (3)接收方將得到的明文通過(guò)單向函數(shù)進(jìn)行計(jì)算,同樣得到一個(gè)數(shù)字簽名,再將兩個(gè)數(shù)字簽名進(jìn)行對(duì)比,如果相同,則證明簽名有效,否則無(wú)效。

      這種方法使任何擁有發(fā)送方公開(kāi)密鑰的人都可以驗(yàn)證數(shù)字簽名的正確性。由于發(fā)送方私有密鑰的保密性,使得接收方既可以根據(jù)驗(yàn)證結(jié)果來(lái)拒收該報(bào)文,也能使其無(wú)法偽造報(bào)文簽名及對(duì)報(bào)文進(jìn)行修改,原因是數(shù)字簽名是對(duì)整個(gè)報(bào)文進(jìn)行的,是一組代表報(bào)文特征的定長(zhǎng)代碼,同一個(gè)人對(duì)不同的報(bào)文將產(chǎn)生不同的數(shù)字簽名。

      3.2 用對(duì)稱加密算法進(jìn)行數(shù)字簽名

      3.2.1 算法的含義

      對(duì)稱加密算法所用的加密密鑰和解密密鑰通常是相同的,即使不同也可以很容易地由其中的任意一個(gè)推導(dǎo)出另一個(gè)。在此算法中,加、解密雙方所用的密鑰都要保守秘密。由于計(jì)算速度快而廣泛應(yīng)用于對(duì)大量數(shù)據(jù)如文件的加密過(guò)程中,如RD4和DES。

      3.2.2 簽名和驗(yàn)證過(guò)程

      Lamport發(fā)明了稱為L(zhǎng)amport-Diffie的對(duì)稱加密算法:利用一組長(zhǎng)度是報(bào)文的比特?cái)?shù)(n)兩倍的密鑰A,來(lái)產(chǎn)生對(duì)簽名的驗(yàn)證信息,即隨機(jī)選擇2n個(gè)數(shù)B,由簽名密鑰對(duì)這2n個(gè)數(shù)B進(jìn)行一次加密變換,得到另一組2n個(gè)數(shù)C。

      (1)發(fā)送方從報(bào)文分組M的第一位開(kāi)始,依次檢查M的第i位,若為0時(shí),取密鑰A的第i位,若為1則取密鑰A的第i+1位;直至報(bào)文全部檢查完畢。所選取的n個(gè)密鑰位形成了最后的簽名。

      (2)接收方對(duì)簽名進(jìn)行驗(yàn)證時(shí),也是首先從第一位開(kāi)始依次檢查報(bào)文M,如果M的第i位為0時(shí),它就認(rèn)為簽名中的第I組信息是密鑰A的第i位,若為1則為密鑰A的第i+1位;直至報(bào)文全部驗(yàn)證完畢后,就得到了n個(gè)密鑰,由于接收方具有發(fā)送方的驗(yàn)證信息C,所以可以利用得到的n個(gè)密鑰檢驗(yàn)驗(yàn)證信息,從而確認(rèn)報(bào)文是否是由發(fā)送方所發(fā)送[1]。

      這種方法是逐位進(jìn)行簽名的,只要有一位被改動(dòng)過(guò),接收方就得不到正確的數(shù)字簽名,因此其安全性較好,其缺點(diǎn)是簽名太長(zhǎng),對(duì)報(bào)文先進(jìn)行壓縮再簽名,可以減少簽名的長(zhǎng)度。另外,簽名密鑰及相應(yīng)的驗(yàn)證信息不能重復(fù)使用,否則極不安全。

      3.3 認(rèn)證產(chǎn)品

      認(rèn)證產(chǎn)品可分兩大類:一是用戶認(rèn)證,主要是通過(guò)單獨(dú)簽名訪問(wèn)網(wǎng)絡(luò)資源;二是對(duì)象認(rèn)證,即判定傳遞信息和文件的認(rèn)證及其真實(shí)性。數(shù)字簽名技術(shù)就主要用于信息、文件以及其他存儲(chǔ)在網(wǎng)上的傳輸對(duì)象的認(rèn)證。AT&T Government Market的Secret Agent便通過(guò)將數(shù)字簽發(fā)的文檔作為E-mail消息的文件附件來(lái)發(fā)表的形式,將現(xiàn)有客戶機(jī)運(yùn)行的環(huán)境E-mail系統(tǒng) 、Web瀏覽器等應(yīng)用密切地結(jié)合在一起;Regnoc Software的Signature使用OLE 2.0可對(duì)Windows下的任何文本作數(shù)字簽名;ViaCrypt的ViaCrypt PGP可從傳遞信息的應(yīng)用中切割文本至Windows或Macintosh裁剪板,在那里對(duì)它進(jìn)行數(shù)字簽名后將它粘貼到傳遞信息中。

      4 加密驗(yàn)證算法

      數(shù)字簽名的算法很多,應(yīng)用最為廣泛的三種是:Hash簽名、DSS簽名、RSA簽名。

      4.1 Hash簽名

      Hash簽名不屬于強(qiáng)計(jì)算密集型算法,應(yīng)用較廣泛。很多少量現(xiàn)金付款系統(tǒng),如DEC的Millicent和Cyber Cash的Cyber Coin等都使用Hash簽名。使用較快的算法,可以降低服務(wù)器資源的消耗,減輕中央服務(wù)器的負(fù)荷。Hash的主要局限是接收方必須持有用戶密鑰的副本以檢驗(yàn)簽名,因?yàn)殡p方都知道生成簽名的密鑰,較容易攻破,存在偽造簽名的可能。如果中央或用戶計(jì)算機(jī)中有一個(gè)被攻破,那么其安全性就受到了威脅[2]。

      4.2 DSS和RSA簽名

      DSS和RSA采用了公鑰算法,不存在Hash的局限性。RSA是最流行的一種加密標(biāo)準(zhǔn),許多產(chǎn)品的內(nèi)核中都有RSA的軟件和類庫(kù),早在Web飛速發(fā)展之前,RSA數(shù)據(jù)安全公司就負(fù)責(zé)數(shù)字簽名軟件與Macintosh操作系統(tǒng)的集成,在Apple的協(xié)作軟件Power Talk上還增加了簽名拖放功能,用戶只要把需要加密的數(shù)據(jù)拖到相應(yīng)的圖標(biāo)上,就完成了電子形式的數(shù)字簽名。RSA與 Microsoft、IBM、Sun和Digital都簽訂了許可協(xié)議,使在其生產(chǎn)線上加入了類似的簽名特性。與DSS不同,RSA既可以用來(lái)加密數(shù)據(jù),也可以用于身份認(rèn)證。和Hash簽名相比,在公鑰系統(tǒng)中,由于生成簽名的密鑰只存儲(chǔ)于用戶的計(jì)算機(jī)中,安全系數(shù)大一些。

      數(shù)字簽名的保密性很大程度上依賴于公開(kāi)密鑰。數(shù)字認(rèn)證是基于安全標(biāo)準(zhǔn)、協(xié)議和密碼技術(shù)的電子證書(shū),用以確立一個(gè)人或服務(wù)器的身份,它把一對(duì)用于信息加密和簽名的電子密鑰捆綁在一起,保證了這對(duì)密鑰真正屬于指定的個(gè)人和機(jī)構(gòu)。數(shù)字認(rèn)證由驗(yàn)證機(jī)構(gòu)CA進(jìn)行電子化發(fā)布或撤消公鑰驗(yàn)證,信息接收方可以從CA Web站點(diǎn)上下載發(fā)送方的驗(yàn)證信息。

      JSR-105 API可以完成上節(jié)所述的簽名及其校驗(yàn),所有這些功能都封裝在了六個(gè)Java API包中。概括起來(lái),每種簽名都要有以下這幾個(gè)步驟:

      步驟1:加載一個(gè)XMLSignatureFactory對(duì)象,后面我們創(chuàng)建Reference元素對(duì)象、SignedInfo元素對(duì)象、KeyInfo元素對(duì)象、XMLSignature元素對(duì)象都要直接或者間接用到這個(gè)工廠類對(duì)象。其典型的創(chuàng)建語(yǔ)句為:

      XMLSignatureFactory fac=XMLSignatureFactory.getInstance(“DOM”);

      步驟2:使用前一步驟得到的工廠類對(duì)象創(chuàng)建Reference對(duì)象,給它指定計(jì)算摘要的算法。其典型創(chuàng)建語(yǔ)句(以下為創(chuàng)建Enveloping簽名的做法)為:

      Referenceref=fac.new Reference(“#object”,

      fac.new Digest Method(Digest Method.SHA1,null));

      步驟3:使用第1步得到的工廠類實(shí)例創(chuàng)建SignedInfo對(duì)象,給它指定正規(guī)化算法和簽名的算法。其典型的創(chuàng)建語(yǔ)句為:

      SignedInfo si=fac.new SignedInfo(

      fac.new Canonicalization Method(

      Canonicalization Method.INCLUSIVE_WITH COMMENTS, (C14NMethodParameterSpec)null),

      fac.newSignature Method(Signature Method.RSASHA1,null),Collections.singleton List(ref));

      步驟4:創(chuàng)建KeyInfo對(duì)象,給他設(shè)置簽名算法的公鑰以作驗(yàn)證之用。其典型的創(chuàng)建語(yǔ)句為:

      KeyInfo

      ki=kif.new KeyInfo(Collections.singleton List(kv));

      步驟5:使用第1步得到的工廠類實(shí)例創(chuàng)建XMLSignature對(duì)象。其典型的創(chuàng)建語(yǔ)句為:

      XMLSignature

      signature = fac.new XMLSignature(si,ki,Collections.singleton List(obj),null,null);

      步驟6:創(chuàng)建簽名上下文對(duì)象DOMSignContext,設(shè)置簽名用的私鑰。其典型的創(chuàng)建語(yǔ)句為:

      DOMSignContext signContext=

      new DOMSignContext(kp.getPrivate(),doc);

      步驟7:簽名。其典型的執(zhí)行語(yǔ)句為:

      signature.sign(signContext);

      對(duì)于三種簽名,它們都要執(zhí)行上面的步驟,所不同的是在設(shè)置簽名數(shù)據(jù)來(lái)源上,只要把Reference對(duì)象構(gòu)造成具有不同數(shù)據(jù)來(lái)源的情況就可以了。

      簽名的校驗(yàn)過(guò)程與簽名過(guò)程類似,也有幾個(gè)必經(jīng)步驟。

      步驟1:讀入要校驗(yàn)的XML文件,解析,找到文件中的簽名元素。

      步驟2:加載一個(gè)XMLSignatureFactory對(duì)象,后面各步驟中將用到這個(gè)對(duì)象。

      步驟3:創(chuàng)建一個(gè)DOMValidateContext對(duì)象,給他指定密鑰選擇器和解析得到的XML文檔中的簽名元素。其典型的創(chuàng)建語(yǔ)句為:

      DOMValidateContext valContext=

      new DOMValidateContext(new

      Key ValueKeySelector(),nl.item(0));

      步驟4:根據(jù)校驗(yàn)上下文的信息利用第2步得到的工廠對(duì)象重新安排XML簽名,得到一個(gè)可以用來(lái)校驗(yàn)的XMLSignature對(duì)象。其典型的執(zhí)行語(yǔ)句為:

      XMLSignature

      signature=fac.unmarshal XMLSignature(val-Context);

      步驟5:根據(jù)當(dāng)前的校驗(yàn)上下文信息執(zhí)行核心校驗(yàn)。其典型的執(zhí)行語(yǔ)句為:

      Boolean core Validity=signature.validate

      (valContext);

      4.3 JSR-105 API的應(yīng)用方案及其實(shí)現(xiàn)基本數(shù)字簽名

      XML數(shù)字簽名可以實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境中對(duì)特定URI的數(shù)據(jù)資源的簽名,也可以對(duì)XML文檔簽名,還可以對(duì)放入XML文檔里面的數(shù)據(jù)元素來(lái)簽名,因而以XML文檔來(lái)組織數(shù)據(jù)進(jìn)行交換將具有較高安全可靠性。因此網(wǎng)絡(luò)中的數(shù)據(jù)資源在被傳播、擴(kuò)散的過(guò)程中可以用XML數(shù)字簽名與校驗(yàn)的方式來(lái)提高其有效性,從而提高網(wǎng)絡(luò)數(shù)據(jù)的可信任度。

      這里實(shí)現(xiàn)了一個(gè)應(yīng)用程序?qū)τ脩糁付ǖ牡木W(wǎng)上文件進(jìn)行簽名及校驗(yàn),對(duì)現(xiàn)有的XML文件進(jìn)行簽名與校驗(yàn),還可以對(duì)其他即時(shí)數(shù)據(jù)進(jìn)行簽名(圖1)。

      圖1 XML數(shù)字簽名的實(shí)現(xiàn)

      盲簽名:盲簽名是指消息擁有者的目的是讓簽名人對(duì)該消息簽字,但不讓簽名者知道消息的具體內(nèi)容,簽名保證在某一時(shí)刻以公證人的資格證實(shí)這個(gè)消息的存在。盲簽名包括盲化消息、簽名、對(duì)簽名去盲、驗(yàn)證簽名有效性幾個(gè)步驟,這里只討論一種利用XML數(shù)字簽名機(jī)制實(shí)現(xiàn)的盲簽名如何用現(xiàn)有的XML數(shù)字簽名實(shí)現(xiàn)(以下假定Alice為消息擁有者,Bob為簽名者)[3]。

      利用XML數(shù)字簽名機(jī)制實(shí)現(xiàn)的盲簽名:Alice選擇隨機(jī)大數(shù)n和待簽名的消息M∈Z*n,隨機(jī)數(shù)r,∈Zn,計(jì)算m′=Mr mod n,將m′傳給Bob。

      Bob對(duì)盲信息進(jìn)行XML數(shù)字簽名(采用RSA-SHA1算法)并將XML簽名產(chǎn)生的文件傳給Alice。Alice將M與XML文件一并作為簽名。

      驗(yàn)證:驗(yàn)證者從Alice那里得到r和n,計(jì)算出盲信息m′,將它與XML文件中被簽名信息比較,若相等則繼續(xù)進(jìn)行XML數(shù)字簽名核心驗(yàn)證,若核心驗(yàn)證通過(guò)則最后對(duì)信息M的數(shù)字簽名驗(yàn)證通過(guò),否則簽名驗(yàn)證失敗。

      驗(yàn)證階段需要向消息擁有者詢問(wèn)盲信息產(chǎn)生所需的隨機(jī)數(shù)r和n。因此消息擁有者每次讓簽名者簽名完成之后要保留r和n,因而,這是受到很多限制的盲簽名。由于XML數(shù)字簽名簽名時(shí)要對(duì)所簽信息利用指定的算法轉(zhuǎn)化,因而使得XML數(shù)字簽名并不像普通方式下的數(shù)字簽名那么單純。要實(shí)現(xiàn)更加復(fù)雜的簽名方式必須對(duì)XML數(shù)字簽名的很多細(xì)節(jié)很清楚(圖2)。

      圖2 XML盲簽名的實(shí)現(xiàn)

      5 數(shù)字簽名的發(fā)展前景展望

      生成和驗(yàn)證數(shù)字簽名的工具需要完善,只有廣泛使用SSL(安全套接層)建立安全鏈接的 Web瀏覽器,才可能頻繁用到數(shù)字簽名技術(shù)?;跀?shù)字簽名技術(shù)來(lái)提升業(yè)務(wù)辦理信息化水平,保障領(lǐng)導(dǎo)、職能部門(mén)網(wǎng)上簽批的安全性和信息傳輸?shù)耐暾裕荒軌蛟谟吞飬f(xié)同辦公平臺(tái)的流程審批、費(fèi)用簽批以及文件下發(fā)流轉(zhuǎn)中得到應(yīng)用。

      [1] 張先紅.數(shù)字簽名原理與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004:19-28.

      [2] 朱少彰.信息安全概論[M].北京:北京郵電大學(xué)出版社,2006:116-120.

      [3] 袁曉宇,張其善.基于ECDSA的電子簽章系統(tǒng)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(5):1233-1235.

      TP309.2 < class="emphasis_bold">[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]

      1673-5935(2012)01-0027-04

      2011-11-14

      朱文艷(1979-),女,山東臨沂人,勝利石油管理局海洋鉆井公司經(jīng)濟(jì)師,主要從事計(jì)算機(jī)應(yīng)用開(kāi)發(fā)研究。

      [責(zé)任編輯] 劉 穎

      猜你喜歡
      數(shù)字簽名公鑰校驗(yàn)
      淺析計(jì)算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
      一種基于混沌的公鑰加密方案
      爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
      基于數(shù)字簽名的QR碼水印認(rèn)證系統(tǒng)
      HES:一種更小公鑰的同態(tài)加密算法
      SM2橢圓曲線公鑰密碼算法綜述
      大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
      基于加窗插值FFT的PMU校驗(yàn)方法
      鍋爐安全閥在線校驗(yàn)不確定度評(píng)定
      基于格的公鑰加密與證書(shū)基加密
      迭部县| 常宁市| 汉寿县| 腾冲县| 光泽县| 华宁县| 喀喇沁旗| 汨罗市| 阿拉善左旗| 景德镇市| 汝州市| 屯昌县| 汾西县| 柳江县| 衡南县| 临西县| 弥渡县| 家居| 德阳市| 淮北市| 克拉玛依市| 庆阳市| 台江县| 罗城| 淮南市| 万源市| 措勤县| 沧州市| 临安市| 肃北| 龙岩市| 平泉县| 阳原县| 阳山县| 新泰市| 明光市| 洛隆县| 炉霍县| 朔州市| 利津县| 无棣县|