活動發起人@小虛竹 想對你說:
這是一個以寫作博客為目的的創作活動,旨在鼓勵大學生博主們挖掘自己的創作潛能,展現自己的寫作才華。如果你是一位熱愛寫作的、想要展現自己創作才華的小伙伴,那么,快來參加吧!我們一起發掘寫作的魅力,書寫出屬于我們的故事。我們誠摯邀請你參加為期14天的創作挑戰賽!
提醒:在發布作品前,請將不需要的內容刪除。
各位看官,大家早安午安晚安呀~~~
如果您覺得這篇文章對您有幫助的話
歡迎您一鍵三連,小編盡全力做到更好
歡迎您分享給更多人哦
今天我們來學習HTTPS協議—加密算法和中間攻擊人的博弈
?? ? ? ? HTTPS不僅是一種安全的通信協議,更是一場加密算法與中間人攻擊者的精彩博弈。在這場博弈中,加密算法就像是一把堅固的鎖,而中間人攻擊者則試圖找到這把鎖的弱點。今天,我們就來深入探討HTTPS協議中的加密算法,以及它們如何與中間人攻擊者展開這場沒有硝煙的戰爭!
? ? ? ?一段數據需要經過一段路程到達目的地,我們如果想要這個數據安全的到達終點,不僅需要護送人實力強大,還需要這個數據本身就具有安全性(如何數據更安全呢?)
我們直接想到的辦法就是對這個數據進行加密!
舉個例子:
?83 版 <<火燒圓明園>> , 有人要謀反干掉慈禧太后. 恭親王奕?給慈禧遞的折子. 折子內容只是扯
一扯家常, 套上一張挖了洞的紙就能看到真實要表達的意思.
明文: "當心肅順, 端華, 戴恒" (這幾個人都是當時的權臣, 后來被慈禧一鍋端).
密文: 奏折全文
密鑰: 挖了洞的紙.
在密碼學中,使用密鑰加密,主要有兩種方式
1.對稱加密
加密和解密使用的密鑰是同一個密鑰,如果只是單純的對稱加密,安全性不能保證。
2.非對稱加密
有兩個密鑰:公鑰和私鑰(一對),公鑰(可以公開的)私鑰自己拿好。用其中一個鑰匙加密,就只能用另一個鑰匙進行解密。
對稱加密算法的效率要比非對稱算法的效率更高!!!
對稱加密算法的加密和解密速度非常快。由于算法的簡單性和高效的數學運算,對稱加密可以在短時間內完成大量的數據加密和解密。
1.HTTPS的加密過程
? ? 在加密的過程中,我們還要考慮到算法的效率,不能單純因為加密的事情,搞得程序變得效率低下,這樣就未免得不償失了
目前我們知道 對稱加密算法效率很高,但不是很安全;非對稱反之。
因此我們很容易就能得出我們需要的加密方法需要二者的結合~(如果還是不行的話,還需要再加上一些其他的機制——證書的使用)
1.1.為何對稱加密不安全的呢?
首先我們知道對稱加密是客戶端和服務器公用一個密鑰,那么這里就分成兩種情況了。
- 所有的客戶端密鑰都一樣(這樣的想都不要想,黑客也和你的密鑰一樣,幾乎沒什么作用)
- 不同的客戶端的密鑰不一樣
第一種明顯是不科學的,那第二種呢?
我先給出的解釋:
如果不一樣的客戶端秘鑰不一樣,但是傳輸密文的時候需要把密鑰發送給服務器然后黑客就能中間拿到了這個秘鑰。
問題:
為什么服務器不維護一個數據庫,通過辨別客戶端的身份然后識別出這個客戶端的密鑰是什么?這樣密鑰就不通過網絡傳輸了,不就安全了?
解釋:
這里存在著很多問題:首先辨識就是一個復雜的過程,根據什么來辨識?在我卡那里主要的矛盾在于——服務器維護成本高:如果服務器需要維護一個包含每個客戶端密鑰的數據庫,這將帶來巨大的管理成本(特別是處理大量的請求時,頻繁地訪問數據庫無疑是一個巨大的開銷)。
這就給我們帶來思考:要是隨時生成的密鑰能安全傳輸就好了(這樣的密鑰肯定要傳輸的呀,不然另一方不知道)(一旦傳輸就又要泄露,所以我們要給這個密鑰再加密)。
故:我們要解決的問題:給密鑰再進行加密。
這個時候我們就可以引出隨時生成的公鑰和私鑰了
1.2.非對稱加密解決對稱加密的不安全問題(但是還會有中間人攻擊的問題)
圖解:
大家可以看到,上面的步驟看似很好的解決了問題。
但是黑客憑什么要把公鑰給你(黑客為什么不進行掉包?)
1.3.中間人攻擊的問題
這里的問題就是:
黑客根本就不會把pub1(服務器生成的是私鑰返回給客戶端),而是把自己pub2返回給了客戶端,但是客戶端完全不知道這個公鑰(pub2)是錯誤的客戶端使用pub2對密鑰進行加密,黑客拿到這個數據,用自己的pri2把密鑰拿出來。在用pub1加密發給服務器(天衣無縫)
這里主要的問題就是客戶端無法分辨這里的公鑰是否正確,如果自己手里面有一個確定的東西可以驗證這個公鑰是否正確,這個問題就解決了
1.4.公正機構的證書解決公鑰是否正確的問題
公證機構(Certificate Authority,簡稱CA):是數字證書的頒發機構(會生成一對公鑰和私鑰,公鑰往往會內置在每個系統中(大家都有),私鑰絕不泄露)
關于公正機構的注釋:
網站的開發人員,想要搭建一個服務器的時候,就需要像公證機構提交申請(提交一些材料,像域名,服務器自己的公鑰(一份就好了,不必每個客戶端都不一樣,主要是密鑰不一樣并且安全傳輸就行了),廠商…………)
然后公證機構就會對這些材料進行審批,審核通過就會頒發一個數字證書(里面包含里服務器的域名,公鑰,證書時間范圍,數字簽名………)
什么是數字簽名呢?
數字簽名是 CA 對證書內容的一個加密哈希值(我們下面姑且稱這個哈希值為校驗和),由以下步驟生成:
計算哈希值
CA 對證書的明文信息(域名、公鑰、有效期等)使用哈希算法(如 SHA-256)生成一個唯一的哈希值。加密哈希值
CA 使用自己的私鑰對這個哈希值進行加密,加密后的結果就是數字簽名。將簽名附加到證書
簽名和證書的其他信息(明文)一起發送給服務器。
具體過程實現:
再來一個問題哈哈:
黑客能否自己也申請一個證書,把服務器的證書替換掉(直接在服務器申請材料的時候把服務器的公鑰換成自己的?)
媽呀,這個黑客也忒狠了!!!
在申請數字證書時,證書頒發機構(CA)會對申請者的身份進行嚴格驗證!!!這包括驗證申請者的身份信息(如公司注冊信息、個人身份證明等)以及申請者對所申請域名的所有權。黑客無法通過這些驗證,因為他們無法提供合法的身份證明和域名所有權證明。(如果這也行,那真沒啥辦法了哈哈哈)
2.總結:
總的來說,我們最終實現HTTPS的加密過程如下:
雖然我的文章結束了,但是加密算法和中間攻擊人的博弈故事還在繼續!!!
寫完真的很激動——哈哈哈
上述就是HTTPS協議—加密算法和中間攻擊人的博弈的全部內容啦~~~
能看到這里相信您一定對小編的文章有了一定的認可。
有什么問題歡迎各位大佬指出
歡迎各位大佬評論區留言修正~~