RSA加密

RSA加密是非對稱加密凛澎,由瑞弗斯特(Ron Rivest)薄翅,沙米爾(Adi Shamir)和阿德來門(Len Adleeman)1978年提出的则吟,它的基礎(chǔ)是歐拉定理北秽,安全性依賴于大數(shù)因子分解的困難性。整個RSA加密運算,要了解一點數(shù)論的基礎(chǔ)朗恳。下面在講解的時候湿颅,需要用到的數(shù)學(xué)知識,我都會在一旁做簡單標(biāo)注粥诫。此文主要包括:

  • RSA 加密算法
  • RSA 加解密舉例
  • RSA 加密的安全性
  • RSA 加密算法的正確性證明

RSA加密算法

取兩個大素數(shù) pq (p ≠ q)油航,記 n = pq?(n) = (p-1)(q-1)怀浆。選擇正整數(shù)
w谊囚,w?(n) 互素,設(shè) dw 的模 ?(n) 逆执赡,即 dw ≡ 1(mod ?(n))镰踏。
RSA密碼算法如下:首先將明文數(shù)字化,后把明文分成若干段沙合,每一個明文段的值小于 n奠伪,對每一個明文段 m
加密算法 c = E(m) = m^w mod n
解密算法 D(c) = c^d mod n
其中加密密鑰 wn 是公開的 p q ?(n)d 是保密的首懈。

  • 素數(shù):只能被±1±自己整除的數(shù)绊率,比如2, 3, 5, 7, 11...
  • 兩數(shù)互素:除±1之外,沒有其他的公因子究履,比如2 ~ 3滤否,7 ~ 11...
  • ?(n):這個是歐拉函數(shù),是指小于 n 且與 n 互素的正整數(shù)的個數(shù)最仑,習(xí)慣上 ?(1) = 1藐俺。算法中用到的 ?(n) = (p-1)(q-1)pq 為素數(shù)盯仪,是歐拉函數(shù)的一個特殊情況紊搪。特殊情況還有 n 為素數(shù)時,?(n) = n - 1全景。
  • n同余:形如a ≡ b(mod n) 這樣的算式稱為a bn 同余耀石,即 a % n = b % n
  • 模逆:如果 ab ≡ 1(mod m),即 ab % m = 1 爸黄,則稱 ba 的模 m 逆滞伟;由定義可知,a 的模 m 逆就是方程 ax ≡ 1(mod m) 的解炕贵,其中形如 ax ≡ c(mod m) 的方程稱一次同余方程梆奈。

RSA加解密舉例

A B 兩人通信,A要傳遞信息給 B称开,這時 B 公布出來加密的公鑰亩钟,A 以此將信息加密乓梨,B收到密文以后用私鑰解密,比如:
公鑰w = 13, n = 2537
私鑰p = 43, q = 59, ?(n) = 2436, d = 937(根據(jù) w 和 ?(n) 求出)
A 要傳遞的明文信息數(shù)字化之后為:m = 2106清酥,用公鑰加密為密文:c = 2106^13 % 2537 = 2321
B 收到密文 c = 2321 后扶镀,用私鑰解密為明文:m = 2321^937 % 2537 = 2106

上面加解密都要涉及到模冪乘運算形如:a^b(mod n)。這兒可以利用模運算的一個性質(zhì):(a*b) % n = [(a % n) * (b % n)] % n
比如2106^13 % 2537 = [(2106 % 2537)(2106^4 % 2537)(2106^8 % 2537)] % 2537 = [(-431) * (-988) * (-601) % 2537] = 2321
求解過程可以使用遞歸求解的方式焰轻,2106^2 % 2537 可以根據(jù) 2106 % 2537 來求臭觉,2106^4 % 2537 可以根據(jù) 2106^2 % 2537 來求。比如 2106^4 % 2537 = [(2106^2 % 2537)(2106^2 % 2537)] % 2537 = (560 * 560) % 2537 = -988

RSA加密的安全性

開頭提到辱志,RSA加密的安全性依賴于大數(shù)因子分解的困難性蝠筑。因為 n 是公鑰公布出來的,如上例中 n = 2537 很容易就可以因為分解揩懒,求得 p = 43 q = 59什乙,繼而求出 ?(n) = 2436, d = 937,這樣就攻破了旭从。但是在實際中稳强,n 選的值一般為 1024位 的二進制整數(shù),這么大的一個整數(shù)因式分解以目前的技術(shù)水平是不可能因式分解的和悦,對加密要求更高的行為,n 則選為2048位的二進制整數(shù)渠缕。

RSA加密算法的正確性證明

正確性證明需要用到費馬小定理歐拉定理鸽素,表述如下

  • 費馬小定理:若 a p 互素,則 a^(p-1) ≡ 1(mod p)亦鳞。另一種表示形式 a^p ≡ a(mod p)馍忽,這種形式則不要求 a p 互素。
  • 歐拉定理:若 a n 互素燕差,則 a^?(n) ≡ 1(mod n)遭笋。另一種表示形式 a^?(n) ≡ a(mod n),這種形式則不要求 a n 互素徒探。

