導航:首頁 > 文檔加密 > 加密系統的組成例子

加密系統的組成例子

發布時間:2023-04-17 04:58:22

1. 加密系統的組成部分有哪些

由 明文、密文、密鑰、演算法四部分組成

2. 公鑰密碼系統及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

3. 概率加密和Goldwasser-Micali密碼系統

註:以下內容出自《An Introction to Mathematical Cryptography》3.10 Probabilistic Encryption and the Goldwasser–Micali Cryptosystem一節。

假如Alice使用公鑰密碼系統向Bob發送信息,如比特0或1。在該場景下,這樣的方式可能是不安全的。偷聽者Eve可以加密兩個可能的明文 m = 0 和 m = 1,然後將加密值與 Alice 的密文進行比較。更一般地說,在任何一個密碼系統中,如果它可能的明文集合很小,那麼Eve 總是可以使用 Bob 的公鑰加密各個明文,然後找到和Alice發送的一樣的密文。

所謂的概率加密(Probabilistic encryption)是由Goldwasser 和 Micali 發明的針對上述問題的加密方法。其想法是 Alice 選擇一個明文 m 和一個隨機數據r,然後使用 Bob 的公鑰加密 (m,r)對。理想情況下,當 r 選遍所有可能的值, 的加密值將「隨機」選遍可能的密文。更准確地說,對於任何固定的 和 以及變化的 ,對下面兩個量的值在分布上應該是不可區分的:

注意,Bob 在進行解密時沒有必要恢復完整的 對,他只需要恢復明文 即可。

上面這個想法的思路是很清晰的,但是如何創造一個實際可行的概率加密方案呢?Goldwasser 和 Micali 描述了一種方案,雖然不實用(因為它一次只加密 1 位),但其 具有易於描述和分析 的優點。 他們的想法基於以下的困難問題:

設 和 是需要保密的兩個不同的素數;令 ,並公開 ;給定一個整數 ,判斷 是否是模 的一個二次剩餘,即判斷同餘方程 是否可解。

我們注意到,由於Bob知道如何分解 ,他可以方便的計算: 是模 的二次剩餘,當且僅當 是模 的二次剩餘而且 也是模 的二次剩餘。而對於 ,由於她只知道 ,即使她計算 對 的Jacob符號,仍然無法知道 是否是模 的二次剩餘。

Goldwasser 和 Micali 利用這一事實, 創建了下表描述的概率公鑰密碼系統。

該方案易於驗證:

因為Alice隨機選取 ,當Alice加密明文 時,可以選遍模N的二次剩餘;當Alice加密明文 時,可以選遍模N的二次非剩餘(且該數對 的Jacob符號為1)。這樣的話,即使Eve計算 對 的Jacob符號,仍無法獲得任何有用的信息,如下:

即無法判斷同餘方程 是否可解。

來看一個例子,Bob通過以下參數創建Goldwasser–Micali公鑰:

可以確認 。Bob公開 作為公鑰,保留 。

如果Alice要發送的明文比特 ,她首選在[1,13048158]范圍內隨機選取 。然後計算

,並將密文 發送給Bob。Bob通過計算 對 的Legendre符號,即 ,即可知明文 。

之後,Alice繼續發送 。同樣先隨機選取 ,然後計算

,並將密文 發送給Bob。Bob通過計算 對 的Legendre符號,即 ,即可知明文m=1。

按照這樣的方式,如果Alice再次發送明文 ,隨機選取r之後計算

可以看到,前後兩次發送的 的密文是完全沒有相關性的。

註:

Goldwasser-Micali 公鑰密碼系統其實不實用,因為明文的每一位都模 N 加密。為了安全,要保證 Eve 不能有效分解 ,所以 N 至少是一個 1000 位bit長的數。 這樣,如果 Alice 想向 Bob 發送 位長度明文,她的密文將有 位長。因此,Goldwasswer-Micali 公鑰密碼系統的密文膨脹率為 1000。一般來說,Goldwasswer-Micali 公鑰密碼系統的密文膨脹率為 。

存在其他密文膨脹率小得多的的概率公鑰加密系統。比如Elgamal公鑰加密系統。

4. dse迅軟加密系統 能查看聊天記錄嗎

通常來說,加密軟體是無法監控到聊天記錄的,監控聊天記錄是由上網行為管理軟體(或硬體設備)來完成的。你可下載加密軟體漏洞評測系統去測試下。
資料庫透明加密就是把數據信息即明文轉換為不可辨識的形式即密文的過程,目的是使不應了解該數據信息的人不能夠知道和識別。將密文轉變為明文的過程就是 解密。加密和解密過程形成加密系統,明文與密文統稱為報文。

資料庫透明加密是指對庫內數據的加密和解密,對資料庫的訪問程序是完全無感知的。特別是應用系統,不需要做任何修改和編譯,就能夠直接應用到加密庫上。

與透明加密相對應的,是在應用系統中對數據進行加密,然後再存儲到資料庫中。需要真實數據的時候,從資料庫中讀取密文,再解密出明文。嚴格的說,這種方 式並不是資料庫加密,而是數據加密。

