自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大敗“八卦女”、“猥瑣男”,工程師男友如何反竊聽?

安全 應(yīng)用安全
誰都不想在通信過程中被別人“竊取”小秘密。本文借助一對情侶與八卦女、猥瑣男的斗智故事,為大家科普密碼學基礎(chǔ)知識。

[[242150]]

事情是這樣的,Alice 和 Bob 是一對 CP。兩人之間難免要說一些 Secret,又不想被別人偷聽,怎么辦呢?

本文講述這對 CP 之間如何安全隱秘地聊天。如何跟無(wěi)聊(suǒ)份子們斗智斗勇的故事。

先介紹一下將要登場的各個角色:

  • Alice:話嘮,嚴重的傾訴欲,和 Bob 是 CP。
  • Bob:沉默男,理工男,和 Alice 是 CP。
  • Eve:Alice 的室友,熱衷于偷聽八卦。
  • Mallory:猥瑣男,專業(yè)搞破壞 20 年。
  • Trent:長者,相當具有權(quán)威性,大家都相信他。

如何不被竊聽:加密

剛開始時,Alice 和 Bob 沒有安全意識。平時說話聊天沒有什么防范措施,經(jīng)常被 Eve 偷聽。但礙于情面又不好直說,為此煩惱不已。

偷聽過程如下圖:

Bob 是個技術(shù)男,想到一個辦法。既然有人偷聽,那我為什么不加密呢?說干就干,他事先和 Alice 商定一個密鑰(key),是個隨機值,別人猜不出來。

從此這對 CP 之間聊天就用這個 Key 進行加密保護,如下圖:

從圖中可以看到,Alice 在說話前,先用 Key 對消息內(nèi)容進行加密。發(fā)送消息時,不再直接傳遞“我剛買了個包包”這么直白的明文,而是 “*&2#%/Qw@##” 這種誰都看不懂的密文。

即使被 Eve 竊聽,她也完全看不懂神馬意思,只能表示 WTF。Bob 收到密文后,先用 Key 對其進行解密,得到原始的消息內(nèi)容“我剛買了個包包”。

旁白:這種加密方案在密碼學里稱為對稱密碼,加密方和解密方使用的是相同的密鑰。

知名的密碼算法有 AES(2001)、Blowfish(1993)、DES(1977),再遠一點,有二戰(zhàn)時期的恩尼格碼(轉(zhuǎn)輪機原理,德國)、紫色密碼(轉(zhuǎn)輪機原理,日本),以及著名的凱撒密碼(沒錯就是地中海北岸那個凱撒)、柵欄密碼等。后續(xù)會寫文章專門進行各個算法的性能比較、安全性比較。

友情提示: 密碼學里的“密碼”和現(xiàn)實生活中的“密碼”不是一回事兒!后者一般指的是口令(password),比如登錄淘寶、QQ、ATA輸入的那個東西。

順便說下,有些耿直的 Boy 會把自己的口令設(shè)置得炒雞簡單,比如 12345678 、HelloWorld 等。這是萬萬不能夠的,小心被人猜出來。

言歸正傳,一切看起來是那么完美。Alice 和 Bob 以為可以高枕無憂了,卻沒想到道高一尺,Eve 高一丈。

如何交換密鑰:非對稱加密

自從 Alice 和 Bob 使用了“加密”這種秘密武器之后,Eve 什么都聽不到了。為此她寢食難安,沒有八卦的生活還有神馬意義?。?nbsp;

還好,Eve 不是普通的 Eve,她并不只是一個八卦女,她是個懂科技的 Girl。

思考幾天之后,Eve 意識到這對 CP 肯定是用了加密的。一不做二不休,Eve 找到了破解辦法,請看下圖:

Eve 觀察到那對 CP 之間為了安全性,會經(jīng)常更換 Key。為此,她尋找一個合適的時機,把 Key 竊取到手。

之后,Eve 又可以愉快的竊聽了,終于可以睡個安穩(wěn)覺。竊聽過程如下:

有 Key 在手,Eve 截獲消息之后,就可以像 Bob 一樣把消息明文解密出來。

不過好景不長,相對于 Eve 來說,Bob 才是掌握核心科技的。他很快發(fā)現(xiàn) Eve 的這一行為,想到另一個辦法: 非對稱加密。

具體過程如下:

  • Bob 事先生成一對公鑰和私鑰,私鑰 pri 由自己保管,把公鑰 pub 發(fā)給 Alice。
  • Alice 使用 pub 對消息內(nèi)容進行加密,Bob 用 pri 進行解密。
  • 需要注意的是, 只有私鑰才可以解密,所以即使 Eve 竊取到了 pub(只有 pub 被傳輸而容易被竊取),她也無法解密。

另外,這種方式還有個顯著優(yōu)點。假使 Bob 還有很多別的女友(嚴重抨擊這種行為),他可以把同一個公鑰 pub 都發(fā)給她們,各個女友都用這個 pub 和 Bob 進行通信。

構(gòu)成“多對一”的通信關(guān)系,卻不用擔心女友 A 竊聽到女友 B 和 Bob 之間的聊天內(nèi)容,因為 pub 無法解密。

而在對稱密碼中,Bob 必須為每個女友都分發(fā)一個不同的 Key,這很難保管。

旁白:這種加密方式在密碼學里稱為非對稱密碼,所謂“非對稱”指的是加密方和解密方用的密鑰不一樣。

知名的非對稱算法有:DSA(數(shù)字簽名算法,只能用于簽名,1991)、ECC(橢圓曲線加密,1985)、RSA(公鑰加密算法,1977)等。

這些算法除了用于加密外,還可以用于數(shù)字簽名,本文后面會講到。

非對稱算法有個致命弱點: 性能很低。實際應(yīng)用中一般采用混合加密體制、哈希簽名體制。

好了,現(xiàn)在信道安全問題已經(jīng)解決啦,不用再擔心 Secret 被 Eve 偷聽。但是情場多艱,猥瑣男 Mallory 現(xiàn)在隆重登場。

如何防止數(shù)據(jù)篡改:MAC

文章開頭說了,Mallory 是個專業(yè)搞破壞 20 年的男人,這次也不例外。請看下圖:

Mallory 并不是八卦小女生,他對偷聽秘密沒有任何興趣。生而不羈,他決定搞一些惡作劇,篡改一下消息吧。

于是他把 “我剛買了個包包” 改成“我決定跟你分手”,但 Bob 卻不知道已被篡改,還以為是 Alice 的原話。那么問題來了,求此刻 Bob 的心理陰影面積。

經(jīng)過一番狗血的情感糾葛之后,Alice 表示還是愛他的,Bob 終于意識到有人在從中作梗。

這還得了,之前我們一直強調(diào),Bob 是個掌握核心科技的 Boy,他很快就想到了應(yīng)對措施。

請看下圖(為了簡單起見,本例僅展示防篡改的情況,沒有對 Message 做加密):

圖中的 MAC 指的是消息認證碼(Message Authentication Code),你現(xiàn)在不需知道它的原理,只需要記住 :

  • 傳入兩個參數(shù) Message 和 Key,進行一系列計算后得到一個值叫 MAC。
  • 只有 Message 和 Key 相同的情況下,才能得到相同的 MAC。
  • 跟對稱加密一樣,這對 CP 之間會事先協(xié)商一個 Key。
  • Alice 使用 Key 對 Message 計算出一個 MAC1,并把 Message + MAC1 發(fā)給 Bob。
  • Bob 收到之后,用自己的 Key 對 Message 計算出一個 MAC2,再比較 MAC1 和 MAC2 是否一致。
  • 根據(jù) MAC 的性質(zhì),如果 Message 被篡改,那么計算得到的 MAC2 一定不等于 MAC1,驗證失敗,Bob 得出結(jié)論:有人篡改了消息。
  • 由于僅 Alice 和 Bob 擁有 Key,所以別人無法篡改 Message 后偽造出一個有效的 MAC。
  • 在檢測篡改方面,還可以用 HASH(散列)算法,包括 MD5、SHA1/224/256/384/512 等。比如版本控制系統(tǒng) GIT 就使用 SHA1 來檢查文件是否有修改。

旁白:消息認證碼有多種實現(xiàn)方式,其中最常見的是 HMAC(Hash MAC),即使用哈希算法來實現(xiàn) MAC,還有一種是基于分組密碼算法的 MAC,不常見。

聰明如你,肯定會想到如果 Key 被竊取該怎么辦?這就涉及到數(shù)字簽名了,后文會講到。

如何校驗身份:MAC

Mallory 還有個小伎倆,那就是冒充身份,恰好 MAC 也可以對付這個。且看下圖:

Mallory 發(fā)一個消息給 Bob,說“親愛的,我是 Alice 哦,Balabala...”。如果沒有校驗措施,Bob 可能就中招了。

同樣的,Bob 可以用以下方式進行防范:

只有 Alice 和 Bob 擁有相同的 Key,所以 Bob 只有在校驗 MAC 成功時才會相信對方是 Alice。