因為m < n瓦呼,故解密算法 D(c) = c^d mod n ? c^d ≡ m(mod n),又因為加密算法 c = m^w mod n测暗,故 c^d ≡ m(mod n) ? m^dw ≡ m(mod n)央串。又因為 dw ≡ 1(mod ?(n)),所以存在整數(shù) k 使得 dw = k?(n) + 1碗啄。最終轉(zhuǎn)換為證明:m^(k?(n) + 1) ≡ m(mod n)质和,其中k為整數(shù)。關(guān)于此證明可以分兩種情況討論:

mn 互素

由歐拉定理 m^?(n) ≡ 1(mod n) ? m^k?(n) ≡ 1(mod n) ? m^(k?(n) + 1) ≡ m(mod n) 命題得證

mn 不互素

由于 m < n稚字,n = pq饲宿,pq 是素數(shù)且 p ≠ q厦酬,故 m 必含 pq 中的一個為因子,且只含其中的一個為因子瘫想。設(shè) m = cp仗阅,由費馬小定理 m^(q - 1) ≡ 1(mod q) ? m^k?(n) ≡ m^(k(p-1)(q-1)) ≡ 1^k(p-1) ≡ 1(mod q),從而存在整數(shù) h 使得 m^k?(n) = hq + 1殿托,兩邊同乘于 m 得霹菊,m^(k?(n) + 1) = mhq + m = cphq + m = hcn + m ? m^(k?(n) + 1) ≡ m(mod n) 命題得證

總結(jié)

RSA加密,整個過程的計算量是很大的支竹,只有特別敏感的信息才使用RSA加密旋廷。此文牽扯很多的數(shù)論的知識,也沒有講解的很詳細礼搁,只是用到的地方饶碘,直接給出了結(jié)論,其他一些馒吴,比如歐拉函數(shù)的通用公式扎运,一次同余方程求解方法,費馬小定理和歐拉定理的證明過程饮戳,計算模冪乘運算的通用公式豪治,都沒有做過多的詳解,因為這些不是此文的重點扯罐,如果你對這些感興趣负拟,可以參考下面我列出來的這本參考書,或者和我交流溝通歹河。這是一系列文章的其中一篇掩浙,你可以在這兒Encode & Decode集序找到他其他的兄弟。

參考

  • 屈婉玲,耿素云,張立昂. 離散數(shù)學(xué):高等教育出版社
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秸歧,一起剝皮案震驚了整個濱河市厨姚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌键菱,老刑警劉巖谬墙,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纱耻,居然都是意外死亡芭梯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門弄喘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玖喘,“玉大人,你說我怎么就攤上這事蘑志±勰危” “怎么了贬派?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長澎媒。 經(jīng)常有香客問我搞乏,道長,這世上最難降的妖魔是什么戒努? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任请敦,我火速辦了婚禮,結(jié)果婚禮上储玫,老公的妹妹穿的比我還像新娘侍筛。我一直安慰自己,他們只是感情好撒穷,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布匣椰。 她就那樣靜靜地躺著,像睡著了一般端礼。 火紅的嫁衣襯著肌膚如雪禽笑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天蛤奥,我揣著相機與錄音佳镜,去河邊找鬼。 笑死凡桥,一個胖子當(dāng)著我的面吹牛邀杏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唬血,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唤崭!你這毒婦竟也來了拷恨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤谢肾,失蹤者是張志新(化名)和其女友劉穎腕侄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦疏,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡冕杠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了酸茴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片分预。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖薪捍,靈堂內(nèi)的尸體忽然破棺而出笼痹,到底是詐尸還是另有隱情配喳,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布凳干,位于F島的核電站晴裹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏救赐。R本人自食惡果不足惜涧团,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望经磅。 院中可真熱鬧泌绣,春花似錦、人聲如沸馋贤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽配乓。三九已至仿滔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間犹芹,已是汗流浹背崎页。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腰埂,地道東北人飒焦。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像屿笼,于是被迫代替她去往敵國和親牺荠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 這是去年12月在CSDN寫的一篇加密算法文章 現(xiàn)在決定在簡書寫博客 移植過來方便復(fù)習(xí)再理解驴一。 最近算法課老師要求小...
    icecrea閱讀 1,308評論 1 1
  • 必備數(shù)學(xué)知識 RSA加密算法中休雌,只用到素數(shù)、互質(zhì)數(shù)肝断、指數(shù)運算杈曲、模運算等幾個簡單的數(shù)學(xué)知識。所以胸懈,我們也需要了解這幾...
    依然飯?zhí)?/span>閱讀 858評論 0 0
  • RSA是第一個比較完善的公開密鑰算法担扑,它既能用于加密,也能用于數(shù)字簽名趣钱。RSA以它的三個發(fā)明者Ron Rivest...
    暗物質(zhì)閱讀 1,708評論 0 0
  • 生成密鑰隨機選擇兩個不相等的質(zhì)數(shù)p和q涌献。例:61和53。(實際應(yīng)用中羔挡,這兩個質(zhì)數(shù)越大洁奈,就越難破解间唉。)計算p和q的乘...
    未知代碼閱讀 544評論 0 1
  • 3.4 CSS3圓角邊框?qū)傩?在web頁面上圓角效果很常見。圓角給頁面增添曲線之美利术,讓頁面不那么生硬呈野,但是為了設(shè)計...
    白小蟲閱讀 471評論 0 0