程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#編程總結(十一)數字證書

C#編程總結(十一)數字證書

編輯:關於C#

這裡來講述數字證書的概念、作用、工作原理以及具體應用。希望能夠給大家一個清晰的認識。

一、概念

數字證書就是互聯網通訊中標志通訊各方身份信息的一串數字,提供了一種在Internet上驗證通信實 體身份的方式,其作用類似於司機的駕駛執照或日常生活中的身份證。它是由一個由權威機構-----CA機 構,又稱為證書授權(Certificate Authority)中心發行的,人們可以在網上用它來識別對方的身份。 數字證書是一種數字標識,提供用戶在互聯網上的身份認證,它是一個經證書授權中心數字簽名的包含 公開密鑰擁有者信息和公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數 字簽名。

二、來自網絡的威脅

隨著互聯網的逐步推廣,網上購物、網銀、電子商務、電子政務等也日益深入,來自網絡的威脅越來 越大,網絡安全重要性愈顯得的重要。

1、竊聽

信用卡號碼被竊取,個人安全信息被竊取

網絡傳輸是在公共信道上進行的,特別是HTTP傳輸大多以明文傳輸,黑客進行竊聽,獲取敏感信息。

2、偽裝

假冒真正的服務器,假冒真正的用戶

這種在日常生活可能經常會遇到,比如,給定一個相似的域名或IP,通過這個訪問的時候直接將信息 提交給假冒的服務器,這時,我們的用戶名密碼可能被竊取,

如工商銀行的網站:www.icbc.com.cn,假冒的服務器地址:www.1cbc.com.cn,而且頁面內容風 格極為相似,用戶登陸後,信用卡號密碼就會被盜取。這種手段不法分子很容易得手。記得之前也曾經 有人冒充QQ網站,通過彈出帶有鏈接的小廣告,跳轉到與QQ登陸畫面類似的頁面,來盜取QQ密碼。

3、篡改

信息在提交到服務器之前被非法修改,最後將自己的錢款轉入了非法者賬戶。

黑客可以盜取用戶的Session、Cache信息,來修改提交到服務器的請求信息。

4、抵賴

除了黑客攻擊之外,還有一個問題,用戶可以否定自己曾經做過的事情。在日常生活中也會遇到同樣 的問題,比如領導明明安排的一個任務,但你可能忘記了就說不知道,沒人通知你,這就叫抵賴,解決 辦法:領導可以調出之前的通話記錄或者郵件,來反擊抵賴。在網絡中問題就沒有這麼簡單了。

三、數字證書的應運而生

在面臨各種網絡威脅時,建立安全證書體系結構是公認的解決方案。數字證書提供了一種在網上驗證 身份的方式。安全證書體制主要采用了公開密鑰體制,其它還包括對稱密鑰加密、數字簽名、數字信封 等技術我們可以使用數字證書,通過運用對稱和非對稱密碼體制等密碼技術建立起一套嚴密的身份認證 系統,從而保證:信息除發送方和接收方外不被其它人竊取;信息在傳輸過程中不被篡改;發送方能夠 通過數字證書來確認接收方的身份;發送方對於自己的信息不能抵賴。

針對上述網絡威脅,可以通過相應的方案予以解決,從而保證網絡行為的安全。

1、Privacy(保密性)

確認信息的保密,不被竊取。

方法:通過公鑰加密或者私鑰加密,保證信息安全。

2、Authentication & Authorization(鑒別與授權)

確認對方的身份並確保其不越權

方法:通過CA判定證書有效性,確定對方真實身份。

3、Integrity(完整性)

確保你收到信息沒有被篡改

方法:通過摘要算法或數字簽名,保證數據完整性

4、Non-Repudiation(抗抵賴)

有證據保證交易不被否認

方法:通過CA有責任對相關通信行為負責,防止行為抵賴。

四、工作原理

