版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE畢業(yè)論文基于RSA的盲簽名方案的設(shè)計(jì)實(shí)現(xiàn)指導(dǎo)教師學(xué)院名稱信息學(xué)院專業(yè)名稱計(jì)算機(jī)科學(xué)與技術(shù)論文提交日期2009年5月論文答辯日期年月答辯委員會(huì)主席____________評(píng)閱人____________摘要盲簽名是指簽名者并不知道所簽文件或消息的具體內(nèi)容而文件或消息的擁有者又可以從簽名人關(guān)于盲化后文件或消息的簽名得到簽名人關(guān)于真實(shí)文件或消息的簽名。盲簽名允許消息者先將消息盲化,而后讓簽名對(duì)盲化的消息進(jìn)行簽名,最后消息擁有者對(duì)簽字除去盲因子,得到簽名者關(guān)于原消息的簽名。盲簽名可以有效保護(hù)所簽署消息的具體內(nèi)容,所以在電子商務(wù)和電子選舉等領(lǐng)域有著廣泛的應(yīng)用。本論文在研究網(wǎng)絡(luò)信息安全技術(shù)的基礎(chǔ)上,深入研究了基于RSA算法的盲簽名體制,并簡(jiǎn)單實(shí)現(xiàn)了基于vc++6.0平臺(tái)的盲簽名系統(tǒng)。系統(tǒng)簡(jiǎn)單模擬了盲簽名過程的各個(gè)步驟,實(shí)現(xiàn)了對(duì)一個(gè)隨機(jī)產(chǎn)生的明文進(jìn)行盲簽名操作。該系統(tǒng)主要包括兩個(gè)部分,即消息的盲簽名部分和盲簽名的驗(yàn)證部分。在該系統(tǒng)的簽名部分,首先生成一個(gè)RSA密鑰對(duì),然后對(duì)一個(gè)隨機(jī)產(chǎn)生的明文進(jìn)行盲化,然后對(duì)盲化后的明文進(jìn)行簽名。在系統(tǒng)的驗(yàn)證部分,首先要對(duì)簽名后的明文進(jìn)行脫盲,此時(shí)得到的就是簽名。然后對(duì)此簽名用密鑰計(jì)算,然后與最開始的明文進(jìn)行對(duì)比,如果相同,則證明盲簽名成功。系統(tǒng)簡(jiǎn)單模擬了盲簽名過程的各個(gè)步驟,實(shí)現(xiàn)的功能比較簡(jiǎn)單,沒有設(shè)計(jì)不可跟蹤性的盲簽名(即消息的簽名者不知自己何時(shí)對(duì)這個(gè)消息簽名),而且沒有可視化的界面,還有許多不足的地方需要改進(jìn)。關(guān)鍵詞:盲簽名數(shù)字簽名電子商務(wù)電子選舉
目錄1引言 11.1選題背景 11.2選題意義 21.3研究?jī)?nèi)容及論文結(jié)構(gòu)安排 22基本的數(shù)學(xué)理論 32.1素?cái)?shù) 32.1.1素?cái)?shù) 32.1.2擬素?cái)?shù)的概述 42.1.3檢驗(yàn)大素?cái)?shù)的具體方法 52.2Euler函數(shù)的介紹 62.3同余理論 62.3.1同余的定義 62.3.2同余的常用定理 72.4擴(kuò)展歐幾里德算法 73基于RSA公鑰密碼盲簽名算法 113.1公鑰密碼 113.1.1單鑰密碼 113.1.2公鑰密碼 123.2RSA算法 143.2.1具體原理 143.2.2RSA系統(tǒng)的參數(shù)選擇 153.2.3舉例說明 163.3基于RSA體制的盲簽名體制 163.3.1盲簽名 163.3.2完全盲簽名協(xié)議 163.3.3盲簽名協(xié)議 173.3.4基于RSA算法的盲簽名 174基于RSA盲簽名的設(shè)計(jì)與實(shí)現(xiàn) 194.1實(shí)驗(yàn)環(huán)境選擇 194.2盲簽名算法的詳細(xì)設(shè)計(jì) 194.2.1生成公鑰和私鑰 194.2.2盲簽名的過程 204.2.3盲簽名的驗(yàn)證過程 214.3數(shù)據(jù)結(jié)構(gòu)定義 234.4主要算法的實(shí)現(xiàn) 234.4.1隨機(jī)產(chǎn)生大素?cái)?shù) 234.4.2大整數(shù)的基本運(yùn)算 244.4.3求大整數(shù)的逆元 254.5實(shí)現(xiàn)效果及分析 264.5.1盲簽名的實(shí)現(xiàn)效果 274.5.2盲簽名驗(yàn)證的實(shí)現(xiàn)效果 285結(jié)束語 29致謝 30參考文獻(xiàn) 31英文摘要 32畢業(yè)論文成績(jī)?cè)u(píng)定表……34PAGE231引言隨著計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)的不斷進(jìn)步,Internet前景越來越美好,全球經(jīng)濟(jì)發(fā)展正在進(jìn)入一個(gè)全新的信息時(shí)代,知識(shí)經(jīng)濟(jì)初見端倪。計(jì)算機(jī)信息的保密問題也就顯得越來越重要了,無論是個(gè)人信息通信還是電子商務(wù)發(fā)展,都迫切需要保證Internet網(wǎng)上信息傳輸?shù)陌踩簿褪且WC信息安全。信息安全技術(shù)是一門綜合學(xué)科,它涉及信息論、計(jì)算機(jī)科學(xué)和密碼學(xué)等多方面知識(shí),它的主要任務(wù)是研究計(jì)算機(jī)系統(tǒng)和通信網(wǎng)絡(luò)內(nèi)信息的保護(hù)方法以實(shí)現(xiàn)系統(tǒng)內(nèi)信息的可靠、保密、真實(shí)和完整。其中,信息安全的核心是密碼技術(shù)。密碼技術(shù)是集數(shù)學(xué)、計(jì)算機(jī)科學(xué)、電子與通信等諸多學(xué)科于一身的交叉學(xué)科。它不僅能夠保證機(jī)密性信息的加密,而且能夠?qū)崿F(xiàn)數(shù)字簽名、身份驗(yàn)證、系統(tǒng)安全等功能。是現(xiàn)代化發(fā)展的重要科學(xué)之一。1.1選題背景隨著Internet網(wǎng)絡(luò)的不斷普及,許多傳統(tǒng)生活方式正受其影響逐漸朝著電子化,網(wǎng)絡(luò)化的方向發(fā)展,如E-mail的普及已逐漸取代了傳統(tǒng)書信的使用;再如,人們利用電子方式購物,足不出戶就可以買到生活必需品,將來甚至可能在家中參與電子投票選舉。但隨著電子化網(wǎng)絡(luò)化的便捷而帶來的是眾多的安全隱患,比如在網(wǎng)上用信用卡購物,相應(yīng)的交易信息就會(huì)被存儲(chǔ)到數(shù)據(jù)庫中,久而久之,人們的消費(fèi)習(xí)慣和財(cái)政狀況就有可能被某些別有用心的人所獲知,這肯定不是人們所希望看到的。消費(fèi)者實(shí)用的電子現(xiàn)金必須加上銀行的數(shù)字簽名才能生效,此時(shí)為了保護(hù)消費(fèi)者的匿名性,就要用到盲簽名的技術(shù);同樣在電子選舉中,選民提交的選票也必須蓋上選委會(huì)的戳記(即數(shù)字簽名)才合法,為了保護(hù)選民的匿名性也要用到盲簽名技術(shù)[1]。Internet給人們的生活,工作帶來許多方便,如便捷的網(wǎng)上購物,網(wǎng)上銀行,網(wǎng)上證券,電子政務(wù)等。Internet的可怕之處在于網(wǎng)絡(luò)中有一些人利用所掌握的技術(shù)非法侵入計(jì)算機(jī)系統(tǒng),竊聽、截取、篡改、偽造一些重要的數(shù)據(jù),造成巨大損失。由于TCP/IP服務(wù)的脆弱性和系統(tǒng)漏洞的不可避免性,使得黑客攻擊時(shí)間不但無法杜絕,反而日益增多?;谀壳斑@種無網(wǎng)不入的黑客攻擊現(xiàn)狀,數(shù)據(jù)加密顯得尤其重要[2]。RSA是使用最廣泛的公鑰密碼系統(tǒng),它可以用在保密性和數(shù)字簽名中。1976年Diffie和Hellman提出了公鑰密碼思想,1977年由Rivest,Shamir和Adleman首次實(shí)現(xiàn)了著名的RSA密碼系統(tǒng),它的安全性是基于大整數(shù)素因子分解的困難性。而盲簽名的概念是1983年由Chaum首先提出的,盲簽名因其在不可跟蹤電子支付系統(tǒng)中的重要應(yīng)用而引起慣犯的興趣。簡(jiǎn)而言之,盲簽名方案是具有下列兩個(gè)特征的普通數(shù)字簽名方案:(1)盲性:消息內(nèi)容對(duì)簽名者是不可見的。(2)不可鏈接性:在簽名被接受者泄漏后,簽名者不能追蹤簽名[3]。1.2選題意義隨著社會(huì)信息化的不斷發(fā)展,特別是計(jì)算機(jī)及其網(wǎng)絡(luò)在社會(huì)生活的各個(gè)領(lǐng)域得以普遍應(yīng)用,人們對(duì)信息安全要求越來越強(qiáng)烈。密碼技術(shù)是一項(xiàng)可防止信息泄露和篡改的技術(shù),它是維護(hù)信息保密性、完整性和可靠性的重要手段。盲簽名技術(shù)也是一種對(duì)原始信息加密的一種手段,它可以利用在很多地方,例如網(wǎng)上購物,電子選舉之類的,盲簽名是保障用戶的匿名性,那些需要用到匿名簽名的地方就會(huì)用到盲簽名,從而盲簽名的發(fā)展也就越來越快。選取該題目作為畢業(yè)論文,是希望對(duì)盲簽名做更近一步的了解,理解其中的原理以及其他相關(guān)知識(shí),熟悉生活中各個(gè)盲簽名使用的領(lǐng)域。1.3研究?jī)?nèi)容及論文結(jié)構(gòu)安排本論文在研究網(wǎng)絡(luò)信息安全技術(shù)的基礎(chǔ)上,深入研究了RSA公鑰密碼算法原理,討論了該算法的安全性,研究了其實(shí)現(xiàn)過程,并且研究了基于RSA算法的盲簽名及其實(shí)現(xiàn)。很多公鑰密碼體制如RSA公鑰密碼算法實(shí)現(xiàn)的關(guān)鍵問題是加解密運(yùn)算中涉及大量計(jì)算問題,計(jì)算開銷大,加解密運(yùn)算時(shí)間長,其核心運(yùn)算是大數(shù)模乘運(yùn)算和乘法逆元計(jì)算。論文主要分為三個(gè)部分:第一部分:介紹了當(dāng)前國內(nèi)外盲簽名研究現(xiàn)狀以及選擇該題目作為畢業(yè)論文的意義。第二部分:介紹了論文中所用到的基本數(shù)學(xué)理論第三部分:深入研究了基于rsa公鑰密碼的盲簽名算法第四部分:詳細(xì)闡述了基于rsa的盲簽名的設(shè)計(jì)與實(shí)現(xiàn)過程第五部分,論文的結(jié)束語和展望。2基本的數(shù)學(xué)理論密碼學(xué)是建立在堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ)之上的,它涉及代數(shù)、概率論、組合學(xué)以及信息論等,其中尤其是數(shù)論。曾被稱為“象牙塔”的數(shù)論已經(jīng)悄悄進(jìn)入了普通人的生活。奇數(shù)、偶數(shù)、素?cái)?shù)、合數(shù),數(shù)論研究的就是這些最簡(jiǎn)單的數(shù)——整數(shù)及其內(nèi)部關(guān)系,從這些簡(jiǎn)單的數(shù)中誕生了“費(fèi)馬大定理”、“哥德巴赫猜想”和“朗蘭茲綱領(lǐng)”這樣的難題,它們吸引數(shù)學(xué)家們花費(fèi)數(shù)十年、甚至整世紀(jì)努力研究。密碼系統(tǒng)多以大素?cái)?shù)作為素材,因?yàn)樗荒鼙?和它自身整除,作為密鑰的素?cái)?shù)越大,就意味著破解的可能性越小。本章主要介紹一下數(shù)論的一些基礎(chǔ)知識(shí),以便后文的理解。2.1素?cái)?shù)2.1.1素?cái)?shù)正整數(shù)分為素?cái)?shù)、合數(shù)和1。一個(gè)正整數(shù),除了能被1和自己整除外,再不能被其他的整除,那么我們就叫它素?cái)?shù),或者叫質(zhì)數(shù)。比如2,3,5,7,11,…等。不要以為所有的奇數(shù)都是素?cái)?shù),比如9就不是。如果數(shù)a能被數(shù)b整除,就稱b是a的一個(gè)因子,記為b|a。如果b是素?cái)?shù),則b是a的素因子。若a不能被b整除,就記為b+a。顯然,除2以外的偶數(shù)都是合數(shù),既是素?cái)?shù)又是偶數(shù)的數(shù)僅有2一個(gè),2也是最小的素?cái)?shù)。素?cái)?shù)的個(gè)數(shù)是無窮多個(gè)的嗎?答案是肯定的。證明:假設(shè)素?cái)?shù)的個(gè)數(shù)為有限的n個(gè),列舉為{}。我們考察數(shù),顯然{}中任何一個(gè)或若干個(gè)之積都不能整除m,也就是說m不能被這些素?cái)?shù)或小于m的合數(shù)整除,所以m也是素?cái)?shù)。與假設(shè)矛盾,命題得證。(1)素?cái)?shù)的分布素?cái)?shù)的分布式數(shù)論研究的一個(gè)重要內(nèi)容,素?cái)?shù)的分布極不規(guī)律。不過可以靠經(jīng)驗(yàn)得出素?cái)?shù)分布的一些推測(cè)和定理。例如10000以內(nèi)的素?cái)?shù)分布:1~100中間的素?cái)?shù)個(gè)數(shù)為251~1000中間的素?cái)?shù)個(gè)數(shù)為1681000~2000中間的素?cái)?shù)個(gè)數(shù)為1352000~3000中間的素?cái)?shù)個(gè)數(shù)為1273000~4000中間的素?cái)?shù)個(gè)數(shù)為1204000~5000中間的素?cái)?shù)個(gè)數(shù)為1195000~10000中間的素?cái)?shù)個(gè)數(shù)為560可以初步看出越往上,素?cái)?shù)分布越稀。令(x)表示不超過x的素?cái)?shù)個(gè)數(shù),有如下公式成立??梢钥闯觯寒?dāng)x越大,越接近1。這就是素?cái)?shù)定理。(2)幾個(gè)基本定理[定理1]除法定理——對(duì)任意整數(shù)a和任意整數(shù)n,存在唯一的整數(shù)q和r,滿足0<rn,并且。[定理2]算術(shù)基本定理——如果不計(jì)素因子的次序,則只有一種方法可以把一個(gè)大于1的整數(shù)分解成素?cái)?shù)的連乘積。這定理非常重要,在計(jì)算機(jī)理論中很多重要的定理都需要這個(gè)定理來證明,這個(gè)定理實(shí)際上給出了整數(shù)集和素?cái)?shù)集之間的對(duì)應(yīng)關(guān)系。例如6000可以表示成(4,1,3),因?yàn)閇4]。2.1.2擬素?cái)?shù)的概述根據(jù)Fermat小定理,可得,如果n是一個(gè)素?cái)?shù),則對(duì)任意整數(shù)b,(b,n)=1,有bn-1=1(modn),那么可以得到:如果有一個(gè)整數(shù)b(b,n)=1使得bn-1≠1(modn)。(1)擬素?cái)?shù)的定義設(shè)n是一個(gè)奇合數(shù),如果整數(shù)b,(b,m)=1使得同余式bn-1=1(modn)(1)成立,則n叫做對(duì)于基b的擬素?cái)?shù)。(2)有關(guān)擬素?cái)?shù)的重要定理設(shè)n是一個(gè)奇合數(shù),則(i)n是對(duì)于基b,((b,n)=1),的擬素?cái)?shù)當(dāng)且僅當(dāng)b模n的指數(shù)整除n-1(ii)如果n是對(duì)于基b1(b1,n)=1),和基b2((b2,n)=1),的擬素?cái)?shù),則n是對(duì)于基b1b2的擬素?cái)?shù)(iii)如果n是對(duì)于基b,(b,n)=1,的擬素?cái)?shù),則n是對(duì)于基b-1的擬素?cái)?shù)(iv)如果有一個(gè)整數(shù)b,(b,n)=1,使得同于式(1)不成立,則模n的簡(jiǎn)化剩余系中至少有一半的數(shù)使得同余式(1)不成立。(3)定理的應(yīng)用對(duì)于大奇數(shù),如果有一個(gè)整數(shù)b,(b,n)=1,使得同余式子(1)不成立,則模n的簡(jiǎn)化剩余系中至少有一半的數(shù)使得同余式(1)不成立。這就是說,對(duì)于隨機(jī)選取的整數(shù)b,(b,n)=1,有50%以上的機(jī)會(huì)來判斷出n是合數(shù),或者說n是合數(shù)的可能性小于50%[5]。2.1.3檢驗(yàn)大素?cái)?shù)的具體方法隨機(jī)選取整數(shù)b1,0<b1<n,利用廣義歐幾里德除法計(jì)算b1和n的最大公因數(shù)d1=(b1,n),如果d1>1,則n不是素?cái)?shù)。如果d1=1,則計(jì)算b1n-1(modn),看同余式(1)是否成立。如果不成立,則n不是素?cái)?shù);如果成立,則n是合數(shù)的可能性小于1/2或者說n是素?cái)?shù)的可能性大于1-1/2.重復(fù)上述步驟。再隨機(jī)選取整數(shù)b2,0<b2<n,利用廣義歐幾里德除法計(jì)算b2和n的最大公因數(shù)d2=(b2,n),如果d2>1,則n不是素?cái)?shù)。如果d2=1,則計(jì)算b2n-1(modn),看同余式(1)是否成立。如果不成立,則n不是素?cái)?shù);如果成立,則n是合數(shù)的可能性小于1/22或者說n是素?cái)?shù)的可能性大于1-1/22.重復(fù)以上步驟,直至第t步。隨機(jī)選取整數(shù)bt,0<bt<n,利用廣義歐幾里德除法計(jì)算bt和n的最大公因數(shù)dt=(bt,n),如果dt>1,則n不是素?cái)?shù)。如果dt=1,則計(jì)算btn-1(modn),看同余式(1)是否成立。如果不成立,則n不是素?cái)?shù);如果成立,則n是合數(shù)的可能性小于1/2t或者說n是素?cái)?shù)的可能性大于1-1/2t上述過程可簡(jiǎn)單歸納為:Fermat素性檢驗(yàn)給定奇整數(shù)n>2,和安全參數(shù)t。隨機(jī)選取整數(shù)b,1<b<n-1;計(jì)算r≡bn-1(modn);如果r≠1,則n是合數(shù)上述過程重復(fù)t次[6]。本文使用Fermat素性檢驗(yàn)來判斷隨機(jī)產(chǎn)生的大整數(shù)是否為素?cái)?shù)。2.2Euler函數(shù)的介紹Euler函數(shù),常用表示,就是小于且與互素的正整數(shù)的個(gè)數(shù)。顯然,當(dāng)為素?cái)?shù)時(shí),有。下面介紹一個(gè)結(jié)論:如果兩個(gè)整數(shù),且,則有。2.3同余理論同余是數(shù)論中一個(gè)十分重要的概念,同余理論在密碼學(xué),特別是公鑰密碼學(xué)中有著非常重要的作用。2.3.1同余的定義給定一個(gè)正整數(shù)m,兩個(gè)整數(shù)a,b叫做模m同余,如果a-b被m整除,或者m|a-b,記作a≡b(modm);否則,則叫作模m不同余,記作a≠b(modn)。注:模m是一個(gè)正整數(shù),在同余性質(zhì)的討論中為一個(gè)固定整數(shù)。2.3.2同余的常用定理(1)設(shè)嗎是一個(gè)正整數(shù),a,b是兩個(gè)正整數(shù),則a≡b(modm)的充要條件是存在一個(gè)整數(shù)k使得a=b+km.(2)模m同余是等價(jià)關(guān)系,即(i)(自反性)對(duì)任意整數(shù)a,a≡a(modm);(ii)(對(duì)稱性)若a≡b(modm),則b≡a(modm);(iii)(傳遞性)若a≡b(modm),b≡c(modm),則a≡c(modm);(3)整數(shù)a,b模m同余的充分必要條件是a,b被m除的余數(shù)相同。(4)設(shè)m是一個(gè)正整數(shù),a1,a2,b1,b2是四個(gè)整數(shù),如果a1≡b1(modm),a2≡b2(modm)則(i)a1+a2≡b1+b2(modm);(ii)a1a2≡b1b2(modm).(5)若x≡y(modm),ai≡bi(modm),0<i<k,則a0+a1x+…+akxk≡b0+b1y+…+bkyk(modm)(6)設(shè)整數(shù)n有十進(jìn)制表示:n≡ak10k+ak-110k-1+…+a110+a0,0<=ai<10則3|n的充分必要條件是:3|ak+…+a0;而9|n的充分必要條件是:9|ak+…+a0;2.4擴(kuò)展歐幾里德算法歐幾里德算法又稱輾轉(zhuǎn)相除法,用于計(jì)算兩個(gè)整數(shù)a,b的最大公約數(shù)。其計(jì)算原理依賴于下面的定理:定理:gcd(a,b)=gcd(b,amodb)證明:a可以表示成a=kb+r,則r≡amodb假設(shè)d是a,b的一個(gè)公約數(shù),則有d|a,d|b,而r=a-kb,因此d|r因此d是(b,amodb)的公約數(shù)假設(shè)d是(b,amodb)的公約數(shù),則d|b,d|r,但是a=kb+r因此d也是(a,b)的公約數(shù)因此(a,b)和(b,amodb)的公約數(shù)是一樣的,其最大公約數(shù)也必然相等,得證歐幾里德算法就是根據(jù)這個(gè)原理來做的,其算法用C語言描述為:voidswap(int&a,int&b){intc=a;a=b;b=c;}intgcd(inta,intb){if(0==a){returnb;}if(0==b){returna;}if(a>b){swap(a,b);}intc;for(c=a%b;c>0;c=a%b){a=b;b=c;}returnb;}擴(kuò)展歐幾里德算法擴(kuò)展歐幾里德算法不但能計(jì)算(a,b)的最大公約數(shù),而且能計(jì)算a模b及b模a的乘法逆元,用C語言描述如下:intgcd(inta,intb,int&ar,int&br){intx1,x2,x3;inty1,y2,y3;intt1,t2,t3;if(0==a){//有一個(gè)數(shù)為0,就不存在乘法逆元ar=0;br=0;returnb;}if(0==b){ar=0;br=0;returna;}x1=1;x2=0;x3=a;y1=0;y2=1;y3=b;intk;for(t3=x3%y3;t3!=0;t3=x3%y3){k=x3/y3;t2=x2-k*y2;t1=x1-k*y1;x1=y1;x1=y2;x3=y3;y1=t1;y2=t2;y3=t3;}if(y3==1){//有乘法逆元ar=y2;br=x1;return1;}else{//公約數(shù)不為1,無乘法逆元ar=0;br=0;returny3;}}本文用擴(kuò)展歐幾里德原理來求大整數(shù)的乘法逆元
3基于RSA公鑰密碼盲簽名算法RSA算法是公鑰密碼體制中最負(fù)盛名的算法,也是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法,而且易于理解和操作。算法的名字以發(fā)明者的名字命名:RonRivest,AdiShamir和LeonardAdleman。但RSA的安全性一直未能得到理論上的證明。它經(jīng)歷了各種攻擊,至今未被完全攻破。RSA算法的安全性是基于整數(shù)的因子分解困難性上的。國際上的一些標(biāo)準(zhǔn)化組織如ISO,IYU等都把RSA作為標(biāo)準(zhǔn)使用,現(xiàn)在流行的PGP也采用了RSA算法作為其加密解密和數(shù)字簽名的算法[7]。3.1公鑰密碼按照密鑰的不同,可以將密碼體制分為公鑰密碼體制和單鑰密碼體制。3.1.1單鑰密碼單鑰密碼體制又稱對(duì)稱密碼體制,是一種比較傳統(tǒng)的加密方式,其加密運(yùn)算、解密運(yùn)算使用的是同樣的密鑰,信息的發(fā)送者和信息的接收者在進(jìn)行信息的傳輸與處理時(shí),必須共同持有該密碼(稱為對(duì)稱密碼)。因此,通信雙方都必須獲得這把鑰匙,并保持鑰匙的秘密。單鑰密碼系統(tǒng)的安全性依賴于以下兩個(gè)因素:第一,加密算法必須是足夠強(qiáng)的,僅僅基于密文本身去解密信息在實(shí)踐上是不可能的;第二,加密方法的安全性依賴于密鑰的秘密性,而不是算法的秘密性,因此,我們沒有必要確保算法的秘密性(事實(shí)上,現(xiàn)實(shí)中使用的很多單鑰密碼系統(tǒng)的算法都是公開的),但是我們一定要保證密鑰的秘密性。從單鑰密碼的這些特點(diǎn)我們?nèi)菀卓闯鏊闹饕獑栴}有兩點(diǎn):第一,密鑰量問題。在單鑰密碼系統(tǒng)中,每一對(duì)通信者就需要一對(duì)密鑰,當(dāng)用戶增加時(shí),必然會(huì)帶來密鑰量的成倍增長,因此在網(wǎng)絡(luò)通信中,大量密鑰的產(chǎn)生﹑存放和分配將是一個(gè)難以解決的問題。第二,密鑰分發(fā)問題。單鑰密碼系統(tǒng)中,加密的安全性完全依賴于對(duì)密鑰的保護(hù),但是由于通信雙方使用的是相同的密鑰,人們又不得相互交流密鑰,所以為了保證安全,人們必須使用一些另外的安全信道來分發(fā)密鑰,例如用專門的信使來傳送密鑰,這種做法的代價(jià)是相當(dāng)大的,甚至可以說是非常不現(xiàn)實(shí)的,尤其在計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境下,人們使用網(wǎng)絡(luò)傳送加密的文件,卻需要另外的安全信道來分發(fā)密鑰,顯而易見,這是非常不智是甚至是荒謬可笑的。3.1.2公鑰密碼正因?yàn)閱舞€密碼系統(tǒng)存在如此難以解決的缺點(diǎn),發(fā)展一種新的﹑更有效﹑更先進(jìn)的密碼體制顯得更為迫切和必要。在這種情況下,出現(xiàn)了一種新的公鑰密碼體制,它突破性地解決了困擾著無數(shù)科學(xué)家的密鑰分發(fā)問題,事實(shí)上,在這種體制中,人們甚至不用分發(fā)需要嚴(yán)格保密的密鑰,這次突破同時(shí)也被認(rèn)為是密碼史上兩千年來自單碼替代密碼發(fā)明以后最偉大的成就。這一全新的思想是本世紀(jì)70年代,美國斯坦福大學(xué)的兩名學(xué)者Diffie和Hellman提出的,該體制與單鑰密碼最大的不同是:在公鑰密碼系統(tǒng)中,加密和解密使用的是不同的密鑰(相對(duì)于對(duì)稱密鑰,人們把它叫做非對(duì)稱密鑰),這兩個(gè)密鑰之間存在著相互依存關(guān)系:即用其中任一個(gè)密鑰加密的信息只能用另一個(gè)密鑰進(jìn)行解密。這使得通信雙方無需事先交換密鑰就可進(jìn)行保密通信。其中加密密鑰和算法是對(duì)外公開的,人人都可以通過這個(gè)密鑰加密文件然后發(fā)給收信者,這個(gè)加密密鑰又稱為公鑰;而收信者收到加密文件后,它可以使用他的解密密鑰解密,這個(gè)密鑰是由他自己私人掌管的,并不需要分發(fā),因此又成稱為私鑰,這就解決了密鑰分發(fā)的問題。如果兩個(gè)在不安全信道中通信的人,假設(shè)為A(收信者)和B(發(fā)信者),他們希望能夠安全的通信而不被他們的敵手Hack破壞。A想到了一種辦法,她使用了一種鎖(相當(dāng)于公鑰),這種鎖任何人只要輕輕一按就可以鎖上,但是只有A的鑰匙(相當(dāng)于私鑰)才能夠打開。然后A對(duì)外發(fā)送無數(shù)把這樣的鎖,任何人比如B想給她寄信時(shí),只需找到一個(gè)箱子,然后用一把A的鎖將其鎖上再寄給A,這時(shí)候任何人(包括B自己)除了擁有鑰匙的A,都不能再打開箱子,這樣即使Hack能找到A的鎖,即使Hack能在通信過程中截獲這個(gè)箱子,沒有A的鑰匙他也不可能打開箱子,而A的鑰匙并不需要分發(fā),這樣Hack也就無法得到這把“私人密鑰”。從以上的介紹可以看出,公鑰密碼體制的思想并不復(fù)雜,而實(shí)現(xiàn)它的關(guān)鍵問題是如何確定公鑰和私鑰及加/解密的算法,也就是說如何找到“A的鎖和鑰匙”的問題。我們假設(shè)在這種體制中,PK是公開信息,用作加密密鑰,而SK需要由用戶自己保密,用作解密密鑰。加密算法E和解密算法D也都是公開的。雖然SK與PK是成對(duì)出現(xiàn),但卻不能根據(jù)PK計(jì)算出SK。它們須滿足條件:(1)加密密鑰PK對(duì)明文X加密后,再用解密密鑰SK解密,即可恢復(fù)出明文,或?qū)憺椋?2)加密密鑰不能用來解密,即(3)在計(jì)算機(jī)上可以容易地產(chǎn)生成對(duì)的PK和SK。(4)從已知的PK實(shí)際上不可能推導(dǎo)出SK。(5)加密和解密的運(yùn)算可以對(duì)調(diào),即:從上述條件可看出,公開密鑰密碼體制下,加密密鑰不等于解密密鑰。加密密鑰可對(duì)外公開,使任何用戶都可將傳送給此用戶的信息用公開密鑰加密發(fā)送,而該用戶唯一保存的私人密鑰是保密的,也只有它能將密文復(fù)原、解密。雖然解密密鑰理論上可由加密密鑰推算出來,但這種算法設(shè)計(jì)在實(shí)際上是不可能的,或者雖然能夠推算出,但要花費(fèi)很長的時(shí)間而成為不可行的。所以將加密密鑰公開也不會(huì)危害密鑰的安全。這種體制思想是簡(jiǎn)單的,但是,如何找到一個(gè)適合的算法來實(shí)現(xiàn)這個(gè)系統(tǒng)卻是一個(gè)真正困擾密碼學(xué)家們的難題,因?yàn)榧热籔K和SK是一對(duì)存在著相互關(guān)系的密鑰,那么從其中一個(gè)推導(dǎo)出另一個(gè)就是很有可能的,如果敵手Hack能夠從PK推導(dǎo)出SK,那么這個(gè)系統(tǒng)就不再安全了。因此如何找到一個(gè)合適的算法生成合適的Pk和SK,并且使得從PK不可能推導(dǎo)出SK,正是迫切需要密碼學(xué)家們解決的一道難題。這個(gè)難題甚至使得公鑰密碼系統(tǒng)的發(fā)展停滯了很長一段時(shí)間。為了解決這個(gè)問題,密碼學(xué)家們考慮了數(shù)學(xué)上的陷門單向函數(shù),下面,我們可以給出它的非正式定義:A的公開加密函數(shù)應(yīng)該是容易計(jì)算的,而計(jì)算其逆函數(shù)(即解密函數(shù))應(yīng)該是困難的(對(duì)于除A以外的人)。許多形式為Y=f(x)的函數(shù),對(duì)于給定的自變量x值,很容易計(jì)算出函數(shù)Y的值;而由給定的Y值,在很多情況下依照函數(shù)關(guān)系f(x)計(jì)算x值十分困難。這樣容易計(jì)算但難于求逆的函數(shù),通常稱為單向函數(shù)。在加密過程中,我們希望加密函數(shù)E為一個(gè)單項(xiàng)的單射函數(shù),以便可以解密。雖然目前還沒有一個(gè)函數(shù)能被證明是單向的,但是有很多單射函數(shù)被認(rèn)為是單向的。例如,有如下一個(gè)函數(shù)被認(rèn)為是單向的,假定n為兩個(gè)大素?cái)?shù)p和q的乘積,d為一個(gè)正整數(shù),那么定義f:(如果,那么事實(shí)上這就是我們以下要說的RSA加密函數(shù))如果要構(gòu)造一個(gè)公鑰密碼體制,僅給出一個(gè)單向的單射函數(shù)是不夠的。從A的觀點(diǎn)來看,并不需要E是單向的,因?yàn)樗枰糜行У姆绞浇饷芩盏降男畔ⅰR虼?,A應(yīng)該擁有一個(gè)陷門,其中包含容易求出E的你函數(shù)的秘密信息。也就是說,A可以有效解密,因?yàn)樗蓄~外的秘密知識(shí),即SK,能夠提供給你解密函數(shù)D。因此,我們稱一個(gè)函數(shù)為一個(gè)陷門單向函數(shù),如果它是一個(gè)單向函數(shù),并在具有特定陷門的知識(shí)后容易求出其逆??紤]上面的函數(shù)。我們能夠知道其逆函數(shù)(x)有類似的形式,對(duì)于合適的取值d。陷門就是利用n的因子分解,有效的算出正確的指數(shù)d(對(duì)于給定的e)。為方便起見,我們?cè)谔囟ǖ哪愁愊蓍T單向函數(shù)中隨機(jī)選取一個(gè)函數(shù)作為公開加密函數(shù);其逆函數(shù)(x)是秘密解密函數(shù)。那么公鑰密碼體制就能夠?qū)崿F(xiàn)了。根據(jù)以上關(guān)于陷門單向函數(shù)的思想,學(xué)者們提出了許多種公鑰加密的方法,它們的安全性都是基于復(fù)雜的數(shù)學(xué)難題。根據(jù)所基于的數(shù)學(xué)難題,至少有以下三類系統(tǒng)目前被認(rèn)為是安全和有效的:大整數(shù)因子分解系統(tǒng)(代表性的有RSA)、橢園曲線離散對(duì)數(shù)系統(tǒng)(ECC)和離散對(duì)數(shù)系統(tǒng)(代表性的有DSA)[8]。3.2RSA算法該算法基于下面的兩個(gè)事實(shí),這些事實(shí)保證了RSA算法的安全有效性:(1)已有確定一個(gè)數(shù)是不是質(zhì)數(shù)的快速算法;(2)尚未找到確定一個(gè)合數(shù)的質(zhì)因子的快速算法。3.2.1具體原理(1)任意選取兩個(gè)不同的大質(zhì)數(shù)p和q,計(jì)算乘積;(2)任意選取一個(gè)大整數(shù)e,e與互質(zhì),整數(shù)e用做加密密鑰。注意:e的選取是很容易的,例如,所有大于p和q的質(zhì)數(shù)都可用。(3)確定解密密鑰d:根據(jù)e、p和q可以容易地計(jì)算出d。(4)公開整數(shù)n和e,但是不公開d;(5)將明文P(假設(shè)P是一個(gè)小于n的整數(shù))加密為密文C,計(jì)算方法為:(6)將密文C解密為明文P,計(jì)算方法為:P≡modn然而只根據(jù)n和e(不是p和q)要計(jì)算出d是不可能的。因此,任何人都可對(duì)明文進(jìn)行加密,但只有授權(quán)用戶(知道d)才可對(duì)密文解密。RSA的證明如下:先不加證明的引用兩個(gè)正確的定理。定理1(Euler)對(duì)任意的aZn*,有,其中Zn*={xZn|gcd(x,n)=1},(·)表示Euler函數(shù)。定理2設(shè)p和q是兩個(gè)不同的素?cái)?shù),n=pq,,對(duì)任意的xZn及任意的非負(fù)整數(shù)k,有.現(xiàn)在來證明RSA算法的加密變換和解密變換的正確性。證明:對(duì)于加密變換Ek和解密變換Dk。因?yàn)?,所以可設(shè),t是整數(shù)且t1。對(duì)于任意的xZn,有(xb)a=.因此解密過程是正確的。3.2.2RSA系統(tǒng)的參數(shù)選擇若使RSA安全,p與q必為足夠大的素?cái)?shù),使分析者沒有辦法在多項(xiàng)式時(shí)間內(nèi)將n分解出來。建議選擇p和q大約是100位的十進(jìn)制素?cái)?shù)。模n的長度要求至少是512比特。EDI攻擊標(biāo)準(zhǔn)使用的RSA算法中規(guī)定n的長度為512至1024比特位之間,但必須是128的倍數(shù)。國際數(shù)字簽名標(biāo)準(zhǔn)ISO/IEC9796中規(guī)定n的長度位512比特位.至1996年,建議使用768位的模n。為了抵抗現(xiàn)有的整數(shù)分解算法,對(duì)RSA模n的素因子p和q還有如下要求:(1)|p-q|很大,通常p和q的長度相同(2)p-1和q-1分別含有大素因子和(3)-1和-1分別含有大素因子和(4)p+1和q+1分別含有大素因子和為了提高加密速度,通常取e為特定的小整數(shù),如EDI國際標(biāo)準(zhǔn)中規(guī)定e=216+1,ISO/IEC9796中甚至允許取e=3。這時(shí)加密速度一般比解密速度快10倍以上。e=216+1優(yōu)于e=3之處在于它能夠抵抗對(duì)RSA的小加密指數(shù)攻擊。[9]3.2.3舉例說明為了說明該算法的工作過程,我們下面給出一個(gè)簡(jiǎn)單例子,顯然我們?cè)谶@只能取很小的數(shù)字,但是如上所述,為了保證安全,在實(shí)際應(yīng)用上我們所用的數(shù)字要大的多得多。例:選取p=7,q=17,則n=119,。選?。ù笥趐和q的質(zhì)數(shù)),gcd(e,φ(n))=1,通過d*5=1mod96,計(jì)算出。假定明文為整數(shù)p=19。則密文C為復(fù)原明文P為:3.3基于RSA體制的盲簽名體制3.3.1盲簽名盲簽名最早由DavidChaum于1983年提出的。盲簽名在數(shù)字現(xiàn)金、電子投票以及軍事等領(lǐng)域有著較大的應(yīng)用,特別是目前的數(shù)字現(xiàn)金,大部分是采用盲簽名的原理實(shí)現(xiàn)的。盲簽名的基本思想是:求簽名者把明文m作盲變換b(m),b(m)隱藏了m的內(nèi)容;然后把b(m)給簽字者(仲裁者)簽名得到s[b(m)],然后求簽名者把s[b(m)]通過逆向的盲變換取得簽名s(m)。。3.3.2完全盲簽名協(xié)議A請(qǐng)求B簽署一個(gè)文件,而且完全不想讓B知道文件的內(nèi)容是什么,只想在以后需要時(shí)B可以對(duì)他的文件進(jìn)行仲裁,這就用到了完全盲簽名協(xié)議。具體實(shí)現(xiàn)如下:(1)A把文件用一個(gè)隨機(jī)數(shù)乘之,得到一個(gè)盲變換后的文件,該隨機(jī)數(shù)稱為盲因子。(2)B對(duì)上面產(chǎn)生的盲文件進(jìn)行簽名,此時(shí)B完全不知道文件的內(nèi)容。(3)A取到簽名后的盲文件,在除以盲變換時(shí)所用的那個(gè)盲因子得到B對(duì)原文件的簽名。上面就是完全盲簽名的過程,這顯然也有些問題,比如A別有用心的讓B簽署一個(gè)有害的文件,而B在簽名的時(shí)候完全不知情,這樣的后果是可想而知的??磥碛袝r(shí)候讓B知道要簽署的文件的大概的信息是有必要的,只就是下面要提到的盲簽名協(xié)議。3.3.3盲簽名協(xié)議使用分割-選擇(Cut-and-Choose)技術(shù),可以使簽名者B知道他簽署的是那方面的信息,但是還保留盲簽名的特征——他不知道所簽署文件的具體內(nèi)容。下面舉個(gè)例子來說明。例反間諜組織的成員的身份必須保密,就連他們的領(lǐng)導(dǎo)頭子都不知道他們具體的名字,現(xiàn)在需要領(lǐng)導(dǎo)B簽署一份文件,內(nèi)容是“A具持此文件具有外交豁免權(quán)”,而A這個(gè)人有10個(gè)不同的名字,這份文件使用哪個(gè)名字是無所謂的,B不全知道他的名字就不會(huì)泄密。于是他準(zhǔn)備了10份這樣的文件,每個(gè)文件使用不同的名字。A將這10份文件分別用不同的盲因子盲變換后通過某種方式安全的交給B,B隨機(jī)選出其中的9份文件,索要他們的盲因子來查看文件的內(nèi)容,于是B明白了要簽署文件的大概內(nèi)容。B在對(duì)剩下的那份文件簽名,于是A順利取得簽名。在上面的那個(gè)協(xié)議中,如果A想讓B簽署一份“A可以每年領(lǐng)到100萬工資”的文件,那么成功率只有1/9,這個(gè)險(xiǎn)不是很好冒的[10]。3.3.4基于RSA算法的盲簽名D.Chaum曾提出第一個(gè)盲簽名的概念,并設(shè)計(jì)了計(jì)入RSA簽名體制的盲簽名方案。下面為了敘述方便,用m代表待簽署的消息,Bob代表簽名者,Alice代表簽名的接受者。RSA盲簽名由以下幾個(gè)部分組成: (一)初始化階段(1)Bob隨機(jī)選取兩個(gè)大素?cái)?shù)p,q,計(jì)算n=p*q,=(p-1)*(q-1)(2)Bob隨機(jī)選取一個(gè)大整數(shù)e,使得(e,)=1.(3)Bob用擴(kuò)展Euclidean算法計(jì)算d,使之滿足ed≡1mod(),即d≡(1/e)mod().(e,n)是Bob的公開密鑰,d為Bob的私鑰,兩個(gè)大素?cái)?shù)p,q由Bob秘密保存(二)簽名階段(1)Alice選擇待簽名消息m,隨機(jī)數(shù)r是整數(shù)。計(jì)算m1=m*remodn將m1發(fā)給Bob(2)Bob計(jì)算s1=(m1)dmodn,將s1發(fā)給Alice(三)脫盲階段 Alice計(jì)算s=s1r-1modn,s就是簽名(四)驗(yàn)證階段判斷驗(yàn)證等式m=(s)emodn是否成立,由此可確定簽名是否有效。RSA簽名體制的安全依賴分解大數(shù)的困難性。分解n是常用的攻擊方法,攻擊者只要能分解n,求出簽名者的私鑰是輕而易舉的事,因此,n的取值要盡可能大些。另外,為了防止攻擊者的窮舉攻擊,可以有效防止攻擊者迭代逐一測(cè)試攻擊。
4基于RSA盲簽名的設(shè)計(jì)與實(shí)現(xiàn)4.1實(shí)驗(yàn)環(huán)境選擇VisualC++6.0是運(yùn)行于Windows98/NT/2000/XP環(huán)境下的可視化編程工具中最重要的軟件開發(fā)工具之一,它把Windows統(tǒng)一直觀的界面風(fēng)格和面向?qū)ο蟮木幊碳夹g(shù)結(jié)合在一起,形成一個(gè)功能強(qiáng)大的集成開發(fā)環(huán)境,提供了簡(jiǎn)單高效的操作方式、高效的內(nèi)存管理、與設(shè)備無關(guān)的圖形接口、數(shù)據(jù)共享和多任務(wù)運(yùn)行機(jī)制,同時(shí)又提供了一系列功能強(qiáng)大的開發(fā)工具。這一切使得VisualC++在Windows應(yīng)用程序開發(fā)方面具有極強(qiáng)的優(yōu)勢(shì),因此使用VisualC++6.0開發(fā)平臺(tái)對(duì)本程序進(jìn)行開發(fā)。4.2盲簽名算法的詳細(xì)設(shè)計(jì)盲簽名實(shí)現(xiàn),首先隨機(jī)生成兩個(gè)大素?cái)?shù),計(jì)算出公鑰和密鑰。然后隨機(jī)生成一個(gè)明文,并對(duì)明文進(jìn)行盲化。然后,用密鑰對(duì)盲化的文件進(jìn)行簽名。最后用公鑰進(jìn)行盲簽名驗(yàn)證。4.2.1生成公鑰和私鑰本文通過先隨機(jī)產(chǎn)生大整數(shù),然后利用Fermat素性檢驗(yàn)來判斷大整數(shù)為素?cái)?shù)的概率。具體實(shí)現(xiàn)中,通過4次檢測(cè)以增加素性的概率。隨機(jī)生成兩個(gè)大素?cái)?shù)后,根據(jù)n=(p-1)*(q-1)計(jì)算出n的值,然后隨機(jī)選取e,根據(jù)n和e計(jì)算出d的值。生成公鑰和密鑰的設(shè)計(jì)流程圖,如圖1。開始開始隨機(jī)產(chǎn)生大整數(shù)利用Fermat素性檢驗(yàn)進(jìn)行檢測(cè)檢驗(yàn)通過?p,q都已產(chǎn)生?根據(jù)p,q計(jì)算出n的值隨機(jī)選擇e,并根據(jù)n計(jì)算出d值結(jié)束NYNY圖1RSA密鑰對(duì)的生成流程圖4.2.2盲簽名的過程盲簽名的過程,首先產(chǎn)生隨機(jī)一個(gè)盲因子r,然后利用r對(duì)明文進(jìn)行盲化,最后用私鑰d對(duì)盲化后的內(nèi)容進(jìn)行盲簽名。盲簽名的具體設(shè)計(jì)流程圖,如圖2。開始開始隨機(jī)產(chǎn)生一個(gè)明文mtext隨機(jī)產(chǎn)生一個(gè)盲因子r利用r對(duì)明文進(jìn)行盲化得到mtext1利用私鑰d對(duì)mtext1進(jìn)行盲簽名,得到mtext2結(jié)束圖2盲簽名過程流程圖4.2.3盲簽名的驗(yàn)證過程盲簽名的驗(yàn)證過程,首先利用擴(kuò)展歐幾里德算法求盲因子r的逆元r1。然后,利用r1對(duì)簽名內(nèi)容進(jìn)行脫盲。最后,利用公鑰e計(jì)算簽名驗(yàn)證的值并與原來的明文進(jìn)行比較。盲簽名的驗(yàn)證過程流程圖如圖3。開始開始利用擴(kuò)展歐幾里德算法,求盲因子r的逆元r1利用r1對(duì)簽名內(nèi)容mtext2進(jìn)行脫盲利用r1對(duì)簽名內(nèi)容mtext2進(jìn)行脫盲,得到mtext3利用公鑰e計(jì)算驗(yàn)證簽名的值mtext4mtext4與原文mtext是否相等?NY驗(yàn)證成功驗(yàn)證失敗結(jié)束圖3盲簽名驗(yàn)證流程圖4.3數(shù)據(jù)結(jié)構(gòu)定義structslink{ intbignum[100];/*bignum[98]用來標(biāo)記正負(fù)號(hào),1正,0負(fù)bignum[99]來標(biāo)記實(shí)際長度*/};4.4主要算法的實(shí)現(xiàn)盲簽名算法的實(shí)現(xiàn)首先要實(shí)現(xiàn)隨機(jī)產(chǎn)生大素?cái)?shù)的算法,大整數(shù)的基本運(yùn)算,運(yùn)用歐幾里德求大整數(shù)的逆元。在此基礎(chǔ)上,實(shí)現(xiàn)盲簽名的算法,并進(jìn)行驗(yàn)證。4.4.1隨機(jī)產(chǎn)生大素?cái)?shù)本文主要利用Fermat素性檢測(cè)法,檢測(cè)生成的大整數(shù)是否為素?cái)?shù)。大整數(shù)p對(duì)于基b的擬素?cái)?shù),當(dāng)且僅當(dāng)b模p的指數(shù)整除p-1,即bp-1=1(modp).對(duì)于b,本文分別選取2,3,5,7進(jìn)行檢測(cè),以增加p是素?cái)?shù)的可能性。經(jīng)過四次檢測(cè),p是素?cái)?shù)的可能性大于1-1/24。檢查整數(shù)素性的具體的實(shí)現(xiàn)如圖4。圖4Fermat素性檢驗(yàn)4.4.2大整數(shù)的基本運(yùn)算為了實(shí)現(xiàn)盲簽名算法的運(yùn)算,大整數(shù)需要實(shí)現(xiàn)的基本運(yùn)算有四則運(yùn)算,模運(yùn)算,模乘運(yùn)算,和冪模運(yùn)算。首先定義一個(gè)大小為100的數(shù)組存儲(chǔ)大整數(shù),然后根據(jù)整數(shù)的算術(shù)基本原則來實(shí)現(xiàn)。模乘和冪模在大整數(shù)基本運(yùn)算的基礎(chǔ)上,利用同余的基本性質(zhì)進(jìn)行實(shí)現(xiàn)[11][12][13][14][15]。具體的實(shí)現(xiàn)函數(shù),加法:add(inta1[MAX],inta2[MAX],int*c)//c=a1+a2減法:sub(inta1[MAX],inta2[MAX],int*c)//c=a1-a2乘法:mul(inta1[MAX],inta2[MAX],int*c)//c=a1*a2除法:divt(intt[MAX],intb[MAX],int*c,int*w)//c=a/b,w=amodb模運(yùn)算:mod(inta[MAX],intb[MAX],int*c)//c=amodb模乘:mulmod(inta[MAX],intb[MAX],intn[MAX],int*m)//m=a*bmodn冪模:expmod(inta[MAX],intp[MAX],intn[MAX],int*m)//m=apmodn4.4.3求大整數(shù)的逆元求逆元是本文的一個(gè)重點(diǎn)和難點(diǎn)。本文利用擴(kuò)展歐幾里德原理來求整數(shù)的逆元?,F(xiàn)假設(shè)已知d,m,求e,使得edmodm≡1。即是求d對(duì)m的逆元e。利用擴(kuò)展歐幾里德求解x,y使得gcd(d,m)=dx+my。x就是所要求的e。具體的實(shí)現(xiàn)如圖5。圖5乘法逆元的求解4.5實(shí)現(xiàn)效果及分析整個(gè)過程的實(shí)現(xiàn)效果圖,如圖6圖6整個(gè)過程的實(shí)現(xiàn)效果圖以下對(duì)實(shí)現(xiàn)的效果進(jìn)行具體的分析。4.5.1盲簽名的實(shí)現(xiàn)效果(1)RSA密鑰對(duì)的產(chǎn)生,隨機(jī)生成兩個(gè)大素?cái)?shù)p和q,由p,q計(jì)算得出n,n=p*q,再隨機(jī)生成一個(gè)與(p-1)*(q-1)互素的公鑰e,然后根據(jù)歐幾里德算法求出私鑰d,具體實(shí)現(xiàn)效果如圖7:圖7生成rsa密鑰對(duì)(2)密鑰對(duì)生成完成以后,隨機(jī)生成一個(gè)大整數(shù)類型的明文,實(shí)現(xiàn)效果如圖8圖8隨機(jī)產(chǎn)生明文(3)對(duì)明文進(jìn)行盲簽名操作,首先生成一個(gè)大整數(shù)類型的盲因子r,然后用此盲因子對(duì)明文進(jìn)行盲化,盲化以后用私鑰d對(duì)其進(jìn)行簽名,具體實(shí)現(xiàn)效果如圖9:圖9明文的盲化和簽名4.5.2盲簽名驗(yàn)證的實(shí)現(xiàn)效果(1)用擴(kuò)展歐幾里德算法求盲因子r對(duì)n的逆元,具體實(shí)現(xiàn)效果如圖10:圖10逆元的求解(2)對(duì)忙簽名后的內(nèi)容進(jìn)行脫盲得到簽名,具體實(shí)現(xiàn)效果如圖11:圖11簽名的脫盲(3)利用公鑰e對(duì)簽名進(jìn)行驗(yàn)證計(jì)算,然后與原始明文比較,如果相同則驗(yàn)證成功,反之,則失敗,具體實(shí)現(xiàn)效果如圖12:圖12盲簽名的驗(yàn)證
5結(jié)束語隨著社會(huì)信息化的不斷發(fā)展,特別是計(jì)算機(jī)及其網(wǎng)絡(luò)在社會(huì)生活的各個(gè)領(lǐng)域得以普遍應(yīng)用,人們對(duì)信息安全要求越來越強(qiáng)烈。密碼技術(shù)是一項(xiàng)可防止信息泄露和篡改的技術(shù),它是維護(hù)信息保密性、完整性和可靠性的重要手段。本課題研究主要是用c語言實(shí)現(xiàn)基于rsa的盲簽名并對(duì)其進(jìn)行驗(yàn)證,首先是RSA密鑰對(duì)的生成,然后對(duì)隨機(jī)生成的明文進(jìn)行盲化和簽名。簽名過程完成以后對(duì)此簽名進(jìn)行驗(yàn)證,驗(yàn)證盲簽名是否正確。本論文在研究網(wǎng)絡(luò)信息安全技術(shù)的基礎(chǔ)上,深入研究了RSA公鑰密碼算法原理,討論了該算法的安全性,研究了其實(shí)現(xiàn)過程,并且研究了基于RSA算法的盲簽名及其實(shí)現(xiàn)。RSA公鑰密碼算法實(shí)現(xiàn)的關(guān)鍵問題是加解密運(yùn)算中涉及大量計(jì)算問題,計(jì)算開銷大,加解密運(yùn)算時(shí)間長,其核心運(yùn)算是大數(shù)模乘運(yùn)算和乘法逆元計(jì)算以及大素?cái)?shù)的生成。本文在生成大素?cái)?shù)的時(shí)候采用了Fermat素性檢驗(yàn)法來快速生成大素?cái)?shù),在實(shí)現(xiàn)了大整數(shù)基本運(yùn)算的前提下利用同余性質(zhì)實(shí)現(xiàn)大整數(shù)的模乘運(yùn)算,利用擴(kuò)展歐幾里德算法來實(shí)現(xiàn)逆元的求解。希望論文的工作能對(duì)RSA公鑰密碼算法的研究和實(shí)際應(yīng)用、對(duì)大整數(shù)模乘算法的研究和實(shí)現(xiàn),對(duì)我國自主開發(fā)信息安全產(chǎn)品做出一些貢獻(xiàn)。致謝本論文是在我的導(dǎo)師郭艾俠老師的親切關(guān)懷和悉心指導(dǎo)下完成的。她嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。從課題的選擇到項(xiàng)目的最終完成,郭老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持,感謝郭老師。感謝四年來一直栽培我的各位老師,他們循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。他們的辛勤教誨,使我學(xué)到了豐富的專業(yè)知識(shí)和為人處世之道,提高了我的自學(xué)能力以及分析問題和解決問題的能力。感謝我身邊的同學(xué)和朋友,他們?cè)谖业纳钌虾蛯W(xué)習(xí)上都給了我莫大的支持,不厭其煩的指出我的錯(cuò)誤,同時(shí)總能在我迷惘時(shí)為我解惑。感謝審閱本文的老師,感謝你們?cè)诎倜χ谐槌鰧氋F時(shí)間來審閱本文,并期待你們的批評(píng)指正。最后,衷心地感謝我摯愛的父母,多年來他們一直在默默地支持著我,在生活上對(duì)我悉心照顧,在學(xué)習(xí)上給予我支持和鼓勵(lì),他們的支持是我最大的動(dòng)力。
參考文獻(xiàn)[1]汪旦華.盲簽名及其應(yīng)用研究.信息技術(shù),2005,(2):35-38[2]李天增,王瑜.RSA密碼體制的安全性分析和算法實(shí)現(xiàn).四川理工學(xué)院學(xué)報(bào),2009,22(1):41-43[3]李萍,張建中.基于RSA密碼體制的盲簽名方案.信息與通信保密,2006,(9):121-122[4]王英.RSA算法中大素?cái)?shù)的快速生成方法.湖南科技學(xué)院學(xué)報(bào)年,2005,26(5):14-16[5]劉少濤,凌捷.數(shù)據(jù)加密算法與大素?cái)?shù)的生成.廣東工業(yè)大學(xué)學(xué)報(bào),2001,18(4):25-29[6]陳曉文,鄭建德.新型大素?cái)?shù)快速并行搜索策略.廈門大學(xué)學(xué)報(bào)2008,47,(2):21-25[7]李力,周升力,鄭超美.RSA密碼的一種快速實(shí)現(xiàn)算法.南昌大學(xué)學(xué)報(bào)理科版,2008,32(5):498-500[8]LiPing,ZhangJianzhong.UntraceableBlindSignatureSchemeBasedontheRSA.CryptosystemChinaInformationSecurity,2006,(9):121-122[9]Lili,ZHOUShengli,ZhengChaomei.AFastImplementationofRSAEncryptionAlgorithm.JOURNALOFNANCHANGUNIVERSITY,2008,32(5):498-500[10]Zhanglei,ZhangFutai.CERTIFICATELESSSIGNATUREANDBLINDSIGNATURE.JOURNALOFELECTRONICS,2007,25(5):629-635[11]王巖,周亮.大整數(shù)模運(yùn)算的軟件實(shí)現(xiàn)方案.信息安全與通信保密,2005,(2):150-151[12]劉宇東.基于數(shù)組的大整數(shù)的運(yùn)算與實(shí)現(xiàn).計(jì)算機(jī)與現(xiàn)代化,2008,(3):20-22[13]周天宏.大整數(shù)的計(jì)算.鄖陽師范高等??茖W(xué)校學(xué)報(bào),1992,33(1):75-82[14]曾聯(lián)明.用C語言鏈表解決大整數(shù)運(yùn)算的精度問題.電腦學(xué)習(xí),2002,(3):31[15]石研,姚晟.大整數(shù)算術(shù)運(yùn)算的實(shí)現(xiàn).安慶師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2004,10(2):75-78
英文摘要UntraceableBlindSignatureSchemeBasedontheRSACryptosystemWangYongliang(CollegeofInformatics,SouthChinaAgriculturalUniversityGuangzhou510642,China)AbstractBlindsignatureisthesignaturedidnotknowwhosignedthedocumentorthespecificcontentofnewsanddocumentsorinformationtheownercanbeblindfromthesignatoryonthedocumentsorinformationafterthesignaturetobesignatoryonthedocumentsorinformationtherealsignature.Blindsignatureinformationtoallowblindpersonsofthenewsfirstandthenallowtheblindsignaturetothesignatureofthemessage,thelastmessageoftheownertoremovetheblindsignaturefactor,tobethesigner'ssignatureontheoriginalmessage.Blindsignaturecanbesignedbytheeffectiveprotectionofthespecificcontentofmessages,soine-commerceande-electionsinareassuchasshareawiderangeofapplications.
Inthispaper,aresearchnetworkininformationsecuritytechnology,basedonin-depthstudyoftheRSAalgorithmisbasedonblindsignaturesystem,andsimpletoachievevc++6.0-basedblindsignaturesystemplatform.Simplesystemtosimulatetheprocessofblindsignatureofthevariousstepsoftherealizationofar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市水務(wù)監(jiān)管體系計(jì)劃
- 2024年度化肥品牌授權(quán)使用合同3篇
- 2024年汽車維修技術(shù)人員標(biāo)準(zhǔn)勞動(dòng)協(xié)議范本版
- 第4單元第18課《爭(zhēng)相恐后-傳感器的綜合應(yīng)用》-教學(xué)實(shí)錄2023-2024學(xué)年清華大學(xué)版(2012)初中信息技術(shù)九年級(jí)下冊(cè)
- 2024版年度教育機(jī)構(gòu)教師短期勞動(dòng)合同樣本
- 2024年版校園設(shè)施維護(hù)服務(wù)協(xié)議一
- 六安職業(yè)技術(shù)學(xué)院《工程制圖實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 柳州職業(yè)技術(shù)學(xué)院《工程圖學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 柳州鐵道職業(yè)技術(shù)學(xué)院《微生物學(xué)檢驗(yàn)理論》2023-2024學(xué)年第一學(xué)期期末試卷
- 柳州工學(xué)院《混合動(dòng)力汽車技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 紙質(zhì)文物保護(hù)修復(fù)的傳統(tǒng)及現(xiàn)代技術(shù)研究
- 中國心力衰竭病人高鉀血癥管理專家共識(shí)解讀
- 148個(gè)常用偏旁及含義
- 湖南省六年級(jí)上冊(cè)數(shù)學(xué)期末試卷(含答案)
- 私人影院管理制度
- 人機(jī)工程評(píng)價(jià)表
- 初三英語閱讀理解專項(xiàng)訓(xùn)練100(附答案)
- CT球管標(biāo)準(zhǔn)規(guī)定
- 小學(xué)信息技術(shù)全冊(cè)教案(蘇教版)
- 自行車和自行車制造行業(yè)研究報(bào)告
- 2023基因行業(yè)藍(lán)皮書-基因慧
評(píng)論
0/150
提交評(píng)論