成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

吳某凡事件:一次完美的中間人攻擊!

安全 應(yīng)用安全
上周吳某凢和都某竹的瓜大家都吃了吧,結(jié)果前幾天北京朝陽(yáng)警方通報(bào)了這是一個(gè)金錢詐騙案。

[[413391]]

圖片來(lái)自包圖網(wǎng)

我讀了那份通報(bào),我直接炸開(kāi)了,沒(méi)想到這次的瓜里,還有第三個(gè)人,它就是中間人劉某,具體怎么詐騙的呢?

整個(gè)詐騙過(guò)程可以概括成如下圖,下圖中的 ID_A 表示都某竹的銀行卡,ID_E 表示中間人劉某的銀行卡。

這個(gè)詐騙案牛逼在于,中間人劉某有雙重身份,不僅冒充都某竹的身份來(lái)向吳某凢索取賠償,而且又冒充吳某凢的身份騙都某竹把退款的錢轉(zhuǎn)到中間人劉某的銀行卡,從而獲取利益。

這波操作說(shuō)實(shí)話比電影還精彩,劉某把中間人的角色演技到了極致,它做到了三件事情:

  • 冒充身份,不僅冒充了都某竹的身份,而且冒充了吳某凢的身份。
  • 篡改信息,騙都某竹把退款的錢,退到中間人劉某的銀行卡。
  • 竊聽(tīng)信息,因?yàn)槊俺淞松矸荩远寄持窈蛥悄硠F雙方的信息,劉某都牢牢的掌握在手中。

不知道大家有沒(méi)有察覺(jué)中間人劉某做的這三件事情,正是 HTTP 協(xié)議的安全風(fēng)險(xiǎn)?

HTTP 協(xié)議不僅傳輸?shù)男畔⑹敲魑模覜](méi)有身份認(rèn)證,所以存在竊聽(tīng)風(fēng)險(xiǎn)、篡改風(fēng)險(xiǎn)、冒充風(fēng)險(xiǎn)。

為了解決 HTTP 協(xié)議的安全性,后面就出現(xiàn)了 HTTPS 協(xié)議,在 HTTP 層與 TCP 層之間加入了 TLS 協(xié)議,來(lái)保證安全可靠的信息傳輸。

具體怎么做到安全可靠的信息傳輸,這就涉及到了數(shù)字簽名和數(shù)字證書。沒(méi)想到吧,畫風(fēng)突轉(zhuǎn)的很快吧。沒(méi)錯(cuò),今天這不是吃瓜文,而是技術(shù)文。

如何保證消息不被篡改?

為了保證傳輸?shù)膬?nèi)容不被篡改,我們需要對(duì)內(nèi)容計(jì)算出一個(gè)「指紋」,然后同內(nèi)容一起傳輸給對(duì)方。

對(duì)方收到后,先是對(duì)內(nèi)容也計(jì)算出一個(gè)「指紋」,然后跟發(fā)送方發(fā)送的「指紋」做一個(gè)比較,如果「指紋」相同,說(shuō)明內(nèi)容沒(méi)有被篡改,否則就可以判斷出內(nèi)容被篡改了。

那么,在計(jì)算機(jī)里會(huì)用哈希函數(shù)來(lái)計(jì)算出內(nèi)容的哈希值,也就是內(nèi)容的「指紋」,這個(gè)哈希值是唯一的,且無(wú)法通過(guò)哈希值推導(dǎo)出內(nèi)容。

如何保證消息的來(lái)源可靠?

通過(guò)哈希算法可以確保內(nèi)容不會(huì)被篡改,但是并不能保證「內(nèi)容 + 哈希值」不會(huì)被中間人替換,因?yàn)檫@里缺少對(duì)客戶端收到的消息是否來(lái)源于服務(wù)端的證明。

舉個(gè)例子,你想向老師請(qǐng)假,一般來(lái)說(shuō)是要求由家長(zhǎng)寫一份請(qǐng)假理由并簽名,老師才能允許你請(qǐng)假。

但是你有模仿你爸爸字跡的能力,你用你爸爸的字跡寫了一份請(qǐng)假理由然后簽上你爸爸的名字,老師一看到這個(gè)請(qǐng)假條,查看字跡和簽名,就誤以為是你爸爸寫的,就會(huì)允許你請(qǐng)假。

那作為老師,要如何避免這種情況發(fā)生呢?現(xiàn)實(shí)生活中的,可以通過(guò)電話或視頻來(lái)確認(rèn)是否是由父母發(fā)出的請(qǐng)假,但是計(jì)算機(jī)里可沒(méi)有這種操作。