一、加密系統組成

任何加密系統通常都包括如下4個部分:

(1) 需要加密的報文,稱為明文P。

(2) 加密以後形成的報文,稱為密文Y。

(3) 加密(解密)演算法E(D)。

(4) 用於加密和解密的鑰匙,稱為密鑰K。

二、加密過程

加密過程可描述為:在發送端利用加密演算法E和加密密鑰Ke對明文P進行加密,得到密文Y=EKe(P)。密文Y被傳送到接收端後應進行解密。解密過程可描述為:接收 端利用解密演算法D和解密密鑰Kd對密文Y進行解密,將密文恢復為明文P=DKd(Y)。在密碼學中,把設計密碼的技術稱為密碼編碼,把破譯密碼的技術稱為密碼分析。 密碼編碼和密碼分析合起來稱為密碼學。在加密系統中,演算法是相對穩定的。

5. 「密碼體制」包含哪些要素分別表示什麼含義

「密碼體制」包含要素和含義分別如下所述:

  1. 對稱密碼:用於加密和解密的密碼相同,加密速度較快,可用於長文本的加密。

    達到的密碼學目標:機密性。

  2. 非對稱密碼:該體制有成為公鑰密碼體制,加密和解密的密碼不相同,一般,公鑰用於加密,私鑰用於解密。非對稱密碼加密速度較慢,一般用於對稱密碼的保護和數字簽名。

    達到的密碼學目標:機密性、認證、不可抵賴性。

  3. 雜湊密碼:又稱為HASH密碼,用於計算消息摘要值。雜湊運算是不可逆的。

    達到的密碼學目標:完整性

6. 簡單文本文件的加密與解密。

給文件加密,我們公司使用的是超級加密3000軟體,這款軟體操作起來還是比較簡便的。

啟動超級加密3000進入軟體主界面,在軟體主窗口下方的的文件瀏覽控制項裡面選擇您需要加密的文件,然後點擊窗口上方的「數據加密」按鈕。

在彈出的數據加密窗口中輸入文件加密密碼,選擇合適的文件加密類型,然後點擊確定按鈕就可以了。

您可以使用這個方法給您的文件加密試試。

7. 幾種常見的hash加密,怎麼判斷hash的類型

*nix系系統:
ES(Unix)
例子: IvS7aeT4NzQPM
說明:linux或者其他linux內核系統中
長度: 13 個字元
描述喊基枯:第1、2位為salt,例子中的'Iv'位salt,後面的為hash值
系統:MD5(Unix)
例子:$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
說明:Linux或者其他linux內核系統中
長度:34個字元
描述:開始的$1$位為加密標志,後面8位12345678為加密使用的salt,後面的為hash
加密演算法:2000次循環調用MD5加密
系統:SHA-512(Unix)
例子:$6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm
說明:Linux或者其他linux內核系統中
長度: 13 個字元
描述:開始的$6$位為加密標志,後面8位為salt,後面的為hash
加密演算法:5000次的SHA-512加密
系統:SHA-256(Unix)
例子:$5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi
說明:Linux或者其他linux內核系統中
長度: 55 個字元
描述:開始的$5$位為加密標志,後面8位為salt,後面的為hash
加密演算法:5000次的SHA-256加密
系鄭洞統:MD5(APR)
例子:$apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.
說明:Linux或者其他linux內核系統中
長度:37個字元
描述:開始的$apr1$位為加密標志,後面8位為salt,後面的為hash
加密演算法:2000次循環調用MD5加密
windows系統:
windows
例子:Admin:
長度:98個字元
加密演算法:MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
mysql
系統:mysql
例子:606717496665bcba
說明:老版本的MySql中
長度:8位元組(16個字元)
說明:包括兩個位元組,且每個字的值不超過0x7fffffff
系統:MySQL5
例子:*
說明:較新版本的MySQL
長度:20位元組(40位)
加密演算法:SHA-1(SHA-1($pass))
其他系統:
系統:MD5(WordPress)
例子:$P$
說明:WordPress使用的md5
長度:34個字元
描述:$P$表示加密類型,然後跟著一位字元,經常是字元『B』,後面是8位salt,後面是就是hash
加密演算法:8192次md5循環加密

系統:MD5(phpBB3)
說明:phpBB 3.x.x.使用
例子:$H$9123456785DAERgALpsri.D9z3ht120
長度:34個字元
描述:開始的$H$為加密標志,後面跟著一個字元,一般的都是字元『9』,然後是8位salt,然後是hash 值
加密演算法:2048次循環調用MD5加密
系統:RAdmin v2.x
說明:Remote Administrator v2.x版本中
例子:
長度:16位元組(32個字元)
加密演算法:字元用0填充到100位元組後,將填充過後的字元經過md5加密得到(32位值)
md5加密
標准MD5
例子:
使用范圍:phpBB v2.x, Joomla 的 1.0.13版本前,及其他cmd
長度:16個字元
其他的加salt及變形類似:
md5($salt.$pass)
例子::12
md5(md5($pass))
例子:
md5(md5($pass).$salt)
例子::wQ6
md5(md5($salt).md5($pass))
例子: :wH6_S
md5(md5($salt).$pass)
例子鋒譽: :1234