數字證書采用公鑰體制,即利用一對互相匹配的密鑰進行加密、解密。每個用戶自己設定一把特定的 僅為本人所知的私有密鑰(私鑰),用它進行解密和簽名;同時設定一把公共密鑰(公鑰)並由本人公 開,為一組用戶所共享,用於加密和驗證簽名。當發送一份保密文件時,發送方使用接收方的公鑰對數 據加密,而接收方則使用自己的私鑰解密,這樣信息就可以安全無誤地到達目的地了。 既能保證數據的 完整性,也能防止行為抵賴。

非對稱加密的原理可見:C#編程總結(七)數據加密。

現在還有一個問題,誰來確定公鑰的真實身份?

顯然通過簡單的約束以及相關算法推理不能達到這個目的。這就需要第三方,也就是我們說的中間人 來進行判定。

這就是CA。

CA(Certificate Authority)是數字證書認證中心的簡稱,是指發放、管理、廢除數字證書的機構。 CA的作用是檢查證書持有者身份的合法性,並簽發證書(在證書上簽字),以防證書被偽造或篡改,以 及對證書和密鑰進行管理。

現實生活中很形象的例子:我們每個人都有身份證,從技術上而言,我們完全可以自己或者找相關技 工,訂做自己的身份證,上面貼上自己的照片+署名,這樣我們彼此就能明確身份了,但是,如果有人冒 名或者改名等,其可以對自己的行為不負責任。所以需要第三方來統一定制身份證,即公安機關,並在 身份證上加蓋公安機關公章,對每個人的信息負責,保證其身份有效性,保證其無法抵賴,一旦發生違 法犯罪的行為,即可對其進行處理。

數字證書--相當於---身份證

CA       --相當於---公安機關

具體通過幾種常見的通信方案,來說明數字證書的原理,

方案1:通信一方作為服務提供方,申請數字證書,保證通信安全。

企業與普通用戶進行通信的過程,也可以認為是某服務器與用戶的之間的通信過程。這個在現實生活 中很常見。

申請數字證書流程:

用戶發送信息:

企業回復(或發送)信息:

用戶驗證證書真實性:

用戶在與企業A進行通信時,必須驗證其身份,這就需要通過CA來驗證其證書的有效期,防 止偽裝。

方案2:結合對稱加密算法

公鑰加密算法雖然安全,但是其加密、解密速度慢,且耗費資源。而私鑰加密,密鑰管理不便,但是 加解密速度快。我們可以結合兩種加密算法,取其所長。

先采用對此加密算法,對傳輸的大量信息進行加密,然後再將密鑰通過非對稱加密算法加密,則接收 方用發送方的公鑰解密獲取密鑰,再用密鑰解密就獲取到了全部信息的明文了。

方案3:通信雙方都申請了數字證書

雙方發送信息時,采用接收方的公鑰加密,接收方打開消息時用其私鑰解密。公鑰來自於證書。

查看本欄目

五、數字證書構成

我們以12306的證書做下講解。網絡購票越來越方便,在使用12306購票之前,必須安裝證書。如何安 裝證書,在12306官網有提供。

如果已經安裝過了,則可以直接打開,默認操作路徑:IE-->工具-->Internet選項-->內容 -->證書-->受信任的根證書頒發機構-->SRCA

具體內容如下:

來介紹幾個重要的概念:

序列號

證書頒發機構 (CA) 分配給證書的唯一序列號。序列號對於給定 CA 頒發的所有證書都是唯一的。

簽名算法:

CA 用於對證書進行數字簽名的哈希算法。

就是指的這個數字證書的數字簽名所使用的加密算法,這樣就可以使用證書發布機構的證書裡面的公 鑰,根據這個算法對指紋進行解密。指紋的加密結果就是數字簽名。是先對主題證書的待簽名數據,進 行sha1運算,然後在用上級CA私鑰進行RSA加密運算。

簽名哈希算法:

生成數字簽名時,獲取信息的哈希值所使用的算法。具體可見:數字簽名, http://www.cnblogs.com/yank/p/3533998.html

公鑰:

與證書關聯的公鑰類型和長度。

這個我們在前面介紹公鑰密碼體制時介紹過,公鑰是用來對消息進行加密的。這裡使用的是RSA算法 ,公鑰長度是1024位。

具體可見:

http://www.cnblogs.com/yank/p/3533998.html

使用者密鑰標識符

證書所含密鑰的唯一標識符,用來區分同一證書擁有者的多對密鑰。

指紋和指紋算法

指紋:證書數據的摘要(即指紋)

指紋算法:為數字簽名生成數據摘要(即指紋)的哈希算法。

這個是用來保證證書的完整性的,確保證書沒有被修改過。 其原理就是在發布證書時,發布者根據 指紋算法(hash算法)計算整個證書的hash值(指紋)並和證書放在一起,使用者在打開證書時,也根據指 紋算法計算一下證書的hash值(指紋),如果與證書中的指紋一致,就說明證書沒有被修改過。

六、數字證書的分類

基於數字證書的應用角度分類,數字證書可以分為以下幾種:

1.服務器證書

服務器證書被安裝於服務器設備上,用來證明服務器的身份和進行通信加密。服務器證書可以用來防 止假冒站點。

在服務器上安裝服務器證書後,客戶端浏覽器可以與服務器證書建立SSL連接,在SSL連接上傳輸的任 何數據都會被加密。同時,浏覽器會自動驗證服務器證書是否有效,驗證所訪問的站點是否是假冒站點 。

服務器證書保護的站點多被用來進行密碼登錄、訂單處理、網上銀行交易等。

2.電子郵件證書

電子郵件證書可以用來證明電子郵件發件人的真實性。它並不證明數字證書上面CN一項所標識的證書 所有者姓名的真實性,它只證明郵件地址的真實性。

收到具有有效電子簽名的電子郵件,我們除了能相信郵件確實由指定郵箱發出外,還可以確信該郵件 從被發出後沒有被篡改過。

另外,使用接收的郵件證書,我們還可以向接收方發送加密郵件。該加密郵件可以在非安全網絡傳輸 ,只有接收方的持有者才可能打開該郵件。

3.客戶端個人證書

客戶端證書主要被用來進行身份驗證和電子簽名。

安全的客戶端證書我被存儲於專用的usbkey中。存儲於key中的證書不能被導出或復制,且key使用時 需要輸入key的保護密碼。使用該證書需要物理上獲得其存儲介質usbkey,且需要知道key的保護密碼, 這也被稱為雙因子認證。這種認證手段是目前在internet最安全的身份認證手段之一。

客戶端個人證書的申請,一般需要被嚴格鑒證,以證明數字證書與使用者的綁定關系。該證書可以被 用來進行電子簽名。合法的電子證書的電子簽名結果具有法律效力。因此,客戶端個人證書被廣泛應用 於各個行業,如網絡商務、電子政務、網上報稅、網上銀行等。

多數客戶端個人證書一般具有電子郵件證書的功能。

4.企業證書

企業證書與客戶端個人證書類似,可以用來進行身份驗證和電子簽名。區別只在於企業證書被法人或 機構所擁有。

5.代碼簽名證書

代碼簽名證書用來證明軟件的簽發者,發布信任代碼。比如網絡上廣泛使用的ActiveX如果未簽名, 浏覽器會拒絕安裝;而簽過名的ActiveX則會被提示該軟件的發行公司,由用戶確認是否安裝。這對於防 止惡意軟件假冒可信公司安裝軟件非常重要。

代碼簽名證書除了可以用於簽署微軟可執行代碼外,也可以用來簽名java代碼、Symbian代碼等。

七、創建證書

通常由CA提供證書創建工具。

微軟提供Makecert.exe(證書創建工具)來創建證書,具體使用說明見:

http://msdn.microsoft.com/zh-cn/library/bfsktky3(v=vs.100).aspx

八、主要應用

網銀、電子商務、單點登錄、安全電子郵件、VPN、局域網等

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved