從頭開始HTTPS-兩類密碼體制

從頭開始HTTPS-兩類密碼體制

名詞解釋

明文:經(jīng)過加密之前的信息薄货,一般是人類可直接閱讀的文字。本文公式中使用X表示明文秉馏。

密文:經(jīng)過加密之后的信息,密文對原始信息進行了加密處理后變成了不可讀的信息朋蔫。不可讀指無法還原出原來的信息。本文公式中却汉,使用Y表示密文驯妄。

密鑰:用來對明文進行加密。本文公式中合砂,使用K表示青扔。

E運算: 加密(encrypt)運算

D運算:解密(decrypt)運算

場景:

漕河涇程序員A對張江程序員B說: Hello,World!

本文將圍繞該場景展開,介紹兩類密碼體制的概念以及主要過程翩伪。

1. 對稱密鑰密碼體制

所謂對稱密鑰密碼體制微猖,即加密密鑰與解密密鑰是相同的密碼體制。即明文經(jīng)過密碼加密后形成的密文缘屹,可使用相同的密碼解密為加密之前的明文凛剥。使用公式表示如下

Y=EK(X)
X=DK(Y)
DK(Y)=DK(EK(X)) = X

假設(shè)A向B使用對稱密鑰密碼體制發(fā)送消息,主要過程如下:

  1. A,B協(xié)商出使用英文這個密碼Kab來對消息加密
  2. A使用英文對消息進行加密E轻姿,形成密文Y,即

Y=EKab(X)

  1. B收到密文后犁珠,對密文進行解密計算D,形成明文X踢代,即

X=DKab(Y)

使用對稱密鑰密碼體制進行加密的前提是通信雙方均知道該密鑰盲憎。在該場景中嗅骄,由于A,B均知道英文這個密鑰胳挎,因此,對于不知道該密鑰的人來說溺森,即便獲得了該密文,也無從知曉A跟B說了什么。

2.公鑰密碼體制

公鑰密碼體制使用不同的加密密鑰與解密密鑰获黔。即密文解密所需要的密鑰宾舅,與加密所使用的密鑰不同。
在公鑰密碼體制中炊林,加密密鑰PK(public key姥卢,即公鑰)是公開的,而解密密鑰SK(secret key,即私鑰)是需要保密的渣聚。
假設(shè)A向B使用公鑰密碼體制發(fā)送消息独榴,主要過程如下:

  1. 密鑰對產(chǎn)生器產(chǎn)生接受者B的一對密鑰,加密密鑰PKb和解密密鑰SKb奕枝。B將PKb公開棺榔,是A可以獲得。
  2. 消息發(fā)送者A使用B的加密密鑰PKb對消息進行加密得到要傳輸?shù)拿芪腨隘道,即

Y=EPKb(X)

  1. 消息接收者B使用解密密鑰SKb對密文Y進行解密運算D症歇,得到A發(fā)送過來的明文郎笆。即

X=DSKb(Y)

  • DPKb(Y)≠X。即使用B的加密密鑰不能解密使用B的加密密鑰加密的信息忘晤。
  • 雖然使用計算機可以很容易的產(chǎn)生密鑰對SKb和PKb宛蚓,但從已知的PKb推導(dǎo)出SKb是在計算上不可能的

應(yīng)用案例

iMessage的端到端加密

imessage-graphic.png

過程說明:

  1. user1與user2在啟用iMessage時,生成一對解密密鑰和加密密鑰设塔,解密密鑰在本地保存苍息,加密密鑰上傳至蘋果服務(wù)器。

  2. user1向user2發(fā)送消息時壹置,先向蘋果服務(wù)器請求user2的加密密鑰竞思。獲得后,將消息使用user2的加密密鑰加密后钞护,將密文發(fā)送給蘋果服務(wù)器盖喷。

  3. 蘋果服務(wù)器將消息發(fā)送給user2。user2收到蘋果服務(wù)器發(fā)送過來的密文后难咕,使用本地保存的自己的解密密鑰解密消息课梳,即可獲取明文。

在程序員對話的場景中余佃,A的音色即是公鑰暮刃,只是,在此處并沒有進行對消息本身的加密爆土,而是椭懊,對消息進行簽名,即讓B確認(rèn),這句話確實是A說的步势。而B因為有對A音色的記憶氧猬,此處,對A的消息進行了鑒別坏瘩。

數(shù)字簽名

為了證明書信或文件的真實性盅抚,需要發(fā)送者進行親筆簽名或蓋章。同理倔矾,為了證明計算機網(wǎng)絡(luò)中消息的發(fā)送者的真實性妄均,需要使用數(shù)字簽名。數(shù)字簽名應(yīng)至少具備以下三個特性:

  • 報文鑒別哪自,即接收者能夠核實消息發(fā)送者丰包,也就是說接受者能確認(rèn)該消息確實是消息中聲稱的發(fā)送者發(fā)送的。
  • 報文完整提陶,即接收者能夠核實接收到的消息是完整且未經(jīng)過篡改的烫沙。
  • 不可否認(rèn),即發(fā)送者時候不能抵賴對消息的簽名隙笆。
數(shù)字簽名的實現(xiàn)

