RSA原理探究

封面

密碼學發展史

討論RSA原理之前,我們先了解一下密碼學的發展史。因為RSA最終形成的數學算法,也是不斷演變而來的。

歷史上最早的加密算法

  • 中國
    話說歷史上最早的加密算法的記載出自于周朝兵書《六韜.龍韜》中的《陰符》和《陰書》。其原理是使用文字拆分和符號代替等方式來加密數據。其實密碼學的誕生,就是為了運用在戰場。
  • 西方
    無獨有偶,在遙遠的西方加密算法也大規模使用于戰爭之中。在希羅多德(Herodotus)的《歷史》中記載了公元前五世紀,希臘城邦和波斯帝國的戰爭中,廣泛使用了移位法進行加密處理戰爭通訊信息。

凱撒密碼

由古代密碼演變而來的凱撒密碼。相傳凱撒大帝為了防止敵人竊取信息,就使用加密的方式傳遞信息。那么當時的加密方式非常的簡單,就是對二十幾個羅馬字母建立一張對照表,將明文對應成為密文。那么這種方式其實持續了很久。甚至在二戰時期,日本的電報加密就是采用的這種原始加密方式。(更多內容推薦大家閱讀吳軍老師《數學之美》)

凱撒密碼

早期的密碼學一直沒有什么改進,幾乎都是根據經驗慢慢發展的。直到20世紀中葉,密碼學的發展進入了”快車道“。由香農發表的《秘密體制的通信理論》一文,標志著加密算法的重心轉移往應用數學上的轉移。于是,逐漸衍生出了當今重要的三類加密算法:非對稱加密對稱加密以及哈希算法(當然HASH嚴格說不是加密算法,但由于其不可逆性,已成為加密算法中的一個重要構成部分)。

1976年前

這段時間,所有的加密方式都是同一種模式:加密、解密使用同一種算法。加密和解密的規則(密鑰)必須雙方都知道。那么它的傳遞就成為了最大的隱患。這種加密方式被稱為對稱加密算法

1976年

正是因為對稱加密算法盛行(非對稱那個時候還沒有出現,但有些瘋狂的數學家已經開始構思這種方案,但并未成功)。人們為了更好的保護密鑰而絞盡腦汁。直到1976年,兩位美國計算機學家。迪菲(W.Diffie)、赫爾曼( M.Hellman ) 提出了一種嶄新構思,可以在不直接傳遞密鑰的情況下,完成密鑰交換。這被稱為“迪菲赫爾曼密鑰交換”算法。也正是因為這個算法的產生!人類終于可以實現非對稱加密了。那么我們一起來看看這個算法的數學原理。

牛人

由歐拉函數開始

在討論迪菲赫爾曼密鑰交換算法之前,我們先了解幾個數學知識。并做一些公式的轉換。這樣你才能更好的體會到迪菲赫爾曼密鑰交換算法它到底能發揮多么神奇的作用。

歐拉函數

什么是歐拉函數?先思考下面的問題。
思考
任意給定正整數n,請問在小于等于n的正整數之中,有多少個與n構成互質關系?

關于互質關系
如果兩個正整數,除了1以外,沒有其他公因數,我們就稱這兩個數是互質關系(coprime)。

計算這個值的方式叫做歐拉函數,使用:Φ(n)表示
如:

  • 計算8的歐拉函數,和8互質的 1、2、3、4、5、6、7、8
    φ(8) = 4
  • 計算7的歐拉函數,和7互質的 1、2、3、4、5、6、7
    φ(7) = 6
  • 計算56的歐拉函數
    φ(56) = φ(8) * φ(7) = 4 * 6 = 24

現在你會發現,并不是所有的歐拉函數都可以口算出來,有些甚至計算機都算不出來。當然你也發現了φ(56)似乎有些特殊。對了!歐拉函數有些特點是必須要知道的!
歐拉函數特點

  • 當n是質數的時候,φ(n)=n-1。
  • 如果n可以分解成兩個互質的整數之積,如n=AB則:
    φ(A
    B)=φ(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、根據歐拉定理


歐拉定理

2、由于1^k ≡ 1,等號左右兩邊都來個k次方


等式轉換2

3、由于1* m ≡ m,等號左右兩邊都乘上m


等式轉換3

接下來,我們還需要進行等式轉換。那么等式轉換4的前提是 模反元素

模反元素
如果兩個正整數e和x互質,那么一定可以找到整數d,使得 ed-1 被x整除。
那么d就是e對于x的模反元素
說白了就是

d是模反元素

這個模反元素的等式也可以進一步轉換,因為e*d 一定是x的倍數加1。所以如下:
等式轉換

那么千辛萬苦!我們通過多次的等式轉換。終于可以將這兩個等式進行合并了!如下:


等式終極轉換

這個等式成立有一個前提!就是關于模反元素的。說白了就是當整數e和φ(n)互質!一定有一個整數d是e相對于φ(n)的模反元素。
我們可以測試一下。
m 4
n 15
φ(n) 8
e 如果取值為3
d 可以為 11、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 。因為沒有私密數據13、15所以它沒法得到結果10.

那么這里可能一眼看過去不好理解!對吧!!
為什么 6的13次方會和12的15次方得到一樣的結果呢?
因為這就是規律!! 可以用小一點的數字測試一下!!
3^3 mod 17 = 10
10 ^ 2 mod 17 = 3 ^ 3 ^ 2 mod 17 結果都是15 !!

迪菲赫爾曼密鑰交換最核心的地方就在于這個規律!

迪菲赫爾曼密鑰交換

RSA的誕生

一張圖看懂一切

以上就是RSA的數學原理,關于RSA的運用后面再慢慢闡述。本人才疏學淺,如果有地方寫得不對,請留言指出。也歡迎大家留言交流。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容