現實生活中有簽名,網絡上也有簽名。簽名有兩個作用,壹個是認證,壹個是數據完整性驗證。數字簽名通過摘要算法保證接收到的數據沒有被篡改,然後用簽名人的私鑰加密,只有對應的公鑰才能解密,從而保證身份的壹致性。
數字證書是將個人信息和數字簽名放在壹起,用CA機構的私鑰加密生成的。當然,不經過CA自己簽名的證書稱為自簽名證書。CA組織作為互聯網密碼系統中的基礎組織,具有相當先進的安全防護能力。所有證書系統中的基本假設或前提是CA組織的私鑰不會被竊取。壹旦CA J組織出事,整個信息鏈將不再安全。
CA證書的生成過程如下:
證書參與信息傳遞。加密和解密的過程如下:
互質的關系:互質是兩個整數的公約數只有1;1和1互質;13和13不是互質的。
歐拉函數:表示任意給定的正整數n,在小於等於n的正整數中,有多少個與n有互質關系,其表達式為:
其中,如果p是壹個質數,它的表達式可以縮寫為:
情況1: φ(1)=1
1和任意數互質,所以φ(1)= 1;
情況二:n是素數,φ(n)=n-1。
因為n是質數,所以與所有小於自身的數互質,所以φ(n)= n-1;
情況三:若n是素數的冪,即n = p^k (p是素數,k是大於等於1的整數),則φ (n) = (p-1) p (k-1)。
因為p是素數,所以除了p的倍數外,所有小於n的數都是n的素數;
情況四:若n可分解為兩個互質整數的乘積,n = p1 × p2,則φ(n)=φ(p 1p 2)=φ(p 1)φ(P2)。
情況5:基於情況4,如果p1和p2都是質數且n=p1 × p2,則φ(n)=φ(p 1p 2)=φ(p 1)φ(P2)=(p 1-。
RSA算法的基本原理是歐拉函數中的第五種情況,即:φ(n)=(p 1-1)(P2-1);
如果兩個正整數A和N互質,那麽必須求出整數B,使得ab-1能被N整除,或者ab除以N的余數是1。此時b稱為a的“模反元”,歐拉定理可以用來證明模反元的存在性。
可以看出,A的φ(n)-1次方是A對模n的模逆元。
N = pxq = 3233,3233二進制寫成110010001,a * * *有12位,所以這個鍵是12位。
在實際使用中,壹般場景選擇長度為1024位的數,安全性要求較高的場景選擇長度為2048位的數。這裏作為示範,選取p=61,Q = 53
因為n,p,q都是質數,所以φ(n)=(p-1)(q-1)= 60×52 = 3120。
註意這裏是用φ(n)代替n的互質!假設選擇的值是17,即E = 17;
模逆元素意味著有壹個整數d,所以ed除以φ(n)的余數是1。表示為:(ed-1)=φ(n)y-> 17d = 3120y+1,壹組解計算為(2753,15),即d=2753,y=-15,即(17 2753-65)。
註意,這裏不能選擇3119,否則公鑰和私鑰是壹樣的。
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
公鑰是public,也就是說m=p*q=3233是public,那麽如何找到e-被子呢?用模反函數得到E,17d=3120y+1,E開等於17。這個時候,如果妳想問D,妳需要知道3120,也就是φ(n),也就是φ(3233),說白了就是330。
壹般情況下,我們可以把3233因式分解成61*53,但是對於非常大的數,人類只能通過枚舉的方式進行因式分解,所以RSA安全的本質就是最大整數的因式分解難度決定了RSA算法的可靠性。換句話說,分解最大整數越困難,RSA算法就越可靠。
人類分解的最大整數是:
人類分解的最大整數是232個十進制數字和768個二進制數字。比這個大的因式分解還沒有報道過,所以目前被破解的最長RSA密鑰是768位。所以實際使用中的1024位密鑰是基本安全的,2048位密鑰是絕對安全的。
網上有個笑話:
公鑰和私鑰的組成已經獲得:
公鑰:(n,e)=(3233,2753)
私鑰:(n,d)=(3233,17)
加密的過程是
解密過程如下:
其中m是要加密的數字,c是加密後的輸出結果,m
總之,RSA加密就是利用模反函數對數字進行加密和求解的過程。在實際使用中,因為M
對稱加密雖然存在快,但是有壹個致命的缺點,就是需要傳輸密鑰。非對稱加密雖然可以在不傳遞密鑰的情況下完成加密和解密,但其致命的缺點是速度不夠快,無法用於高頻大容量的加密場景。所以兩者之間是壹種互補的關系。傳輸對稱加密密鑰時使用非對稱加密,密鑰傳輸完成後使用對稱加密,兩者可以完美互補。