RSA算法數(shù)學(xué)原理(摘錄)

RSA加密算法是最常用的非對稱加密算法溢谤,CFCA在證書服務(wù)中離不了它。但是有不少新來的同事對它不太了解,恰好看到一本書中作者用實例對它進行了簡化而生動的描述尽爆,使得高深的數(shù)學(xué)理論能夠被容易地理解抬伺。我們經(jīng)過整理和改寫特別推薦給大家閱讀螟够,希望能夠?qū)r間緊張但是又想了解它的同事有所幫助。

RSA是第一個比較完善的公開密鑰算法,它既能用于加密妓笙,也能用于數(shù)字簽名若河。RSA以它的三個發(fā)明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,這個算法經(jīng)受住了多年深入的密碼分析寞宫,雖然密碼分析者既不能證明也不能否定RSA的安全性萧福,但這恰恰說明該算法有一定的可信性,目前它已經(jīng)成為最流行的公開密鑰算法辈赋。

RSA的安全基于大數(shù)分解的難度鲫忍。其公鑰和私鑰是一對大素數(shù)(100到200位十進制數(shù)或更大)的函數(shù)。從一個公鑰和密文恢復(fù)出明文的難度炭庙,等價于分解兩個大素數(shù)之積(這是公認(rèn)的數(shù)學(xué)難題)饲窿。

RSA的公鑰、私鑰的組成焕蹄,以及加密逾雄、解密的公式可見于下表:

在沒有正式講解RSA加密算法以前,讓我們先復(fù)習(xí)一下數(shù)學(xué)上的幾個基本概念腻脏,它們在后面的介紹中要用到:

一鸦泳、 什么是“素數(shù)”?

素數(shù)是這樣的整數(shù)永品,它除了能表示為它自己和1的乘積以外做鹰,不能表示為任何其它兩個整數(shù)的乘積。例如鼎姐,15=3*5钾麸,所以15不是素數(shù);又如炕桨,12=6*2=4*3饭尝,所以12也不是素數(shù)。另一方面献宫,13除了等于13*1以外钥平,不能表示為其它任何兩個整數(shù)的乘積,所以13是一個素數(shù)姊途。素數(shù)也稱為“質(zhì)數(shù)”涉瘾。

二、什么是“互質(zhì)數(shù)”(或“互素數(shù)”)捷兰?

小學(xué)數(shù)學(xué)教材對互質(zhì)數(shù)是這樣定義的:“公約數(shù)只有1的兩個數(shù)立叛,叫做互質(zhì)數(shù)〖叛常”這里所說的“兩個數(shù)”是指自然數(shù)囚巴。

判別方法主要有以下幾種(不限于此):

(1)兩個質(zhì)數(shù)一定是互質(zhì)數(shù)。例如,2與7彤叉、13與19庶柿。

(2)一個質(zhì)數(shù)如果不能整除另一個合數(shù),這兩個數(shù)為互質(zhì)數(shù)秽浇。例如浮庐,3與10登舞、5與 26夷陋。

(3)1不是質(zhì)數(shù)也不是合數(shù),它和任何一個自然數(shù)在一起都是互質(zhì)數(shù)酥夭。如1和9908斑举。

(4)相鄰的兩個自然數(shù)是互質(zhì)數(shù)搅轿。如 15與 16。

(5)相鄰的兩個奇數(shù)是互質(zhì)數(shù)富玷。如 49與 51璧坟。

(6)大數(shù)是質(zhì)數(shù)的兩個數(shù)是互質(zhì)數(shù)。如97與88赎懦。

(7)小數(shù)是質(zhì)數(shù)雀鹃,大數(shù)不是小數(shù)的倍數(shù)的兩個數(shù)是互質(zhì)數(shù)。如 7和 16励两。

(8)兩個數(shù)都是合數(shù)(二數(shù)差又較大)黎茎,小數(shù)所有的質(zhì)因數(shù),都不是大數(shù)的約數(shù)当悔,這兩個數(shù)是互質(zhì)數(shù)傅瞻。如357與715,357=3×7×17盲憎,而3俭正、7和17都不是715的約數(shù),這兩個數(shù)為互質(zhì)數(shù)焙畔。等等。

三串远、什么是模指數(shù)運算宏多?

指數(shù)運算誰都懂,不必說了澡罚,先說說模運算伸但。模運算是整數(shù)運算,有一個整數(shù)m留搔,以n為模做模運算更胖,即m mod n。怎樣做呢?讓m去被n整除却妨,只取所得的余數(shù)作為結(jié)果饵逐,就叫做模運算。例如彪标,10 mod 3=1倍权;26 mod 6=2;28 mod 2 =0等等捞烟。

