1. 程式人生 > >數字證書與數字簽名

數字證書與數字簽名

數字證書:

在HTTPS客戶端與伺服器第一次互動時,服務端返回給客戶端的數字證書是讓客戶端驗證這個數字證書是不是服務端的,證書所有者是不是該伺服器,確保資料由正確的服務端發來,沒有被第三方篡改。數字證書可以保證數字證書裡的公鑰確實是這個證書的所有者(Subject)的,或者證書可以用來確認對方身份。證書由公鑰、證書主題(Subject)、數字簽名(digital signature)等內容組成。其中數字簽名就是證書的防偽標籤,目前使用最廣泛的SHA-RSA加密。

證書一般分為兩種:

一種是向權威認證機構購買的證書,服務端使用該種證書時,因為蘋果系統內建了其受信任的簽名根證書,所以客戶端不需額外的配置。為了證書安全,在證書釋出機構公佈證書時,證書的指紋演算法都會加密後再和證書放到一起公佈以防止他人偽造數字證書。而證書機構使用自己的私鑰對其指紋演算法加密,可以用內建在作業系統裡的機構簽名根證書來解密,以此保證證書的安全。

另一種是自己製作的證書,即自簽名證書。好處是不需要花錢購買,但使用這種證書是不會受信任的,所以需要我們在程式碼中將該證書配置為信任證書。這就是本文的主要目的。

數字簽名

數字簽名技術是將摘要資訊用傳送者的私鑰加密,與原文一起傳送給接收者。接收者只有用傳送者的公鑰才能解密被加密的摘要資訊,然後用HASH函式對收到的原文產生一個摘要資訊,與解密的摘要資訊對比。如果相同,則說明收到的資訊是完整的,在傳輸過程中沒有被修改,否則說明資訊被修改過,因此數字簽名能夠驗證資訊的完整性。

對數字簽名和數字證書的理解一直較模糊。

最近看了一篇很形象的關於數字證書的圖形化介紹, 豁然就開朗了^^

中文版

1. 鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。

    

2.  鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。

3.  蘇珊要給鮑勃寫一封保密的信。她寫完後用鮑勃的公鑰加密,就可以達到保密的效果

4. 鮑勃收信後,用私鑰解密,就看到了信件內容。這裡要強調的是,只要鮑勃的私鑰不洩露,這封信就是安全的,即使落在別人手裡,也無法解密。

5.  鮑勃給蘇珊回信,決定採用 "數字簽名"。他寫完後先用Hash函式,生成信件的摘要(digest)

6. 然後,鮑勃使用私鑰,對這個摘要加密,生成"數字簽名"(signature)。

7. 鮑勃將這個簽名,附在信件下面,一起發給蘇珊。

8. 蘇珊收信後,取下數字簽名,用鮑勃的公鑰解密,得到信件的摘要。由此證明,這封信確實是鮑勃發出的。

9. 蘇珊再對信件本身使用Hash函式,將得到的結果,與上一步得到的摘要進行對比。如果兩者一致,就證明這封信未被修改過。

10.  複雜的情況出現了。道格想欺騙蘇珊,他偷偷使用了蘇珊的電腦,用自己的公鑰換走了鮑勃的公鑰。此時,蘇珊實際擁有的是道格的公鑰,但是還以為這是鮑勃的公鑰。因此,道格就可以冒充鮑勃,用自己的私鑰做成"數字簽名",寫信給蘇珊,讓蘇珊用假的鮑勃公鑰進行解密。

11.  後來,蘇珊感覺不對勁,發現自己無法確定公鑰是否真的屬於鮑勃。她想到了一個辦法,要求鮑勃去找"證書中心"(certificate authority,簡稱CA),為公鑰做認證。證書中心用自己的私鑰,對鮑勃的公鑰和一些相關資訊一起加密,生成"數字證書"(Digital Certificate)。


12. 鮑勃拿到數字證書以後,就可以放心了。以後再給蘇珊寫信,只要在簽名的同時,再附上數字證書就行了。

13. 蘇珊收信後,用CA的公鑰解開數字證書,就可以拿到鮑勃真實的公鑰了,然後就能證明"數字簽名"是否真的是鮑勃籤的。

