當前位置:首頁 » 密碼管理 » 雙陷門加密

雙陷門加密

發布時間: 2023-07-25 06:30:52

⑴ 在加密演算法中屬於公鑰密碼體制的是什麼

演算法介紹:
現有矩陣M,N和P,P=M*N。如果M(或N)的行列式為零,則由P和M(或P和N)計算N(或M)是一個多值問題,特別是M(或N)的秩越小,N(或M)的解越多。
由以上問題,假設Tom和Bob相互通信,現做如下約定:
1. 在正式通信之前,二人約定一個隨機奇異矩陣M。
2. Tom和Bob各自選取一個n*n的隨機矩陣作為他們的私有密鑰,設Tom的為A,Bob的為B。
3. 然後Tom計算矩陣Pa=A*M作為他的公鑰,Bob計算矩陣Pb=M*B作為他的公鑰。
4. 當Tom向Bob發送消息時,計算加密矩陣K=A*Pb,用K對消息加密後發送到Bob端,Bob收到消息後,計算解密矩陣K』= Pa*B,由以上代數關系可以看出,K= K』,也既加密和解密是逆過程,可以參照對稱加密標准AES。
5. Bob向Tom發送消息時,計算解密矩陣K= Pa*B,加密。Tom收到消息後計算解密矩陣K=A*Pb,原理同上。
演算法分析:
由以上介紹可容易看出,此演算法比RSA和ECC的加密效率要高4-6個數量級,且加密強度在增大n的基礎上,可獲得與以上兩演算法相當的加密強度。
該演算法仍在論證階段,歡迎此方面高手攜手參與或提出缺點.
email:[email protected]

⑵ 公鑰密碼系統及RSA公鑰演算法

公鑰密碼系統及RSA公鑰演算法

本文簡單介紹了公開密鑰密碼系統的思想和特點,並具體介紹了RSA演算法的理論基礎,工作原理和具體實現過程,並通過一個簡單例子說明了該演算法是如何實現。在本文的最後,概括說明了RSA演算法目前存在的一些缺點和解決方法。

關鍵詞:公鑰密碼體制 , 公鑰 ,私鑰 ,RSA

§1引言

隨著計算機聯網的逐步實現,Internet前景越來越美好,全球經濟發展正在進入信息經濟時代,知識經濟初見端倪。計算機信息的保密問題顯得越來越重要,無論是個人信息通信還是電子商務發展,都迫切需要保證Internet網上信息傳輸的安全,需要保證信息安全。信息安全技術是一門綜合學科,它涉及資訊理論、計算機科學和密碼學等多方面知識,它的主要任務是研究計算機系統和通信網路內信息的保護方法以實現系統內信息的安全、保密、真實和完整。其中,信息安全的核心是密碼技術。密碼技術是集數學、計算機科學、電子與通信等諸多學科於一身的交叉學科。它不僅能夠保證機密性信息的加密,而且能夠實現數字簽名、身份驗證、系統安全等功能。是現代化發展的重要科學之一。本文將對公鑰密碼系統及該系統中目前最廣泛流行的RSA演算法做一些簡單介紹。

§2公鑰密碼系統

要說明公鑰密碼系統,首先來了解一下不同的加密演算法:目前的加密演算法按密鑰方式可分為單鑰密碼演算法和公鑰密碼演算法。

2.1.單鑰密碼

又稱對稱式密碼,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的密鑰,信息的發送者和信息的接收者在進行信息的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼)。因此,通信雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。

單鑰密碼系統的安全性依賴於以下兩個因素:第一,加密演算法必須是足夠強的,僅僅基於密文本身去解密信息在實踐上是不可能的;第二,加密方法的安全性依賴於密鑰的秘密性,而不是演算法的秘密性,因此,我們沒有必要確保演算法的秘密性(事實上,現實中使用的很多單鑰密碼系統的演算法都是公開的),但是我們一定要保證密鑰的秘密性。

從單鑰密碼的這些特點我們容易看出它的主要問題有兩點:第一,密鑰量問題。在單鑰密碼系統中,每一對通信者就需要一對密鑰,當用戶增加時,必然會帶來密鑰量的成倍增長,因此在網路通信中,大量密鑰的產生﹑存放和分配將是一個難以解決的問題。第二,密鑰分發問題。單鑰密碼系統中,加密的安全性完全依賴於對密鑰的保護,但是由於通信雙方使用的是相同的密鑰,人們又不得不相互交流密鑰,所以為了保證安全,人們必須使用一些另外的安全信道來分發密鑰,例如用專門的信使來傳送密鑰,這種做法的代價是相當大的,甚至可以說是非常不現實的,尤其在計算機網路環境下,人們使用網路傳送加密的文件,卻需要另外的安全信道來分發密鑰,顯而易見,這是非常不智是甚至是荒謬可笑的。

2.2公鑰密碼

正因為單鑰密碼系統存在如此難以解決的缺點,發展一種新的﹑更有效﹑更先進的密碼體制顯得更為迫切和必要。在這種情況下,出現了一種新的公鑰密碼體制,它突破性地解決了困擾著無數科學家的密鑰分發問題,事實上,在這種體制中,人們甚至不用分發需要嚴格保密的密鑰,這次突破同時也被認為是密碼史上兩千年來自單碼替代密碼發明以後最偉大的成就。

這一全新的思想是本世紀70年代,美國斯坦福大學的兩名學者Diffie和Hellman提出的,該體制與單鑰密碼最大的不同是:

在公鑰密碼系統中,加密和解密使用的是不同的密鑰(相對於對稱密鑰,人們把它叫做非對稱密鑰),這兩個密鑰之間存在著相互依存關系:即用其中任一個密鑰加密的信息只能用另一個密鑰進行解密。這使得通信雙方無需事先交換密鑰就可進行保密通信。其中加密密鑰和演算法是對外公開的,人人都可以通過這個密鑰加密文件然後發給收信者,這個加密密鑰又稱為公鑰;而收信者收到加密文件後,它可以使用他的解密密鑰解密,這個密鑰是由他自己私人掌管的,並不需要分發,因此又成稱為私鑰,這就解決了密鑰分發的問題。

為了說明這一思想,我們可以考慮如下的類比:

兩個在不安全信道中通信的人,假設為Alice(收信者)和Bob(發信者),他們希望能夠安全的通信而不被他們的敵手Oscar破壞。Alice想到了一種辦法,她使用了一種鎖(相當於公鑰),這種鎖任何人只要輕輕一按就可以鎖上,但是只有Alice的鑰匙(相當於私鑰)才能夠打開。然後Alice對外發送無數把這樣的鎖,任何人比如Bob想給她寄信時,只需找到一個箱子,然後用一把Alice的鎖將其鎖上再寄給Alice,這時候任何人(包括Bob自己)除了擁有鑰匙的Alice,都不能再打開箱子,這樣即使Oscar能找到Alice的鎖,即使Oscar能在通信過程中截獲這個箱子,沒有Alice的鑰匙他也不可能打開箱子,而Alice的鑰匙並不需要分發,這樣Oscar也就無法得到這把「私人密鑰」。

從以上的介紹可以看出,公鑰密碼體制的思想並不復雜,而實現它的關鍵問題是如何確定公鑰和私鑰及加/解密的演算法,也就是說如何找到「Alice的鎖和鑰匙」的問題。我們假設在這種體制中, PK是公開信息,用作加密密鑰,而SK需要由用戶自己保密,用作解密密鑰。加密演算法E和解密演算法D也都是公開的。雖然SK與PK是成對出現,但卻不能根據PK計算出SK。它們須滿足條件:

①加密密鑰PK對明文X加密後,再用解密密鑰SK解密,即可恢復出明文,或寫為:DSK(EPK(X))=X

②加密密鑰不能用來解密,即DPK(EPK(X))≠X

③在計算機上可以容易地產生成對的PK和SK。

④從已知的PK實際上不可能推導出SK。

⑤加密和解密的運算可以對調,即:EPK(DSK(X))=X

從上述條件可看出,公開密鑰密碼體制下,加密密鑰不等於解密密鑰。加密密鑰可對外公開,使任何用戶都可將傳送給此用戶的信息用公開密鑰加密發送,而該用戶唯一保存的私人密鑰是保密的,也只有它能將密文復原、解密。雖然解密密鑰理論上可由加密密鑰推算出來,但這種演算法設計在實際上是不可能的,或者雖然能夠推算出,但要花費很長的時間而成為不可行的。所以將加密密鑰公開也不會危害密鑰的安全。

這種體制思想是簡單的,但是,如何找到一個適合的演算法來實現這個系統卻是一個真正困擾密碼學家們的難題,因為既然Pk和SK是一對存在著相互關系的密鑰,那麼從其中一個推導出另一個就是很有可能的,如果敵手Oscar能夠從PK推導出SK,那麼這個系統就不再安全了。因此如何找到一個合適的演算法生成合適的Pk和SK,並且使得從PK不可能推導出SK,正是迫切需要密碼學家們解決的一道難題。這個難題甚至使得公鑰密碼系統的發展停滯了很長一段時間。

