1. 程式人生 > >RSA ~ 非對稱加密演算法

RSA ~ 非對稱加密演算法

RSA:

     非對稱加密,加密與解密使用的金鑰不是同一金鑰,對中一個對外公開,稱為公鑰,另一個只有所有者知道,稱為私鑰。

     用公鑰加密的資訊只有私鑰才能解開,反之,用私鑰加密的資訊只有公鑰才能解開(簽名驗籤)。

     代表:RSA演算法。速度慢,適合少量資料加密。對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法

RSA演算法非常簡單,概述如下:

找兩素數p和q

取n=p*q

取t=(p-1)*(q-1)

取任何一個數e,要求滿足e<t並且e與t互素(就是最大公因數為1)

取d*e%t==1

這樣最終得到三個數: n d e

設訊息為數M (M <n)

設c=(M**d)%n就得到了加密後的訊息c 

設m=(c**e)%n則 m == M,從而完成對c的解密。

注:**表示次方,上面兩式中的d和e可以互換。

在對稱加密中:

n d兩個數構成公鑰,可以告訴別人;

n e兩個數構成私鑰,e自己保留,不讓任何人知道。

給別人傳送的資訊使用e加密,只要別人能用d解開就證明資訊是由你傳送的,構成了簽名機制。

別人給你傳送資訊時使用d加密,這樣只有擁有e的你能夠對其解密。

rsa的安全性在於對於一個大數n,沒有有效的方法能夠將其分解

從而在已知n d的情況下無法獲得e;同樣在已知n e的情況下無法

求得d。

下面看一個非常經典的漫畫圖示:

數字簽名是什麼?

1.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。

2.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。

3.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

蘇珊給鮑勃寫信,寫完後用鮑勃的公鑰加密,達到保密的效果。

4.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

鮑勃收信後,用私鑰解密,看到信件內容。

5.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

鮑勃給蘇珊回信,寫完後用Hash函式,生成信件的摘要(digest)。

6.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

然後,鮑勃使用私鑰,對這個摘要加密,生成"數字簽名"(signature)。

7.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

鮑勃將這個簽名,附在信件下面,一起發給蘇珊。

8.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

蘇珊收信後,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發出的。

9.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

蘇珊再對信件本身使用Hash函式,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過。

###########下面的圖你可以選擇不看,如果你感覺能理解的話就繼續看####################

10.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

複雜的情況出現了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。因此,他就可以冒充鮑勃,寫信給蘇珊。

11.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

蘇珊發現,自己無法確定公鑰是否真的屬於鮑勃。她想到了一個辦法,要求鮑勃去找"證書中心"(certificate authority,簡稱CA),為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關資訊一起加密,生成"數字證書"(Digital Certificate)。

12.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

鮑勃拿到數字證書以後,就可以放心了。以後再給蘇珊寫信,只要在簽名的同時,再附上數字證書就行了。

13.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

蘇珊收信後,用CA的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰了,然後就能證明"數字簽名"是否真的是鮑勃籤的。

14.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

下面,我們看一個應用"數字證書"的例項:https協議。這個協議主要用於網頁加密。

15.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

首先,客戶端向伺服器發出加密請求。

16.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

伺服器用自己的私鑰加密網頁以後,連同本身的數字證書,一起傳送給客戶端。

17.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

客戶端(瀏覽器)的"證書管理器",有"受信任的根證書頒發機構"列表。客戶端會根據這張列表,檢視解開數字證書的公鑰是否在列表之內。

18.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

如果數字證書記載的網址,與你正在瀏覽的網址不一致,就說明這張證書可能被冒用,瀏覽器會發出警告。

19.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

如果這張數字證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告。

20.

看圖片 讀故事:輕鬆理解數字簽名和數字證書

數字證書如果是可靠的,客戶端就可以使用證書中的伺服器公鑰,對資訊進行加密,然後與伺服器交換加密資訊。

----------------------------

在簽名的過程中,有一點很關鍵,收到資料的一方,需要自己保管好公鑰,但是要知道每一個傳送方都有一個公鑰,那麼接收資料的人需要儲存非常多的公鑰,這根本就管理不過來。並且本地儲存的公鑰有可能被篡改替換,無從發現。怎麼解決這一問題了?由一個統一的證書管理機構來管理所有需要傳送資料方的公鑰,對公鑰進行認證和加密。這個機構也就是我們常說的CA。認證加密後的公鑰,即是證書,又稱為CA證書,證書中包含了很多資訊,最重要的是申請者的公鑰。