14. 下面,我們看一個應用"數字證書"的例項:https協議。這個協議主要用於網頁加密。

15. 首先,客戶端向伺服器發出加密請求。

16. 伺服器用自己的私鑰加密網頁以後,連同本身的數字證書,一起傳送給客戶端。

17. 客戶端(瀏覽器)的"證書管理器",有"受信任的根證書頒發機構"列表。客戶端會根據這張列表,檢視解開數字證書的公鑰是否在列表之內。

18. 如果數字證書記載的網址,與你正在瀏覽的網址不一致,就說明這張證書可能被冒用,瀏覽器會發出警告。

19 .如果這張數字證書不是由受信任的機構頒發的,瀏覽器會發出另一種警告

20.如果數字證書是可靠的,客戶端就可以使用證書中的伺服器公鑰,對資訊進行加密,然後與伺服器交換加密資訊。


總結

數字簽名 就是使用個人私密和加密演算法加密的摘要和報文,是私人性的。而數字證書是由CA中心派發的.

相關推薦

數字證書數字簽名

數字證書: 在HTTPS客戶端與伺服器第一次互動時,服務端返回給客戶端的數字證書是讓客戶端驗證這個數字證書是不是服務端的,證書所有者是不是該伺服器,確保資料由正確的服務端發來,沒有被第三方篡改。數字證書可以保證數字證書裡的公鑰確實是這個證書的所有者(Subject)的,或

OpenSSL學習之使用個人資訊數字證書(PFX)進行簽名和驗證

from  http://blog.csdn.net/michelsn/article/details/2311140 最近需要用到數字簽名的相關技術,但是網路上對這方面的文章說的含糊,所以自己把這段時間在學習OpenSSL過程中得到心得發表出來,供大家討論,歡迎大家聯絡

.NET中的安全性之數字簽名數字證書、強簽名程式集、反編譯

本文將探討數字簽名、數字證書、強簽名程式集、反編譯等以及它們在.NET中的運用(一些概念並不侷限於.NET在其它技術、平臺中也存在)。 1.數字簽名 數字簽名又稱為公鑰數字簽名,或者電子簽章等,它藉助公鑰加密技術實現。數字簽名技術主要涉及公鑰、私鑰、非對稱加密演算法。 1

數字證書身份認證攻防

vat -- 證書頒發機構 篡改 證書認證 客戶 攻擊 第一步 沒有 數字證書是一個電子文檔,其中包含了持有者的信息、公鑰以及證明該證書有效的數字簽名。 證書簽名與驗簽: 簽名: 上級證書擁有者,搜集到下級證書申請信息後,將整體信息使用私鑰簽名; 驗簽: 使用上

java-hashset隨機數字放入後大小排序的假象,以及數字大小數字範圍的關係。