8. 數據加密的基本信息

和防火牆配合使用的數據加密技術,是為提高信息系統和數據的安全性和保密性,防止秘密數據被外部破譯而採用的主要技術手段之一。在技術上分別從軟體和硬體兩方面採取措施。按照作用的不同,數據加密技術可分為數據傳輸加密技術、數據存儲加密技術、數據完整性的鑒別技術和密鑰管理技術。
數據傳輸加密技術的目的是對傳輸中的數據流加密,通常有線路加密與端—端加密兩種。線路加密側重在線路上而不考慮信源與信宿,是對保密信息通過各線路採用不同的加密密鑰提供安全保護。端—端加密指信息由發送端自動加密,並且由TCP/IP進行數據包封裝,然後作為不可閱讀和不可識別的數據穿過互聯網,當這些信息到達目的地,將被自動重組、解密,而成為可讀的數據。
數據存儲加密技術的目的是防止在存儲環節上的數據失密,數據存儲加密技術可分為密文存儲和存取控制兩種。前者一般是通過加密演算法轉換、附加密碼、加密模塊等方法實現;後者則是對用戶資格、許可權加以審查和限制,防止非法用戶存取數據或合法用戶越權存取數據。
數據完整性鑒別技術的目的是對介入信息傳送、存取和處理的人的身份和相關數據內容進行驗證,一般包括口令、密鑰、身份、數據等項的鑒別。系統通過對比驗證對象輸入的特徵值是否符合預先設定的參數,實現對數據的安全保護。
密鑰管理技術包括密鑰的產生、分配、保存、更換和銷毀等各個環節上的保密措施。 數據加密的術語有 :
明文,即原始的或未加密的數據。通過加密演算法對其進行加密,加密演算法的輸入信息為明文和密鑰;
密文,明文加密後的格式,是加密演算法的輸出信息。加密演算法是公開的,而密鑰則是不公開的。密文不應為無密鑰的用戶理解,用於數據的存儲以及傳輸;
密鑰,是由數字、字母或特殊符號組成的字元串,用它控制數據加密、解密的過程;
加密,把明文轉換為密文的過程;
加密演算法,加密所採用的變換方法;
解密,對密文實施與加密相逆的變換,從而獲得明文的過程;
解密演算法,解密所採用的變換方法。
加密技術是一種防止信息泄露的技術。它的核心技術是密碼學,密碼學是研究密碼系統或通信安全的一門學科,它又分為密碼編碼學和密碼分析學。
任何一個加密系統都是由明文、密文、演算法和密鑰組成。發送方通過加密設備或加密演算法,用加密密鑰將數據加密後發送出去。接收方在收到密文後,用解密密鑰將密文解密,恢復為明文。在傳輸過程中,即使密文被非法分子偷竊獲取,得到的也只是無法識別的密文,從而起到數據保密的作用。
例:明文為字元串:
AS KINGFISHERS CATCH FIRE
(為簡便起見,假定所處理的數據字元僅為大寫字母和空格符)。假定密鑰為字元串:
ELIOT
加密演算法為:
1) 將明文劃分成多個密鑰字元串長度大小的塊(空格符以+表示)
AS+KI NGFIS HERS+ CATCH +FIRE
2) 用0~26范圍的整數取代明文的每個字元,空格符=00,A=01,...,Z=26:
3) 與步驟2一樣對密鑰的每個字元進行取代:
0512091520
4) 對明文的每個塊,將其每個字元用對應的整數編碼與密鑰中相應位置的字元的整數編碼的和模27後的值(整數編碼)取代:
舉例:第一個整數編碼為 (01+05)%27=06
5) 將步驟4的結果中的整數編碼再用其等價字元替換:
FDIZB SSOXL MQ+GT HMBRA ERRFY
如果給出密鑰,該例的解密過程很簡單。問題是對於一個惡意攻擊者來說,在不知道密鑰的情況下,利用相匹配的明文和密文獲得密鑰究竟有多困難?對於上面的簡單例子,答案是相當容易的,不是一般的容易,但是,復雜的加密模式同樣很容易設計出。理想的情況是採用的加密模式使得攻擊者為了破解所付出的代價應遠遠超過其所獲得的利益。實際上,該目的適用於所有的安全性措施。這種加密模式的可接受的最終目標是:即使是該模式的發明者也無法通過相匹配的明文和密文獲得密鑰,從而也無法破解密文。 傳統加密方法有兩種,替換和置換。上面的例子採用的就是替換的方法:使用密鑰將明文中的每一個字元轉換為密文中的一個字元。而置換僅將明文的字元按不同的順序重新排列。單獨使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供相當高的安全程度。數據加密標准(Data Encryption Standard,簡稱DES)就採用了這種結合演算法,它由IBM制定,並在1977年成為美國官方加密標准。
DES的工作原理為:將明文分割成許多64位大小的塊,每個塊用64位密鑰進行加密,實際上,密鑰由56位數據位和8位奇偶校驗位組成,因此只有56個可能的密碼而不是64個。每塊先用初始置換方法進行加密,再連續進行16次復雜的替換,最後再對其施用初始置換的逆。第i步的替換並不是直接利用原始的密鑰K,而是由K與i計算出的密鑰Ki。
DES具有這樣的特性,其解密演算法與加密演算法相同,除了密鑰Ki的施加順序相反以外。 多年來,許多人都認為DES並不是真的很安全。事實上,即使不採用智能的方法,隨著快速、高度並行的處理器的出現,強制破解DES也是可能的。公開密鑰加密方法使得DES以及類似的傳統加密技術過時了。公開密鑰加密方法中,加密演算法和加密密鑰都是公開的,任何人都可將明文轉換成密文。但是相應的解密密鑰是保密的(公開密鑰方法包括兩個密鑰,分別用於加密和解密),而且無法從加密密鑰推導出,因此,即使是加密者若未被授權也無法執行相應的解密。
公開密鑰加密思想最初是由Diffie和Hellman提出的,最著名的是Rivest、Shamir以及Adleman提出的,通常稱為RSA(以三個發明者的首位字母命名)的方法,該方法基於下面的兩個事實:
1) 已有確定一個數是不是質數的快速演算法;
2) 尚未找到確定一個合數的質因子的快速演算法。
RSA方法的工作原理如下:
1) 任意選取兩個不同的大質數p和q,計算乘積r=p*q;
2) 任意選取一個大整數e,e與(p-1)*(q-1)互質,整數e用做加密密鑰。注意:e的選取是很容易的,例如,所有大於p和q的質數都可用。
3) 確定解密密鑰d:
(d * e) molo(p - 1)*(q - 1) = 1
根據e、p和q可以容易地計算出d。
4) 公開整數r和e,但是不公開d;
5) 將明文P (假設P是一個小於r的整數)加密為密文C,計算方法為:
C = P^e molo r
6) 將密文C解密為明文P,計算方法為:
P = C^d molo r
然而只根據r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密。
下面舉一簡單的例子對上述過程進行說明,顯然我們只能選取很小的數字。
例:選取p=3, q=5,則r=15,(p-1)*(q-1)=8。選取e=11(大於p和q的質數),通過(d*11)molo(8) = 1。
計算出d =3。
假定明文為整數13。則密文C為
C = P^e molo r
= 13^11 molo 15
= 1,792,160,394,037 molo 15
= 7
復原明文P為:
P = C^d molo r
= 7^3 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的簽名。 前言
隨著信息化的高速發展,人們對信息安全的需求接踵而至,人才競爭、市場競爭、金融危機、敵特機構等都給企事業單位的發展帶來巨大風險,內部竊密、黑客攻擊、無意識泄密等竊密手段成為了人與人之間、企業與企業之間、國與國之間的安全隱患。
市場的需求、人的安全意識、環境的諸多因素促使著我國的信息安全高速發展,信息安全經歷了從傳統的單一防護如防火牆到信息安全整體解決方案、從傳統的老三樣防火牆、入侵檢測、殺毒軟體到多元化的信息安全防護、從傳統的外部網路防護到內網安全、主機安全等。
傳統數據加密技術分析
信息安全傳統的老三樣(防火牆、入侵檢測、防病毒)成為了企事業單位網路建設的基礎架構,已經遠遠不能滿足用戶的安全需求,新型的安全防護手段逐步成為了信息安全發展的主力軍。例如主機監控、文檔加密等技術。
在新型安全產品的隊列中,主機監控主要採用外圍圍追堵截的技術方案,雖然對信息安全有一定的提高,但是因為產品自身依賴於操作系統,對數據自身沒有有效的安全防護,所以存在著諸多安全漏洞,例如:最基礎的手段拆拔硬碟、winpe光碟引導、USB引導等方式即可將數據盜走,而且不留任何痕跡;此技術更多的可以理解為企業資產管理軟體,單一的產品無法滿足用戶對信息安全的要求。
文檔加密是現今信息安全防護的主力軍,採用透明加解密技術,對數據進行強制加密,不改變用戶原有的使用習慣;此技術對數據自身加密,不管是脫離操作系統,還是非法脫離安全環境,用戶數據自身都是安全的,對環境的依賴性比較小。市面上的文檔加密主要的技術分為磁碟加密、應用層加密、驅動級加密等幾種技術,應用層加密因為對應用程序的依賴性比較強,存在諸多兼容性和二次開發的問題,逐步被各信息安全廠商所淘汰。
當今主流的兩大數據加密技術
我們所能常見到的主要就是磁碟加密和驅動級解密技術:
全盤加密技術是主要是對磁碟進行全盤加密,並且採用主機監控、防水牆等其他防護手段進行整體防護,磁碟加密主要為用戶提供一個安全的運行環境,數據自身未進行加密,操作系統一旦啟動完畢,數據自身在硬碟上以明文形式存在,主要靠防水牆的圍追堵截等方式進行保護。磁碟加密技術的主要弊端是對磁碟進行加密的時間周期較長,造成項目的實施周期也較長,用戶一般無法忍耐;磁碟加密技術是對磁碟進行全盤加密,一旦操作系統出現問題。需要對數據進行恢復也是一件讓用戶比較頭痛的事情,正常一塊500G的硬碟解密一次所需時間需要3-4個小時;市面上的主要做法是對系統盤不做加密防護,而是採用外圍技術進行安全訪問控制,大家知道操作系統的版本不斷升級,微軟自身的安全機制越來越高,人們對系統的控制力度越來越低,尤其黑客技術層層攀高,一旦防護體系被打破,所有一切將暴露無疑。另外,磁碟加密技術是對全盤的信息進行安全管控,其中包括系統文件,對系統的效率性能將大大影響。
驅動級技術是信息加密的主流技術,採用進程+後綴的方式進行安全防護,用戶可以根據企事業單位的實際情況靈活配置,對重要的數據進行強制加密,大大提高了系統的運行效率。驅動級加密技術與磁碟加密技術的最大區別就是驅動級技術會對用戶的數據自身進行保護,驅動級加密採用透明加解密技術,用戶感覺不到系統的存在,不改變用戶的原有操作,數據一旦脫離安全環境,用戶將無法使用,有效提高了數據的安全性;另外驅動級加密技術比磁碟加密技術管理可以更加細粒度,有效實現數據的全生命周期管理,可以控制文件的使用時間、次數、復制、截屏、錄像等操作,並且可以對文件的內部進行細粒度的授權管理和數據的外出訪問控制,做到數據的全方位管理。驅動級加密技術在給用戶的數據帶來安全的同時,也給用戶的使用便利性帶來一定的問題,驅動級加密採用進程加密技術,對同類文件進行全部加密,無法有效區別個人文件與企業文件數據的分類管理,個人電腦與企業辦公的並行運行等問題。