為了解決這個問題,密碼學家們考慮了數學上的陷門單向函數,下面,我們可以給出它的非正式定義:

Alice的公開加密函數應該是容易計算的,而計算其逆函數(即解密函數)應該是困難的(對於除Alice以外的人)。許多形式為Y=f(x)的函數,對於給定的自變數x值,很容易計算出函數Y的值;而由給定的Y值,在很多情況下依照函數關系f (x)計算x值十分困難。這樣容易計算但難於求逆的函數,通常稱為單向函數。在加密過程中,我們希望加密函數E為一個單項的單射函數,以便可以解密。雖然目前還沒有一個函數能被證明是單向的,但是有很多單射函數被認為是單向的。

例如,有如下一個函數被認為是單向的,假定n為兩個大素數p和q的乘積,b為一個正整數,那麼定義f:

f (x )= x b mod n

(如果gcd(b,φ(n))=1,那麼事實上這就是我們以下要說的RSA加密函數)

如果我們要構造一個公鑰密碼體制,僅給出一個單向的單射函數是不夠的。從Alice的觀點來看,並不需要E是單向的,因為它需要用有效的方式解密所收到的信息。因此,Alice應該擁有一個陷門,其中包含容易求出E的你函數的秘密信息。也就是說,Alice可以有效解密,因為它有額外的秘密知識,即SK,能夠提供給你解密函數D。因此,我們稱一個函數為一個陷門單向函數,如果它是一個單向函數,並在具有特定陷門的知識後容易求出其逆。

考慮上面的函數f (x) = xb mod n。我們能夠知道其逆函數f -1有類似的形式f (x ) = xa mod n,對於合適的取值a。陷門就是利用n的因子分解,有效的算出正確的指數a(對於給定的b)。

為方便起見,我們把特定的某類陷門單向函數計為?。那麼隨機選取一個函數f屬於?,作為公開加密函數;其逆函數f-1是秘密解密函數。那麼公鑰密碼體制就能夠實現了。

根據以上關於陷門單向函數的思想,學者們提出了許多種公鑰加密的方法,它們的安全性都是基於復雜的數學難題。根據所基於的數學難題,至少有以下三類系統目前被認為是安全和有效的:大整數因子分解系統(代表性的有RSA)、橢園曲線離散對數系統(ECC)和離散對數系統(代表性的有DSA)。

§3 RSA演算法

3.1簡介

當前最著名、應用最廣泛的公鑰系統RSA是在1978年,由美國麻省理工學院(MIT)的Rivest、Shamir和Adleman在題為《獲得數字簽名和公開鑰密碼系統的方法》的論文中提出的。它是一個基於數論的非對稱(公開鑰)密碼體制,是一種分組密碼體制。其名稱來自於三個發明者的姓名首字母。它的安全性是基於大整數素因子分解的困難性,而大整數因子分解問題是數學上的著名難題,至今沒有有效的方法予以解決,因此可以確保RSA演算法的安全性。RSA系統是公鑰系統的最具有典型意義的方法,大多數使用公鑰密碼進行加密和數字簽名的產品和標准使用的都是RSA演算法。

RSA演算法是第一個既能用於數據加密也能用於數字簽名的演算法,因此它為公用網路上信息的加密和鑒別提供了一種基本的方法。它通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網路伺服器中注冊,人們用公鑰加密文件發送給個人,個人就可以用私鑰解密接受。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。

該演算法基於下面的兩個事實,這些事實保證了RSA演算法的安全有效性:

1)已有確定一個數是不是質數的快速演算法;

2)尚未找到確定一個合數的質因子的快速演算法。

3.2工作原理

1)任意選取兩個不同的大質數p和q,計算乘積r=p*q;

2)任意選取一個大整數e,e與(p-1)*(q-1)互質,整數e用做加密密鑰。注意:e的選取是很容易的,例如,所有大於p和q的質數都可用。

3)確定解密密鑰d:d * e = 1 molo(p - 1)*(q - 1) 根據e、p和q可以容易地計算出d。

4)公開整數r和e,但是不公開d;

5)將明文P (假設P是一個小於r的整數)加密為密文C,計算方法為:

C = Pe molo r

6)將密文C解密為明文P,計算方法為:

P = Cd molo r

然而只根據r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密。

3.3簡單實例

為了說明該演算法的工作過程,我們下面給出一個簡單例子,顯然我們在這只能取很小的數字,但是如上所述,為了保證安全,在實際應用上我們所用的數字要大的多得多。

