加密演算法分為對稱加密演算法和非對稱加密演算法,其中非對稱加密演算法作為計算機通訊安全的基石,在保證資料安全方面起著重要的作用。而相對於對稱加密演算法的易理解性,非對稱加密演算法存在一定的難度。下面通過對rsa演算法的剖析,讓我們更好的理解非對稱加密演算法的原理。
1、對稱加密演算法
對稱加密演算法:加密和解密都使用同樣規則(金鑰)的演算法。
(1)、a選擇某一種規則對資訊進行加密;
(2)、b使用同一規則(逆規則)對資訊進行解密;
2、非對稱加密演算法
非對稱加密演算法:加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係即可。
(1)、b根據演算法生成兩把金鑰(公鑰和私鑰),其中私鑰是保密的,公鑰是公開的,供要與b通訊的其它人使用;
(2)、a從b處獲取公鑰,並用它來加密;
(3)、b得到a加密後的資訊,用私鑰進行解密,完成通訊;
1、互質關係
互質又稱為互素,如果兩個或兩個以上的整數的最大公約數是 1,則稱它們為互質。比如7和10,他們最大的公約數是1,所以他們互質。8和10最大的公約數是2,所以他們不是互質。並不是只有兩個質數才能形成互質。
根據互質關係,可以得出以下結論(後面尤拉函式會用到):
2、尤拉函式
尤拉函式指的是對正整數n,求小於或等於n的正整數中與n互質的數的數目,記作φ(n)。比如1至10中,與10形成互質關係的有1,3,7,9,所以φ(10)=4。
尤拉函式通用公式為(除n=1外,φ(1)=1):
\[φ(n)=n(1-\frac)(1-\frac)......(1-\frac)
\\n=^*^......^,其中p_1、p_2......p_r為質數
\]比如φ(20)=8計算過程如下:
\[φ(20)=φ(2^2\times5)=20(1-\frac)(1-\frac)=8
\]尤拉函式證明如下:
因為1與任何數都構成互質關係,則 φ(1) = 1 。
因為質數與小於它的每乙個數,都構成互質關係,則φ(n) =n-1。如φ(5)=5-1=4。
因為質數的某個次方與除與質數的倍數外都形成互質關係,而質數的倍數1 * p、2 * p、3 * p、……、p^(k-1) * p,即有p^(k-1)個,則
\[φ(p^k) =p^k-p^=p^k(1-\frac),如φ(5^3)=5^3(1-\frac)=100。
\]該定理用到中國剩餘定理即可證明,具體過程可參考其它文件。如φ(15)=φ(3 * 5)=φ(3) φ(5) =2 * 4 =8。
根據以上推論,因為任意乙個大於1的正整數,都可以寫成一系列質數的積,可以推導出當n為大於1的整數時:
\[n=^^...^
\]\[φ(n)=φ(^^...^)
\]\[φ(n)=φ(^)φ(^)...φ(^)
\]\[φ(n)=^(1-\frac)^(1-\frac)...^(1-\frac)
\]\[φ(n)=^^...^(1-\frac)(1-\frac)(1-\frac)
\]\[φ(n)=n(1-\frac)(1-\frac)...(1-\frac)
\]以上即為尤拉函式的通用計算公式。
3、尤拉定理
尤拉定理也稱費馬-尤拉定理,指的是:如果兩個正整數a和n互質,則n的尤拉函式 φ(n) 可以讓下面的等式成立。
\[a^=1(mod\ n)
\]即a的φ(n)次方被n除的餘數為1,或者說a的φ(n)次方減1,能被n整除。如7和5互質
\[7^-1=7^4-1=2401-1=2400,可以被5整除
\]4、模反元素
如果兩個正整數a和n互質,那麼一定可以找到整數b,使得 ab-1 被n整除,或者說ab被n除的餘數是1。這時,b就叫做a的模反元素。證明如下:
\[a^=a\times a^ = 1(mod\ n),其中a^就是a的模反元素
\]1、生成金鑰對(公鑰和私鑰)
本例中公鑰為(n,e) = (55 , 17),私鑰為(n,d) = (55 ,33) ,僅(n,e) =(55 , 17)是公開的,其餘數字均不公開。可以想像如果只有 n 和 e,如何推導出 d,目前只能靠暴力破解,位數越長,暴力破解的時間越長。
2、加密生成密文
對明文z採用公鑰(n,e)進行加密,其中明文必須轉換為數字,且必須比n小。加密的公式如下:
\[z^e=c(mod\ n)
\]其中z為明文,n和e為公鑰,c為加密後的密文,所以c可以轉換為:
\[c=z^e \% n
\]假如明文為15,公鑰(n,e) = (55 , 17),則加密後的密文c為:
\[c=15^\%55=5
\]3、解密生成明文
對密文c採用公鑰(n,d)進行解密,解密的公示如下:
\[c^d=z(mod\ n)
\]其中c為密文,n和d為私鑰,z為解密後的明文,所以z可以轉換為:
\[z=c^d\%n
\]根據上述條件,密文c為5,私鑰(n,d) = (55 ,33) ,則解密後的明文z為:
\[z=5^\%55=15
\]1、有效性問題
根據上述rsa演算法示例,要驗證rsa演算法的有效性,即驗證根據加密公式:
\[z^e=c(mod\ n)
\]可以推導出,解密公式是有效的:
\[c^d=z(mod\ n)
\]2、證明過程
根據加密規則,可以推導出:
\[c= z^e - kn
\]將上述式子代入解密公式,即求證以下式子成立:
\[(z^e-kn)^d = z(mod\ n)
\]\[z^ = z(mod\ n)
\]rsa演算法的安全性,是基於目前的條件下,在空間和時間上,無法對它進行有效破解。
根據上述推導,rsa演算法用到a、b、n、m、e、d六個數字。其中公鑰(n,e)是公開的,其餘的4個數字是保密的。其中金鑰d是演算法的核心。
目前對於大數的因數分解,除了暴力破解,沒有更好的途徑。以現有的計算資源和能力,目前能被破解的最長rsa金鑰就是768位,所以只要保證rsa金鑰是1024位及以上,即可保證演算法的安全性。
1、rsa演算法流程
2、rsa演算法安全性
目前對於大數的因數分解,除了暴力破解,沒有更好的途徑。以現有的計算資源和能力,目前能被破解的最長rsa金鑰就是768位,所以只要保證rsa金鑰是1024位及以上,即可保證演算法的安全性。
3、rsa演算法應用
在rsa演算法中,公鑰(n,e) 只能加密小於n的整數。對於大於n的整數,可以採用兩種方法。一是把長資訊分割成若干段短訊息,每段分別加密;另一種是先選擇一種對稱性加密演算法加密資訊,再用rsa公鑰加密對稱性加密演算法的金鑰。
另外,由於rsa演算法效能問題,通常加解密都比較慢,所以通常和對稱性加密演算法一起配合使用。
RSA 非對稱加密演算法
1.對稱加密 甲方選擇某一種加密規則,對資訊進行加密 乙方使用同一種規則,對資訊進行解密。非對稱加密 乙方生成兩把金鑰 公鑰和私鑰 公鑰是公開的,任何人都可以獲得,私鑰則是保密的。甲方獲取乙方的公鑰,然後用它對資訊加密。乙方得到加密後的資訊,用私鑰解密。2.尤拉定理 rsa演算法的核心 可以大大簡化...
非對稱加密演算法 RSA
1 非對稱加密過程 國內使用的是雙證書體系 即使用者同時擁有簽名證書 和加密證書 兩張證書。簽名證書 是使用者的身份驗證是和ca協商的結果 加密證書 是用來對資訊進行加密,是使用者和秘鑰管理系統生成 過程是生成公鑰和私鑰的過程,基於rsa演算法實現 過程是ca對使用者的身份進行簽名,目的是驗證a的身...
非對稱加密演算法 RSA
rsa加密演算法於1977年由美國麻省理工學院的ronal rivest,adi shamir和len adleman三位年輕教授提出,並以三人的姓氏rivest,shamir和adleman命名為rsa演算法。這三位科學家榮獲2002年度圖靈獎,以表彰他們在演算法方面的突出貢獻。該演算法利用了數論...