A使用自己的解密密鑰SKa對報文X進行D運算锌蓄。將密文傳送給B升筏。B使用A的加密密鑰PKa對收到的密文進行E運算。還原出明文瘸爽。

  • 由于加密密鑰與解密密鑰是成對出現(xiàn)的您访。根據(jù)其中一個并不能計算出另外一個。因此剪决,當(dāng)B使用PKa對密文進行解密后灵汪,該報文必然是A使用自己的SKa進行D運算而得出來的。實現(xiàn)了報文鑒別柑潦。
  • 如果密文Y在傳送過程中被第三方篡改享言,因為第三方?jīng)]有SKa。當(dāng)B使用PKa對密文進行解密后渗鬼,所獲得的報文可以認(rèn)為是不可讀的览露。或者在傳輸過程中譬胎,丟是了報文的部分差牛。當(dāng)B使用PKa對密文進行解密后,所獲得的報文可以認(rèn)為是不可讀的堰乔。這樣就實現(xiàn)了報文完整性的驗證偏化。
  • 因為只要A掌握SKa。若A對曾發(fā)出的密文Y抵賴镐侯。則公正方很容易使用A掌握的SKa進行驗證侦讨。這樣就實現(xiàn)了不可否認(rèn)。

上述過程雖然傳輸?shù)氖敲芪腨析孽。但由于A的PKa是公開的搭伤,所以,并沒有對傳送報文內(nèi)容保密袜瞬。若要在簽名的基礎(chǔ)上進行加密。則可以使用在原來的過程中身堡,增加在發(fā)送前使用接收者的加密密鑰PKb進行D運算的步驟邓尤,來確保內(nèi)容只有接收者B使用自己只有自己掌握的SKb來解密。

鑒別

報文鑒別

由于使用公鑰密碼體制進行加解密計算量較大贴谎,因此汞扎,對于很多不需要加密但需要簽名的情況。使用消息摘要配合數(shù)字簽名來實現(xiàn)報文鑒別擅这。

報文鑒別的公式如下:

Y=(X,D(H(X)))

其中澈魄,
H(X)表示對原文進行H(報文摘要算法)運算。
D(H(X))表示使用發(fā)送者SK對報文摘要進行D運算仲翎。
報文發(fā)送時痹扇,將明文附加上明文摘要的數(shù)字簽名一同發(fā)送铛漓。接受者收到報文后,對明文部分進行報文摘要運算鲫构,然后使用發(fā)送者的PK對數(shù)字簽名部分進行解密浓恶,若得出的結(jié)果與自行計算的報文摘要相同,則表明對該報文鑒別成功结笨。即報文可信包晰。

報文摘要:
報文摘要算法是一種精心選擇的單向散列函數(shù)。對一串長度不固定的內(nèi)容炕吸,使用報文摘要算法計算后伐憾,能得出一串長度固定的值。而從摘要算法的結(jié)果赫模,是不可能推算出摘要的內(nèi)容的塞耕。常見的報文摘要算法有MD5,SHA,SHA-1.

實體鑒別

使用對稱密鑰傳送鑒別實體身份的報文嘴瓤。過程如下:
消息發(fā)送者使用對稱密鑰算法將要發(fā)送的消息進行D運算扫外,消息接受者使用相同的密鑰將內(nèi)容解密后進行實體驗證。

使用該種方式容易引起重放攻擊廓脆,重放攻擊為第三方C截獲消息發(fā)送者A發(fā)送給消息接收者B的消息筛谚。雖然C并不知道AB之間約定的密鑰。但C可以簡單的保存A發(fā)送給B的密文停忿,然后發(fā)送給B驾讲。使B認(rèn)為C就是A,從而將要發(fā)送給A的消息錯誤的傳送給了C席赂。

為了解決重放攻擊吮铭,可以使用不重數(shù)。不重數(shù)是一個不重復(fù)使用的大隨機數(shù)颅停,即“一次一數(shù)”谓晌。在鑒別的過程中,不重數(shù)可以使B把重復(fù)的鑒別請求區(qū)分開癞揉。有不重數(shù)參與的實體鑒別過程如下:

  1. A將其身份以及一個不重數(shù)Ra使用明文發(fā)送給B.
  2. B將一個不重數(shù)Rb以及使用密鑰加密后的Kab(Ra)發(fā)送給A.
  3. A將Rb使用Kab加密后返回給B.

中間人攻擊

題外話

關(guān)于密鑰是讀作(mi4 yue4)還是(mi4 yao4)纸肉。在搜狗輸入法中,讀作yue4喊熟,但經(jīng)查柏肪,大多認(rèn)為,在密碼學(xué)中芥牌,該讀作(mi4 yao4)烦味。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市壁拉,隨后出現(xiàn)的幾起案子谬俄,更是在濱河造成了極大的恐慌柏靶,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凤瘦,死亡現(xiàn)場離奇詭異宿礁,居然都是意外死亡,警方通過查閱死者的電腦和手機蔬芥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門梆靖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笔诵,你說我怎么就攤上這事返吻。” “怎么了乎婿?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵测僵,是天一觀的道長。 經(jīng)常有香客問我谢翎,道長捍靠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任森逮,我火速辦了婚禮榨婆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘褒侧。我一直安慰自己良风,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布闷供。 她就那樣靜靜地躺著烟央,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歪脏。 梳的紋絲不亂的頭發(fā)上疑俭,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音唾糯,去河邊找鬼怠硼。 笑死,一個胖子當(dāng)著我的面吹牛移怯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播这难,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼舟误,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姻乓?” 一聲冷哼從身側(cè)響起嵌溢,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤眯牧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赖草,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體学少,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年秧骑,在試婚紗的時候發(fā)現(xiàn)自己被綠了版确。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡乎折,死狀恐怖绒疗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骂澄,我是刑警寧澤吓蘑,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站坟冲,受9級特大地震影響磨镶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜健提,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一琳猫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矩桂,春花似錦沸移、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至癞蚕,卻和暖如春蕊爵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桦山。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工攒射, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恒水。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓会放,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钉凌。 傳聞我的和親對象是個殘疾皇子咧最,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

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