前言
工作中重新接觸了 【公鑰、私鑰、簽名】的概念。抽空重新看了《計(jì)算機(jī)網(wǎng)絡(luò)》和國(guó)外的小黑書,把這塊基礎(chǔ)知識(shí)再收斂一下?;谛『跁臄⑹陆Y(jié)構(gòu),把網(wǎng)絡(luò)安全解決的實(shí)際問題拆解成:
- 防止報(bào)文泄露
- 防止報(bào)文被篡改
- 實(shí)體鑒別
- 端點(diǎn)鑒別
- 防止重放攻擊
1. 防止報(bào)文泄露 —— 加密體系的出現(xiàn)
網(wǎng)絡(luò)丟包是常見的事情,丟包意味著報(bào)文可能被截獲。怎樣能夠減少丟包造成的損失呢??jī)蓚€(gè)思路
- 物理隔絕 —— 內(nèi)網(wǎng)通信
- 保護(hù)信息 —— 報(bào)文加密
如果兩家公司在公網(wǎng)上通信,涉密信息的報(bào)文一定要經(jīng)過加密。加密又有兩種形式,(這個(gè)網(wǎng)上資料很多,不再贅述)
- 對(duì)稱加密
- 非對(duì)稱加密
NOTE: 非對(duì)稱加密算法復(fù)雜,消耗的資源多,所以實(shí)際應(yīng)用是【非對(duì)稱加密 + 對(duì)稱加密】,旨在確保通信安全的前提下兼顧效率。
1.1 理解非對(duì)稱加密體系的實(shí)施難點(diǎn)
- 以 RSA 非對(duì)稱算法為例,比DES慢 2~4個(gè)數(shù)量級(jí)
- 多對(duì)多的網(wǎng)絡(luò)模式下,密鑰的管理和交換比對(duì)稱加密復(fù)雜
1.2 加密體系的實(shí)際應(yīng)用
- A與B用RSA(非對(duì)稱加密)交換會(huì)話密鑰(對(duì)稱密鑰)
- A和B在一段時(shí)間內(nèi),都使用會(huì)話密鑰進(jìn)行通信。
2. 防止報(bào)文被篡改 —— 數(shù)字簽名的出現(xiàn)
上文提到,報(bào)文加密可以減少丟包的損失。簡(jiǎn)單來說就是截獲網(wǎng)絡(luò)報(bào)文的人看不懂雙方在講什么。只加密就完了嗎?我們把攻擊者想象得太簡(jiǎn)單了,有一些攻擊者,會(huì)做這些事
- 從發(fā)送方中把報(bào)文(密文)篡改了,再丟給接收方。接收方從密文中還原的明文也就成了亂碼。
- 從發(fā)送方中獲取明文和密鑰,修改明文,加密后再發(fā)給接收方。接收方就被誤導(dǎo)了。
有沒有辦法證明報(bào)文本身沒被篡改呢?大體思路是這樣的:
- 報(bào)文中確保有發(fā)送者的簽名
- 簽名一定要與內(nèi)容進(jìn)行綁定,內(nèi)容變了,簽名失效。(完成這種機(jī)制的就是數(shù)字簽名)
值得注意的是,“簽名” 一詞在中文里面表達(dá)一種不變量,比如小明本人簽字,內(nèi)容一定是“小明”。而在計(jì)算機(jī)世界中,這個(gè) “簽名” 是被計(jì)算出來的,根據(jù)內(nèi)容實(shí)時(shí)變化的。
2.1 數(shù)字簽名的原理
數(shù)字簽名以非對(duì)稱加密為基礎(chǔ)。
“公鑰加密,私鑰解密” 這個(gè)是大多數(shù)人的共識(shí),但是這里存在容易混淆概念的地方。
因?yàn)橹形牡摹敖饷堋币欢ǔ霈F(xiàn)在“加密”之前。實(shí)際上把 “加密” 和 “解密” 都換成 “運(yùn)算”,更合理些。
因?yàn)檫\(yùn)算是可以滿足交換律的,數(shù)字簽名就是使用的運(yùn)算的交換律
- A 生成密文后,用自己的私鑰 (全宇宙只有自己持有),對(duì)密文進(jìn)行X運(yùn)算,生成數(shù)字簽名。把密文和數(shù)字簽名一起發(fā)送給 B
- B 收到密文后,先用 A 的 公鑰 對(duì)數(shù)字簽名進(jìn)行D運(yùn)算。由于X運(yùn)算和D運(yùn)算滿足交換律,所以對(duì)數(shù)字簽名進(jìn)行D運(yùn)算會(huì)解析出密文。如果這個(gè)密文和A給的密文不一致,則報(bào)文被篡改。
- 以上的 D運(yùn)算 實(shí)際上就是驗(yàn)簽
- 由于A的私鑰是全宇宙唯一的,所以A的簽名不可偽造,也不可抵賴(A說自己沒發(fā)過這個(gè)報(bào)文,但是世界不會(huì)承認(rèn)他沒發(fā)過)
2.2 數(shù)字簽名的實(shí)施難點(diǎn)
非對(duì)稱加密比較消耗資源,特別是對(duì)大報(bào)文進(jìn)行運(yùn)算。
2.2 數(shù)字簽名的實(shí)際應(yīng)用 —— 引入摘要算法
既然大報(bào)文消耗性能,能不能把報(bào)文弄小? 思路其實(shí)就是摘要算法,常見的 md5、sha-1 就是摘要算法(也叫散列算法)。
- 程序中的應(yīng)用
// 把簽名拼接到密文后面,接收者再解析出簽名,驗(yàn)簽即可
密文.簽名
3. 實(shí)體鑒別 —— CA證書
上文提到,現(xiàn)實(shí)的通信基礎(chǔ),是對(duì)稱和非對(duì)稱加密結(jié)合。那么自然就引出了兩個(gè)議題
- 如何交換密鑰
- 如何證明 “A的公鑰屬于A”
這塊內(nèi)容是密鑰管理的內(nèi)容,內(nèi)容多的可以單獨(dú)開個(gè)專題來講了。對(duì)于通信雙方,只需要知道CA證書的存在即可,他是作為密鑰管理的第三方,CA = Certification Authority (認(rèn)證中心)。具體的管理方式:
- A 在認(rèn)證中心上注冊(cè)了自己的公鑰,獲得了CA證書。
- B 要與 A 通信前先用 A 給的 CA 證書去認(rèn)證中心確認(rèn)公鑰來自于 A
后記
值得一提的是,理解了上述概念,再看看jwt的報(bào)文組成,就顯得合理多了。
另外,理解報(bào)文加密、數(shù)字簽名就寫到這里。
下面的兩個(gè)話題主要是防止中間人攻擊。文章來源:http://www.zghlxwxcb.cn/news/detail-673317.html
- 端點(diǎn)鑒別
- 類似于回答 “證明你是你的問題”,比如現(xiàn)實(shí)生活中的活體認(rèn)證(掃臉)。
EG:- 一個(gè)ip數(shù)據(jù)包的源地址為 102.189.67.134,已知報(bào)文可以偽造,怎么證明該ip數(shù)據(jù)包就是 102.189.67.134 發(fā)出的
- 結(jié)論:類似這種 ip欺騙 (如 DDOS 攻擊)的攻擊手段,在網(wǎng)絡(luò)層執(zhí)行。應(yīng)用層已經(jīng)沒有痕跡了 ,只能用 加密口令 加大攻擊難度
- 類似于回答 “證明你是你的問題”,比如現(xiàn)實(shí)生活中的活體認(rèn)證(掃臉)。
- 防止重放攻擊
- 可以聯(lián)想一下業(yè)務(wù)的冪等控制,通常以”加鎖“的方式實(shí)現(xiàn)。但是通信領(lǐng)域需要高效的解決方案,加鎖太重了,取而代之的是采用 ”不重?cái)?shù)集“。
EG:- 102.189.67.134 發(fā)起交易請(qǐng)求的報(bào)文被攻擊者復(fù)制了一份(注意,是復(fù)制而不是截獲,因?yàn)閱栴}主干是 “重放”),攻擊者把源ip地址改為 102.189.67.134 (偽造成原來的發(fā)送方),再發(fā)送出去,接收方怎么識(shí)別這種攻擊呢?
- 結(jié)論:類似于TCP的滑動(dòng)窗口,兩邊約定一個(gè)不重?cái)?shù)集合,消費(fèi)過的數(shù)據(jù)不會(huì)被重復(fù)消費(fèi)。
- 可以聯(lián)想一下業(yè)務(wù)的冪等控制,通常以”加鎖“的方式實(shí)現(xiàn)。但是通信領(lǐng)域需要高效的解決方案,加鎖太重了,取而代之的是采用 ”不重?cái)?shù)集“。
實(shí)際開發(fā)中暫時(shí)還接觸不到這些,等有實(shí)際的工作體驗(yàn)后再來補(bǔ)充這部分的內(nèi)容。文章來源地址http://www.zghlxwxcb.cn/news/detail-673317.html
到了這里,關(guān)于【網(wǎng)絡(luò)安全】理解報(bào)文加密、數(shù)字簽名能解決的實(shí)際問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!