非對稱加密技術,在現在網路中,有非常廣泛應用。加密技術更是數字貨幣的基礎。
所謂非對稱,就是指該演算法需要一對金鑰,使用其中乙個(公鑰)加密,則需要用另乙個(私鑰)才能解密。
但是對於其原理大部分同學應該都是一知半解,今天就來分析下經典的非對稱加密演算法 - rsa演算法。
通過本文的分析,可以更好的理解非對稱加密原理,可以讓我們更好的使用非對稱加密技術。
題外話:
本部落格一直有打算寫一系列文章通俗的密碼學,昨天給站點上https, 因其中使用了rsa演算法,就查了一下,發現現在網上介紹rsa演算法的文章都寫的太難理解了,反正也準備寫密碼學,就先寫rsa演算法吧,下面開始正文。
rsa演算法的基於這樣的數學事實:兩個大質數相乘得到的大數難以被因式分解。
如:有很大質數p跟q,很容易算出n,使得 n = p * q,
但給出n, 比較難找p q(沒有很好的方式, 只有不停的嘗試)
這其實也是單向函式的概念下面來看看數學演算過程:
1、 選取兩個大質數p,q,計算n = p q 及 φ ( n ) = φ (p) φ (q) = (p-1) * (q-1)
三個數學概念:2、選擇乙個大於1 小於φ(n)的數e,使得 e 和 φ(n)互質質數(prime numbe):又稱素數,為在大於1的自然數中,除了1和它本身以外不再有其他因數。
互質關係:如果兩個正整數,除了1以外,沒有其他公因子,我們就稱這兩個數是互質關係(coprime)。
φ(n):叫做尤拉函式,是指任意給定正整數n,在小於等於n的正整數之中,有多少個與n構成互質關係。
如果n是質數,則 φ(n)=n-1。
如果n可以分解成兩個互質的整數之積, φ(n) = φ(p1p2) = φ(p1)φ(p2)。即積的尤拉函式等於各個因子的尤拉函式之積。
e其實是1和φ(n)之前的乙個質數3、 計算d,使得de=1 mod φ(n) 等價於方程式 ed-1 = k φ(n) 求一組解。
d 稱為e的模反元素,e 和 φ(n)互質就肯定存在d。4、 (n, e)封裝成公鑰,(n, d)封裝成私鑰。模反元素是指如果兩個正整數a和n互質,那麼一定可以找到整數b,使得ab被n除的餘數是1,則b稱為a的模反元素。
可根據尤拉定理證明模反元素存在,尤拉定理是指若n,a互質,則:
a^φ(n) ≡ 1(mod n) 及 a^φ(n) = a * a^(φ(n) - 1), 可得a的 φ(n)-1 次方,就是a的模反元素。
假設m為明文,加密就是算出密文c:
m^e mod n = c (明文m用公鑰e加密並和隨機數n取餘得到密文c)
解密則是:
c^d mod n = m (密文c用金鑰解密並和隨機數n取餘得到明文m)
> 私鑰解密這個是可以證明的,這裡不展開了。
具體還是來看看步驟,舉個例子,假設alice和bob又要相互通訊。
alice 隨機取大質數p1=53,p2=59,那n=53*59=3127,φ(n)=3016
取乙個e=3,計算出d=2011。
只將n=3127,e=3 作為公鑰傳給bob(公鑰公開)
假設bob需要加密的明文m=89,c = 89^3 mod 3127=1394,於是bob傳回c=1394。 (公鑰加密過程)
alice使用c^d mod n = 1394^2011 mod 3127,就能得到明文m=89。 (私鑰解密過程)
假如攻擊者能擷取到公鑰n=3127,e=3及密文c=1394,是仍然無法不通過d來進行密文解密的。
那麼,有無可能在已知n和e的情況下,推導出d?
1. ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。
2. φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
3. n=pq。只有將n因數分解,才能算出p和q。
如果n可以被因數分解,d就可以算出,因此rsa安全性建立在n的因式分解上。大整數的因數分解,是一件非常困難的事情。
只要金鑰長度足夠長,用rsa加密的資訊實際上是不能被解破的。
模運算加減法:
(a + b) mod p = (a mod p + b mod p) mod p
(a - b) mod p = (a mod p - b mod p) mod p
模運算乘法:
(a b) mod p = (a mod p b mod p) mod p
模運算冪
a ^ b mod p = ((a mod p)^b) mod p
☛ 深入淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術部落格。
☛ 我的知識星球為各位解答區塊鏈技術問題,歡迎加入討論。
非對稱加密技術 RSA演算法數學原理分析
非對稱加密技術,在現在網路中,有非常廣泛應用。加密技術更是數字貨幣的基礎。所謂非對稱,就是指該演算法需要一對金鑰,使用其中乙個 公鑰 加密,則需要用另乙個 私鑰 才能解密。但是對於其原理大部分同學應該都是一知半解,今天就來分析下經典的非對稱加密演算法 rsa演算法。通過本文的分析,可以更好的理解非對...
非對稱加密技術 RSA演算法數學原理分析
非對稱加密技術,在現在網路中,有非常廣泛應用。加密技術更是數字貨幣的基礎。所謂非對稱,就是指該演算法需要一對金鑰,使用其中乙個 公鑰 加密,則需要用另乙個 私鑰 才能解密。但是對於其原理大部分同學應該都是一知半解,今天就來分析下經典的非對稱加密演算法 rsa演算法。通過本文的分析,可以更好的理解非對...
加密技術 對稱與非對稱加密技術簡述
首先 加密的目的就是,不能讓傳送方和接收方以外的其他第三方明白兩者之間傳送的資料的意義。加密技術大致分為對稱加密和非對稱加密技術。主要使用替換和移位的方式加密。使用56位金鑰對64位二進位制資料快進行加密,每次加密可以對64位的資料塊進行16輪編碼。特點 運算速度快,金鑰容易產生。類似於三重das,...