9. 數字簽名的加密方式是怎樣的原理

數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑒別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。

每個人都有一對「鑰匙」(數字身份),其中一個只有她/他本人知道(密鑰),另一個公開的(公鑰)。簽名的時候用密鑰,驗證簽名的時候用公鑰。又因為任何人都可以落款聲稱她/他就是你,因此公鑰必須向接受者信任的人(身份認證機構)來注冊。注冊後身份認證機構給你發一數字證書。對文件簽名後,你把此數字證書連同文件及簽名一起發給接受者,接受者向身份認證機構求證是否真地是用你的密鑰簽發的文件。

公鑰加密系統允許任何人在發送信息時使用公鑰進行加密,數字簽名能夠讓信息接收者確認發送者的身份。當然,接收者不可能百分之百確信發送者的真實身份,而只能在密碼系統未被破譯的情況下才有理由確信。

10. 密碼學系統

本文分為7個部分,第1部分介紹密碼學的基本概念,第2部分講解常見的對稱加密演算法,第3部分講解常見的非對稱加密演算法,第4部分講解 數字簽名, 第5部分講解PKI(Public Key Infrastructure),第6部分講解哈希函數加密,第7部分講解密碼學在區塊鏈里的應用, 最後一部分會講解隨機數。

比較常見的對稱加密演算法有: Digital Encryption Standard(DES), Triple-DES, IDEA, BLOWFISH。

