RSA加密原理及終端命令介紹

RSA算法簡單介紹:

RSA算法是非對稱加密算法,在1977年被羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的,故取名為RSA非對稱加密算法,而今在計算機數據加密領域以及電子商業中廣泛使用.

致敬三位偉大的數學家

圖片來自百度百科

RSA數學原理:

提問:

設想我們如果有一個正整數n,有多少個數與n互為互質關系?

tag:什么叫互質關系?

互質關系(即兩個數,除了1以外,沒有其他的公約數,那么我們就稱之為這兩個數是互質關系.例如:3和8是互質關系,而2和8就不是.)

φ(n)與歐拉函數:

而求n的互質關系數的個數的方式(也就是上述的提問),我們就稱為歐拉函數.通常我們用φ(n)來表示.

舉例:

φ(8) = 4;(1,3,5,7與8互質)

φ(7) = 6;(1,2,3,4,5,6與7互質)

歐拉函數的特性:

1.如果n本身是一個質數(也就是說n本身除了1和自己不被任何數整除,例如7)

那么φ(n) = n - 1; 比如φ(7) = 7 - 1 = 6;

2.如果n能夠分解成兩個質數(a,b)的乘積(例如15 可以 分解成 3 * 5 ,而3和5是質數)

那么φ(n) = φ(a) * φ(b);

由于a是質數,b也是質數,所以φ(a) = a - 1,φ(b) = b - 1;(根據第一條)

那么我們可以推論得出 φ(n) = (a - 1) * (b - 1);

歐拉定理:

如果兩個正整數m和n互質,那么m的φ(n)次方減去1,可以被n整除.

公式: m^φ(n) % n == 1;

即是m的φ(n)次方模以 n 恒等于1.

例如:3 和 5? 互質,那么 3^φ(5) % 5 == 1.也就是說 3 ^ 4 % 5 == 1;?

費馬小定理:(我一直覺得這個定理是廢話)

歐拉定理的特殊情況:如果兩個正整數m和n互質,而且n為質數!那么φ(n)結果就是n-1。

就是說: m^φ(n) % n == 1,當n是質數的時候 m^φ(n) % n = m^(n - 1) % n == 1.

歐拉定理公式轉換:

由于歐拉定理我們知道:

m^φ(n) % n == 1.

而1^k 還是等于 1. 那么 也就是說?m^φ(n) % n = (m^φ(n) % n)^k = m ^ (k *?φ(n) ) % n == 1.

第一步轉換結果

我們在這個等式基礎上左右乘以m.也就是說?m ^ (k *?φ(n) ) % n =?m ^ (k *?φ(n)? + 1) % n == m.

第二步轉換結果

最終轉換結果我們且先記下,先看下模反元素.

模反元素:

如果兩個正整數e和x互質,那么一定能夠找到一個整數d,使得e * d? - 1可以整除 x.那么也就可以說,d就是e相對于x的模反元素.

我們可以記為:e * d % x == 1.

變換: 既然 e * d % x == 1.那么 e * d == k * x + 1.(k為某個可計算出來的正整數).

舉例:

如 3 和 5 互質 那么 3 * d? = k *? 5 + 1. d 可以為 4, k 為 16.

觀察

e * d = k * x + 1. 等式右邊 的 k * x + 1 跟 歐拉定理公式變化的最后一步 k * φ(n) + 1是一致的.

那么也就可以推論得出:

m ^ (k *?φ(n)? + 1) % n? = m ^ (k * x + 1) % n?= m ^( e * d )? % n == m.

即是:

m ^( e * d )? % n == m.

最終變換公式

這個公式的滿足條件:

首先這個公式里的k * x + 1 被替代成 k * φ(n) + 1.故而x 是這個公式里的φ(n).

所以這個公式:

1.d 要是e 相對于 φ(n) 的模反元素.(所以e也相對于φ(n)互質)

2.m要小于n.

迪菲赫爾曼密鑰交換:

客戶端和服務器分別取一個隨機數13和15

在上圖中,客戶端和服務器約定了一個數17得到它的源根3.分別各隨機出一個值13和15.

1.客戶端通過公式計算得到6發送給服務器.服務器通過公式計算得到值12發送給客戶端.

2.第三方在網絡中竊取到6和12.

3.客戶端得到服務器的數據6.通過6套入公式中得到值10.服務器得到客戶端發送的數據12,套入公式中同樣得到值10.