例:選取p=3, q=5,則r=15,(p-1)*(q-1)=8。選取e=11(大於p和q的質數),通過d * 11 = 1 molo 8,計算出d =3。

假定明文為整數13。則密文C為

C = Pe molo r

= 1311 molo 15

= 1,792,160,394,037 molo 15

= 7

復原明文P為:

P = Cd molo r

= 73 molo 15

= 343 molo 15

= 13

因為e和d互逆,公開密鑰加密方法也允許採用這樣的方式對加密信息進行"簽名",以便接收方能確定簽名不是偽造的。

假設A和B希望通過公開密鑰加密方法進行數據傳輸,A和B分別公開加密演算法和相應的密鑰,但不公開解密演算法和相應的密鑰。A和B的加密演算法分別是ECA和ECB,解密演算法分別是DCA和DCB,ECA和DCA互逆,ECB和DCB互逆。 若A要向B發送明文P,不是簡單地發送ECB(P),而是先對P施以其解密演算法DCA,再用加密演算法ECB對結果加密後發送出去。

密文C為:

C = ECB(DCA(P))

B收到C後,先後施以其解密演算法DCB和加密演算法ECA,得到明文P:

ECA(DCB(C))

= ECA(DCB(ECB(DCA(P))))

= ECA(DCA(P))/*DCB和ECB相互抵消*/

=

P          /*DCB和ECB相互抵消*/

這樣B就確定報文確實是從A發出的,因為只有當加密過程利用了DCA演算法,用ECA才能獲得P,只有A才知道DCA演算法,沒 有人,即使是B也不能偽造A的簽名。

3.4優缺點

3.4.1優點

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。該演算法的加密密鑰和加密演算法分開,使得密鑰分配更為方便。它特別符合計算機網路環境。對於網上的大量用戶,可以將加密密鑰用電話簿的方式印出。如果某用戶想與另一用戶進行保密通信,只需從公鑰簿上查出對方的加密密鑰,用它對所傳送的信息加密發出即可。對方收到信息後,用僅為自己所知的解密密鑰將信息脫密,了解報文的內容。由此可看出,RSA演算法解決了大量網路用戶密鑰管理的難題,這是公鑰密碼系統相對於對稱密碼系統最突出的優點。

3.4.2缺點

1)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。

2)安全性, RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價,而且密碼學界多數人士傾向於因子分解不是NPC問題。目前,人們已能分解140多個十進制位的大素數,這就要求使用更長的密鑰,速度更慢;另外,目前人們正在積極尋找攻擊RSA的方法,如選擇密文攻擊,一般攻擊者是將某一信息作一下偽裝(Blind),讓擁有私鑰的實體簽署。然後,經過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了輸入的乘法結構:

( XM )d = Xd *Md mod n

前面已經提到,這個固有的問題來自於公鑰密碼系統的最有用的特徵--每個人都能使用公鑰。但從演算法上無法解決這一問題,主要措施有兩條:一條是採用好的公鑰協議,保證工作過程中實體不對其他實體任意產生的信息解密,不對自己一無所知的信息簽名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用One-Way Hash Function對文檔作HASH處理,或同時使用不同的簽名演算法。除了利用公共模數,人們還嘗試一些利用解密指數或φ(n)等等攻擊.

3)速度太慢,由於RSA的分組長度太大,為保證安全性,n至少也要600 bitx以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於數據格式的標准化。目前,SET(Secure Electronic Transaction)協議中要求CA採用2048比特長的密鑰,其他實體使用1024比特的密鑰。為了速度問題,目前人們廣泛使用單,公鑰密碼結合使用的方法,優缺點互補:單鑰密碼加密速度快,人們用它來加密較長的文件,然後用RSA來給文件密鑰加密,極好的解決了單鑰密碼的密鑰分發問題。

§4結束語

目前,日益激增的電子商務和其它網際網路應用需求使公鑰體系得以普及,這些需求量主要包括對伺服器資源的訪問控制和對電子商務交易的保護,以及權利保護、個人隱私、無線交易和內容完整性(如保證新聞報道或股票行情的真實性)等方面。公鑰技術發展到今天,在市場上明顯的發展趨勢就是PKI與操作系統的集成,PKI是「Public

Key Infrastructure」的縮寫,意為「公鑰基礎設施」。公鑰體制廣泛地用於CA認證、數字簽名和密鑰交換等領域。

