RSA原理探究

 
密碼學發展史
 
討論RSA原理以前,咱們先了解一下密碼學的發展史。由於RSA最終造成的數 學算法,也是不斷演變而來的。
 
歷史上最先的加密算法
  • 中國

 

          話說歷史上最先的加密算法的記載出自於周朝兵書《六韜.龍韜》中的《陰符》和《陰書》。其原理是使用文字拆分和符號代替等方式來加密數據。其實密碼學的誕生,就是爲了運用在戰場。

 

  • 西方

 

          無獨有偶,在遙遠的西方加密算法也大規模使用於戰爭之中。在希羅多德(Herodotus)的《歷史》中記載了公元前五世紀,希臘城邦和波斯帝國的戰爭中,普遍使用了移位法進行加密處理戰爭通信信息。

 

凱撒密碼
 
由古代密碼演變而來的凱撒密碼。相傳凱撒大帝爲了防止敵人竊取信息,就使用加密的方式傳遞信息。那麼當時的加密方式很是的簡單,就是對二十幾個羅馬字母創建一張對照表,將明文對應成爲密文。那麼這種方式其實持續了好久。甚至在二戰時期,日本的電報加密就是採用的這種原始加密方式。(更多內容推薦你們閱讀吳軍老師《數學之美》)
 
 
 
早期的密碼學一直沒有什麼改進,幾乎都是根據經驗慢慢發展的。直到20世紀中葉,密碼學的發展進入了」快車道「。由香農發表的《祕密體制的通訊理論》一文,標誌着加密算法的重心轉移往應用數學上的轉移。因而,逐漸衍生出了當今重要的三類加密算法:非對稱加密對稱加密以及哈希算法(固然HASH嚴格說不是加密算法,但因爲其不可逆性,已成爲加密算法中的一個重要構成部分)
 
1976年前
 
這段時間,全部的加密方式都是同一種模式:加密、解密使用同一種算法。加密和解密的規則(密鑰)必須雙方都知道。那麼它的傳遞就成爲了最大的隱患。這種加密方式被稱爲對稱加密算法
 
1976年
 
正是由於對稱加密算法盛行(非對稱那個時候尚未出現,但有些瘋狂的數學家已經開始構思這種方案,但並未成功)。人們爲了更好的保護密鑰而絞盡腦汁。直到1976年,兩位美國計算機學家。迪菲(W.Diffie)、赫爾曼( M.Hellman ) 提出了一種嶄新構思,能夠在不直接傳遞密鑰的狀況下,完成密鑰交換。這被稱爲迪菲赫爾曼密鑰交換算法。也正是由於這個算法的產生!人類終於能夠實現非對稱加密了。那麼咱們一塊兒來看看這個算法的數學原理。
 
 
 
由歐拉函數開始
 
在討論迪菲赫爾曼密鑰交換算法以前,咱們先了解幾個數學知識。並作一些公式的轉換。這樣你才能更好的體會到迪菲赫爾曼密鑰交換算法它到底能發揮多麼神奇的做用。
 
歐拉函數
 
什麼是歐拉函數?先思考下面的問題。
思考
任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?
關於互質關係
若是兩個正整數,除了1之外,沒有其餘公因數,咱們就稱這兩個數是互質關係(coprime)。
計算這個值的方式叫作歐拉函數,使用:Φ(n)表示 如:
  • 計算8的歐拉函數,和8互質的 1、二、3、四、5、六、7、8 φ(8) = 4
  • 計算7的歐拉函數,和7互質的 一、二、三、四、五、六、7 φ(7) = 6
  • 計算56的歐拉函數 φ(56) = φ(8) * φ(7) = 4 * 6 = 24
如今你會發現,並非全部的歐拉函數均可以口算出來,有些甚至計算機都算不出來。固然你也發現了φ(56)彷佛有些特殊。對了!歐拉函數有些特色是必需要知道的!
歐拉函數特色
  • 當n是質數的時候,φ(n)=n-1。
  • 若是n能夠分解成兩個互質的整數之積,如n=AB則: φ(AB)=φ(A)* φ(B)
  • 根據以上兩點獲得: 若是N是兩個質數P1 和 P2的乘積則 φ(N)=φ(P1)* φ(P2)=(P1-1)*(P2-1)
歐拉定理
 
瞭解了歐拉函數,接下來須要知道一個定理。既然是定理,就是恆古不變的,已經被數學家們證實過的,因此建議讀者能夠驗證,但最好不要試圖去證實,這個比較耗時(主要是耗腦,別玩着玩着懷疑智商了...)
 
歐拉定理
 
若是兩個正整數m和n互質,那麼m的φ(n)次方減去1,能夠被n整除。
說白了就是:
 
 
費馬小定理
歐拉定理的特殊狀況:若是兩個正整數m和n互質,並且n爲質數!那麼φ(n)結果就是n-1。
那麼也就是:
 
 
 
等式轉換
 
一、根據歐拉定理
 
 
歐拉定理
二、因爲1^k ≡ 1,等號左右兩邊都來個k次方
 
 
三、因爲1* m ≡ m,等號左右兩邊都乘上m
 
 
 
接下來,咱們還須要進行等式轉換。那麼等式轉換4的前提是 模反元素
 
模反元素
若是兩個正整數e和x互質,那麼必定能夠找到整數d,使得 ed-1 被x整除。 那麼d就是e對於x的模反元素
說白了就是
 
 
這個模反元素的等式也能夠進一步轉換,由於e*d 必定是x的倍數加1。因此以下:
 
 
 
那麼千辛萬苦!咱們經過屢次的等式轉換。終於能夠將這兩個等式進行合併了!以下:
 
 
 
這個等式成立有一個前提!就是關於模反元素的。
說白了就是當整數e和φ(n)互質!必定有一個整數d是e相對於φ(n)的模反元素。
咱們能夠測試一下。
m  4
n  15
φ(n) 8
e 若是取值爲3
d 能夠爲 十一、19...(模反元素很明顯不止一個,其實就是解二元一次方程)
 
若是你測試了,那麼你能夠改變m的值試一下。其實這個等式不須要m和n 互質。只要m小於n 等式依然成立。 這裏須要注意的是,咱們能夠看作 m 經過一系列運算 獲得結果任然是 m。這一系列運算中,分別出現了多個參數n、φ(n)、e還有d 。
那麼咱們思考一下!
m 的 e乘上d 次方爲加密運算 獲得結果 c c 模以 n 爲解密運算 獲得結果 m 這彷佛能夠用於加密和解密。但這樣,加密的結果會很是大。明文數據將很是小(雖然RSA用於加密的數據也很小,可是沒這麼大懸殊) 真正的RSA要更增強大,那麼RSA是怎麼演變來的呢?? 早期不少數學家也停留在了這一步!直到1967年迪菲赫爾曼密鑰交換打破了僵局!
 
迪菲赫爾曼密鑰交換
 
那麼爲何說 這個密鑰交換當時轟動了整個數學界!並且對人類密碼學的發展很是重要
呢?由於這個偉大的算法!可以拆分剛纔的等式。
當非對稱加密算法沒有出現之前,人類都是用的對稱加密。
因此密鑰的傳遞,就必需要很是當心。
迪菲赫爾曼密鑰交換 就是解決了 密鑰傳遞 的保密性!!咱們來看一下
 
 
 
們來假設一個傳遞密鑰的場景。算法就是用3 的次方 去模以17。 三個角色
  • 服務器 隨機數 15
 
  • 這個15只有服務器才知道。經過算法!! 獲得結果 6 由於 3的15次方 mod 17 = 6 。
          而後將結果 6 公開發送出去!!
  • 拿到客戶端的 6 ,而後用6^15 mod 17 獲得結果10(10就是交換獲得的密鑰)
 
  • 客戶端 隨機數13
 
  • 獲得結果 3 的 13次方 mod 17 = 12 而後將12公佈出去。
  • 拿到服務器的 12 ,而後用12^13 mod 17 獲得結果10(10就是交換獲得的密鑰)
 
  • 黑客
它只能拿到6 和 12 。由於沒有私密數據1三、15因此它無法獲得結果10.
那麼這裏可能一眼看過去很差理解!對吧!!
爲何 6的13次方會和12的15次方獲得同樣的結果呢?
由於這就是規律!! 能夠用小一點的數字測試一下!!
3^3 mod 17 = 10
10 ^ 2 mod 17 = 332 mod 17 結果都是15 !!
迪菲赫爾曼密鑰交換最核心的地方就在於這個規律!
RSA的誕生
 
 
以上就是RSA的數學原理,關於RSA的運用後面再慢慢闡述。本人才疏學淺,若是有地方寫得不對,請留言指出。也歡迎你們留言交流。這是一個個人iOS交流羣:624212887,無論你是小白仍是大牛歡迎入駐 ,分享技術,討論技術, 你們一塊兒交流學習成長!
相關文章
相關標籤/搜索