對稱加密的挑戰:

非對稱加密的挑戰:

比較常見的非對稱加密演算法有: RSA, ElGamal, ECC。

菲斯特爾結構的塊加密演算法是著名的一個分組密碼加密的設計模型。

1990年後對DES進行徹底的密鑰搜索的速度開始引起DES用戶的不適。 然而,用戶並不想取代DES,因為它需要花費大量的時間和金錢來改變廣泛採用並嵌入到大型安全架構中的加密演算法。

務實的做法不是完全放棄DES,而是改變DES的使用方式。 這導致了三重DES(3DES)的修改方案。

三重DES
在使用3TDES之前,用戶首先生成並分配一個3TDES密鑰K,它由三個不同的DES密鑰K1,K2和K3組成。

詳細可以看 Triple-DES

高級加密標准(Advanced Encryption Standard,AES)是目前比較流行和廣頌橋扮泛採用的對稱加密演算法。 發現至少比三重DES快6倍。
AES的功能如下:

對稱密鑰對稱分組密碼
128位數據,128/192/256位密鑰
比Triple-DES更強更快
提供完整的規格和設計細節

詳細可以看 AES

這個密碼系統是最初的系統之一。 即使在今天,它仍然是最多被使用的密碼系統。 該系統由三位學者Ron Rivest,Adi Shamir和Len Adleman發明,因此被稱為RSA密碼系統。

下面給出生成RSA密鑰對的一個例子(為了便於理解,這里採用的素數p&q值很小,實際上這些值非常高)。

設兩個素數為p = 7且q = 13。因此,模數n = pq = 7×13 = 91。

選擇 e = 5,這是一個有效的選擇,因為沒有數字是公因子5和(p - 1)(q - 1)= 6×12 = 72,除了1。

