密碼學(xué) - RSA

何為密碼學(xué)驾讲?

這里的密碼蚊伞,不是我們的登錄密碼。密碼學(xué)是指研究信息加密吮铭,破解密碼的技術(shù)科學(xué)时迫。密碼學(xué)的起源可追溯到2000年前。而當(dāng)今的密碼學(xué)是以數(shù)學(xué)為基礎(chǔ)的谓晌。

*在1976年以前掠拳,所有的加密方法都是同一種模式:加密、解密使用同一種算法纸肉。在交互數(shù)據(jù)的時候溺欧,彼此通信的雙方就必須將規(guī)則告訴對方,否則沒法解密柏肪。那么加密和解密的規(guī)則(簡稱密鑰)姐刁,它保護(hù)就顯得尤其重要。傳遞密鑰就成為了最大的隱患烦味。這種加密方式被成為對稱加密算法(symmetric encryption algorithm)

*1976年聂使,兩位美國計算機學(xué)家迪菲(W.Diffie)、赫爾曼(M.Hellman)提出了一種嶄新構(gòu)思谬俄,可以在不直接傳遞密鑰的情況下岩遗,完成密鑰交換。這被稱為“迪菲赫爾曼密鑰交換”算法凤瘦。開創(chuàng)了密碼學(xué)研究的新方向

*1977年三位麻省理工學(xué)院的數(shù)學(xué)家 羅納德·李維斯特(Ron Rivest)宿礁、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起設(shè)計了一種算法,可以實現(xiàn)非對稱加密蔬芥。這個算法用他們?nèi)齻€人的名字命名梆靖,叫做RSA算法

RSA的數(shù)學(xué)原理

在上世紀(jì)70年代出現(xiàn)了一種加密算法笔诵,擁有兩個密鑰:公開密鑰簡稱公鑰(publickey)和私有密鑰簡稱私鑰(privatekey)返吻。公鑰加密,私鑰解密乎婿;私鑰加密测僵,公鑰解密。這個加密算法就是偉大的RSA。

離散對數(shù)問題

整數(shù)中捍靠,離散對數(shù)(英語:Discrete logarithm)是一種基于同余運算和原根的一種對數(shù)運算沐旨。

而在實數(shù)中對數(shù)的定義\log_b a 是指對于給定的a和b。有一個x榨婆,使得b^x = a 磁携。相同地在任何群G中可為所有整數(shù)k定義一個冪數(shù)為,而離散對數(shù)\log_b a 是指使得b^x=a 的整數(shù)k良风。

離散對數(shù)在一些特殊情況下可以快速計算谊迄。然而,通常沒有具非常效率的方法來計算它們烟央。公鑰密碼學(xué)中幾個重要算法的基礎(chǔ)统诺,是假設(shè)尋找離散對數(shù)的問題解,在仔細(xì)選擇過的群中疑俭,并不存在有效率的求解算法篙议。

定義

當(dāng)模n有原根時,設(shè)l為模m的一個原根怠硼,則:

x\equiv l^k(mod \ m) 時:\ln d_{l} x\equiv k(mod \ \Phi (m))

此處的\ln d_{l}x 為x以整數(shù)l為底,模\Phi (m)時的離散對數(shù)值移怯。

性質(zhì)

\ln d_{l}xy \equiv  \ln d_{l}x + \ln d_{l}y \ (mod \ \Phi(m))

\ln d_{l}x^y \equiv y\ln d_{l}x \ (mod \ \Phi(m))

歐拉函數(shù)(\Phi

對于正整數(shù)n香璃,歐拉函數(shù)是小于或等于n的正整數(shù)中于n互質(zhì)的數(shù)的數(shù)目。

特點

*當(dāng)n是質(zhì)數(shù)的時候舟误,\Phi(n)=n-1

*如果n可以分解為兩個互質(zhì)的整數(shù)之積葡秒,如n=A*B?則?\Phi(A*B)=\Phi(A)*\Phi(B)

根據(jù)這兩點,可得:

如果N是兩個質(zhì)數(shù)P1和P2的乘積嵌溢,則\Phi(N)=\Phi(P1)*\Phi(P2)=(P1-1)*(P2-1)

歐拉定理

如果兩個整數(shù)m和n互質(zhì)眯牧,那么m的\Phi(n)次方減1,可以被n整除

歐拉定理

費馬小定理

歐拉定理的特殊情況:如果兩個正整數(shù)m和n互質(zhì)赖草,而且n為質(zhì)數(shù)学少!那么\Phi(n)結(jié)果就是n-1

費馬小定理

公式轉(zhuǎn)換

公式轉(zhuǎn)換

RSA的誕生

迪菲赫爾曼密鑰交換(Diffie–Hellman–Merkle key exchange)


迪菲赫爾曼密鑰交換
RSA原理

RSA算法

m^e \ mod \ n = c \ 加密 \\c^d \ mod \ n = m \ 解密 \\公鑰:n和e;私鑰:n和d \\明文:m秧骑;密文:c

說明:

1版确、n會非常大,長度一般為1024個二進(jìn)制位乎折。

2绒疗、由于需要求出\Phi(n),所以根據(jù)歐拉函數(shù)特點骂澄,最簡單的方式n由兩個質(zhì)數(shù)相乘得到:質(zhì)數(shù)P1吓蘑,P2【\Phi(n)=(p1-1)*(p2-1)

3、最終由\Phi(n)得到e和d坟冲。

總共生成6個數(shù)字:p1磨镶,p2溃蔫,n,\Phi (n)棋嘲,e酒唉,d

安全:

除了公鑰n和e,其余4個數(shù)字是不公開的沸移。

目前破解RSA得到d的方式:

1痪伦、想要求出私鑰d。由于e*d=\Phi (n)*k+1雹锣。要知道e和\Phi(n) 网沾。

2、e是知道的蕊爵,但是要求得\Phi (n)辉哥,就必須知道P1和P2。

3攒射、由于n = p1 * p2醋旦。只有將n進(jìn)行因數(shù)分解才能算出。

RSA文件密鑰創(chuàng)建

在Mac的終端下会放,可以直接操作OpenSSL進(jìn)行RSA命令的執(zhí)行饲齐。

Mac系統(tǒng)內(nèi)置的OpenSSL(開源加密庫)

常用指令

genrsa - 生成并輸入一個RSA私鑰

rsautl - 使用RSA密鑰進(jìn)行加密,解密咧最,簽名和驗證等運算

rsa - 處理RSA密鑰的格式轉(zhuǎn)換問題

創(chuàng)建密鑰

生成RSA私鑰捂人,私鑰長度為1024bit

$openssl genrsa -out private.pem 1024

從私鑰提取公鑰

$openssl rsa -in private.pem -putout -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

通過私鑰加密

$openssl rsautl -sign -in message.txt -inkey private.pem -out enc.txt

通過公鑰解密

$openssl rsautl -verify -in -enc.txt -inkey public.pem -pubin -out dec.txt

創(chuàng)建iOS開發(fā)使用的RSA文件(終端生成)

創(chuàng)建一個.csr文件(用于請求證書的文件)

$openssl req -new -key private.pem -out rsacert.csr

對RSA的private.pem進(jìn)行認(rèn)證

$openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt

生成p12證書(私鑰)

$openssl pkcs12 -export -out p.12 -inkey private.pem -in rsacert.crt

生成der文件(公鑰)

$openssl x509 -outform der -in rsacert.crt -out rsacert.der

RSA特點

相對安全(非對稱加密,私鑰不用傳遞)

加密效率低

加密數(shù)據(jù)小

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矢沿,一起剝皮案震驚了整個濱河市滥搭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捣鲸,老刑警劉巖瑟匆,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異栽惶,居然都是意外死亡脓诡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門媒役,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祝谚,“玉大人,你說我怎么就攤上這事酣衷〗还撸” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長席爽。 經(jīng)常有香客問我意荤,道長,這世上最難降的妖魔是什么只锻? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任玖像,我火速辦了婚禮,結(jié)果婚禮上齐饮,老公的妹妹穿的比我還像新娘捐寥。我一直安慰自己,他們只是感情好祖驱,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布握恳。 她就那樣靜靜地躺著,像睡著了一般捺僻。 火紅的嫁衣襯著肌膚如雪乡洼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天匕坯,我揣著相機與錄音束昵,去河邊找鬼。 笑死葛峻,一個胖子當(dāng)著我的面吹牛锹雏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泞歉,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匿辩!你這毒婦竟也來了腰耙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤铲球,失蹤者是張志新(化名)和其女友劉穎挺庞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稼病,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡选侨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了然走。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片援制。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芍瑞,靈堂內(nèi)的尸體忽然破棺而出晨仑,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布洪己,位于F島的核電站妥凳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏答捕。R本人自食惡果不足惜逝钥,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拱镐。 院中可真熱鬧艘款,春花似錦、人聲如沸痢站。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阵难。三九已至岳枷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呜叫,已是汗流浹背空繁。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朱庆,地道東北人盛泡。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像娱颊,于是被迫代替她去往敵國和親傲诵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349