而 Mallory 沒有這個 Key,偽造的 MAC 肯定會校驗失敗的,所以計謀不能得逞。

旁白:MAC 包含幾種實現(xiàn)方式,基于 HASH 的 MAC 稱為 HMAC,應(yīng)用比較廣泛。

有些同學應(yīng)該接觸過阿里云的 Access Key,其實就是 HMAC 的原理。

有些同學在兩個系統(tǒng)之間 API 調(diào)用時,會使用同一個 Key 做 MD5 計算來實現(xiàn) API 鑒權(quán),這稱為“加鹽HASH”,可以簡單理解為 HMAC 的簡化版。

同樣的,如果 Key 被竊取該怎么辦?這可以用數(shù)字簽名來解決。

更進一步:數(shù)字簽名

MAC 雖好,但是遇到和對稱密碼同樣的問題:密鑰如何交換。

其中一個解決方式就是數(shù)字簽名,這個“簽名”你基本可以想象成現(xiàn)實生活中的手寫簽名,具有類似的作用。

原理上和非對稱加密有點像,但有個很大的區(qū)別,發(fā)送方是用私鑰進行簽名,而接收方用公鑰進行驗簽,這跟加密情況正好相反。

Bob 可以用數(shù)字簽名來校驗消息是否被篡改,請看下圖:

原理上和圖 6 差不多,但區(qū)別在于:由 Alice 事先生成一對公鑰 pub 和私鑰 pri,并把 pub 發(fā)送給 Bob,前者用 pri 加簽,后者用 pub 驗簽。驗簽失敗說明消息被篡改。

也可以用于身份校驗,請看下圖:

Mallory 沒有 Alice 的 pri,所以無論如何他也沒法冒充 Alice 的身份。

看到這里,大家可能都松了一口氣,以為這小倆口終于沒事兒了。但情場多變,萬一哪天 Alice 變心了呢,她給 Bob 發(fā)了一條消息,說“分手吧”,如下圖:

可是發(fā)完之后又有點后悔,但他們使用的不是釘釘,并沒有消息撤回功能。

怎么辦?所以說 Alice 還是有點 Too Naive,她妄想可以矢口否認,把 Shit 盆子扣到破壞小王子 Mallory 身上,聲稱“剛才那句話是 Mallory 說的” 等云云。

Mallory 雖然猥瑣,但也是個講“原則“的 Man,你扣盆子也要講基本法??!于是他跳出來說, “表冤枉我,我又沒有 Alice 的私鑰”。

這是什么意思呢?原來數(shù)字簽名還具有“抗否認”的神奇功效,Alice 講的話里帶有她的簽名,是不能否認的(是不是有點類似現(xiàn)實生活中的手寫簽名?)。任何不講基本法的栽贓陷害都是無效的...

公鑰的身份證:數(shù)字證書

如果你以為 Eve 和 Mallory 就此屈服于非對稱加密和數(shù)字簽名的威力,那你就真的是圖樣了。

所謂 “兩汪戰(zhàn)一虎,四汪沉航母。六汪戲上帝,八汪創(chuàng)世紀”,他們決定聯(lián)合起來,找出公鑰機制的破綻。

偉大友誼自然會有效果,他們果真找到了破解之法(絕對不是劇情發(fā)展需要...)。

沒錯,就是偽造公鑰。我們先拿公鑰加密來舉例子,圖 4 中講到,Bob 需要事先生成公鑰 pub 和私鑰 pri ,然后把 pub 分發(fā)給 Alice。

那么攻擊過程就從這入手:

  • Eve 生成自己的一對公鑰 pub' 和 私鑰 pri',截獲 Bob 的 pub,并用自己的 pub' 冒充 Bob 的公鑰發(fā)給 Alice,如上圖。
  • Alice 用 pub' 加密消息,發(fā)送出去。
  • Eve 截獲 Alice 的數(shù)據(jù),并用 pri' 解密得到消息明文。
  • Eve 偽造一個假數(shù)據(jù)“干嘛呵呵去洗澡”,并用 pub 加密后發(fā)給 Bob。
  • Bob 用 pri 解密,拿到偽造的數(shù)據(jù),以為是 Alice 發(fā)給他的。

這是個“偷天換日”的過程,Eve 通過偽造公鑰(中間人攻擊),不光竊聽到 Alice 的消息,還能保證整個過程中 Alice 和 Bob 都沒有察覺!

