Web安全專業術語講解:金鑰、隨機數、雜湊值、簽名、數字證書、https
本篇對web安全中一些常見概念做個基本介紹,並最終整合為https的整個流程。本文介紹的加密方法純屬個人虛構,與現實無關。因為現實中的加密演算法太過複雜,暫不討論。這裡只用最簡單的方法舉例,只把概念講清楚,也不考慮破解的可能性。
凱撒密碼
這是凱撒當年的軍用密碼,是最古老,也是最簡單的一種密碼。舉個例子:
明文:ok
密文:rn
加密方式很簡單,將明文字母向右偏移三位,o就是r,k就是n。解密就是反方向偏移三位。
金鑰
上面凱撒密碼的金鑰就是3。發訊息時使用密文傳輸,即使被黑客攔截,他無法理解rn是什麼意思,只有擁有金鑰的人才能解密真正的訊息明文,而金鑰只有發訊息和收訊息的人才知道。
隨機數(加鹽)
假如收信人每次收到rn都會去做同樣的事情,那麼黑客再攔截到rn密文時,他不用破解就可以預測到收信的人行為了,他甚至可以主動給收信人發rn,從而在需要時控制收信人。
隨機數的作用就是使密文變的不可預測,假如隨機數是5,5*1=5,密文將偏移5位,同時將隨機數5也發給收信人。接收人也用相同的演算法5*1=5,從而得知這一次的解密金鑰是5,要反向偏移5位而不是固定的3位。並且隨機數是不可重複的,這樣每次的密文都會完成不同,無法預測。
雜湊值(訊息摘要)
有時候我們下載一些檔案,對方可能還會提供雜湊值,比如md5、sha大家應該不會陌生吧,它們都是生成雜湊值的不同演算法。廠商將原始檔案通過一定演算法生成雜湊值(一串字串),公佈出來。使用者下載後,自己再用工具算一遍,得出的雜湊值相同,說明檔案沒有被擅改過。如果不相同,你下載的檔案有可能已經被黑客植入惡意指令碼。
生成雜湊值的過程是不可逆的,比如20(原文)除以8(雜湊演算法)等於2(雜湊值),餘數4被丟棄了,所以2和8是不可能倒推出20的。而我們拿到20再算一遍,必然得出結果2,和廠商比對一樣,說明20就是原檔案,沒有被擅改過。
不論原始檔案或訊息有多麼大,最終生成的雜湊值都可以是非常簡短的,可以反覆做除法,一直除到想要的長度,這樣便於傳輸攜帶。
非對稱加密
在網際網路上,我們通常不會只和一個使用者通訊,假如他們每個人都知道我們的金鑰,那他們就可以互相解密了。你也可以給每個使用者都單獨配一個不同的金鑰,但如果我們的使用者非常多,要管理這麼多的金鑰是非常麻煩的事情。
非對稱加密指有兩個金鑰,公鑰和私鑰,成對出現 。公鑰是公開的金鑰,所有使用者可以用它加密,不能解密。而私鑰是伺服器私有,只能解密,不能加密。從而保證所有人發的訊息只有伺服器能看到。也可以反過來,用私鑰加密訊息,用公鑰解密,可以保證訊息確實是伺服器發出的。
比如上面說的20除以8等於2,丟棄餘數4,從而使2和8無法倒推出20。假如現在伺服器知道餘數是4,不就可以倒推了嗎?我們提前做幾道演算法:2*8+4=20,3*8+4=28。。。假如原文是49,加密時隨機將其拆分成20+28+1。根據前面的演算法,20=2,28=3,多出的尾數1保留,密文就是231。由於不知道餘數4,黑客即使知道演算法*8和尾數1,也無法通過231還原出49。而我們知道餘數4,就可以用2還原出20,用3還原出28,最後20+28+1得出原文就是49。而餘數4就是我們的私鑰。
非對稱加密雖然安全性更高,但從上面就可以看出,非對稱加密比對稱加密複雜的多,效能也低的多。所以它並不能完全取代對稱加密,只適合對一些較短的關鍵性的內容加解密,如下。
數字簽名
雜湊值保證了訊息完整性,而且簡短便於傳輸,但是無法確認訊息來源。黑客可以攔截訊息,然後冒名發出一條假訊息,並相應生成假訊息的雜湊值,發給收信人。收信人比對雜湊值一致還誤以為是真實伺服器發出的。
數字簽名和現實中的簽名作用一樣,用於識別身份,而且非常簡短。比如:採用非對稱加密技術,發信人用私鑰對雜湊值進行加密,收信人用公鑰解密出雜湊值。因為只有私鑰才能加密,加密後的內容就相當於個人簽名,只有與其對應的公鑰才能解密,只要能解密成功就能證明訊息來源的真實性,偽造的簽名是無法被特定的公鑰識別的。然而公鑰就一定是安全的嗎?
證書
使用者的公鑰都是從網上獲取。而黑客同樣可以進行攔截,並將黑客的公鑰替代伺服器的公鑰發給使用者,使用者用公鑰加密後,黑客可以用他的私鑰直接解密。此時就需要第三方認證機構對公鑰進行認證了。
1,如果伺服器需要認證,則向認證機構申請。
2,認證機構用自己的私鑰對伺服器的相關資訊(包含公鑰)進行數字簽名,相關資訊和簽名就構成了伺服器證書。
3,使用者訪問伺服器時,伺服器將其證書發給使用者。
4,使用者在安裝window作業系統時,預設會安裝受信任的認證機構的證書,證書中也包含認證機構的公鑰。使用者瀏覽器用認證機構的公鑰,解密伺服器證書的數字簽名,得到雜湊值。然後將伺服器證書中的公鑰與雜湊值(摘要)進行比對,從而確認伺服器公鑰的真實性。所以,如果你的伺服器作業系統不是正版的,或雜湊值比對不一致,那從根本上就無法保證伺服器的安全性。
https
理解了以上內容,基本上就可以明白https的通訊過程了
1,客戶端發起請求,和伺服器協商將使用的加密演算法,傳輸協議等資訊,這些內容都是公開的。
2,伺服器將自己的證書發給客戶端。
3,客戶端驗證證書合法性。
4,客戶端生成對稱加密金鑰,用伺服器證書中的公鑰對金鑰加密,發給伺服器,伺服器用私鑰解密拿到對稱金鑰。
5,安全性相關工作全部確認完閉,客戶端和伺服器開始使用對稱金鑰傳送業務訊息。
對稱金鑰
以上https可以發現,低效能的非對稱金鑰只是用在安全確認環節上,只對較短的關鍵內容進行加解密。而訊息的內容有可能是非常長的,比如一個html上千行程式碼,此時用對稱金鑰效能更高,最後生成的對稱金鑰也只有伺服器和客戶端彼此知道。
相關文章
- 超詳細https握手與數字簽名講解HTTP
- 安全基礎:數字信封、數字簽名、數字證書(加簽驗籤,加密解密)加密解密
- 公鑰加密、數字簽名、訊息認證加密
- 對稱加密、非對稱加密、RSA、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- https數字證書作用和數字證書是否可以登出?HTTP
- FDA ESG的數字簽名證書是什麼?怎麼獲取FDA ESG 數字證書?
- C# 獲取PDF中的數字簽名證書C#
- PKI 數字證書隨筆
- HTTPS-自己生成數字證書HTTP
- 支付介面教程——公鑰與私鑰,雙鑰加密和數字簽名加密
- 文件數字簽名工作原理是什麼?文件簽名有什麼好處?哪些行業使用文件簽名證書?行業
- Java 新增、驗證PDF 數字簽名Java
- Apache 配置https 自簽名證書 或者 購賣證書ApacheHTTP
- win10 禁止驗證數字簽名方法 win10 如何禁用數字簽名Win10
- 3分鐘告訴你什麼是 非對稱加密、對稱加密、公鑰、私鑰、數字證書、數字簽名、資訊摘要、中間人攻擊、CA、根證書加密
- netcore 內網部署https自簽名證書NetCore內網HTTP
- 自簽名SSL證書安全嗎?
- 簡易實現 HTTPS (二) 自簽名證書HTTP
- app直播原始碼,uniapp隨機數生成簽名APP原始碼隨機
- 什麼是自簽名SSL證書?自簽名證書有哪些安全隱患?
- 大話數字簽名
- iOS證書籤名機制&重簽名&防止重簽名iOS
- 關於https 證明公開金鑰正確性的證書HTTP
- Java 獲取PDF數字簽名證照資訊Java
- SSL證書屬於數字證書嗎?數字證書有哪些
- 給軟體數字簽名
- win10 如何禁用數字簽名 win10 關閉數字簽名方法Win10
- 自簽名的SSL證書與專業的SSL證書有哪些區別?
- Android facebook KeyHash生成(生成釋出金鑰雜湊)Android
- 詳解數字簽名的含義及作用
- Window 7 驅動數字簽名解決方案
- WHQL認證如何給驅動程式做數字簽名
- 本地簽發ssl證書(https)HTTP
- 數字證書不僅有SSL證書,數字證書型別科普大全型別
- 支付寶介面的數字簽名
- 程式碼簽名證書
- 自簽名ssl證書
- 如何關閉win10的數字簽名_win10禁用數字簽名的方法Win10