那為了避免這種情況,計(jì)算機(jī)里會(huì)用非對(duì)稱加密算法來(lái)解決,共有兩個(gè)密鑰:

  • 一個(gè)是公鑰,這個(gè)是可以公開(kāi)給所有人的。
  • 一個(gè)是私鑰,這個(gè)必須由本人管理,不可泄露。

這兩個(gè)密鑰可以雙向加解密的,比如可以用公鑰加密內(nèi)容,然后用私鑰解密,也可以用私鑰加密內(nèi)容,公鑰解密內(nèi)容。

流程的不同,意味著目的也不相同:

  • 公鑰加密,私鑰解密。這個(gè)目的是為了保證內(nèi)容傳輸?shù)陌踩驗(yàn)楸还€加密的內(nèi)容,其他人是無(wú)法解密的,只有持有私鑰的人,才能解密出實(shí)際的內(nèi)容。
  • 私鑰加密,公鑰解密。這個(gè)目的是為了保證消息不會(huì)被冒充,因?yàn)樗借€是不可泄露的,如果公鑰能正常解密出私鑰加密的內(nèi)容,就能證明這個(gè)消息是來(lái)源于持有私鑰身份的人發(fā)送的。

一般我們不會(huì)用非對(duì)稱加密來(lái)加密實(shí)際的傳輸內(nèi)容,因?yàn)榉菍?duì)稱加密的計(jì)算比較耗費(fèi)性能的。

所以非對(duì)稱加密的用途主要在于通過(guò)「私鑰加密,公鑰解密」的方式,來(lái)確認(rèn)消息的身份,我們常說(shuō)的數(shù)字簽名算法,就是用的是這種方式,不過(guò)私鑰加密內(nèi)容不是內(nèi)容本身,而是對(duì)內(nèi)容的哈希值加密。

私鑰是由服務(wù)端保管,然后服務(wù)端會(huì)向客戶端頒發(fā)對(duì)應(yīng)的公鑰。如果客戶端收到的信息,能被公鑰解密,就說(shuō)明該消息是由服務(wù)器發(fā)送的。

引入了數(shù)字簽名算法后,你就無(wú)法模仿你爸爸的字跡來(lái)請(qǐng)假了,你爸爸手上持有著私鑰,你老師持有著公鑰。

這樣只有用你爸爸手上的私鑰才對(duì)請(qǐng)假條進(jìn)行「簽名」,老師通過(guò)公鑰看能不能解出這個(gè)「簽名」,如果能解出并且確認(rèn)內(nèi)容的完整性,就能證明是由你爸爸發(fā)起的請(qǐng)假條,這樣老師才允許你請(qǐng)假,否則老師就不認(rèn)。

如果保證對(duì)方的身份?

前面我們知道:

  • 可以通過(guò)哈希算法來(lái)保證消息的完整性。
  • 可以通過(guò)數(shù)字簽名來(lái)保證消息的來(lái)源可靠性(能確認(rèn)消息是由持有私鑰的一方發(fā)送的)。

但是這還遠(yuǎn)遠(yuǎn)不夠,還缺少身份驗(yàn)證的環(huán)節(jié),萬(wàn)一公鑰是被偽造的呢?

還是拿請(qǐng)假的例子,雖然你爸爸持有私鑰,老師通過(guò)是否能用公鑰解密來(lái)確認(rèn)這個(gè)請(qǐng)假條是不是來(lái)源你父親的。

但是我們還可以自己偽造出一對(duì)公私鑰啊!你找了個(gè)夜晚,偷偷把老師桌面上和你爸爸配對(duì)的公鑰,換成了你的公鑰,那么下次你在請(qǐng)假的時(shí)候,你繼續(xù)模仿你爸爸的字跡寫了個(gè)請(qǐng)假條,然后用你的私鑰做個(gè)了「數(shù)字簽名」。

但是老師并不知道自己的公鑰被你替換過(guò)了,所以他還是按照往常一樣用公鑰解密。

由于這個(gè)公鑰和你的私鑰是配對(duì)的,老師當(dāng)然能用這個(gè)被替換的公鑰解密出來(lái),并且確認(rèn)了內(nèi)容的完整性,于是老師就會(huì)以為是你父親寫的請(qǐng)假條,又允許你請(qǐng)假了。

好家伙,為了一個(gè)請(qǐng)假,真的是斗智斗勇。后面你的老師和父親發(fā)現(xiàn)了你偽造公私鑰的事情后,決定重新商量一個(gè)對(duì)策來(lái)應(yīng)對(duì)你這個(gè)臭家伙。

正所謂魔高一丈,道高一尺。既然偽造公私鑰那么隨意,所以你爸把他的公鑰注冊(cè)到警察局。

