版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要緒論1.1研究背景當(dāng)今社會是信息化社會,電子計算機和通信網(wǎng)絡(luò)己經(jīng)廣泛的應(yīng)用于社會的各個領(lǐng)域,以此為基礎(chǔ)建立起來的各種信息系統(tǒng),給人們的生活、工作帶來了巨大變革。大型信息系統(tǒng)將眾多的計算機和只能化設(shè)備連在一個四通八達的通信網(wǎng)絡(luò)中,共享豐富的數(shù)據(jù)庫信息和計算機資源,儲存大量的數(shù)據(jù)文件,完成異地之間的數(shù)據(jù)交換與通信。信息系統(tǒng)的應(yīng)用,加速了社會自動化的進程,減輕了日常繁雜的重復(fù)勞動,同時也提高了生產(chǎn)率,創(chuàng)造了經(jīng)濟效益。信息時代雖然給我們帶來了無限商機與方便,但同時也充斥著隱患與危險。由于網(wǎng)絡(luò)很容易受到攻擊,導(dǎo)致機密信息的泄漏,引起重大損失。由于信息技術(shù)已經(jīng)成為綜合國力的一個重要組成部分,因此信息安全己成為保證國民經(jīng)濟信息化建設(shè)健康有序發(fā)展的保障。當(dāng)今網(wǎng)絡(luò)社會技術(shù)眾多,目前在電子商務(wù)、電子政務(wù)、電子郵件系統(tǒng)、電子銀行等方面必備的關(guān)鍵技術(shù)就是數(shù)字簽名。數(shù)字簽名又稱為數(shù)字簽字,電子簽章等?!皵?shù)字簽名”用來保證信息傳輸過程中信息的完整和提供信息發(fā)送者的身份認證和不可抵賴性,數(shù)字簽名技術(shù)的實現(xiàn)基礎(chǔ)是公開密鑰加密技術(shù),是用某人的私鑰加密的消息摘要用于確認消息的來源和內(nèi)容。為保證數(shù)據(jù)在網(wǎng)絡(luò)傳遞中的安全性和完整性從技術(shù)上,主要考慮一下情況:(1)如果需要使用一種方法驗證數(shù)據(jù)在傳輸過程中是否被修改,可以使用哈希值?(2)如果需要證明實體知道機密但不來回發(fā)送機密,或者想使用簡單的哈希值以防止在傳輸過程中被截獲,可以使用加密的哈希值?(3)如果要隱藏通過不安全的媒介發(fā)送的數(shù)據(jù)或者永久保留數(shù)據(jù),可以使用加密(4)如果要驗證聲稱是公鑰所有者的人員的身份,可以使用證書?(5)如果雙方事先共享密鑰,可以使用對稱加密以提高速度?(6)如果想通過不安全的媒介安全的交換數(shù)據(jù)可以使用非對稱加密(7)如果要進行身份驗證和實現(xiàn)不可否認性,可以使用數(shù)字簽名(8)如果為了防范窮舉搜素而進行的攻擊,可以使用加密技術(shù)產(chǎn)生的隨機數(shù)[1]RSA公鑰加密算法是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也十分流行。隨著越來越多的商業(yè)應(yīng)用和標準化工作,RSA已經(jīng)成為最具代表性的公鑰加密技術(shù)。VISA、MasterCard、IBM、Microsoft等公司協(xié)力制定的安全電子交易標準(SecureElectronicTransactions,SET)就采用了標準RSA算法,這使得RSA在我們的生活中幾乎無處不在。網(wǎng)上交易加密連接、網(wǎng)上銀行身份驗證、各種信用卡使用的數(shù)字證書、智能移動電話和存儲卡的驗證功能芯片等,大多數(shù)使用RSA技術(shù)。1.2研究現(xiàn)狀實現(xiàn)數(shù)字簽名的算法有很多,目前數(shù)字簽名采用較多的是公鑰加密技術(shù),如DSA(DigitalSignatureAlgorithm),x.509,POP(PrettyGoodPrivacy)。1994年美國標準與技術(shù)協(xié)會公布了數(shù)字簽名標準(DSS)而使公鑰加密技術(shù)廣泛應(yīng)用。RSA已經(jīng)成為最具代表性的公鑰加密技術(shù)。VISA、MasterCard、IBM、Microsoft等公司協(xié)力制定的安全電子交易標準(SecureElectronicTransactions,SET)就采用了標準RSA算法,這使得RSA在我們的生活中幾乎無處不在。網(wǎng)上交易加密連接、網(wǎng)上銀行身份驗證、各種信用卡使用的數(shù)字證書、智能移動電話和存儲卡的驗證功能芯片等,大多數(shù)使用RSA技術(shù)。(1)研究主要成果RSA作為最重要的公開密鑰算法,在各領(lǐng)域的應(yīng)用數(shù)不勝數(shù)。RSA在硬件方面,以技術(shù)成熟的IC應(yīng)用于各種消費類電子產(chǎn)品。RSA在軟件方面的應(yīng)用,主要集中在Internet上。加密連接、數(shù)字簽名和數(shù)字證書的核心算法廣泛使用RSA。RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。RSA目前是最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標準。RSA的缺點主要有:(1)產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。(2)分組長度太大,為保證安全性,n至少也要600bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級。(2)發(fā)展趨勢當(dāng)今社會是信息化社會,電子計算機和通信網(wǎng)絡(luò)己經(jīng)廣泛的應(yīng)用于社會的各個領(lǐng)域,以此為基礎(chǔ)建立起來的各種信息系統(tǒng),給人們的生活、工作帶來了巨大變革。信息系統(tǒng)的應(yīng)用,加速了社會自動化的進程,減輕了日常繁雜的重復(fù)勞動,同時也提高了生產(chǎn)率,創(chuàng)造了經(jīng)濟效益。信息安全技術(shù)在信息化迅速發(fā)展的今天己進入了高速發(fā)展的新時期,形成了密碼技術(shù)、可信計算技術(shù)、電磁輻射泄露防護技術(shù)、系統(tǒng)入侵檢測技術(shù)和計算機病毒檢測消除技術(shù)等多個安全防護技術(shù)門類。(3)存在問題目前普遍采用的數(shù)字簽名算法,都是基于下面三個數(shù)學(xué)難題的基礎(chǔ)之上:(1)整數(shù)的因式分解(IntegerFactorization)問題,如RSA算法。(2)離散對數(shù)(DiscreteLogarithm)問題,如ElGamal,DSA,Schnorr等算法;(3)橢圓曲線(EllipticCurve)問題,如ECDSA算法。[2]2密碼學(xué)基本概念密碼學(xué)包括兩個方面:密碼編碼學(xué)和密碼分析學(xué)。密碼編碼學(xué)就是研究對數(shù)據(jù)進行變換的原理、手段和方法的技術(shù)和科學(xué)。密碼分析學(xué)是為了取得秘密的消息,而對密碼系統(tǒng)及其流動數(shù)據(jù)進行分析,是對密碼原理、手段和方法進行分析、攻擊的技術(shù)和科學(xué)。密碼學(xué)的理論基礎(chǔ)是數(shù)學(xué),其基本思想是隱藏、偽裝信息,使未經(jīng)授權(quán)者不能得到消息的真正含義。偽裝(變換)之前的信息是原始信息,成為明文;偽裝之后的消息,看起來是一串無意義的亂碼,稱為密文。把明文偽裝成密文的過程稱為(encryption),該過程使用的數(shù)學(xué)變換就是加密算法。把密文還原成明文的過程稱為解密(decryption),該過程使用的數(shù)學(xué)變換,通常是加密時數(shù)學(xué)變換的逆變換,就是解密算法。加密與解密通常需要參數(shù)控制,我們把該參數(shù)稱為密鑰,有時也稱為密碼。加密時使用的為加密密碼(加密密鑰),解密時使用的為解密密碼(解密密鑰)。[3]加密密鑰與解密密鑰可能相同也可能不同。相同時稱為對稱型或單鑰的,不相同時稱為非對成型或雙鑰的。那么一個密碼系統(tǒng)或稱其為密碼體制,是由明文空間、密文空間、密鑰空間、加密算法與解密算法五個部分組成。明文、密文、密鑰空間分別表示全體明文、全體密文、全體密鑰的集合;加密與解密算法通常是一些公式、法則或程序,規(guī)定了明文與密文之間的數(shù)學(xué)變換規(guī)則。下面用字母分別表示這個概念,密鑰K=<Ke,Kd>,Ke表示加密密鑰,Kd表示解密密鑰,設(shè)明文M,密文C,加密算法E,解密算法D。把明文加密為密文:C=E(M,Ke)密文解密為明文:M=D(C,Kd)=D(E(M,Ke),Kd)。上述的講解可用下圖明文明文明文空間加密密鑰密鑰空間解密密鑰明文明文空間明文明文空間加密算法解密算法Interner(不安全信道)傳輸?shù)膬?nèi)容密碼分析攻擊者目的:求明文與密碼圖2-1加密過程與密碼分析2.1公鑰密碼基本概念公鑰密碼與以前所有的密碼方法都大相徑庭:一是以前的密碼算法都基于代換與置換操作,而公鑰密碼使用數(shù)學(xué)數(shù)進行變換;二是公鑰密碼體制使用非對稱的方式,使用兩個密鑰(加密密鑰與解密密鑰),而傳統(tǒng)密碼算法僅僅使用一個密鑰。公鑰密碼體制的提出首先是為了解決利用傳統(tǒng)密碼體制進行密鑰分發(fā)時遇到的問題,數(shù)字簽名也是其重要應(yīng)用之一。[3]從1976年起,學(xué)者們提出了許多種公鑰加密方法,它們的安全性都是基于復(fù)雜的數(shù)學(xué)難題。根據(jù)所基于的數(shù)學(xué)難題來分類,有以下三類系統(tǒng)目前被認為是安全和有效的:(1)基于大整數(shù)因子分解的:RSA和Rabin-Williams。(2)基于離散對數(shù)問題的:DSA和EIGamal。(3)基于橢圓曲線離散對數(shù)問題的:橢圓曲線密碼系統(tǒng)。公開密鑰加密算法與對稱密鑰加密算法相比來說,安全性能更好,密鑰管理、分配都容易實現(xiàn),其中有些加密算法還能應(yīng)用在數(shù)字簽名上,但是它們相對于對稱密鑰加密算法運行速度要慢得多,所以不能加密大量的數(shù)據(jù)。2.1.1公鑰密碼原理公開密鑰密碼常用的、成熟的公鑰算法是RSA。它與傳統(tǒng)的對稱密鑰算法有本質(zhì)的區(qū)別,對稱密鑰算法常用的是DES算法,加/解密時用的是同一個密鑰。而公鑰算法利用的是非對稱的密鑰,即利用兩個足夠大的質(zhì)數(shù)與被加密原文相乘生產(chǎn)的積來加/解密。這兩個質(zhì)數(shù)無論是用哪一個與被加密的原文相乘(模乘),即對原文件加密,均可由另一個質(zhì)數(shù)再相乘來進行解密。但是,若想用這個乘積來求出另一個質(zhì)數(shù),就要進行對大數(shù)分解質(zhì)因子,分解一個大數(shù)的質(zhì)因子是十分困難的,若選用的質(zhì)數(shù)足夠大,這種求解幾乎是不可能的。公、密鑰對的用法是,當(dāng)發(fā)方向收方通信時發(fā)方用收方的公鑰對原文進行加密,收方收到發(fā)方的密文后,用自己的私鑰進行解密,其中他人是無法解密的,因為他人不擁有自己的私鑰,這就是用公鑰加密,私鑰解密用于通信;而用私鑰加密文件公鑰解密則是用于簽名,即發(fā)方向收方簽發(fā)文件時,發(fā)方用自己的私鑰加密文件傳送給收方,收方用發(fā)方的公鑰進行解密。但是,在實際應(yīng)用操作中發(fā)出的文件簽名并非是對原文本身進行加密,而是要對原文進行所謂的“哈?!?Hash)運算,即對原文作數(shù)字摘要。該密碼算法也稱單向散列運算,其運算結(jié)果稱為哈希值,或稱數(shù)字摘要,也有人將其稱為“數(shù)字指紋”。哈希值有固定的長度,運算是不可逆的,不同的明文其哈希值是不同的,而同樣的明文其哈希值是相同并且是唯一的,原文的任何改動,其哈希值就要發(fā)生變化。數(shù)字簽名是用私鑰對數(shù)字摘要進行加密,用公鑰進行解密和驗證[4]公鑰密碼算法使用兩個密鑰,其中一個用于加密(加密密鑰),另外一個用于解密(解密密鑰)。公鑰密碼算法具有如下特征:加密密鑰與解密密鑰時本質(zhì)上不通的,也就是說如果僅僅知道密碼算法和加密密鑰,而要確定解密密鑰,在計算上是不可行的;大多數(shù)公鑰密碼算法的加密密鑰與解密密鑰具有互換的性質(zhì)。如RSA算法,密鑰對中的一個用于加密,另一個用于解密。2.1.2公鑰密碼的理論基礎(chǔ)公鑰密碼體制的安全性主要取決于構(gòu)造公鑰算法所依賴的數(shù)學(xué)問題,通常要求加密函數(shù)具有單向性,即求逆很困難。因此,公鑰密碼的理論基礎(chǔ)是陷門單向函數(shù)。1單向函數(shù)(1)對于所有屬于f定義域的任一x,可以很容易算出f(x)=y.(2)對于幾乎所有屬于f值域的任一y,則在計算上不可能求出x,使得y=f(x).2單向陷門函數(shù)設(shè)f是一個函數(shù),t是與f有關(guān)的一個參數(shù),對于任一給定的x。計算y,使得y=f(x)是容易的。如果當(dāng)不知道參數(shù)t是,計算的f逆函數(shù)是難解的,但但知道參數(shù)t時,計算f的逆函數(shù)是容易的,則稱f是一個單向陷門函數(shù),參數(shù)稱為陷門。[5]2.2對稱加密體制對稱加密算法,又稱私鑰加密算法,就是加密密鑰能夠從解密密鑰中推出來,反過來也成立,在大多數(shù)對稱算法中,加密解密密鑰是相同的。對稱算法的加密和解密表示為:(2-1)對稱加密算法的典型代表有:DES,AES,3DES,RC2,RC4,RCS,RC6,IDEA等。以DES為代表的對稱密鑰加密算法的設(shè)計原則主要基于信息論的混亂和擴散?;靵y指的是密鑰和明文及密文之間的依賴關(guān)系應(yīng)該盡量復(fù)雜,以破壞分組間的統(tǒng)計規(guī)律,通常依靠多輪迭代來實現(xiàn);擴散則應(yīng)使密鑰和明文的每一位影響密文中盡可能多的位數(shù),這樣可以防止逐段破譯,并通過S盒的非線性變換來實現(xiàn)。實際上,所有的對稱密鑰加密算法都采用Feistel網(wǎng)、S盒及多次迭代等思想。對稱加密有速度上的優(yōu)點,用軟件實現(xiàn),對稱密鑰比非對稱密鑰快100-1000倍。然而,如果一個消息想以密文的形式傳到接收者,我們應(yīng)該找到一個方法安全傳輸密鑰。對稱加密系統(tǒng)用鍵長來衡量加密強度,40比特的鍵長被認為比較脆弱,128比特比較健壯。對稱加密算法的缺點則是密鑰分發(fā)困難,密鑰管理難,無法實現(xiàn)數(shù)字簽名。對稱加密算法的優(yōu)點是保密強度高,加解密速度快,適合加密大量數(shù)據(jù)。攻擊者如果對加密后的數(shù)據(jù)進行破譯,唯一的辦法就是對每個可能的密鑰執(zhí)行窮搜索。而采用這種加密技術(shù),即使使用最快的計算機執(zhí)行這種搜索,耗費的時間也是相當(dāng)?shù)拈L。如果使用較大的密鑰,破譯將會更加的困難。[6]3數(shù)字簽名的基本概念和理論3.1數(shù)字簽名概念數(shù)字簽名是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)實現(xiàn),用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證。數(shù)字簽字由公鑰密碼發(fā)展而來,它在網(wǎng)絡(luò)安全,包括身份認證、數(shù)據(jù)完整性、不可否認性以及匿名性等方面有著重要應(yīng)用。特別是在大型網(wǎng)絡(luò)安全通信中的密鑰分配、認證以及電子商務(wù)系統(tǒng)中都有重要的作用,數(shù)字簽名的安全性日益受到高度重視。數(shù)字簽名是指用戶用自己的私鑰對原始數(shù)據(jù)的哈希摘要進行加密所得的數(shù)據(jù)。信息接收方使用信息發(fā)送方的公鑰對附在原始信息后的數(shù)字簽名進行解密后獲得哈希摘要,并通過與自己用收到的原始數(shù)據(jù)產(chǎn)生的哈希摘要對照,便可確信原始數(shù)據(jù)信息是否被篡改。這樣就保證了消息來源的真實性和數(shù)據(jù)傳輸?shù)耐暾?。[7]3.2數(shù)字簽名理論數(shù)字簽名的實現(xiàn)通常采用非對稱密碼與對稱密碼體系。不同的是,非對稱密碼體系的加密和解密過程分別通過兩個不同的密鑰來實現(xiàn),其中一個密鑰以公開,稱為公開密鑰,簡稱公鑰,另一個有用戶自己秘密保管,稱為保密密鑰,簡稱私鑰。只有相應(yīng)的公鑰能夠?qū)τ盟借€加密的信息進行解密,反之亦然。以現(xiàn)在的計算機運算能力,從一把密鑰推算出另一把密鑰是不大可能的。所以,數(shù)字簽名具有很大的安全性,這是它的一個優(yōu)點。數(shù)字簽名的基本方式主要是:信息發(fā)送方首先通過運行散列函數(shù)生成一個欲發(fā)送報文的信息摘要,然后用其私鑰對這個信息摘要進行加密以形成發(fā)送方的數(shù)列簽名,這個數(shù)字簽名將作為報文的附件和報文一起發(fā)送給報文的接收方。接收方在收到信息后首先運行和發(fā)送相同的散列函數(shù)生成接收報文的信息摘要,然后再用發(fā)送方的公鑰進行解密,產(chǎn)生原始報文的信息摘要,通過比較兩個信息摘要是否相同就可以確認發(fā)送方和報文的準確性。當(dāng)然,上述過程只是對報文進行了簽名,對其傳送的報文本身并未保密。為了同時實現(xiàn)數(shù)字簽名和秘密通信,發(fā)送者可以用接收方的公鑰對發(fā)送的信息進行加密,這樣,只有接收方才能通過自己的私鑰對報文進行接么,其它人即使獲得報文并知道發(fā)送者的身份,由于沒有接收方的密鑰也無法理解報文。3.3數(shù)字簽名過程為了實現(xiàn)網(wǎng)絡(luò)環(huán)境下的身份鑒別、數(shù)據(jù)完整性認證和抗否認的功能,數(shù)字簽名應(yīng)滿足以下要求:(1)簽名者發(fā)出簽名的消息后,就不能再否認自己所簽發(fā)的消息;(2)接收者能夠確認或證實簽名者的簽名,但不能否認;(3)任何人都不能偽造簽名;(4)第三方可以確認收發(fā)雙方之間的消息傳送,但不能偽造這一過程,這樣,當(dāng)通信的雙方關(guān)于簽名的真?zhèn)伟l(fā)生爭執(zhí)時,可由第三方來解決雙方的爭執(zhí)。[8]對于一個典型的數(shù)字簽名體系而言,它必須包含2個重要的組成部分:即簽名算法(SignatureAlgorithm)和驗證算法(VerificationAlgorithm)。為了滿足上述4點要求,數(shù)字簽名體系必須滿足2條基本假設(shè):(1)簽名密鑰是安全的,只有其擁有者才能使用。(2)使用簽名密鑰是產(chǎn)生數(shù)字簽名的唯一途徑。3.3.1.發(fā)送方簽名過程 (1)為保證簽名的速度,A先將原文進行單向HASH運算生成定長的消息摘要A用戶A原文用戶A原文消息摘要單向哈希值運算(2)利用自己的私鑰加密消息摘要得到數(shù)字簽名A,并將數(shù)字簽名附在原消息后面用戶A用戶A原文數(shù)字簽名A用戶B用戶A用戶A原文數(shù)字簽名A用戶B圖3-2加密摘要(3)通訊時用戶A將自己的名文一起通過網(wǎng)絡(luò)送給通訊對方即用戶B數(shù)字簽名A數(shù)字簽名A消息摘要AA的私鑰實現(xiàn)簽名圖3-3發(fā)送原文和摘要3.3.2.接收方驗證過程接收方B接收到發(fā)送方A的簽名消息后,對A的簽名消息進行驗證的過程如下:(1)將消息中的原消息與數(shù)字簽名分離出來用戶B分離用戶B分離數(shù)字簽名A原文原文數(shù)字簽名A圖3-4分離明文和數(shù)字簽名(2)使用A的公鑰解密數(shù)字簽名得到摘要解密解密消息摘要A數(shù)字簽名AA的私鑰A的摘要圖3-5得到摘要(3)利用與發(fā)送方A相同的散列函數(shù)重新計算原消息的摘要用戶B用戶B原文消息摘要B單向哈希值運算圖3-6接受方計算摘要(4)比較解密后獲得的消息摘要A與重新計算產(chǎn)生的消息摘要B,若相等則說明消息在傳輸過程中沒有被篡改,否則消息不可靠。驗證失敗驗證失敗驗證成功相等嗎消息摘要B消息摘要A圖3-7驗證數(shù)字簽名3.3.3數(shù)字簽名過程A的私鑰A的私鑰加密后的摘要加密后的摘要散列函數(shù)消息散列函數(shù)摘要加密后的摘要消息解密后的摘要解密算法摘要加密算法消息A的私鑰圖3-8數(shù)字簽名流程圖4數(shù)字簽名常見的算法及其數(shù)字簽名數(shù)字簽名的方法有很多,現(xiàn)在主要應(yīng)用的數(shù)字簽名主要有:RSA,DSA以及橢圓曲線數(shù)字簽名。4.1DSA數(shù)字簽名算法.DSA是SChnorr和ELGAmal簽名算法的變種,被美NIST作為DSS是一種公開密鑰算法,它不能用作加密,只能用作數(shù)字簽名。DSA使用公開公鑰,為接受者驗證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份。它也用作于由第三方去確定簽名和所簽收數(shù)據(jù)的真實性。信息交流中,接受方希望收到的信息未被篡改,還希望收到的信息確實是自己認定的發(fā)送方所發(fā),那么接受方和發(fā)送方就可以約定,共同使用DSA來實現(xiàn)。4.1.1DSA數(shù)字簽名實現(xiàn)的三個步驟(1)參數(shù)與密鑰生成(2)簽名的算法(3)簽名的驗證算法1.初始過程(1)系統(tǒng)參數(shù):大素數(shù)p,q且q為p-1的因子,并滿足2^511<p<2^1024,2^159<q<2^160,以確保在Zp中求解離散對數(shù)的困難性;g∈Zp,且滿足g=h^(p-1)/qmodp,其中h是一整數(shù),1<h<p-1且h^(p-1)/qmodp>1。p,q,g作為系統(tǒng)參數(shù),供所有用戶使用,在系統(tǒng)內(nèi)公開?(2)用戶私鑰:用戶選取一個私鑰x,1<x<q,保密?(3)用戶公鑰:用戶的公鑰y,y=g^xmodp,公開?2.簽名過程對待簽消息m,設(shè)0<m<p?簽名過程如下:(1)生成一隨機整數(shù)k,k∈Zp*;(2)計算r=(g^kmodp)modq;(3)計算s=k^-1*(h(m)+x*r)modq?則(r,s)為簽名人對m的簽名?3.驗證過程(1)首先檢查r和s是否屬于[0,q],若不是,則(r,s)不是簽名;(2)計算t=s^-1modq,r’=(g^h(m)tmodq(y^r*tmodq)modp)modq;(3)比較r’=r是否成立?若成立,則(r,s)為合法簽名,則(r,s)為簽名人對m的簽名4.1.2DSA的安全性DSA的安全性主要依賴于整數(shù)有限域離散對數(shù)難題。其安全性與RSA相比差不多,DSA的一個重要特點是兩個素數(shù)公開,這樣,當(dāng)使用別人的P和Q是,即使不知道私鑰,你也能確認他們是否是隨機產(chǎn)生的,還是做了手腳的。RSA算法是做不到的。素數(shù)P必須足夠大,且p-1至少包含一個大素數(shù)因子以抵抗Pohlig&hellman算法的攻擊。M一般都應(yīng)采用信息HASH的值。DSA安全性主要依賴于p和g,若選取不當(dāng)則簽名容易偽造,應(yīng)保證g對于p-1的大素數(shù)因子不可約。DSA的一個主要特點是兩個素數(shù)公開,這樣,當(dāng)使用別人的p和g,即使不知道私鑰,你也能確認他們是隨機產(chǎn)生的。[9]4.2橢圓曲線代理簽名體制4.2.1橢圓曲線數(shù)字簽名ECDSA橢圓曲線簽名算法ECDSA是基于橢圓曲線密碼體制(ECC)的數(shù)字簽名算法。DSA是美國國家標準局制定的數(shù)字簽名算法,他是建立在有限域乘法群上的。對于有限域上的橢圓曲線密碼系統(tǒng),數(shù)字簽名標準建議采用橢圓曲線數(shù)字簽名算法ECDSA,下面給出該算法的過程。假設(shè)一組橢圓曲線的參數(shù)組為(q,F(xiàn)R,a,b,G,n,h)。其中q是域的階,F(xiàn)R指示域中元素的表示方法,a,b是兩個系數(shù),G是基點,G的階為n,余因子h=#E(Fq)/n,他是一個小的素數(shù)。1ECDSA密鑰對生成過程(1)選擇一個隨機數(shù)d,d∈(1,n-1)?(2)計算Q,Q=d*G?(3)那么公鑰為Q,私鑰為整數(shù)d?2ECDSA簽名過程假設(shè)待簽名的消息為,m;(1)選擇一個隨機數(shù)k,k∈(1,n-1)。(2)計算k*G=(x1,y1)。(3)計算r=x1modn;如果r=O,則返回到步驟(1)。(4)計算s=k^-1(e+d*r)modn,如果s=O,則返回到步驟(1)。(5)對消息的簽名為(r,s),最后簽名者把消息m和簽名(r,s)發(fā)送給接收者。3ECDSA密鑰對驗證過程獲得發(fā)送者的公鑰Q開始驗證:(1)檢查r,s,要求r,s∈(1,n-1)。(2)計算e=SHA1(m)。(3)計算w=s-1modn。(4)計算u1=e*wmodn;u2=r*wmodn。(5)計算X=u1G+u2Q。(6)如果X=O,表示簽名無效;否則,X=(x1,y1),計算v=x1modn。(7)如果v=r,表示簽名無效;否則表示簽名有效。[10]4.2.2橢圓曲線數(shù)字簽名的安全性ECDSA在安全性方面的目標是能抵抗選擇明文(密文)攻擊。而攻擊A的攻擊者的目標是在截獲A的簽名后,可以生成對任何消息的合法簽名。盡管ECDSA的理論模型很堅固,但是人們?nèi)匝芯亢芏啻胧┮蕴岣逧CDSA的安全性。在ECDLP不可破解及哈希函數(shù)足夠強的前提下,DSA和ECDSA的一些變形已被證明可以抵抗現(xiàn)有的任何選擇明文(密文)攻擊。在橢圓曲線所在群是一般群并且哈希函數(shù)能夠抗碰撞攻擊的前提下,ECDSA本身的安全性已經(jīng)得到證明。ECDSA可能面臨的攻擊:1.對ECDLP的攻擊。2.對哈希函數(shù)的攻擊。3.其他攻擊。ECDMA的優(yōu)點(1)安全性能高(2)計算機量小和計算機速度快(3)存儲空間占有量?。?)帶寬要求低。5RSA算法及其數(shù)字簽名5.1RSA簡述RSA加密體制是一種公開的密碼體制。RSA公匙密碼體制是又R.L.Rivest,A.Shamir和L.Adelman于1978年提出的。由于RSA算法很完善,即可用于數(shù)據(jù)加密,又可用于數(shù)字簽名,安全性良好,易于實現(xiàn)和理解,所以已經(jīng)成為一種應(yīng)用極廣的公匙密碼算法,目前,RSA在許多場合有廣泛的應(yīng)用。RSA公鑰密碼算法是迄今為止在理論上最為成熟、完善的公鑰密碼體制。從提出到現(xiàn)在已經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。它是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名和密鑰分配與管理的算法。它易于理解和操作,也很流行。因為它既可用于加密,又可用于簽名,并為用戶的公開密鑰簽發(fā)公鑰證書、發(fā)放證書、管理證書等,提高了服務(wù)質(zhì)量,所以,RSA公開密鑰密碼在當(dāng)今的信息交換過程中已得到廣泛的應(yīng)用和實踐,RSA公鑰密碼體制在世界許多地方已經(jīng)成為事實上的標準。該算法的加密密鑰和加密算法分開,使得密鑰分配更為方便。而且它特別符合計算機網(wǎng)絡(luò)環(huán)境。對于網(wǎng)上的大量用戶,可以將加密密鑰用電話簿的方式印出。如果某用戶想與另一用戶進行保密通信,只需從公鑰簿上查出對方的加密密鑰,用它對所傳送的信息加密發(fā)出即可。對方收到信息后,用僅為自己所知的解密密鑰將信息解密,了解明文的內(nèi)容。[11]由此可看出,RSA算法解決了大量網(wǎng)絡(luò)用戶密鑰管理的難題,這是公鑰密碼系統(tǒng)相對于對稱密碼系統(tǒng)最突出的優(yōu)點。RSA是一個基于數(shù)論的非對稱密碼體制,是一種分組密碼體制,是一種基于因子分解的指數(shù)函數(shù)作為單向陷門函數(shù)的公鑰體制算法。它基礎(chǔ)是數(shù)論的歐拉定理,素數(shù)檢測,它的安全性是基于大數(shù)分解,后者在數(shù)學(xué)上是一個困難問題。RSA的安全性基于復(fù)雜性理論中的計算安全性,依賴于大整數(shù)分解這一NP難題??煽啃耘c所用密鑰的長度有很大關(guān)系,假如有人找到一種很快的分解因子的算法,即從一個公鑰中通過因數(shù)分解得到私鑰,那么用RSA加密的信息的可靠性肯定會極度下降。但由于其工作量巨大,按目前計算機的處理能力是不可能實現(xiàn)的。實踐證明,在當(dāng)前的技術(shù)和方法下,密鑰不小于1024bit的RSA算法仍然是安全的。這充分說明RSA系統(tǒng)具有良好的保密性能。因此,盡管先后出現(xiàn)了很多新的公鑰體制算法,但RSA仍然在不同應(yīng)用領(lǐng)域占據(jù)了重要的位置。隨著計算機運算速度的提高以及因子分解算法的突破,RSA的密鑰長度將越來越大,其軟硬件實現(xiàn)速度將成為制約其使用的重要因素。5.2RSA加密的可行性雖然RSA加密運算的速度十分慢,但是在PC性能越來越好的今天,對于幾千字節(jié)的數(shù)據(jù)進行一次幾百位密鑰的RSA加密,所消耗的時間應(yīng)該是可以接受的?下面結(jié)合大數(shù)運算程序的調(diào)試,從理論上簡單的分析消耗時間?在一臺普通配置的PC機上對一個整數(shù)進行冪模運算,因為公開密鑰的e通常取的較小,所以指數(shù)取一個小整數(shù),比如C353,模一個70字節(jié)長的整數(shù)(140位十六進制,大數(shù)單元以線性組方式實現(xiàn),對應(yīng)到RSA算法中,這相當(dāng)于約560bit的n),調(diào)試一個函數(shù)測試,按初等數(shù)論中的知識對程序進行算法優(yōu)化,最終在一臺配置為AMDAthron2800+,外頻333MHZ,物理內(nèi)存512MB的PC上測試需要約45毫秒時間?如果按這種速度,逐字節(jié)對1KB的數(shù)據(jù)進行同樣的運算,所消耗的時間理論上為45毫秒的1024倍即約45秒?這個時間并不是非常長[12]?其實從一個簡單的角度來說,既然RSA用于數(shù)字簽名可行,那就完全可以用于同樣大小的普通文件?對于較大的文件,如果分成與數(shù)字簽名同樣大小的段(這里假設(shè)數(shù)字簽名較短,不分段一次計算加密完成),分開的各段逐一進行加密運算,那所需要的時間也只是按文件大小線性的增長?通常數(shù)字簽名為幾十字節(jié),加密運算并不需要很長的等待,這就說明對于幾百字節(jié)或一兩K字節(jié)大小的文件來說,如果進行RSA加密,并不會是非常漫長的工作?當(dāng)然,如果文件更大,加密就顯得十分漫長了?比如按前面敘述的45毫秒大數(shù)運算程序推理,加密1M字節(jié)大小的文件需要約1天的時間?所以,要在普通PC用幾百位以上的長密鑰RSA加密文件,文件不能過大,一般可以接受的上限是幾KB?如果要在較短時間內(nèi)加密大文件,需要縮短密鑰長度以減小運算量,這將帶來安全性隱患?[13]5.3RSA算法的介紹RSA系統(tǒng)由以下幾部分組成:(1)隨機選取的在素數(shù)P和Q,還有N,其中N=P*Q,P和Q保密,N公開。(2)任取Φ(n)=(P-1)*(Q-1),其中(n)表示比n小的素數(shù)的個數(shù),任取2<=e<=(n),且(e,(n))=1,e為加密密鑰,公開。(3)計算d,使e*d=1(mod(n)),稱d為e對模(n)的逆,其中d為解密秘鑰,保密。在RSA系統(tǒng)中,設(shè)m為明文,且明文塊的數(shù)值大于n,c為密文,則其加密和解密算法如為:加密算法C=E(m)=m^e(modn)解密算法m=D(c)=c^d(modn)在RSA系統(tǒng)中(e,n)構(gòu)成加密秘鑰,即公鑰,(d,n)構(gòu)成解密秘鑰,即私鑰。5.3.1RSA中素數(shù)的選取在RSA中,因N=P*Q,若P,Q被知道,即能將N因子分解,則由Φ(n)=(P-1)*(Q-1)可以算出。由于e是公開密鑰,且解密秘鑰D關(guān)于E滿足D*E=1(modΦ(n))則D也不難求得,這樣RSA系統(tǒng)便被完全攻破。RSA中的素數(shù)都是上面位的十進制數(shù),怎樣才能選擇好的P和Q,怎樣才能生成這樣的數(shù),并且判斷它是否為素數(shù),這是一個RSA系統(tǒng)關(guān)鍵的問題。針對素數(shù)P和Q的選擇,1978年Rivest等人在正式發(fā)表的RSA公開密鑰的論文中,就建議對素數(shù)P和Q的選擇應(yīng)當(dāng)滿足:(1)P、Q要足夠在,在長度上應(yīng)相差幾位,且二者之差與P、Q位數(shù)相近;(2)P-1與Q-1的最大公約數(shù)GCD(P-1,Q-1)就盡量?。唬?)P-1與Q-1均應(yīng)至少含有一個大的素數(shù)因子。并把滿足這些條件的素數(shù)稱為安全素數(shù)。5.3.2RSA用到的公式和定理(1)數(shù)和互為素數(shù)任何大于1的整數(shù)a能被因式分解為如下唯一形式:a=p1p2…pl(p1,p2,…,pl為素數(shù))(2)模運算①{[a(modn)]×[b(modn)]}modn≡(a×b)(modn)②如果(a×b)=(a×c)(modn),a與n互素,則b=c(modn)(3)費馬定理若p是素數(shù),a與p互素,則a^(p-1)=1modp(4)歐拉定理歐拉函數(shù)φ(n)表示不大于n且與n互素的正整數(shù)的個數(shù)。當(dāng)n是素數(shù),φ(n)=n-1。n=p*q,p,q均為素數(shù)時,則φ(n)=φ(n)φ(n)=(p-1)(q-1)。對于互素的a和n,有a^φ(n)=1(modn)5.3.3RSA安全性的分析在公布RSA算法之后,在使用RSA密碼體制和分析RSA算法發(fā)現(xiàn)了一系列的算法本身脆弱性及其存在的問題。(1)RSA公鑰密碼體制在加密或解密中涉及大量的數(shù)值計算,其加密和解密的運算時間比較長,以致于實際使用RSA密碼體制無法應(yīng)用到軟件產(chǎn)品,必須用超大規(guī)模集成電路的硬件產(chǎn)品。(2)雖然提高N位數(shù)會大大提高RSA密碼體制的安全性,但其計算量呈指數(shù)增長,以致使其實現(xiàn)的難度增大,實用性降低。(3)RSA公鑰密碼體制的算法完整性(指密鑰控制加密或解密變換的唯一性)和安全性(指密碼算法除密鑰本身外,不應(yīng)該存在其它可破譯密碼體制的可能性)沿有等進一步完善。(4)RSA算法面臨著數(shù)學(xué)方法的進步和計算機技術(shù)飛躍發(fā)展帶來的破譯密碼能力日趨增強的嚴重挑戰(zhàn)。RSA公開密鑰密碼算法在信息交換過程中使用比較廣泛,安全性比較高。以當(dāng)前的計算機水平,如選擇1024位長的密鑰(相當(dāng)于300位十進制數(shù)字)就認為是無法攻破的。5.3.4RSA的攻擊RSA算法的安全性就是基于大整數(shù)的因子分解困難之上的,到目前其還是安全的,要分析RSA算法的安全性,我們從攻擊RSA的角度來審視??偟膩矸?,RSA算法攻擊可以區(qū)分為三類:(1)蠻力攻擊:它通過實驗所用的可能私鑰,來達到目的。(2)數(shù)字攻擊:使用數(shù)學(xué)技巧,類似于分解N來達到目的。(3)時間攻擊:通過觀察解密算法運行的時間來達到目的。其中抵抗蠻力攻擊的方法,與其它加密系統(tǒng)是一致的,使用大的密鑰空間,是窮舉無能無力,因此E和D的位數(shù)越長則越安全,但是加解密速度會越慢,所以E和d位數(shù)的長度應(yīng)與實際應(yīng)用系統(tǒng)有綜合的權(quán)衡。(1)RSA的選擇密文攻擊RSA在選擇密文攻擊面前很脆弱。所謂密碼分析者并不知道解密的密鑰,但是給出任意的消息,密碼分析者可以將其加密,再解密?;蛘哒f,密碼分析者能獲得解密服務(wù)。設(shè)攻擊者為A,密文接受者為T,公鑰對為(e,n),私鑰為d,T收到的密文為c,c對應(yīng)的明文為m?,F(xiàn)在A想知道m(xù)=c^dmodn,但是他不想分解n。于是T找了一個隨機數(shù)r,r<n。他進行如下計算:x=r^emodn(對r用T的公鑰加密,得到臨時密文x),y=(x*c)modn(將臨時密文x與密文c相乘)t=r^(-1)modn。A利用了RSA加密和解密過程的特點,即:如果x=r^emodn,那么r=x^dmodn現(xiàn)在A要做的是使T用d對t簽名:u=t^dmodn。A需要獲得u,然后計算m=(t*u)modn計算結(jié)果是這樣推導(dǎo)的:t*umodn=[r^(-1)*y^d]modn=[r^(-1)*x^d*c^d]modn=c^dmodn=m[14](2)RSA的公共模數(shù)攻擊若系統(tǒng)中共有一個模數(shù),只是不同的人擁有不同的e和d,系統(tǒng)將是危險的。最普遍的情況是同一信息用不同的公鑰加密,這些公鑰共模而且互質(zhì),那么該信息無需私鑰就可得到恢復(fù)。設(shè)P為信息明文,兩個加密密鑰為e1和e2,公共模數(shù)是n,則:C1=P^e1modnC2=P^e2modn密碼分析者知道n、e1、e2、C1和C2,就能得到P。因為e1和e2互質(zhì),故用Euclidean算法能找到r和s,滿足:r*e1+s*e2=1假設(shè)r為負數(shù),需再用Euclidean算法計算C1^(-1),則(C1^(-1))^(-r)*C2^s=Pmodn。5.3.5RSA的缺點(1)RSA產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密(2)安全性,RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價,而且密碼學(xué)界多數(shù)人士傾向于因子分解不是NPC問題。目前,人們已能分解140多個十進制位的大素數(shù),這就要求使用更長的密鑰,速度更慢;另外,目前人們正在積極尋找攻擊RSA的方法,如選擇密文攻擊,一般攻擊者是將某一信息作一下偽裝(Blind),讓擁有私鑰的實體簽署。然后,經(jīng)過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了輸入的乘法結(jié)構(gòu):XM)d=Xd*Mdmodn前面已經(jīng)提到,這個固有的問題來自于公鑰密碼系統(tǒng)的最有用的特征--每個人都能使用公鑰。但從算法上無法解決這一問題,主要措施有兩條:一條是采用好的公鑰協(xié)議,保證工作過程中實體不對其他實體任意產(chǎn)生的信息解密,不對自己一無所知的信息簽名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用One-WayHashFunction對文檔作HASH處理,或同時使用不同的簽名算法。除了利用公共模數(shù),人們還嘗試一些利用解密指數(shù)或φ(n)等等攻擊.(3)速度太慢,由于RSA的分組長度太大,為保證安全性,n至少也要600bitx以上,使運算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級;且隨著大數(shù)分解技術(shù)的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標準化。目前,SET(SecureElectronicTransaction)協(xié)議中要求CA采用2048比特長的密鑰,其他實體使用1024比特的密鑰。為了速度問題,目前人們廣泛使用單,公鑰密碼結(jié)合使用的方法,優(yōu)缺點互補:單鑰密碼加密速度快,人們用它來加密較長的文件,然后用RSA來給文件密鑰加密,極好的解決了單鑰密碼的密鑰分發(fā)問題。[15]5.3.6RSA的優(yōu)點 (1)數(shù)學(xué)表達式簡單?(2)RSA的安全性基于大數(shù)分解的困難性?(3)RSA公鑰密碼體制具有一些傳統(tǒng)密碼體制不能實現(xiàn)的一些功能,如認證,鑒別和數(shù)字簽名等,特別適合于現(xiàn)代密碼通信?5.4RSA數(shù)字簽名5.4.1RSA數(shù)字簽名的過程首先產(chǎn)生密鑰,過程如下:(1)隨機產(chǎn)生兩個等長度為K/2位的素數(shù)P和Q(2)然后計算公鑰publicKey=P*Q;(publicKey是k位的長度)(3)隨機產(chǎn)生一個加密密鑰keyE,2<=keyE<=Φ(n)-1其GCD(keyE,Φ(n))=1;注意這是保證解密密鑰keyE*keyDmodΦ(n)=1有解的充要條件,Φ(n)稱為n的歐拉函數(shù),值為:Φ(n)=(P-1)*(Q-1)(4)求解解密密鑰keyD=keyE-1mod(n),keyE-1為解密密鑰keyD的逆元,此公式原方程為(keyE*keyDmod(n)=1)由此公鑰,加密密鑰,解密密鑰全部產(chǎn)生。其次對明文加密或?qū)γ芪倪M行解密,過程如下;(1)加密:C=Mkey^EmodpublicKey;其中M表示明文,C表示密文。(2)解密:M=Ckey^DmodpublicKey.;其中M表示明文,C表示密文。(2)驗證簽名算法(RSA解密、對消息摘要計算和比較)驗證簽名算法包括兩步:RSA解密得簽名者的消息摘要,驗證者對原消息計算摘要,比較兩個消息摘要。驗證簽名的過程輸入為消息,簽名者的公鑰,簽名;輸出為驗證的結(jié)果,即是否是正確的簽名。1RSA解密:簽名實際是加密的消息摘要,用以上所述的RSA解密方法采用簽名者的公鑰對這個加密的消息摘要解密,解密的結(jié)果應(yīng)為128位的消息摘要。2消息摘要計算和比較:驗證者對消息用MD5算法重新計算,得到驗證者自己的消息摘要。驗證者比較解密得到的消息摘要和自己的消息摘要,如果兩者相同,則驗證成功,可以確認消息的完整性及簽名確實為簽名者的;否則,驗證失敗,確認簽名被冒充或是被篡改。5.4.3散列函數(shù)的原理散列函數(shù)H(M),就是把任意長度的消息M,通過函數(shù)H,將其變換為一個固定長度的散列值h:h=H(M)。消息M的散列值h,就像該消息的數(shù)字指紋,可以用來保證數(shù)據(jù)的完整性,我們在前面稱其為數(shù)據(jù)摘要。散列函數(shù)是公開的,一般不涉及保密密鑰。少量有密鑰的散列函數(shù),可以作為計算消息的認證碼等其他用途,因其有密鑰而具有一定的身份鑒別功能。在信息安全領(lǐng)域中應(yīng)用的Hash算法,還需要滿足其他關(guān)鍵特性:第一當(dāng)然是單向性(one-way),從預(yù)映射,能夠簡單迅速的得到散列值,而在計算上不可能構(gòu)造一個預(yù)映射,使其散列結(jié)果等于某個特定的散列值,即構(gòu)造相應(yīng)的M=H-1(h)不可行?這樣,散列值就能在統(tǒng)計上唯一的表征輸入值,因此,密碼學(xué)上的Hash又被稱為"消息摘要(messagedigest)",就是要求能方便的將"消息"進行"摘要",但在"摘要"中無法得到比"摘要"本身更多的關(guān)于"消息"的信息?第二是抗沖突性(collision-resistant),即在統(tǒng)計上無法產(chǎn)生2個散列值相同的預(yù)映射?給定M,計算上無法找到M',滿足H(M)=H(M'),此謂弱抗沖突性;計算上也難以尋找一對任意的M和M',使?jié)M足H(M)=H(M'),此謂強抗沖突性?要求"強抗沖突性"主要是為了防范所謂"生日攻擊(birthdayattack)",在一10人的團體中,你能找到和你生日相同的人的概率是2.4%,而在同一團體中,有2人生日相同的概率是11.7%?類似的,當(dāng)預(yù)映射的空間很大的情況下,算法必須有足夠的強度來保證不能輕易找到"相同生日"的人?第三是映射分布均勻性和差分分布均勻性,散列結(jié)果中,為0的bit和為1的bit,其總數(shù)應(yīng)該大致相等;輸入中一個bit的變化,散列結(jié)果中將有一半以上的bit改變,這又叫做"雪崩效應(yīng)(avalancheeffect)";要實現(xiàn)使散列結(jié)果中出現(xiàn)1bit的變化,則輸入中至少有一半以上的bit必須發(fā)生變化?其實質(zhì)是必須使輸入中每一個bit的信息,盡量均勻的反映到輸出的每一個bit上去;輸出中的每一個bit,都是輸入中盡可能多bit的信息一起作用的結(jié)果[14]?目前我們指的散列函數(shù)都是單向散列函數(shù)h=H(M),即函數(shù)H是單向函數(shù)。它有弱單向散列函數(shù)和強單向散列函數(shù)之分。單向散列函數(shù)是建立在壓縮函數(shù)(compressionfunction)的想法之上的:給一個輸入n位長消息,得到一個較短的散列值。單向散列函數(shù)的性質(zhì):(1)函數(shù)H適用于任何大小的數(shù)據(jù)分組;(2)函數(shù)H產(chǎn)生一定長度輸出;(3)對于任何數(shù)據(jù)M,計算H(M)是容易實現(xiàn)的;(4)對于任何給定的散列值h,要計算出M使H(M)=h,這在計算上是不可行的;(5)對于任意給定的數(shù)據(jù)x,要計算出另外一個數(shù)據(jù)Y,使H(x)=H(y),這在計算上是不可行的;(6)要尋找任何一對數(shù)據(jù)(x,y),使H(x)=H(y),這在計算上也是不可行的;其中前面3個性質(zhì)是散列函數(shù)應(yīng)用于報文(數(shù)據(jù))鑒別的基本要求;性質(zhì)4是單向函數(shù)性質(zhì);性質(zhì)5也可稱其為弱抗沖突(weakcollisionresistance),就是在給定x之后,考察與本特定的x相沖突的情況:性質(zhì)6也可稱其為強抗沖突(strongcollisionresistance),是考察任意兩個元素x,y相沖突的情況。5.4.4MD5算法的簡介MD5消息摘要算法是單向散列函數(shù),MD5不基于任何假設(shè)和密碼體制,它采用了直接構(gòu)造的辦法,速度很快,非常實用。MD5算法的典型應(yīng)用是對一段信息產(chǎn)生信息摘要,以防止被篡改。MD5將整個文件當(dāng)作一個大文本信息,通過其不可逆的字符串變換算法,產(chǎn)生了這個唯一的MD5信息摘要。如果在以后傳播這個文件的過程中,無論文件的內(nèi)容發(fā)生了任何形式的改變,只要你對這個文件重新計算MD5時就會發(fā)現(xiàn)信息摘要不相同,由此可以確定你得到的只是一個不正確的文件。如果再有一個第三方的認證機構(gòu),用MD5還可以防止文件作者的"抵賴",這就是所謂的數(shù)字簽名應(yīng)用。MD5算法以任意長度的消息作為輸入,產(chǎn)生一個128比特消息散列值(或稱消息摘要)作為輸出。具體的算法步驟如下:步驟1:附加填充比特,對消息進行填充,使消息的長度(比特數(shù))與448模512同余,即恰好為一個比512比特的倍數(shù)僅小64位的數(shù)。步驟2:附加消息長度值,將用64比特表示的初始消息(填充前)的長度(比特數(shù))附加在步驟1的結(jié)果后。步驟3:初始化MD緩存,MD5算法使用了一個4個字(128比特,MD4中每個字32比特)的緩存來計算消息摘要,它們主要用來存放MD5的中間及最終結(jié)果。緩存可以看成是4個32比特的寄存器(A,B,C,D)。步驟4:以512比特(16個字)分組處理消息,這一步是MD5算法的主循環(huán),以512比特作為分組[15]6RSA數(shù)字簽名設(shè)計與實現(xiàn)6.1開發(fā)環(huán)境的介紹6.1.1C#語言概述在過去的幾十年里,C和C++在商業(yè)軟件的開發(fā)領(lǐng)域中得到廣泛的運用,他們?yōu)槌绦騿T提供了十分靈活的操作,但是器效率還是不容樂觀的,其開發(fā)時間相對來說較長。因此,許多程序員在尋求一種新的語言,希望其功能和效率能夠很好的結(jié)合。C#就是這么一種語言,它是一種面向?qū)ο蟮木幊陶Z言。它可是使得程序員能夠快速的編寫基于.NET平臺的應(yīng)用程序。正是由于其面向?qū)ο蟮淖吭皆O(shè)計,使得它成為許多程序員的鐘愛的選擇,在構(gòu)架各類組件的時候。無論是高級的商業(yè)對象還是系統(tǒng)級的應(yīng)用程序,在使用C#語言結(jié)構(gòu),這些組件可以方便的轉(zhuǎn)化為XML網(wǎng)絡(luò)服務(wù),從而使它們可以一定的操作系統(tǒng)上通過網(wǎng)絡(luò)調(diào)用C#。6.1.2C#語言特點(1)簡潔的語法C#的代碼在.NET框架提供的“可操縱”環(huán)境下運行,不允許直接地內(nèi)存操作。它所帶來的最大的特色是沒有了指針。與此相關(guān)的是,那些在C++中被瘋狂使用的操作符(例如:“::”、“->”和“.,”)已經(jīng)不再出現(xiàn)。C#只支持一個“.”,對于我們來說,現(xiàn)在需要理解的一切僅僅是名字的嵌套而已。每種C#操作符在.NET類庫中都有了新名字。語法中的冗余是C++中的常見的問題,C#對此進行了簡化,只保留了常見的形式,而別的冗余形式從它的語法結(jié)構(gòu)中被清除了出去。(2)精心地面向?qū)ο笤O(shè)計C#具有面向?qū)ο蟮恼Z言所應(yīng)有的一切特性:封裝、繼承與多態(tài)性,。通過精心地面向?qū)ο笤O(shè)計,從高級商業(yè)對象到系統(tǒng)級應(yīng)用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱(boxing)與拆箱(unboxing)的機制來完成這種操作,而不給使用者帶來麻煩。C#只允許單繼承,即一個類不會有多個基類,從而避免了類型定義的混亂。(3)與Web的緊密結(jié)合.NET中新的應(yīng)用程序開發(fā)模型意味著越來越多的解決方案需要與Web標準相統(tǒng)一。由于有了Web服務(wù)框架的幫助,對程序員來說,網(wǎng)絡(luò)服務(wù)看起來就象是C#的本地對象。程序員們能夠利用他們已有的面向?qū)ο蟮闹R與技巧開發(fā)Web服務(wù)。僅需要使用簡單的C#語言結(jié)構(gòu),C#組件將能夠方便地為Web服務(wù),并允許它們通過Internet被運行在任何操作系統(tǒng)上的任何語言所調(diào)用。(4)完整的安全性與錯誤處理語言的安全性與錯誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據(jù)。C#的先進設(shè)計思想可以消除軟件開發(fā)中的許多常見錯誤,并提供了包括類型安全在內(nèi)的完整的安全性能。為了減少開發(fā)中的錯誤,C#會幫助開發(fā)者通過更少的代碼完成相同的功能,這不但減輕了編程人員的工作量,同時更有效地避免了錯誤的發(fā)生。(5)版本處理技術(shù)C#提供內(nèi)置的版本支持來減少開發(fā)費用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護各種商業(yè)用戶。(6)靈活性和兼容性在簡化語法的同時,C#并沒有失去靈活性。盡管它不是一種無限制語言,比如:它不能用來開發(fā)硬件驅(qū)動程序,在默認的狀態(tài)下沒有指針等等。6.2.NET類的介紹常見的加密和編碼算法都已經(jīng)存在.NET中得到了實現(xiàn),為編碼人員提供了極大的便利性,實現(xiàn)這些算法的命名空間是System.Security.Cryptography,它的命名空間提供加密服務(wù),包括安全的數(shù)據(jù)編碼和解碼,以及許多其它的操作,例如散列法,和消息身份驗證。(1)哈希值哈希函數(shù)將任意長度的二進制字符串映射為固定長度的小二進制字符串。哈希值是一段數(shù)據(jù)唯一且緊湊的數(shù)值表示形式,若散列一段明文,就是更改其中的一個標點符號,隨后的哈希值都將產(chǎn)生不同的值。因此,要找到散列為同一個數(shù)值的兩個不同輸入,在計算上是幾乎不可能的。所以數(shù)據(jù)的哈希值可以檢驗數(shù)據(jù)的完整性。在.NET所選擇的類為:HashAlgorithm:所有加密哈希算法實現(xiàn)均必須從中派生的基類。(2)公鑰加密公鑰加密使用一個對未授權(quán)的用戶保密的私鑰和一個公開的公鑰。用公鑰加密的數(shù)據(jù)只能是用私鑰解密,而用私鑰簽名的數(shù)據(jù)只能用公鑰去驗證。公鑰可以被任何人使用;該密鑰用于加密要發(fā)送到私鑰持有者的數(shù)據(jù)。在.NET所選擇的類為:RSACryptoServiceProvider:使用加密服務(wù)提供程序(CSP)提供的RSA算法的實現(xiàn)執(zhí)行不對稱加密和解密。RSAPKCS1SignatureFormatter:類創(chuàng)建數(shù)字簽名。RSAPKCS1SignatureDeformatter:類來驗證該簽名。6.3RSA數(shù)字簽名所需實現(xiàn)的功能在本軟件中需要實現(xiàn)的功能有以下幾個:(1)生成RSA密鑰(2)利用MD5算法計算出消息摘要MD;(3)數(shù)字簽名的實現(xiàn);(4)驗證數(shù)字簽名:6.4本軟件的總體要求和設(shè)計本軟件的總體要求有:(1)按要求生成非對稱密鑰——公鑰和私鑰;(2)對所要加密的明文信息生成所需要的消息摘要MD;(3)在本設(shè)計中用產(chǎn)生的私鑰d根據(jù)RSA算法的加密原理對所生成的消息摘要進行加密運算,得到數(shù)字簽名;(4)得到對應(yīng)的消息摘要,比較兩個消息摘要,驗證數(shù)字簽名者的身份;(5)圖形界面簡介,操作簡單,易懂。本軟件的總體設(shè)計都是基于C#的開發(fā)環(huán)境,采用的是VisualStudio2010的運行環(huán)境。6.5主要實現(xiàn)代碼及軟件運行結(jié)果(1)產(chǎn)生公鑰和私鑰publicvoidbutton_creatKey_Click(objectsender,EventArgse){try{RSACryptoServiceProviderrsa=newRSACryptoServiceProvider();textBox_publicKey.Text=rsa.ToXmlString(false);textBox_privateKey.Text=rsa.ToXmlString(true);}catch(System.Exceptionex){MessageBox.Show("密鑰創(chuàng)建"+ex.ToString());}}圖6-1隨機產(chǎn)生一個公鑰,一個私鑰,密鑰是XML可擴展標記語言形式,XML是一套定義語義表激動額規(guī)則,這些標記將文檔分成許多部件加以標識?它也是元標記語言,即定義了用于定義其他與特定領(lǐng)域有關(guān)的,與移動額,結(jié)構(gòu)化的標記語言的語句語法?他是一種以簡單文本格式存儲數(shù)據(jù)的方式,這意味著他可以被任何計算機讀取,此返回的是字符串?(2)產(chǎn)生摘要privatevoidbutton_getHash_Click(objectsender,EventArgse){try{byte[]fileSource=Encoding.UTF8.GetBytes(sendFileString);HashAlgorithmMD5=HashAlgorithm.Create("MD5");byte[]hashData=MD5.ComputeHash(fileSource);textBox_getHash.Text=BitConverter.ToString(hashData);}catch(System.Exceptionex){MessageBox.Show("獲取哈希值"+ex.ToString());}}圖6-2(3)數(shù)字簽名的驗證privatevoidbutton_ensureSign_Click(objectsender,EventArgse){try{RSACryptoServiceProviderrsa=newRSACryptoServiceProvider();rsa.FromXmlString(textBox_privateKey.Text);RSAPKCS1SignatureDeformatterrsadDeformatter=newRSAPKCS1SignatureDeformatter(rsa);rsadDeformatter.SetHashAlgorithm("MD5");string[]strSplit=textBox_receiveHash.Text.Split('-');byte[]receiveByteHash=newbyte[strSplit.Length];for(inti=0;i<strSplit.Length;i++)receiveByteHash[i]=byte.Parse(strSplit[i],System.Globalization.NumberStyles.AllowHexSpecifier);string[]strSignedSplit=textBox_signHash.Text.Split('-');byte[]signedByteHash=newbyte[strSignedSplit.Length];for(inti=0;i<strSignedSplit.Length;i++)signedByteHash[i]=byte.Parse(strSignedSplit[i],System.Globalization.NumberStyles.AllowHexSpecifier);if(rsadDeformatter.VerifySignature(receiveByteHash,signedByteHash)){MessageBox.Show("數(shù)字簽名驗證成功!");}else{MessageBox.Show("數(shù)字簽名驗證失?。?);}}catch(Exceptionex){throwex;}}圖6-3數(shù)字簽名驗證另一個實體的標識并保護數(shù)據(jù)的完整性?即,當(dāng)使用公鑰系統(tǒng)對消息進行數(shù)字簽名,發(fā)送方先向該消息應(yīng)用哈希函數(shù)以創(chuàng)建消息的摘要?然后,發(fā)送方使用發(fā)送的私鑰加密消息摘要以創(chuàng)建發(fā)送方的個人簽名,因為此私鑰唯一的標識該發(fā)送方,在收到消息和簽名后,接受方使用發(fā)送方的額公鑰解密該簽名,以恢復(fù)消息摘要,并使用發(fā)送方所用的統(tǒng)一哈希算法對該消息進行哈希運算?如果接收方計算的消息摘要與從發(fā)送方接受的消息摘要完全匹配,則接收方可以確定該消息來自發(fā)送方?(4)整個界面圖圖6-4結(jié)論信息時代雖然給我們帶來了無限商機與方便,但同時也充斥著隱患與危險。由于網(wǎng)絡(luò)很容易受到攻擊,導(dǎo)致機密信息的泄漏,引起重大損失。由于信息技術(shù)己經(jīng)成為綜合國力的一個重要組成部分,因此信息安全已成為保證國民經(jīng)濟信息化建設(shè)健康有序發(fā)展的保障。本文詳細討論了RSA簡述了DSA和橢圓曲線數(shù)字簽名的基本原理,基本實現(xiàn)及如何利用RSA算法實現(xiàn)數(shù)字簽名。RSA算法是一種安全技術(shù),但是絕不是無條件的安全性,這是由他的理論基礎(chǔ)決定的。因此,在實現(xiàn)RSA算法的過程中,每一步都要盡量從安全性考慮。而該設(shè)計中他的安全性則依賴于素數(shù)的選擇。RSA數(shù)字簽名提供了一個安全的確認發(fā)送方身份的方法,即數(shù)字簽名的真實性得到了保證,防止了第三方的冒充和篡改,肯定了數(shù)字簽名的真實性。隨著計算機性能和密碼分析水平的不斷提高,數(shù)字簽名技術(shù)今后可能的研究與發(fā)展方向為:(1)高效、強安全的數(shù)字簽名研究。尋找基于新的計算困難問題上的單向函數(shù)是數(shù)學(xué)家、密碼學(xué)家不斷努力的重要目標,也是數(shù)字簽名算法的基礎(chǔ)。設(shè)計短密鑰、短簽名、強安全和抗攻擊的數(shù)字簽名是數(shù)字簽名技術(shù)研究的一個重點。(2)新型安全體制下的數(shù)字簽名技術(shù)研究。近幾年,量子密碼、DNA密碼、混沌理論等新型的安全體制的理論研究十分活躍。在此基礎(chǔ)上的數(shù)字簽名技術(shù)是一個值得研究的新問題。(3)網(wǎng)絡(luò)應(yīng)用刺激著數(shù)字簽名技術(shù)研究。電子投票、電子拍賣、電子政務(wù)、移動安全計算等各種應(yīng)用都離不開數(shù)字簽名技術(shù)。利用數(shù)字簽名技術(shù)設(shè)計安全的應(yīng)用協(xié)議是未來數(shù)字簽名應(yīng)用和理論所不能回避的問題。致謝致謝在河北工程大學(xué)科信學(xué)院將近四年的學(xué)習(xí)過程中,在賈東立老師的悉心指導(dǎo)下,我的論文終于得已完成。感謝賈老師,他和藹可親,細心有責(zé)任,從他身上我首先學(xué)到的是做任何事情都要往前趕著做。賈老師嚴謹?shù)闹螌W(xué)態(tài)度,更是值得我在以后的工作學(xué)習(xí)中不斷學(xué)習(xí)并且受益終身的。在完成論文的過程中,賈老師給予了我極大的幫助和細心的指導(dǎo),讓我受益匪淺。在此,謹向賈老師致以深深的敬意和衷心的感謝。感謝我親愛的父母家人,他們給予我的永遠都是微笑和鼓勵,在我最困難的時候,是他們的支持,讓我選擇堅強與堅持。他們給了我最無私的愛,鼓勵我選擇飛翔,即使我無法陪在他們的身邊。我唯有繼續(xù)的努力,來報答他們的恩情。感謝這四年與我一起度過的同學(xué)們,感謝我的舍友,他們給了我莫大的支持和鼓勵,愿與他們結(jié)下的深厚友誼天長地久。感謝我的輔導(dǎo)員劉艷麗老師,她在我的生活和學(xué)習(xí)上都給予了深深的關(guān)懷和鼓勵。在此,我向各位老師,朋友和同學(xué)給予的關(guān)心和幫助致以誠摯的謝意!參考文獻參考文獻[1]趙澤茂.數(shù)字簽名理論.北京:科學(xué)出版社,2007[2]盧開澄.計算機密碼學(xué).北京:清華大學(xué)出版社,1998[3]馮登國.密碼分析學(xué).北京:清華大學(xué)出版社,2000[4]SalommaA.公鑰密碼學(xué).北京:國防工業(yè)出版社,1998[5]張先紅.數(shù)字簽名原理及技術(shù).北京:機械工業(yè)出版社,2004[6]李藝.《網(wǎng)絡(luò)安全課程PPT講義》[7]胡道元,閔京華《網(wǎng)絡(luò)安全》.清華大學(xué)出版社2005[8]馮登國,裴定一《密碼學(xué)導(dǎo)引》.科學(xué)出版社,1999[9]卓光輝,祁明,周浩華.《數(shù)字簽名技術(shù)的研究和進展》,2000[10]曹珍富.《公鑰密碼學(xué)》.黑龍江教育出版社,1993年[11]李繼國,曹珍富,李建中,張亦辰.數(shù)字簽名的現(xiàn)狀,2003[12]KoblitzN.Ellipticcurvecryptosystems.MathematicsofComputation,1987[13]B.Preneel.CryptographicHashFunctions.MathematicsofComputation,1990[14]吳克力.數(shù)字簽名理論與算法研究:[博士學(xué)位論文]南京理工大學(xué),2000[15]白國強.橢圓曲線密碼及其算法研究:[博士學(xué)位論文].西安:西安電子科技大,2000附錄1基于C8051F單片機直流電動機反饋控制系統(tǒng)的設(shè)計與研究基于單片機的嵌入式Web服務(wù)器的研究MOTOROLA單片機MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內(nèi)壁硬度測試儀的研制基于單片機
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年會活動總結(jié)范文15篇
- 志愿者服務(wù)心得體會(15篇)
- 法治社會+學(xué)案 高中政治統(tǒng)編版必修三政治與法治
- 初級會計實務(wù)-《初級會計實務(wù)》預(yù)測試卷263
- 初級會計經(jīng)濟法基礎(chǔ)-初級會計《經(jīng)濟法基礎(chǔ)》模考試卷110
- 二氧化硅殼層微膠囊的制備及其復(fù)合材料自潤滑性能研究
- 二零二五年度個人離婚子女撫養(yǎng)權(quán)協(xié)議范本4篇
- 二零二五年度健康產(chǎn)業(yè)養(yǎng)生顧問勞動合同2篇
- 二零二五年度凈水設(shè)備售后技術(shù)支持與用戶滿意度提升協(xié)議3篇
- 軟件行業(yè)美工工作總結(jié)
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 人教版五年級上冊遞等式計算100道及答案
- 墓地個人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 2024年新課標全國Ⅰ卷語文高考真題試卷(含答案)
- 湖南省退休人員節(jié)日慰問政策
- QB/T 5998-2024 寵物尿墊(褲)(正式版)
- 2024年北京市房山區(qū)初三語文一模試卷及答案
- 4P、4C、4R-營銷理論簡析
- 《電力信息系統(tǒng)信息安全檢查規(guī)范》
- 伊立替康對耐藥腫瘤細胞的作用機制研究
評論
0/150
提交評論