CA機構在給公鑰加密時,用的是一個統一的金鑰對,在加密公鑰時,用的是其中的私鑰。這樣,申請者拿到證書後,在傳送資料時,用自己的私鑰生成簽名,將簽名、證書和傳送內容一起發給對方,對方拿到了證書後,需要對證書解密以獲取到證書中的公鑰,解密需要用到CA機構的”統一金鑰對“中的公鑰,這個公鑰也就是我們常說的CA根證書,通常需要我們到證書頒發機構去下載並安裝到相應的收取資料的客戶端,如瀏覽器上面。這個公鑰只需要安裝一次。有了這個公鑰之後,就可以解密證書,拿到傳送方的公鑰,然後解密傳送方發過來的簽名,獲取摘要,重新計算摘要,作對比,以驗證資料內容的完整性。

總結:

(1)資訊 + HASH = 摘要    摘要 + 私鑰 = 數字簽名(給收方做對比用的,驗證收發內容是否一致)

(2)公鑰 + 相關資訊 + CA私鑰 = 數字證書(驗證傳送者是否正確,是可信任的公鑰)

用於我發保密資訊給你之前,你得讓我相信真的是“你”讓我“這麼做”的。

(1)、對稱加密演算法

常用的演算法包括:
DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合。
3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高;

1、加密方和解密方使用同一個金鑰。
2、加密解密的速度比較快,適合資料比較長時的使用。
3、金鑰傳輸的過程不安全,且容易被破解,金鑰管理也比較麻煩。
4、加密演算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支援128、192、256、512位金鑰的加密)、Blowfish。
5、加密工具:openssl、gpg(pgp工具)

(2)、非對稱加密演算法

RSA:由 RSA 公司發明,是一個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;
DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標準);
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。
ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:
抗攻擊性強。相同的金鑰長度,其抗攻擊性要強很多倍。
計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
儲存空間佔用小。ECC的金鑰尺寸和系統引數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。
頻寬要求低。當對長訊息進行加解密時,三類密碼系統有相同的頻寬要求,但應用於短訊息時ECC頻寬要求卻低得多。頻寬要求低使ECC在無線網路領域具有廣泛的應用前景。

1、每個使用者擁用一對金鑰加密:公鑰和私鑰。
2、公鑰加密,私鑰解密;私鑰加密,公鑰解密。
3、公鑰傳輸的過程不安全,易被竊取和替換。
4、由於公鑰使用的金鑰長度非常長,所以公鑰加密速度非常慢,一般不使用其去加密。
5、某一個使用者用其私鑰加密,其他使用者用其公鑰解密,實現數字簽名的作用。
6、公鑰加密的另一個作用是實現金鑰交換。
7、加密和簽名演算法:RSA、ELGamal。
8、公鑰簽名演算法:DSA。
9、加密工具:gpg、openssl

由於非對稱加密演算法的執行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度。
對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。
由於對稱加密演算法的金鑰管理是一個複雜的過程,金鑰的管理直接決定著他的安全性,因此當資料量很小時,我們可以考慮採用非對稱加密演算法。
在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,這樣我們就集成了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。

(3)、單向加密(雜湊演算法)

雜湊是資訊的提煉,通常其長度要比資訊小得多,且為一個固定長度。加密性強的雜湊一定是不可逆的,這就意味著通過雜湊結果,無法推出任何部分的原始資訊。任何輸入資訊的變化,哪怕僅一位,都將導致雜湊結果的明顯變化,這稱之為雪崩效應。雜湊還應該是防衝突的,即找不出具有相同雜湊結果的兩條資訊。具有這些特性的雜湊結果就可以用於驗證資訊是否被修改。
單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有:
1、MD5(Message Digest Algorithm 5):是RSA資料安全公司開發的一種單向雜湊演算法,非可逆,相同的明文產生相同的密文。
2、SHA(Secure Hash Algorithm):可以對任意長度的資料運算生成一個160位的數值;
SHA-1與MD5的比較
因為二者均由MD4匯出,SHA-1和MD5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
1、對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2128數量級的操作,而對SHA-1則是2160數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。
2、對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
3、速度:在相同的硬體上,SHA-1的執行速度比MD5慢。

1、特徵:雪崩效應、定長輸出和不可逆。
2、作用是:確保資料的完整性。
3、加密演算法:md5(標準金鑰長度128位)、sha1(標準金鑰長度160位)、md4、CRC-32
4、加密工具:md5sum、sha1sum、openssl dgst。
5、計算某個檔案的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1