打個比方,有兩個小朋友在網上相互發訊息,名字分別是小明和小紅,小明想要給小紅發個訊息,但是呢,又擔心發的訊息被別人修改,就像信件被郵局修改那樣。所以呢,小明想了個辦法。給資料「簽個名」,然後小紅同學呢,就驗證這個資料的簽名是不是小明同學的,如果是,那麼資料沒有被修改。那怎麼簽名呢?
這種蓋章的好處是什麼呢?很簡單,因為如果要改變內容的話,就一定會改變蓋的章,所以,小紅就可以輕易地檢測出信件是否被修改過。好,這是現實情況。在資料的世界裡怎麼辦呢?怎麼給資料「蓋章簽名」呢?
要給資料蓋章,我們就得搞懂兩個問題:
資料世界裡,什麼是「章」
資料的重要內容是什麼
這部分可能得扯很久,為了簡單起見,只簡單的說一下。在數字的世界裡,有一門學科叫密碼學,密碼學中又有乙個領域就非對稱加密,非對稱加密有兩個金鑰,乙個叫私鑰,乙個叫公鑰。這兩個金鑰都可以用於給資料加解密:
如果是私鑰加的密,那麼就用公鑰解密
如果是公鑰加的密,那麼就用私鑰解密
都可以加解密的話,公鑰私鑰有什麼區別,就一點:私鑰可以推斷出公鑰,但反過來不行。所以,只要我們手裡的私鑰不給任何人,只有自己知道的前提下,我們就可以用私鑰給資料加密,然後把公鑰給別人,讓他用公鑰解密。如果公鑰無法解密,說明私鑰不是我的。所以,公鑰體系能達到「章」的作用。
這就簡單了,就是資料的雜湊值(這裡較為簡單,就一筆帶過了,如果有不懂的同學,可以google下)。
懂了公私鑰的話,簽名的概念就容易理解了。簽名就是用私鑰將資料的雜湊值加密,然後接收方用公鑰解密出雜湊值,然後接收方再計算一次資料的雜湊進行對比,不同,則資料被篡改。
回到例子本身,過程如下:
小明準備一套私鑰和公鑰
將公鑰發給小紅
編寫一條訊息
計算訊息的雜湊值
用私鑰對上面計算出的雜湊值加密,將簽名附在訊息的後面
將訊息發給小紅
小紅接收到訊息
解析出簽名
用公鑰解密簽名獲得雜湊
自己計算一次資料雜湊
對比雜湊值
得出結果
以上就是資料簽名的原理和用途。那到底什麼是數字認證呢?
上面有乙個很重要的一步,就是第2步:將公鑰發給小紅
。小紅怎麼知道這個公鑰是小明給她的呢?
這裡就需要數字證書了。也就是說,資料證書是來解決公鑰的信任問題的。
到這一步,密碼學的幫助其實就不大了,因為我們要引入權威第三方機構了。
首先,小紅和小明得找到乙個雙方都信任的第三方機構,這個機構我們將它 稱為ca(certificate authority)首先給兩人各發一張證書。
這張證書裡有下面這些內容:
證書的簽名就是上述的數字簽名,資料是公鑰,所以,小紅和小明可以用證書裡的公鑰對簽名進行解密,然後自己對公鑰進行雜湊計算,然後進行驗證,從而可以確保ca證書是正確的。這個證書叫根證書。簽發者:ca自己
公鑰:1024/2048位公鑰(明文)
有效期:xx
雜湊演算法:將公鑰生成雜湊
加密演算法:將雜湊用私鑰加密,生成簽名
簽名:見上
然後接下來,小明將自己的公鑰和自己的一些資訊交給ca中心,ca中心呢,就按照上述的格式給小明簽發了一組證書,內容如下:
然後有了證書的小明就把自己的證書發給小紅,小紅拿到後,先用ca的公鑰解密簽名,然後就是將小明的公鑰進行雜湊計算,對比一下後就可確定這的確是小明的公鑰。簽發者:ca
公鑰:小明的公鑰
有效期:xx
雜湊演算法:將小明的公鑰生成雜湊
加密演算法:將雜湊用私鑰加密,生成簽名
簽名:見上
以上就是數字證書的原理。
SSL,HTTPS,數字證書
ssl https secure hypertext transfer protocol 安全超文字傳輸協議 它是由netscape開發並內置於其瀏覽器中,用於對資料進行壓縮和解壓操作,並返回網路上傳送回的結果。https實際上應用了netscape的完全套接字層 ssl 作為http應用層的子層。...
SSL 數字證書
secure 可靠的.安全的 socket 座 layer 層 ssl 協議 ssl 是乙個安全協議,它提供使用 tcp ip 的通訊應用程式間的隱私與完整性。網際網路的 超文字傳輸協議 http 使用 ssl 來實現安全的通訊。由於ssl技術已建立到所有主要的瀏覽器和web伺服器程式中,因此,伺服...
數字證書原理
概念介紹 對稱加密演算法 加密和解密使用同乙個金鑰。非對稱加密演算法 加密和解密使用的金鑰不是同乙個。典型的如rsa 公鑰加密演算法 擁有一對金鑰,公鑰和私鑰,用私鑰進行解密和數字簽名,用公鈅來進行加密及驗證簽名。encryption 加密 decryption 解密 asymmetric 非對稱 ...