4.此時信息發送完畢!

交換原理:

回到之前的上圖 客戶端在隨機出13后,通過3 ^ 13 % 17 得到12,此時服務器 接收到12.通過12 ^ 15 % 17 = 10.而服務器 在隨機出15后,通過3 ^ 15 % 17 得到6 發送給客戶端,客戶端拿到6后 通過 6 ^ 13 % 17 同樣也得到10

信息交換

我們可以看到?

客戶端這里計算了 (3 ^ 15? % 17) ^13 %17? = 3 ^ (15 * 13) % 17 = 10.

tag:?(3 ^ 15? % 17)? 是服務器給的

服務器這里計算了 (3 ^ 13? % 17) ^15 %17? = 3 ^ (13 * 15) % 17 = 10.

tag:??(3 ^ 13? % 17)?? 是客戶端給的

信息交換

也就是說之前的客戶端和服務器 將 m ^(e * d) % n 的公式成功拆分成了兩部分:

m ^ e % n = C.(加密)

C ^ d % n = m.(解密)

Nice!! 到這里 我們就可以模擬出一個完整的RSA加解密流程了.

公式說明:

m ^ e % n = C.(加密)

C ^ d % n = m.(解密)

在上述公式中,e和n 是公鑰. d 和 n 是私鑰.C是密文,m是明文.

明文在通過公鑰加密成密文C. 而C通過私鑰解密成明文m.

知道原理后,那么請問我們如果要破解RSA應該怎么做?

如果我們要破解RSA,首先我們掌握的信息有密文C,公鑰e和n.未知的則是私鑰d和n以及明文m.因為n是公鑰中攜帶的 所以我們要知道明文m,首先要知道私鑰的d.已知d是公鑰中的e相對于φ(n)的模反元素,所以要求得d需要知道φ(n).而n我們是已知的,如果要求φ(n),需要將n因式分解將n分解成兩個質數p1,p2通過公式 φ(n) = (p1 - 1)*(p2 - 1).來求出φ(n).最終通過φ(n)找到模反元素私鑰d.

但是事實是,這個n一般的值都特別大,對一個大整數n進行因式分解,計算量相當恐怖,目前人類已經分解的最大整數是232個十進制位,768個二進制位.

而當今我們為了確保信息的安全,采用RSA加密的通常是1024個二進制位或者2048個二進制位.所以相對而言,采用RSA加密的信息一般是安全的.

在MAC下使用終端來演示RSA:

在MacOS系統中一般使用內置OpenSSL(開源密碼庫)來進行終端運行.

常用命令

命令演示:

openssl genrsa -out private.pem 1024.(生成一個1024個二進制位的私鑰)

openssl rsa -in private.pem -pubout -out public.pem.(根據私鑰導出公鑰)

加密:

openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out enc.txt

解密:

openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt

RSA的特性:

由于RSA計算量比較大,所以效率比較低,但是因為公鑰私鑰分開,所以安全系數比較高.

通常我們用RSA加密一些數據量小的文件,如果數據量比較大,那么我們更多的會考慮對稱加密算法比如DES,3DES,AES.

所以我們更多的用RSA加密對稱加密的密鑰或者用于數字簽名.

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

推薦閱讀更多精彩內容

  • 學一點有趣的數論知識 在探究RSA算法的原理之前,我們先來學習一點有趣的數論知識(數學分支之一,主要研究整數的性質...
    24f464006eaf閱讀 2,178評論 0 5
  • 一、RSA的歷史 1976 年以前,所有的加密方法都是同一種模式: (1)甲方選擇某一種加密規則,對信息進行加密;...
    開著保時捷堵你家門口閱讀 2,379評論 0 1
  • 這是去年12月在CSDN寫的一篇加密算法文章 現在決定在簡書寫博客 移植過來方便復習再理解。 最近算法課老師要求小...
    icecrea閱讀 1,316評論 1 1
  • RSA介紹 RSA產生的原因:這要從密碼學的發展史說起,相傳在古羅的凱撒大帝為了防止敵方截獲自己的信息,自己設計了...
    眷卿三世閱讀 766評論 0 0
  • 前言 本文的RSA例子代碼更新在我的github上。 RSA算法是最重要算法之一,它是計算機通信安全的基石,保證了...
    game3108閱讀 11,743評論 2 53