這對數字(n,e) = (91, 5)形成公鑰,可以讓任何我們希望能夠向我們發送加密消息的人使用。

向擴展歐幾里德演算法輸入p = 7,q = 13和e = 5。 輸出將是d = 29。
因此,公鑰是(91, 5),私鑰是(91, 29)。

假設發送者希望發送一些文本消息給公鑰為(n,e)的人。然後發件人將明文表示為一系列小於n的數字。
為了加密第一個明消茄文P,它是一個模n的數字。 加密過程是簡單的數學步驟:
C = Pe mod n
換句話說,密文C等於明文P乘以自己e次,然後減去模n。 這意味著C也是一個小於n的數字。
回到我們的密鑰生成例子,明文P = 10,我們得到密文C:
C = 105 mod 91

屬於ECC的一種變化。加密的核心理念與RSA相似,也是利用離散對數很難求解。
但與RSA不同的野灶是 公鑰的組成部分,EIGamal的公鑰有三部分組成, 質模數 p, 生成元素 g, 以及 公共的 Y = gx(g的x次方) mod p。
詳細可以看 ElGamal Crytosystem

橢圓曲線密碼術(ECC)是用來描述一套密碼工具和協議的術語,其安全性基於特殊版本的離散對數問題。它不使用數字模p。ECC基於與稱為橢圓曲線的數學對象相關聯的數字集合。有這些數字的加法和計算倍數的規則,就像數字模p一樣。

ECC包含許多最初為模塊化數字設計的密碼方案的變體,如ElGamal加密和數字簽名演算法。

相信當應用於橢圓曲線上的點時,離散對數問題更加困難。這會提示從數字模p切換到橢圓曲線上的點。如果我們使用基於橢圓曲線的變體,也可以用較短的密鑰獲得等效的安全級別。

較短的密鑰有兩個好處:
易於管理
高效的計算
這些優點使基於橢圓曲線的加密方案變體對計算資源受到限制的應用程序非常有吸引力。

詳細可以看 Elliptic Curve Cryptography

^符號表示為多少次方
簽名 = 消息^D mod N (D和N 為簽名者的私鑰,計算消息的D次方並求mod N,所得余數即為簽名)
消息 = 簽名^E mod N (E和N 為簽名者的公鑰,計算簽名的E次方並求mod N)

舉個例子:
私鑰: D = 29; N = 323
公鑰: E = 5; N = 323
消息: 123

由於 N 的值為 323, 因此消息需要為 0 ~ 322 這個范圍內的整數. 假設需要對 123 這個消息進行簽名.
用私鑰(D,N) = (29,323) 對消息 123 進行簽名.

消息^D mod N = 123^29 mod 323 = 157
因此 (消息, 簽名) = (123, 157)

用公鑰(E,N) = (5,323)對消息進行驗證
簽名^E mod N = 157^5 mod 323 = 123

得到消息 123 與發送者發送過來的消息 123 是一致的,因此簽名驗證成功.

https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introction/

加法逆: a在集合中, -a在集合中的定義為使 a + (-a) = 0, 這就是加法逆元運算
乘法逆: a在集合中,且不為0, a^-1 在集合中定位為使 a* a^-1 = 1, 這就是乘法逆元運算

在聊橢圓曲線前,我們先打一些基礎然後再討論一下對數問題.

在一個集合上定義一個二元運算,這就是數學中的群。一個集合 G 要成為一個群,必須滿足下面 4 個條件:

從平常的加法概念來看, 整數集 Z 是一個群(而且是阿貝爾群). 自然數集 N 不是一個群.

我們可以在橢圓曲線上定義一個群:

https://andrea.corbellini.name/ecc/interactive/reals-add.html

如下圖: 點 A 的自我相加過程就是做 乘法的過程 這個過程叫 Point Doubling

計算 nP 需要做 n次加法 如果 n 為 k 位二進制 時間復雜度為 O(2^k)

倍加演算法 比如 n = 151 二進制為 10010111

用倍加演算法 時間復雜度有了很大的改進 O(logN) or O(k)

Q = nP

這只是 p = 211, 像 Secp256k1 這條橢圓曲線的 p = 34671663 一個78位的數字 要怎麼求出 n?

一個通俗的比喻: 假設這些點是有個人 A 在一個很大的房間里玩彈珠的游戲 玩了兩年 兩年後 A 的朋友 B來了 B看到了最後的點 以及 A 告訴B 起點 但是B怎麼能知道 A 是彈了多少次才從起點彈到終點?

上面這兩張圖是 橢圓曲線 - Secp256K1: y^2 = x^3 + 7
第一張圖: 定義在 實數域
第二張圖: 定義在 有限域Zp
是用下面的參數(p,a,b,G,n,h)形成的:

p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F = 2^256 - 2^32 - 997
a = 0
b = 7
G = [0x79BE667E_F9DCBBAC_55A06295_CE870B07_029BFCDB_2DCE28D9_59F2815B_16F81798,
0x483ADA77_26A3C465_5DA4FBFC_0E1108A8_FD17B448_A6855419_9C47D08F_FB10D4B8]
n = 0xFFFFFFFF_FFFFFFFF_FFFFFFFF_FFFFFFFE_BAAEDCE6_AF48A03B_BFD25E8C_D0364141
h = 1