警察局用他們自己的私鑰對(duì)你父親的公鑰做了個(gè)數(shù)字簽名,然后把你爸爸的「?jìng)€(gè)人信息 + 公鑰 + 數(shù)字簽名」打包成一個(gè)數(shù)字證書,也就是說(shuō)這個(gè)數(shù)字證書包含你爸爸的公鑰。

這樣,你爸爸如果因?yàn)榧依锎_實(shí)有事要向老師幫你請(qǐng)假的時(shí)候,不僅會(huì)用自己的私鑰對(duì)內(nèi)容進(jìn)行簽名,還會(huì)把數(shù)字證書給到老師。

老師拿到了數(shù)字證書后,首先會(huì)去警察局驗(yàn)證這個(gè)數(shù)字證書是否合法,因?yàn)閿?shù)字證書里有警察局的數(shù)字簽名,警察局要驗(yàn)證證書合法性的時(shí)候,用自己的公鑰解密。

如果能解密成功,就說(shuō)明這個(gè)數(shù)字證書是在警察局注冊(cè)過(guò)的,就認(rèn)為該數(shù)字證書是合法的,然后就會(huì)把數(shù)字證書里頭的公鑰(你爸爸的)給到老師。

由于通過(guò)警察局驗(yàn)證了數(shù)字證書是合法的,那么就能證明這個(gè)公鑰就是你父親的,于是老師就可以安心的用這個(gè)公鑰解密出清教條,如果能解密出,就證明是你爸爸寫的請(qǐng)假條。

正是通過(guò)了一個(gè)權(quán)威的機(jī)構(gòu)來(lái)證明你爸爸的身份,所以你的偽造公私鑰這個(gè)小伎倆就沒(méi)用了。

在計(jì)算機(jī)里,這個(gè)權(quán)威的機(jī)構(gòu)就是 CA (數(shù)字證書認(rèn)證機(jī)構(gòu)),將服務(wù)器公鑰放在數(shù)字證書(由數(shù)字證書認(rèn)證機(jī)構(gòu)頒發(fā))中,只要證書是可信的,公鑰就是可信的。

數(shù)字證書的工作流程,我也畫了一張圖,方便大家理解:

數(shù)子證書工作流程

①數(shù)字證書簽發(fā)和驗(yàn)證流程

接下來(lái),詳細(xì)說(shuō)一下實(shí)際中數(shù)字證書簽發(fā)和驗(yàn)證流程。

如下圖圖所示,為數(shù)字證書簽發(fā)和驗(yàn)證流程:

CA 簽發(fā)證書的過(guò)程,如上圖左邊部分:

  • 首先 CA 會(huì)把持有者的公鑰、用途、頒發(fā)者、有效時(shí)間等信息打成一個(gè)包,然后對(duì)這些信息進(jìn)行 Hash 計(jì)算,得到一個(gè) Hash 值。
  • 然后 CA 會(huì)使用自己的私鑰將該 Hash 值加密,生成 Certificate Signature,也就是 CA 對(duì)證書做了簽名。
  • 最后將 Certificate Signature 添加在文件證書上,形成數(shù)字證書。

客戶端校驗(yàn)服務(wù)端的數(shù)字證書的過(guò)程,如上圖右邊部分:

  • 首先客戶端會(huì)使用同樣的 Hash 算法獲取該證書的 Hash 值 H1。
  • 通常瀏覽器和操作系統(tǒng)中集成了 CA 的公鑰信息,瀏覽器收到證書后可以使用 CA 的公鑰解密 Certificate Signature 內(nèi)容,得到一個(gè) Hash 值 H2。
  • 最后比較 H1 和 H2,如果值相同,則為可信賴的證書,否則則認(rèn)為證書不可信。

②證書鏈

但事實(shí)上,證書的驗(yàn)證過(guò)程中還存在一個(gè)證書信任鏈的問(wèn)題,因?yàn)槲覀兿?CA 申請(qǐng)的證書一般不是根證書簽發(fā)的,而是由中間證書簽發(fā)的,比如百度的證書,從下圖你可以看到,證書的層級(jí)有三級(jí):

對(duì)于這種三級(jí)層級(jí)關(guān)系的證書的驗(yàn)證過(guò)程如下:

客戶端收到 baidu.com 的證書后,發(fā)現(xiàn)這個(gè)證書的簽發(fā)者不是根證書,就無(wú)法根據(jù)本地已有的根證書中的公鑰去驗(yàn)證 baidu.com 證書是否可信。

于是,客戶端根據(jù) baidu.com 證書中的簽發(fā)者,找到該證書的頒發(fā)機(jī)構(gòu)是 “GlobalSign Organization Validation CA - SHA256 - G2”,然后向 CA 請(qǐng)求該中間證書。