模指數(shù)運算就是先做指數(shù)運算薄声,取其結(jié)果再做模運算。如

好题画,現(xiàn)在開始正式講解RSA加密算法默辨。

算法描述:

(1)選擇一對不同的、足夠大的素數(shù)p苍息,q缩幸。

(2)計算n=pq。

(3)計算f(n)=(p-1)(q-1)档叔,同時對p, q嚴(yán)加保密桌粉,不讓任何人知道。

(4)找一個與f(n)互質(zhì)的數(shù)e衙四,且1

(5)計算d铃肯,使得de≡1 mod f(n)。這個公式也可以表達為d ≡e-1 mod f(n)

這里要解釋一下传蹈,≡是數(shù)論中表示同余的符號押逼。公式中,≡符號的左邊必須和符號右邊同余惦界,也就是兩邊模運算結(jié)果相同挑格。顯而易見,不管f(n)取什么值沾歪,符號右邊1 mod f(n)的結(jié)果都等于1漂彤;符號的左邊d與e的乘積做模運算后的結(jié)果也必須等于1。這就需要計算出d的值灾搏,讓這個同余等式能夠成立挫望。

(6)公鑰KU=(e,n),私鑰KR=(d,n)狂窑。

(7)加密時媳板,先將明文變換成0至n-1的一個整數(shù)M。若明文較長泉哈,可先分割成適當(dāng)?shù)慕M蛉幸,然后再進行交換破讨。設(shè)密文為C,則加密過程為:

(8)解密過程為:

實例描述:

在這篇科普小文章里奕纫,不可能對RSA算法的正確性作嚴(yán)格的數(shù)學(xué)證明提陶,但我們可以通過一個簡單的例子來理解RSA的工作原理。為了便于計算若锁。在以下實例中只選取小數(shù)值的素數(shù)p,q,以及e搁骑,假設(shè)用戶A需要將明文“key”通過RSA加密后傳遞給用戶B,過程如下:

(1)設(shè)計公私密鑰(e,n)和(d,n)又固。

令p=3仲器,q=11,得出n=p×q=3×11=33仰冠;f(n)=(p-1)(q-1)=2×10=20乏冀;取e=3,(3與20互質(zhì))則e×d≡1 mod f(n)洋只,即3×d≡1 mod 20辆沦。

d怎樣取值呢?可以用試算的辦法來尋找识虚。試算結(jié)果見下表:

通過試算我們找到肢扯,當(dāng)d=7時,e×d≡1 mod f(n)同余等式成立担锤。因此蔚晨,可令d=7。從而我們可以設(shè)計出一對公私密鑰肛循,加密密鑰(公鑰)為:KU =(e,n)=(3,33)铭腕,解密密鑰(私鑰)為:KR =(d,n)=(7,33)。

(2)英文數(shù)字化多糠。

將明文信息數(shù)字化累舷,并將每塊兩個數(shù)字分組。假定明文英文字母編碼表為按字母順序排列數(shù)值夹孔,即:

則得到分組后的key的明文信息為:11被盈,05,25搭伤。

(3)明文加密

用戶加密密鑰(3,33) 將數(shù)字化明文分組信息加密成密文害捕。由C≡Me(mod n)得:

因此,得到相應(yīng)的密文信息為:11闷畸,31,16吞滞。

4)密文解密佑菩。

用戶B收到密文盾沫,若將其解密,只需要計算

殿漠,即:

用戶B得到明文信息為:11赴精,05,25绞幌。根據(jù)上面的編碼表將其轉(zhuǎn)換為英文蕾哟,我們又得到了恢復(fù)后的原文“key”。

你看莲蜘,它的原理就可以這么簡單地解釋谭确!

當(dāng)然,實際運用要比這復(fù)雜得多票渠,由于RSA算法的公鑰私鑰的長度(模長度)要到1024位甚至2048位才能保證安全逐哈,因此,p问顷、q昂秃、e的選取、公鑰私鑰的生成杜窄,加密解密模指數(shù)運算都有一定的計算程序肠骆,需要仰仗計算機高速完成。

最后簡單談?wù)凴SA的安全性

首先塞耕,我們來探討為什么RSA密碼難于破解蚀腿?

