古詩詞大全網 - 藝術簽名 - 加密、簽名、證書的作用及運用場景

加密、簽名、證書的作用及運用場景

本文主要是簡單介紹了常見的加密類型、各自的運用場景、為什麽需要數字簽名和數字證書、HTTPS涉及到的加密流程等。這裏主要從使用者的角度出發,對算法本身不做過多介紹。

對稱/非對稱加密均屬於 可逆加密,可以通過密鑰將密文還原為明文

有時候,我們希望明文壹旦加密後,任何人(包括自己)都無法通過密文逆推回明文,不可逆加密就是為了滿足這種需求。

不可逆加密主要通過 hash算法實現:即對目標數據生成壹段特定長度hash值 ;無論妳的數據是1KB、1MB、1GB,都是生成特定長度的壹個Hash值(比如128bit)。這裏大家應該能感受到壹點 不可逆 的味道,加密後128bit的hash值顯然無法還原出1個G甚至更大的不規則數據的, hash可以看做是原來內容的壹個摘要

常見算法:

小明給小紅寫信:

經過九轉十八彎後,信的內容有可能:1. 被窺視 2. 被篡改(冒充小明發送假消息)

小紅先 生成對稱加密的密鑰key1 ,然後通過壹個安全的渠道交予小明。

傳輸數據時,小明 使用key1加密 ,而小紅收到後再 使用key1解密

這時候 中間者既看不到原來的內容,也沒辦法篡改 (因為沒有密鑰):

對稱加密實現簡單,性能優秀 ,算法本身安全級別高。然而對 密鑰的管理 卻是個很頭疼的問題:壹旦密鑰交到對方手裏,對方對密鑰的保管能力 我方是沒辦法控制 的,壹旦對方泄露的話,加密就形同虛設了。

相對而言,非對稱加密的公鑰就沒有這個憂慮,因為 公鑰 的設計就是為了 可以公開的 ,盡管對方泄露,我方也不會有任何損失。

小紅生成壹對公私鑰,自己持有私鑰(pri_key1),將公鑰(pub_key1)交予小明。

傳輸數據時,小明使用 公鑰加密 ,小紅使用 私鑰解密

因為 中間者沒有私鑰,公鑰加密的內容是無法獲取的 。此時達到了 防窺視 的效果:

然而因為 公鑰是可以公開的 ,如果 中間者知曉公鑰 的話,盡管沒有辦法看到原來的內容,卻 可以冒充小明發送假消息

這時小紅在想,如果小明發送消息時,能帶上 只有他自己才能生成 的數據(字符串),我就能 驗證是不是小明發的真實消息 了。

通常這個 能證實身份的數據(字符串) 被稱之為 數字簽名(Signature)

小明再生成壹對公私鑰 ,自己持有私鑰(pri_key2),將公鑰交予小紅(pub_key2)。

當小明傳輸數據時(可能很大),除了公鑰加密明文之外,還要帶上簽名:(1) 對明文做壹個hash摘要 (2)對摘要進行私鑰加密,加密結果即簽名(傳輸內容=內容密文+簽名)

小紅收到後:(1) 解密簽名獲取hash (2)解密內容密文,對解密後的明文進行hash;如果兩個hash壹致,說明驗簽通過。

盡管中間者修改了傳輸內容,但因為簽名無法冒認(沒有私鑰),小紅驗簽失敗,自然不會認可這份數據:

通常 非對稱加密要做到防窺視和防篡改,需要有兩對公私鑰 :對方的公鑰用於內容加密,自己的私鑰用於簽名(讓對方驗證身份)。

因為HTTP協議明文通信的安全問題,引入了HTTPS:通過建立壹個安全通道(連接),來保證數據傳輸的安全。

服務器是 沒辦法直接將密鑰傳輸到瀏覽器的 ,因為在 安全連接建立之前,所有通信內容都是明文的 ,中間者可窺視到密鑰信息。

或許這時妳想到了非對稱加密,因為公鑰是不怕公開的:

然而在第2步, 中間者可以截取服務器公鑰,並替換成了自己的公鑰 ,此時加密就沒意義了:

為了 防止公鑰被假冒,數字證書(digital certificate )便誕生了

當服務器需要告訴瀏覽器公鑰時,並不是簡單地返回公鑰,而是響應 包含公鑰信息在內的數字證書

證書主要包含以下內容:

瀏覽器通過 頒發機構的公鑰進行解密驗簽 ,驗簽通過即說明證書的真實性,可以放心取 證書擁有者的公鑰 了。( 常用CA機構的公鑰都已經植入到瀏覽器裏面

數字證書只做壹件事: 保證 服務器響應的 公鑰是真實的

以上保證了 [瀏覽器?服務器] 是加密的,然而 [服務器?瀏覽器] 卻沒有(上圖第4步);另外壹個是 性能問題 ,如果所有數據都使用非對稱加密的話,會消耗較多的服務器資源,通信速度也會受到較大影響。

HTTPS巧妙地結合了非對稱加密和對稱加密,在保證雙方通信安全的前提下,盡量提升性能。

HTTPS(SSL/TLS)期望 建立安全連接後,通信均使用對稱加密

建立安全連接的任務就是讓 瀏覽器-服務器協商出本次連接使用的對稱加密的算法和密鑰 ;協商過程中會使用到非對稱加密和數字證書。

特別註意的是:協商的密鑰必須是不容易猜到(足夠隨機的):

其中比較核心的是隨機數r3(pre-master secret),因為之前的r1、r2都是明文傳輸的, 只有r3是加密傳輸 的。至於為什麽需要三個隨機數,可以參考:

以上是壹個比較簡單的HTTPS流程,詳細的可以參考文末的引用。

參考資料:

[1] 數字證書應用綜合揭秘

[2] SSL/TLS協議運行機制的概述

[3] 圖解SSL/TLS協議

[4] 《圖解HTTP》