請(qǐng)求到證書后發(fā)現(xiàn) “GlobalSign Organization Validation CA - SHA256 - G2” 證書是由 “GlobalSign Root CA” 簽發(fā)的,由于 “GlobalSign Root CA” 沒(méi)有再上級(jí)簽發(fā)機(jī)構(gòu),說(shuō)明它是根證書,也就是自簽證書。

應(yīng)用軟件會(huì)檢查此證書有否已預(yù)載于根證書清單上,如果有,則可以利用根證書中的公鑰去驗(yàn)證 “GlobalSign Organization Validation CA - SHA256 - G2” 證書,如果發(fā)現(xiàn)驗(yàn)證通過(guò),就認(rèn)為該中間證書是可信的。

“GlobalSign Organization Validation CA - SHA256 - G2” 證書被信任后,可以使用 “GlobalSign Organization Validation CA - SHA256 - G2” 證書中的公鑰去驗(yàn)證 baidu.com 證書的可信性,如果驗(yàn)證通過(guò),就可以信任 baidu.com 證書。

在這四個(gè)步驟中,最開(kāi)始客戶端只信任根證書 GlobalSign Root CA 證書的,然后 “GlobalSign Root CA” 證書信任 “GlobalSign Organization Validation CA - SHA256 - G2” 證書。

而 “GlobalSign Organization Validation CA - SHA256 - G2” 證書又信任 baidu.com 證書,于是客戶端也信任 baidu.com 證書。

總括來(lái)說(shuō),由于用戶信任 GlobalSign,所以由 GlobalSign 所擔(dān)保的 baidu.com 可以被信任,另外由于用戶信任操作系統(tǒng)或?yàn)g覽器的軟件商,所以由軟件商預(yù)載了根證書的 GlobalSign 都可被信任。

操作系統(tǒng)里一般都會(huì)內(nèi)置一些根證書,比如我的 MAC 電腦里內(nèi)置的根證書有這么多:

這樣的一層層地驗(yàn)證就構(gòu)成了一條信任鏈路,整個(gè)證書信任鏈驗(yàn)證流程如下圖所示:

最后一個(gè)問(wèn)題,為什么需要證書鏈這么麻煩的流程?Root CA 為什么不直接頒發(fā)證書,而是要搞那么多中間層級(jí)呢?

這是為了確保根證書的絕對(duì)安全性,將根證書隔離地越嚴(yán)格越好,不然根證書如果失守了,那么整個(gè)信任鏈都會(huì)有問(wèn)題。

作者:小林

編輯:陶家龍

出處:轉(zhuǎn)載自公眾號(hào)小林 coding(ID:CodingLin)

 

責(zé)任編輯:武曉燕 來(lái)源: 小林
相關(guān)推薦

2021-07-26 05:22:47

中間人攻擊加密網(wǎng)絡(luò)安全

2014-03-17 09:16:08

2013-11-11 10:36:04

2019-01-28 08:59:59

2017-02-16 08:53:42

2020-05-07 15:24:22

中間人攻擊MITM

2014-05-15 10:20:07

2015-12-29 10:41:16

2015-01-05 13:29:37

2014-03-20 10:26:58

2014-11-21 11:46:55

2010-09-25 14:50:34

2016-09-27 22:45:47

2010-06-13 12:06:41

2009-08-14 11:25:38

2020-12-11 10:40:13

PostgreSQL數(shù)據(jù)庫(kù)GitLab

2020-12-28 10:23:00

中間人攻擊漏洞Kubernetes

2010-12-24 10:26:19

2012-11-20 13:06:57

2021-02-16 10:52:16

中間人攻擊MITM網(wǎng)絡(luò)攻擊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩视频一区二区 | 香蕉久久久 | 国产欧美综合在线 | 97国产精品视频人人做人人爱 | 国产专区视频 | 国产91亚洲精品 | 中文字幕成人av | 蜜臀久久99精品久久久久野外 | 韩国理论电影在线 | 久久精品国产免费高清 | 亚洲精品一二三 | 一区二区三区免费在线观看 | 中文字幕视频在线观看免费 | 九九亚洲精品 | 999久久久 | 黄色网址免费在线观看 | 久久在线看| 成人激情视频在线观看 | 亚洲精品日日夜夜 | 亚洲精品无 | 91日b| 欧美成人免费在线 | 国产小视频在线看 | 一级免费视频 | 91精品国产手机 | 日韩精品国产精品 | 国产在线h | 欧美 日本 国产 | 龙珠z在线观看 | 视频一区二区在线观看 | 免费在线观看av网址 | 日本在线视频一区二区 | 亚洲精品久久久一区二区三区 | 日日摸夜夜添夜夜添精品视频 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 日本不卡视频在线播放 | 一区二区三区视频在线免费观看 | 国产色婷婷精品综合在线手机播放 | 99精品久久久久久 | 韩日精品一区 | 超碰97干|