在RSA密碼應(yīng)用中,公鑰KU是被公開的荷科,即e和n的數(shù)值可以被第三方竊聽者得到唯咬。破解RSA密碼的問題就是從已知的e和n的數(shù)值(n等于pq),想法求出d的數(shù)值畏浆,這樣就可以得到私鑰來破解密文胆胰。從上文中的公式:d ≡e-1 (mod((p-1)(q-1)))或de≡1 (mod((p-1)(q-1))) 我們可以看出。密碼破解的實質(zhì)問題是:從Pq的數(shù)值刻获,去求出(p-1)和(q-1)蜀涨。換句話說,只要求出p和q的值蝎毡,我們就能求出d的值而得到私鑰厚柳。

當(dāng)p和q是一個大素數(shù)的時候,從它們的積pq去分解因子p和q沐兵,這是一個公認(rèn)的數(shù)學(xué)難題别垮。比如當(dāng)pq大到1024位時,迄今為止還沒有人能夠利用任何計算工具去完成分解因子的任務(wù)扎谎。因此碳想,RSA從提出到現(xiàn)在已近二十年烧董,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受胧奔,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一逊移。

然而,雖然RSA的安全性依賴于大數(shù)的因子分解龙填,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價胳泉。即RSA的重大缺陷是無法從理論上把握它的保密性能如何。

此外岩遗,RSA的缺點還有:A)產(chǎn)生密鑰很麻煩扇商,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密喘先。B)分組長度太大钳吟,為保證安全性,n 至少也要 600 bits 以上窘拯,使運算代價很高红且,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級涤姊;且隨著大數(shù)分解技術(shù)的發(fā)展暇番,這個長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化思喊。因此壁酬,使用RSA只能加密少量數(shù)據(jù),大量的數(shù)據(jù)加密還要靠對稱密碼算法恨课。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舆乔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子剂公,更是在濱河造成了極大的恐慌希俩,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纲辽,死亡現(xiàn)場離奇詭異颜武,居然都是意外死亡,警方通過查閱死者的電腦和手機拖吼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門鳞上,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吊档,你說我怎么就攤上這事篙议。” “怎么了怠硼?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵涡上,是天一觀的道長趾断。 經(jīng)常有香客問我,道長吩愧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任增显,我火速辦了婚禮雁佳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘同云。我一直安慰自己糖权,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布炸站。 她就那樣靜靜地躺著星澳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旱易。 梳的紋絲不亂的頭發(fā)上禁偎,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音阀坏,去河邊找鬼如暖。 笑死,一個胖子當(dāng)著我的面吹牛忌堂,可吹牛的內(nèi)容都是我干的盒至。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼士修,長吁一口氣:“原來是場噩夢啊……” “哼枷遂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棋嘲,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤酒唉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后封字,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黔州,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年阔籽,在試婚紗的時候發(fā)現(xiàn)自己被綠了流妻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡笆制,死狀恐怖绅这,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情在辆,我是刑警寧澤证薇,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布度苔,位于F島的核電站,受9級特大地震影響浑度,放射性物質(zhì)發(fā)生泄漏寇窑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一箩张、第九天 我趴在偏房一處隱蔽的房頂上張望甩骏。 院中可真熱鬧,春花似錦先慷、人聲如沸饮笛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽福青。三九已至,卻和暖如春脓诡,著一層夾襖步出監(jiān)牢的瞬間无午,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工誉券, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留指厌,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓踊跟,卻偏偏與公主長得像踩验,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子商玫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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

  • RSA是第一個比較完善的公開密鑰算法箕憾,它既能用于加密,也能用于數(shù)字簽名拳昌。RSA以它的三個發(fā)明者Ron Rivest...
    暗物質(zhì)閱讀 1,682評論 0 0
  • 姓名:于川皓 學(xué)號:16140210089 轉(zhuǎn)載自:https://baike.baidu.com/item/RS...
    道無涯_cc76閱讀 2,533評論 0 1
  • 必備數(shù)學(xué)知識 RSA加密算法中袭异,只用到素數(shù)、互質(zhì)數(shù)炬藤、指數(shù)運算御铃、模運算等幾個簡單的數(shù)學(xué)知識。所以沈矿,我們也需要了解這幾...
    依然飯?zhí)?/span>閱讀 845評論 0 0
  • MD5的全稱是Message-Digest Algorithm 5上真,在90年代初由MIT的計算機科學(xué)實驗室和RSA...
    沒能唱給你的歌曲閱讀 944評論 2 6
  • RSA算法它是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作羹膳,也很流行睡互。算法的名字以發(fā)明者的名字命...
    火狼o閱讀 645評論 0 1