再來看一下 Mallory 怎樣用偽造公鑰的方式來冒充身份。圖10 中講到,Alice 需要事先把自己公鑰發(fā)給 Bob,所以攻擊過程就從這入手:

  • Mallory 生成自己的公鑰 pub' 和 私鑰 pri',截獲 Alice 的 pub,并用自己的 pub' 冒充 Alice 的公鑰發(fā)給 Bob,如上圖。
  • Alice 用正常私鑰 pri 進行簽名,并發(fā)給 Bob。
  • Bob 手里拿的是被偽造的公鑰 pub',所以對 Alice 的 sign 會驗簽失敗,認為對方不是 Alice。
  • Mallory 用自己私鑰 pri' 進行簽名,并發(fā)給 Bob。
  • Bob 用被偽造的公鑰 pub' 進行驗簽,可以驗簽成功,認為對方是 Alice。

這個過程中,Mallory 通過偽造 Alice 公鑰,成功冒充了 Alice 的身份。

這種偽造公鑰的攻擊方式讓 Bob 很頭疼,思考了很久,終于想到一個辦法。這次他找來了幫手—Trent。

文章開頭有介紹過,Trent 非常具有權(quán)威性,而且能保證自身不受攻擊(或者別人不敢攻擊),就像現(xiàn)實生活中的公安局。

Eve 不是喜歡偽造公鑰嗎,Bob 這次就要請 Trent 為自己的公鑰注冊一張 “身份證”—數(shù)字證書。

見證如見人,哦不對,見證如見公鑰!以下是注冊數(shù)字證書的過程:

  • Bob 請求 Trent 為自己的公鑰 pub 注冊一個證書。
  • Trent 收到請求后,用自己的私鑰 pri' 對 pub(以及身份信息) 進行簽名,得到一個 sign。
  • Trent 把證書 certificate = pub + sign 頒發(fā)給 Bob。
  • Bob 把自己的證書 pub + sign 發(fā)給 Alice。
  • Alice 使用 Trent 的公鑰 pub' 對 sign 進行驗簽,如果校驗成功則說明 pub 的確是 Bob 的公鑰,因為她相信 Trent 的權(quán)威性。

Eve 不可能找 Trent 為她辦一個 Bob 的數(shù)字證書,因為 Trent 不會同意的,就像警察蜀黍不會給我辦一張別人的身份證一樣。所以,Eve 無法偽造 Bob 的公鑰。

同理,為了防止 Mallory 偽造公鑰來冒充身份,Alice 也需要向 Trent 注冊自己的公鑰,得到一個數(shù)字證書,用于防止別人偽造公鑰。

旁白:考慮到非對稱算法的效率問題,實際應(yīng)用中一般是先對數(shù)據(jù)進行哈希,然后才用私鑰對哈希值(摘要)進行簽名。

Trent 在密碼技術(shù)領(lǐng)域中一般稱為認證機構(gòu)(Certification Authority,即 CA)。

以數(shù)字證書為基礎(chǔ),業(yè)界制定了一系列的規(guī)范和規(guī)格,比如由誰頒發(fā)證書、如何進行頒發(fā)、如何作廢證書等,稱為公鑰基礎(chǔ)設(shè)施(Public-Key Infrastructure,即 PKI)。

責任編輯:武曉燕 來源: 阿里技術(shù)
相關(guān)推薦

2018-10-22 18:42:16

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全技術(shù)周刊

2025-03-31 09:21:00

2022-08-05 18:04:17

瞻博網(wǎng)絡(luò)虛擬全球峰會企業(yè)數(shù)字化轉(zhuǎn)型

2013-12-31 11:18:23

應(yīng)用分發(fā)市場格局

2024-10-08 15:59:52

2017-08-15 17:03:01

白熊視頻 /程序員/技

2018-09-20 10:55:38

數(shù)據(jù)庫順豐高級工程師

2018-09-21 16:30:55

2013-09-27 09:48:19

2023-01-01 17:00:09

2015-11-26 11:15:44

2017-06-07 17:37:31

數(shù)據(jù)挖掘/白熊視頻

2012-09-07 10:20:53

2017-08-04 10:39:45

白熊視頻技術(shù)八卦程序員

2021-07-19 11:56:56

分布式訓練框架

2017-03-16 09:30:56

LispAI數(shù)據(jù)結(jié)構(gòu)

2017-08-03 12:31:34

白熊視頻人工智能程序員

2009-06-01 09:03:23

中興軟件工程師征友

2018-07-02 09:10:01

高通中年IT男

2010-06-03 21:39:40

富士康
點贊
收藏

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