如果橢圓曲線上一點P, 存在最小的正整數 n 使得數乘 nP=O∞, 則將 n 稱為 P 的階

計算可得 27P = -P = (3, 13) 所以 28P = 0∞ P的階為28

如何簽名?
Sig = F sig ( F keccak256 ( m ) , k )

如何計算 r

如何計算 s
s ≡ q^-1 (Keccak256(m) + r * k) (mod p)

如何驗證簽名?

P.S. 上述驗證簽名的過程中 沒有用到發送者的 私鑰

RSA 密鑰大小(bits) ECC 密鑰大小 (bits)
1024 160
2048 224
3072 256
7680 384
15360 521

有一個研究例子 同一台計算能力的計算機

為什麼 比特幣和以太坊要選擇 Secp256k1 這條橢圓曲線?

假如有人提供一條橢圓曲線比如 Secp256r1 如何驗證這條曲線的安全性?

因為公鑰是公開的,很容易被破壞或者篡改,因此需要建立和維持一種可信的基礎機制來管理公鑰。

PKI由5部分組成:

作為比喻,證書可以被視為發給該人的身份證。人們使用駕照,護照等身份證來證明自己的身份。數字證書在電子世界中具有相同的基本功能。
但有一點不同,數字證書不僅發給人,還可以發給電腦,軟體包或任何其他需要證明電子世界身份的東西。

數字證書基於ITU標准X.509,該標準定義了公鑰證書和認證驗證的標准證書格式。因此數字證書有時也被稱為X.509證書。

與用戶客戶端相關的公鑰與證書頒發機構(CA)一起存儲在數字證書中,以及其他相關信息,例如客戶信息,到期日期,使用情況,發行者等。

CA對此整個信息進行數字簽名並在證書中包含數字簽名。

任何需要對客戶的公共密鑰和相關信息進行保證的人,他都會使用CA的公鑰進行簽名驗證過程。成功的驗證可確保證書中給出的公鑰屬於在證書中給出詳細信息的人員。

下圖了展示了個人/實體獲取數字證書的過程:

如圖所示,CA接受來自客戶端的申請以證明其公鑰。 CA在適當驗證客戶身份後,向該客戶發出數字證書。

如上所述,CA向客戶頒發證書並協助其他用戶驗證證書。 CA負責正確識別要求頒發證書的客戶的身份,並確保證書中包含的信息是正確的並對其進行數字簽名。

CA的關鍵功能:

證書類別
有四種典型的證書類別:

第1類 - 通過提供電子郵件地址可輕松獲取這些證書。

第2類 - 這些證書要求提供額外的個人信息。

第3類 - 這些證書只有在對請求者的身份進行檢查後才能購買。

第4類 - 它們被需要高度信任的政府和金融機構使用。

CA可以使用第三方注冊機構(RA)對要求證書確認其身份的人或公司進行必要的檢查。 RA可能在客戶端看起來像一個CA,但它們實際上並不簽署發布的證書。

這是發布證書的管理系統,暫時或永久暫停,續訂或撤銷證書。 證書管理系統通常不會刪除證書,因為可能有必要在某個時間點證明其身份,這是出於法律原因。 CA和相關RA運行證書管理系統,以便能夠跟蹤他們的責任。

雖然客戶端的公鑰存儲在證書中,但關聯的私鑰可以存儲在密鑰所有者的計算機上。 這種方法一般不採用。 如果攻擊者能夠訪問計算機,他可以輕松訪問私鑰。 出於這個原因,私鑰存儲在通過密碼保護的安全可移動存儲令牌上。

不同的供應商經常使用不同的專有的存儲格式來存儲密鑰。 例如,Entrust使用專有的.epf格式,而Verisign,GlobalSign和Baltimore使用標準的.p12格式。

1.6 Hierarchy of CA:
由於擁有龐大的網路和全球通信的要求,所有用戶從唯一一個可信的CA獲得證書是不切實際的。其次,只有一個CA的可用性可能會導致大的阻礙,如果CA受到影響。

在這種情況下,層次認證模型很受關注,因為它允許在兩個通信方與相同CA沒有信任關系的環境中使用公鑰證書。

根CA位於CA層次結構的頂部,根CA的證書是自簽名證書。

直接隸屬於根CA(例如,CA1和CA2)的CA具有由根CA簽名的CA證書。

層次結構中下級CA(例如,CA5和CA6)下的CA具有由上級下級CA簽名的CA證書。

證書頒發機構(CA)層次體現在證書鏈中。證書鏈跟蹤從層次結構中的分支到層次結構根的證書路徑。

下圖顯示了具有從實體證書到兩個從屬CA證書(CA6和CA3)到根證書頒發機構CA證書的證書鏈的CA層次結構:

驗證證書鏈是確保特定證書鏈有效,正確簽署和可信的過程。 以下過程驗證證書鏈,從提供驗證的證書開始 -