公鑰加密演算法中使用最廣的是RSA。RSA演算法研製的最初理念與目標是努力使互聯網安全可靠,旨在解決DES演算法秘密密鑰的利用公開信道傳輸分發的難題。而實際結果不但很好地解決了這個難題;還可利用RSA來完成對電文的數字簽名以抗對電文的否認與抵賴;同時還可以利用數字簽名較容易地發現攻擊者對電文的非法篡改,以保護數據信息的完整性。目前為止,很多種加密技術採用了RSA演算法,該演算法也已經在互聯網的許多方面得以廣泛應用,包括在安全介面層(SSL)標准(該標準是網路瀏覽器建立安全的互聯網連接時必須用到的)方面的應用。此外,RSA加密系統還可應用於智能IC卡和網路安全產品。

但目前RSA演算法的專利期限即將結束,取而代之的是基於橢圓曲線的密碼方案(ECC演算法)。較之於RSA演算法,ECC有其相對優點,這使得ECC的特性更適合當今電子商務需要快速反應的發展潮流。此外,一種全新的量子密碼也正在發展中。

至於在實際應用中應該採用何種加密演算法則要結合具體應用環境和系統,不能簡單地根據其加密強度來做出判斷。因為除了加密演算法本身之外,密鑰合理分配、加密效率與現有系統的結合性以及投入產出分析都應在實際環境中具體考慮。加密技術隨著網路的發展更新,將有更安全更易於實現的演算法不斷產生,為信息安全提供更有力的保障。今後,加密技術會何去何從,我們將拭目以待。

參考文獻:

[1] Douglas R.Stinson.《密碼學原理與實踐》.北京:電子工業出版社,2003,2:131-132

[2]西蒙.辛格.《密碼故事》.海口:海南出版社,2001,1:271-272

[3]嬴政天下.加密演算法之RSA演算法.http://soft.winzheng.com/infoView/Article_296.htm,2003

[4]加密與數字簽名.http://www.njt.cn/yumdq/dzsw/a2.htm

[5]黑客中級教程系列之十.http://www.qqorg.i-p.com/jiaocheng/10.html

⑶ 公鑰密碼體制的原理

自從1976年公鑰密碼的思想提出以來,國際上已經提出了許多種公鑰密碼體制。用抽象的觀點來看,公鑰密碼就是一種陷門單向函數。
我們說一個函數f是單向函數,即若對它的定義域中的任意x都易於計算f(x),而對f的值域中的幾乎所有的y,即使當f為已知時要計算f-l(y)在計算上也是不可行的。若當給定某些輔助信息(陷門信息)時則易於計算f-l(y),就稱單向函數f是一個陷門單向函數。公鑰密碼體制就是基於這一原理而設計的,將輔助信息(陷門信息)作為秘密密鑰。這類密碼的安全強度取決於它所依據的問題的計算復雜度。

目前比較流行的公鑰密碼體制主要有兩類:一類是基於大整數因子分解問題的,其中最典型的代表是RSA體制。另一類是基於離散對數問題的,如ElGamal公鑰密碼體制和影響比較大的橢圓曲線公鑰密碼體制。

公鑰密碼
一般要求:
1、加密解密演算法相同,但使用不同的密鑰
2、發送方擁有加密或解密密鑰,而接收方擁有另一個密鑰
安全性要求:
1、兩個密鑰之一必須保密
2、無解密密鑰,解密不可行
3、知道演算法和其中一個密鑰以及若干密文不能確定另一個密鑰

⑷ 想聽大家對於一道密碼設計的數學建模題

公鑰密碼又稱為雙鑰密碼和非對稱密碼,是1976年由Daffy和Hellman在其「密碼學新方向」一文中提出的,見劃時代的文獻:
W.Diffie and M.E.Hellman, New Directrions in Cryptography, IEEE Transaction on Information Theory, V.IT-22.No.6, Nov 1976, PP.644-654
單向陷門函數是滿足下列條件的函數f:
(1)給定x,計算y=f(x)是容易的;
(2)給定y, 計算x使y=f(x)是困難的。
(所謂計算x=f-1(Y)困難是指計算上相當復雜,已無實際意義。)
(3)存在δ,已知δ 時,對給定的任何y,若相應的x存在,則計算x使y=f(x)是容易的。
註:1*. 僅滿足(1)、(2)兩條的稱為單向函數;第(3)條稱為陷門性,δ 稱為陷門信息。
2*. 當用陷門函數f作為加密函數時,可將f公開,這相當於公開加密密鑰。此時加密密鑰便稱為公開鑰,記為Pk。 f函數的設計者將δ 保密,用作解密密鑰,此時δ 稱為秘密鑰匙,記為Sk。由於加密函數時公開的,任何人都可以將信息x加密成y=f(x),然後送給函數的設計者(當然可以通過不安全信道傳送);由於設計者擁有Sk,他自然可以解出x=f-1(y)。
3*.單向陷門函數的第(2)條性質表明竊聽者由截獲的密文y=f(x)推測x是不可行的。
Diffie和Hellman在其里程碑意義的文章中,雖然給出了密碼的思想,但是沒有給出真正意義上的公鑰密碼實例,也既沒能找出一個真正帶陷門的單向函數。然而,他們給出單向函數的實例,並且基於此提出Diffie-Hellman密鑰交換演算法。這個演算法是基於有限域中計算離散對數的困難性問題之上的:設F為有限域,g∈ F是F的乘法群F*=F\{0}=<g>。並且對任意正整數x,計算gx是容易的;但是已知g和y求x使y= gx,是計算上幾乎不可能的。這已問題稱為有限域F上的離散對數問題。公鑰密碼學種使用最廣泛的有限域為素域FP.
對Diffie-Hellman密鑰交換協議描述:Alice和Bob協商好一個大素數p,和大的整數g,1<g<p,g最好是FP中的本原元,即FP*=<g>。p和g無須保密,可為網路上的所有用戶共享。
當Alice和Bob要進行保密通信時,他們可以按如下步驟來做:
(1)Alice送取大的隨機數x,並計算
X=gx(mod P)
(2)Bob選取大的隨機數x,並計算X  = gx (mod P)
(3)Alice將X傳送給Bob;Bob將X 傳送給Alice。
(4)Alice計算K=(X )X(mod P);Bob計算K  =(X) X (mod P),易見,K=K  =g xx (mod P)。
由(4)知,Alice和Bob已獲得了相同的秘密值K。雙方以K作為加解密鑰以傳統對稱密鑰演算法進行保密通信。
註:Diffie-Hellman密鑰交換演算法擁有美國和加拿大的專利。
3 RSA公鑰演算法
RSA公鑰演算法是由Rivest,Shamir和Adleman在1978年提出來的(見Communitions of the ACM. Vol.21.No.2. Feb. 1978, PP.120-126)該演算法的數學基礎是初等數論中的Euler(歐拉)定理,並建立在大整數因子的困難性之上。
將Z/(n)表示為 Zn,其中n=pq; p,q為素數且相異。若
Z*n{g∈ Zn|(g,n)=1},易見Z*n為  (n)階的乘法群,且有 g  (n)1(mod n),而  (n)=(p-1)(q-1).
RSA密碼體制描述如下:
首先,明文空間P=密文空間C=Zn.(見P175).
A.密鑰的生成
選擇p,q,p,q為互異素數,計算n=p*q,  (n)=(p-1)(q-1), 選擇整數e使( (n),e)=1,1<e< (n)),計算d,使d=e-1(mod  (n))),公鑰Pk={e,n};私鑰Sk={d,p,q}。
注意,當0<M<n時,M (n) =1(mod n)自然有:
MK (n)+1M(mod n), 而ed  1 (mod  (n)),易見(Me)d  M(mod n)
B.加密 (用e,n) 明文:M<n 密文:C=Me(mod n).
C.解密 (用d,p,q)
密文:C 明文:M=Cd(mod n)
註:1*, 加密和解密時一對逆運算。
2*, 對於0<M<n時,若(M,n) ≠ 1,則M為p或q的整數倍,假設M=cp,由(cp,q)=1 有 M (q)  1(mod q) M  (q)  (p)  1(mod q)
有M (q) = 1+kq 對其兩邊同乘M=cp有
有M (q)+1=M+kcpq=M+kcn於是
有M (q)+1  M(mod n)
例子:若Bob選擇了p=101和q=113,那麼,n=11413,  (n)=100×112=11200;然而11200=26×52×7,一個正整數e能用作加密指數,當且僅當e不能被2,5,7所整除(事實上,Bob不會分解φ(n),而且用輾轉相除法(歐式演算法)來求得e,使(e, φ(n)=1)。假設Bob選擇了e=3533,那麼用輾轉相除法將求得:
d=e -1  6597(mod 11200), 於是Bob的解密密鑰d=6597.
Bob在一個目錄中公開n=11413和e=3533, 現假設Alice想發送明文9726給Bob,她計算:
97263533(mod 11413)=5761
且在一個信道上發送密文5761。當Bob接收到密文5761時,他用他的秘密解密指數(私鑰)d=6597進行解密:57616597(mod 11413)=9726
註:RSA的安全性是基於加密函數ek(x)=xe(mod n)是一個單向函數,所以對的人來說求逆計算不可行。而Bob能解密的陷門是分解n=pq,知 (n)=(p-1)(q-1)。從而用歐氏演算法解出解密私鑰d.
4 RSA密碼體制的實現
實現的步驟如下:Bob為實現者
(1)Bob尋找出兩個大素數p和q
(2)Bob計算出n=pq和 (n)=(p-1)(q-1).
(3)Bob選擇一個隨機數e(0<e<  (n)),滿足(e,  (n))=1
(4)Bob使用輾轉相除法計算d=e-1(mod  (n))
(5)Bob在目錄中公開n和e作為她的公開鑰。
密碼分析者攻擊RSA體制的關鍵點在於如何分解n。若分
解成功使n=pq,則可以算出φ(n)=(p-1)(q-1),然後由公
開的e,解出秘密的d。(猜想:攻破RSA與分解n是多項式
等價的。然而,這個猜想至今沒有給出可信的證明!!!)
於是要求:若使RSA安全,p與q必為足夠大的素數,使
分析者沒有辦法在多項式時間內將n分解出來。建議選擇
p和q大約是100位的十進制素數。 模n的長度要求至少是
512比特。EDI攻擊標准使用的RSA演算法中規定n的長度為
512至1024比特位之間,但必須是128的倍數。國際數字
簽名標准ISO/IEC 9796中規定n的長度位512比特位。
為了抵抗現有的整數分解演算法,對RSA模n的素因子
p和q還有如下要求:
(1)|p-q|很大,通常 p和q的長度相同;
(2)p-1 和q-1分別含有大素因子p1和q1
(3)P1-1和q1-1分別含有大素因子p2和q2
(4)p+1和q+1分別含有大素因子p3和q3

為了提高加密速度,通常取e為特定的小整數,如EDI國際標准中規定 e=216+1,ISO/IEC9796中甚至允許取e=3。這時加密速度一般比解密速度快10倍以上。 下面研究加解密算術運算,這個運算主要是模n的求冪運算。著名的「平方-和-乘法」方法將計算xc(mod n)的模乘法的數目縮小到至多為2l,這里的l是指數c的二進製表示比特數。若設n以二進制形式表示有k比特,即k=[log2n]+1。 由l≤ k,這樣xc(mod n)能在o(k3)時間內完成。(注意,不難看到,乘法能在o(k2)時間內完成。)

平方-和-乘法演算法:
指數c以二進制形式表示為:

c=
Xc=xc0×(x2)c1×…×(x2t-1)ct-1
預計算: x2=xx
x4=x22=x2x2
.
.
.
x2t-1 =x2t-2*x2t-2
Xc計算:把那些ci=1對應的x2i全部乘在一起,便得xc。至
多用了t-1次乘法。請參考書上的177頁,給出計算
xc(mod n)演算法程序:
A=xc c=c0+c12+..+ct-12t-1= [ct-1,....,c1,c0]2
5 RSA簽名方案

簽名的基本概念
傳統簽名(手寫簽名)的特徵:
(1)一個簽名是被簽文件的物理部分;
(2)驗證物理部分進行比較而達到確認的目的。(易偽造)
(3)不容易忠實地「」!!!
定義: (數字簽名方案)一個簽名方案是有簽署演算法與驗
證演算法兩部分構成。可由五元關系組(P,A,K,S,V)來刻化:
(1)P是由一切可能消息(messages)所構成的有限集合;
(2)A是一切可能的簽名的有限集合;
(3)k為有限密鑰空間,是一些可能密鑰的有限集合;
(4)任意k ∈K,有簽署演算法Sigk ∈ S且有對應的驗證演算法Verk∈V,對每一個
Sigk:p A 和Verk:P×A {真,假} 滿足條件:任意x∈ P,y∈ A.有簽名方案的一個簽名:Ver(x,y)= {
註:1*.任意k∈K, 函數Sigk和Verk都為多項式時間函數。
2*.Verk為公開的函數,而Sigk為秘密函數。
3*.如果壞人(如Oscar)要偽造Bob的對X的簽名,在計算上是不可能的。也即,給定x,僅有Bob能計算出簽名y使得Verk(x,y)=真。
4*.一個簽名方案不能是無條件安全的,有足夠的時間,Oscar總能偽造Bob的簽名。
RSA簽名:n=pq,P=A=Zn,定義密鑰集合K={(n,e,p,q,d)}|n=pq,d*e1(mod (n))}
注意:n和e為公鑰;p,q,d為保密的(私鑰)。對x∈P, Bob要對x簽名,取k∈K。Sigk(x) xd(mod n)y(mod n)
於是
Verk(x,y)=真 xye(mod n)
(注意:e,n公開;可公開驗證簽名(x,y)對錯!!也即是否為Bob的簽署)
註:1*.任何一個人都可對某一個簽署y計算x=ek(y),來偽造Bob對隨機消息x的簽名。
2*.簽名消息的加密傳遞問題:假設Alice想把簽了名的消息加密送給Bob,她按下述方式進行:對明文x,Alice計算對x的簽名,y=SigAlice(x),然後用Bob的公開加密函數eBob,算出
Z=eBob(x,y) ,Alice 將Z傳給Bob,Bob收到Z後,第一步解密,
dBob(Z)=dBobeBob(x,y)=(x,y)
然後檢驗
VerAlice(x,y)= 真
問題:若Alice首先對消息x進行加密,然後再簽名,結果
如何呢?Y=SigAlice(eBob(x))
Alice 將(z,y)傳給Bob,Bob先將z解密,獲取x;然後用
VerAlice檢驗關於x的加密簽名y。這個方法的一個潛在問
題是,如果Oscar獲得了這對(z,y),他能用自己的簽名來
替代Alice的簽名
y=SigOscar(eBob(x))
(注意:Oscar能簽名密文eBob(x),甚至他不知明文x也能做。Oscar傳送(z,y )給Bob,Bob可能推斷明文x來自Oscar。所以,至今人么還是推薦先簽名後加密。)
6.EIGamal方案

EIGamal公鑰密碼體制是基於離散對數問題的。設P
至少是150位的十進制素數,p-1有大素因子。Zp為有限域,
若α為Zp中的本原元,有Zp* =<α>。若取β∈Zp*=Zp\{0},
如何算得一個唯一得整數a,(要求,0≤a≤ p-2),滿足
αa=β(mod p)
將a記為a=logαβ
一般來說,求解a在計算上是難處理的。
Zp*中的Egamal公鑰體制的描述:設明文空間為P=Zp*,密文空
間為C=Zp*×Zp*,定義密鑰空間K={(p, α,a, β )|β=αa(mod p)}
公開鑰為:p, α ,β
秘密鑰(私鑰):a
Alice 取一個秘密隨機數k∈ Zp-1,對明文x加密
ek(x,k)=(y1,y2)
其中, y1=αk(mod p),y2=xβk(mod p)
Bob解密,
dk(y1,y2)=y2(y1α)-1(mod p)
註:1*.容易驗證y2(y1α)-1=x(αa)k(αka)-1=x !!
2*.利用EIGamal加密演算法可給出基於此的簽名方案:
Alice 要對明文x進行簽名,她首先取一個秘密隨機數k作
為簽名
Sigk(x,k)=( ,  )
其中 =αk(mod p), =(x-a )k-1(mod p-1)
對x, ∈Zp*和 ∈ Zp-1,定義Verk(x, ,)=真等價於
βα=αx(mod p)
要說明的是,如果正確地構造了這個簽名,那麼驗證將
是成功的,因為
βα= αa αk (mod p)= αa+k (mod p)
由上面知道, =(x- a)k-1(mod p-1)可以推出
k=x- a(mod p-1)有a+kx(mod p)
所以 β  = αx (mod p)
該簽名方案已經被美國NIST(國家標准技術研究所)確定為簽名標准(1985)。

有關RSA方面的內容,請訪問網址:
www.RSAsecurity.com

⑸ 如何用通俗易懂的話來解釋非對稱加密

在採用對稱密鑰體系時,加密與解密採用相同的演算法和密鑰,這就說明收發雙方需要保存有相同密鑰。這就需要一個安全的通道來傳遞這個密鑰,但實際上這樣安全的通道是不方便的或者沒有的。所以就有了非對稱形式的(不同的密鑰)。公鑰是公開的,私鑰則只有接受者才有,這樣就不必傳遞私鑰了,更安全了。基本的數學原理?

加解密過程由單向陷門函數實現。單向陷門函數是指由已知的y=f(x)和x求出y是簡單的,但是已知y=f(x)和y求出x是困難的。當前工程應用大都基於大數分解,離散對數和橢圓曲線此類數學難題。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:425
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:550
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:736
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:530
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:140
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:227
java駝峰 發布:2025-02-02 09:13:26 瀏覽:645
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:527
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:205
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:721