起因 首先是因為thinking in java的一個例子(一個存放int的set集合): 但是與他期待的output不一致: 出現了從小到大的順序排列輸出。 仔細看看果然沒什麼差別(網上看到原因是jdk版本不一致,hashmap的hash演算法

HttpClient實現HTTPS客戶端程式設計---可信證書簽名證書

HttpClient的HTTPS客戶端程式設計—可信證書與自簽名證書 本文基於HttpClient4.5.4,對可信證書和自簽名證書的網站訪問編碼,涉及https連線過程、證書、證書鏈、根證書、keystore、自簽名等概念,就不在本文中細說了。

幾個例子理解對稱加密非對稱加密、公鑰私鑰、簽名驗籤、數字證書、HTTPS加密方式

# 原創,轉載請留言聯絡 為什麼會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底還是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不希望給別人看見吧。而各種各樣的技術就是為了保障通訊的安全。(本文務必從上到下看) 1.對稱加密與非對稱加密 對稱加密: 對稱加密是

加解密,對稱非對稱 簽名 數字證書原理

文中首先解釋了加密解密的一些基礎知識和概念,然後通過一個加密通訊過程的例子說明了加密演算法的作用,以及數字證書的出現所起的作用。接著對數字證書做一個詳細的解釋,並討論一下windows中數字證書的管理,最後演示使用makecert生成數字證書。如果發現文中有錯誤的地方,或

數字簽名數字證書

前言 先看一下百度百科對數字簽名和數字證書的解釋: 數字簽名: 將報文按雙方約定的HASH演算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。 將該報文摘要值用傳送者的私人

數字簽名數字證書形象解釋

前言 先看一下百度百科對數字簽名和數字證書的解釋: 數字簽名: 將報文按雙方約定的HASH演算法計算得到一個固定位數的報文摘要。在數學上保證:只要改動報文中任何一位,重新計算出的報文摘要值就會與原先的值不相符。這樣就保證了報文的不可更改性。 將該報文摘要值用傳送者

數字簽名數字證書的原理

在瞭解數字簽名和數字證書之前,可以先了解一下加密演算法的一些常見分類,我之前寫了一篇介紹常見加密演算法的文章。https://www.cnblogs.com/mysticbinary/p/12615063.html # 將軍與士兵通訊 ---- 數字簽名原理 為了用最簡單的方式來講解數字簽名,我下面

數字簽名數字證書,CA認證等概念理解

ca 認證 https openssl 本文將介紹數字簽名,數字證書以及CA相關知識。 加密相關知識可見我的上一篇博文:http://watchmen.blog.51cto.com/6091957/1923426本文參考文獻引用鏈接:1、https://www.zhihu.com

一句話解釋數字簽名。一句話解釋數字證書

本地 www git cat 一句話 主機 cer 自己的 需要 一句話解釋數字簽名 數字簽名是:遠程主機端將需要返回給客戶端的原始信息,用Hash函數,生成摘要(digest)信息,然後用主機端的私鑰對摘要(digest)信息加密,加密後的信息就成了數字簽名。整個過程經

數字簽名 數字證書

htm iar 升級 mmc fde 用法 eve import 現場 數字簽名原理簡介(附數字證書) 首先要了解什麽叫對稱加密和非對稱加密,消息摘要這些知識。 1. 非對稱加密 在通信雙方,如果使用非對稱加密,一般遵從這樣的原則:公鑰加密,私鑰解密。同時,一般一個密鑰加密

自己生產簽名數字證書的方法

-1 eat 選擇 height window lin eclips ati img 一、原因 1、如果apk發布到網上,系統默認的簽名debug.keystore存在安全問題,所以要自己寫簽名。 二、方法 方法一:利用JDK中的keytool.exe工具 利用JD

加密、數字簽名數字證書

對稱加密 非對稱加密 數字簽名 數字證書加密、數字簽名和數字證書 1 對稱加密對稱加密算法中,加密和解密使用的是同一個秘鑰,所以秘鑰的保護是非常重要的,對稱加密和解密過程如下圖:對稱算法加密過程對稱算法解密過程盡管對稱秘鑰能夠滿足對內容的加密了,但是對稱算法還是存在以下兩個問題的。1、秘鑰泄密風險

Java加解密數字簽名

對稱 數組 aes 生成密鑰 分解 encode rup 特性 ntc Java加解密與數字簽名 2016-08-30 蕊蕊 java編程 ** Java加解密 ** 實現方式:JDK實現,CC,B

對稱(DES/AES)非對稱(RSA/SSL/數字證書)加密介紹及實際應用

行數據 服務端 版本 報道 pass edi 得到 參數 crc 本文不對具體的算法做深入研究,只是講解各種安全算法的原理和使用場景。 一、數據校驗算法 數據校驗,是為保護數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。當接收方用同樣的算法再算一次校驗值,如

makecert 制作數字證書 給DLL加一個數字簽名

一個數 signature 結構 用戶 com 文章 國家 令行 磁盤 聲明:文章整理自互聯網 我僅需要給dll添加(替換)一個簽名,所以我只看了第一步和第三步,其余的部分我沒有測試,不能保證內容的是否正確. 看了很多關於DLL加簽名的教程 大多是錯誤的 完全無法正常走下去

數字簽名原理簡介(附數字證書

的人 提高效率 接收消息 沒有 一個 mage tro 這就是 div http://www.cnblogs.com/kingsleylam/p/4985571.html 首先要了解什麽叫對稱加密和非對稱加密,消息摘要這些知識。 1. 非對稱加密 在通信雙方,