一個正在驗證其真實性的客戶端提供他的證書,通常連同證書鏈一直到根CA.

驗證者獲取證書並使用發行者的公鑰進行驗證。 發行人的公鑰在發行人的證書中找到,該證書位於客戶證書旁邊的鏈中。

現在,如果已簽署發行人證書的較高的CA由驗證方信任,則驗證成功並在此停止。

否則,發行人證書的驗證方式與客戶在上述步驟中完成的相似。 此過程將繼續進行,直到在其中找到可信的CA,否則它將持續到根CA。

哈希函數非常有用,並且出現在幾乎所有信息安全應用程序中。

哈希函數是將數字輸入值轉換為另一個壓縮數值的 數學函數。 哈希函數的輸入具有任意長度,但輸出始終為固定長度。

哈希函數返回的值稱為消息摘要或簡單的散列值。 下面的圖片說明了哈希函數:

為了成為一個有效的加密工具,哈希函數具有以下屬性:

散列的核心是一個數學函數,該函數在兩個固定大小的數據塊上運行以創建散列碼。 這個哈希函數構成哈希演算法的一部分。

每個數據塊的大小因演算法而異。 通常塊大小從128位到512位。 下圖演示了哈希函數:

哈希演算法涉及上述哈希函數,如分組密碼。 每一輪都會輸入一個固定的大小,通常是最近消息塊和最後一輪輸出的組合。

這個過程重復進行多次,以散列整個消息。 哈希演算法的示意圖如下圖所示:

因為第一消息塊的散列值變成第二散列操作的輸入,其輸出改變第三操作的結果,等等。 這種效應被稱為散列的雪崩效應。雪崩效應對兩個即使是單個數據位也不相同的消息產生明顯不同的散列值。理解哈希函數和演算法之間的區別。 哈希函數通過對兩個固定長度的二進制數據塊進行操作來生成哈希碼。哈希演算法是一個使用哈希函數的過程,指定如何分解消息以及如何將先前消息塊的結果鏈接在一起。

後來在1995年,SHA-1被設計用於糾正SHA-0的所謂弱點。SHA-1是現有SHA哈希函數中使用最廣泛的。它被用於幾個廣泛使用的應用程序和協議,包括安全套接字層(SSL)安全。

2005年,發現了一種在實際時間框架內發現SHA-1沖突的方法,使SHA-1的長期可用性受到懷疑。

SHA-2系列具有四個更進一步的SHA變體,SHA-224,SHA-256,SHA-384和SHA-512,取決於其散列值中的位數。還沒有成功的攻擊報道過SHA-2哈希函數。

雖然SHA-2是一個強大的哈希函數。雖然有很大的不同,但其基本設計仍然遵循SHA-1的設計。因此,NIST要求提供新的競爭性散列函數設計。

2012年10月,NIST選擇Keccak演算法作為新的SHA-3標准。 Keccak提供了許多好處,例如高效的表現和良好的攻擊抵抗力。

該集包括RIPEND,RIPEMD-128和RIPEMD-160。此演算法還有256位和320位版本。

原始的RIPEMD(128位)基於MD4中使用的設計原則,並且發現提供可疑的安全性。 RIPEMD 128位版本是解決原始RIPEMD漏洞的快速修復替代品。

RIPEMD-160是一個改進版本,是使用最廣泛的版本。與RIPEMD-128和RIPEMD-160相比,256和320位版本分別減少了意外沖突的可能性,但沒有更高的安全等級。

Merkle Tree 默克爾樹

哈希演算法的一個重要應用是默克爾樹(Merkle tree),默克爾樹是一種數據結構,通常是一個二叉樹,也有可能是多叉樹,它以特定的方式逐層向上計算,直到頂部,最頂層叫做默克爾根(Merkle Root),默克爾樹最為常見和最簡單的是二叉默克爾樹。

閱讀全文

與加密系統的組成例子相關的資料

熱點內容
安卓手機微信發不出視頻怎麼弄 瀏覽:229
壓縮機專用工具 瀏覽:575
qtcreator可以編譯cp嗎 瀏覽:405
小項目是雲伺服器還是本地好 瀏覽:14
墨痕齋是什麼游戲的伺服器 瀏覽:942
word文件如何壓縮大小 瀏覽:279
遵義聯通伺服器地址是什麼 瀏覽:29
ansys約束命令流 瀏覽:814
解壓軟體電腦版如何下載 瀏覽:791
閃電匕首演算法球 瀏覽:692
linuxredis停止命令 瀏覽:670
大麥賬號怎麼加密 瀏覽:113
穿越火線怎麼找伺服器 瀏覽:526
秘密加密社交軟體app 瀏覽:256
c語言編譯器怎麼找文件 瀏覽:836
數學不好能編程嗎 瀏覽:254
微雲里的視頻加密 瀏覽:41
3大加密貨幣交易平台 瀏覽:647
鈑金激光切割機編程 瀏覽:496
vivo手機手電筒app在哪裡 瀏覽:787