金鑰和證書

2021-04-01 19:00:54 字數 4084 閱讀 9097

不對稱加密使用公共/專用金鑰對。對於使用專用金鑰加密的資料,只能使用相應的公共金鑰進行解密,反之亦然。

顧名思義,公共金鑰可廣泛使用。相反,專用金鑰為特定個人所有。將公共金鑰傳送至使用者的分發機制稱為證書。證書一般由證書頒發機構 (ca) 簽名,以確認公共金鑰來自於要求傳送公共金鑰的主體。ca 是相互信任的實體。

數字認證的典型實現包括證書簽名過程。該過程如1中所示。

1.數字認證過程

1所示的事件序列,如下:

1.alice 將乙個簽名的證書請求傳送到 ca,該證書包含有她的姓名、公共金鑰以及可能的附加資訊。

2.ca 根據 alice 的請求建立乙個訊息。ca 使用自己的專用金鑰對訊息進行簽名,以建立乙個單獨的簽名。ca 將訊息和簽名返回給 alice。alice 的證書中包含了訊息和簽名。

3.alice 將她的證書傳送給 bob,讓他有權訪問她的公共金鑰。

4.bob 使用 ca 的公共金鑰驗證證書的簽名。如果證明簽名有效,則他會接受證書中的公共金鑰作為 alice 的公共金鑰。

如同使用任何數字簽名一樣,任意有權訪問 ca 的公共金鑰的接收者均可確定是否由特定的 ca 簽署證書。這個過程不要求訪問任何機密資訊。在上述情況中,假設 bob對 ca 的公共金鑰具有訪問權。如果 bob 的ca 證書副本中包含公共金鑰,則他就可以訪問該金鑰。

x.509 數字證書

x.509 數字證書不但包括使用者名稱和公共金鑰,而且還包括有關該使用者的其他資訊。這些證書不僅僅是數字信任結構層次中的跳板。它們使 ca 能夠讓證書的接收者不僅信任證書主體的公共金鑰,而且信任有關證書主體的其他資訊。這些證書中的其他資訊可能包括電子郵件位址、授權對具有某種價值的文件進行簽名,或者對成為乙個 ca 並簽署其他證書的授權。

x.509 證書和其他多數證書都具有有效期限。證書可以過期並且不再有效。ca 可以出於多種理由而撤消證書。要處理撤銷,ca 會維護並分發撤銷證書的列表,該列表稱為證書取消列表 (crl)。網路使用者訪問 crl 以確定證書的有效性。

證書儲存在乙個稱為證書儲存區的安全位置。證書儲存區可包括證書、crl 以及證書信任列表 (ctl)。每位使用者都有乙個儲存使用者證書的個人儲存區(稱為「my store」)。可以在多個位置物理實現 my store,這些位置包括登錄檔、本地或遠端計算機、磁碟檔案、資料庫、目錄服務、智慧型裝置或其他位置。

將任何證書儲存在 my store 中的同時,還應當為使用者的個人證書(即用於簽署和解密特定使用者訊息的證書)保留這個儲存區。

除 my store 之外,windows 還具有以下證書儲存區:

ca and root。該儲存區包含證書頒發機構的證書,它們是為使用者所信任以向其他使用者頒發的證書。作業系統提供了一套受信任的 ca 證書,管理員還可以新增其他的證書。

other。該儲存區包含使用者與之交換簽名訊息的其他使用者的證書。

cryptoapi 提供管理證書的功能。只能通過非託管**來訪問這些 api。同樣,capicom 是基於 com 的 api,用於 cryptoapi,可通過 com interop 進行訪問。

有關更多資訊,請參見 msdn **上的「cryptography, cryptoapi, and capicom」 (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/cryptography_cryptoapi_and_capicom.asp)。

加密技術用於提供以下功能:

保密性。確保資料不會被公開。通常使用加密實現保密性。加密演算法(使用加密金鑰)用於將純文字轉換為密碼文字,等效的解密演算法用於將密碼文字重新轉換為純文字。對稱的加密演算法使用相同的金鑰進行加密和解密,而不對稱演算法使用公共/專用金鑰對進行加密和解密。

資料完整性。確保資料免受意外或故意(惡意)修改。完整性通常由訊息身份驗證**或雜湊值提供。雜湊值是從資料序列匯出的固定長度的數值。雜湊值用於驗證通過不安全通道傳送的資料的完整性。將接收到的資料的雜湊值與資料傳送時的雜湊值進行比較,以確定資料是否被更改。

身份驗證。確保資料源自特定的使用者。數字證書用於提供身份驗證。數字簽名通常適用於那些明顯小於它們所代表的源資料的雜湊值。  •

希望驗證資料在轉換過程中沒有被篡改時,請使用雜湊值。

•使用關鍵的雜湊值來證明實體知道機密但不來回傳送機密,或者使用簡單的雜湊值來防止轉換過程中出現偵聽。

•當要隱藏通過不安全的介質傳送資料或者使資料永久穩定時,請使用加密。

•希望驗證個人請求是公共金鑰的所有者的身份時,請使用證書。

•希望加快速度以及雙方事先共享金鑰時,請使用對稱加密。

•希望通過不安全介質安全地交換資料時,請使用不對稱加密。

•希望身份驗證和非拒絕時,請使用數字簽名。

•使用 salt 值(使用加密技術生成的隨機數)來防止詞典攻擊。

system.security.cryptography命名空間提供加密服務,包括資料的安全編碼和解碼、雜湊、隨機數生成以及訊息身份驗證。

.net framework 提供多種標準密碼演算法的實現。因為具有良好定義的繼承層次結構,所以可輕鬆擴充套件對這些演算法,該層次結構包含定義基本演算法型別(對稱、不對稱以及雜湊演算法)的抽象類和演算法類。

表 1:顯示 .net framework 為之提供實現「現成」類的演算法。

對稱演算法

不對稱演算法

雜湊演算法

des(資料加密標準)

dsa(資料簽名演算法)

hmac sha1(使用 sha1 雜湊演算法且基於雜湊的訊息身份驗證**)

tripledes(三重資料加密標準)

rsamac triple des(使用 triple des 訊息身份驗證**)

rijndael

md5rc2

sha1, sha256, sha384, sha512

(使用不同雜湊大小的安全雜湊演算法)

.net 提供以下實現類,這些類提供對稱、機密金鑰加密演算法:

•descryptoserviceprovider

•rc2cryptoserviceprovider

•rijndaelmanaged

•tripledescryptoserviceprovider

以「cryptoserviceprovider」結尾的類是包裝類,它們使用加密服務提供程式 (csp) 的基本服務;以「managed」結尾的類在託管**中實現。

2顯示採用繼承層次結構的 .net framework。演算法型別基類(如symmetricalgorithm)是抽象類。一套抽象的演算法類派生自抽象型別基類。演算法實現類提供了選定演算法的具體實現,例如,des、triple-des、rijndael 和 rc2。

2.對稱加密類繼承層次結構

.net 通過抽象基類 (system.security.crytography.asymmetricalgorithm) 提供以下不對稱(公共/專用金鑰)加密演算法:

•dsacryptoserviceprovider

•rsacryptoserviceprovider

這些演算法用於數字簽名和加密資料。3顯示繼承層次結構。

3.不對稱加密類繼承層次結構

.net 提供以下雜湊演算法:

•sha1, sha256, sha384, sha512 md5

•hmacsha (keyed hashed algorithm)

•mactripledes(加密的雜湊演算法)

4顯示雜湊演算法類的繼承結構層次。

4.雜湊加密類繼承結構層次  

加密是一項構建 web 應用程式的重要技術。本附錄包括了一些證書和加密的基礎知識,並簡要介紹了一些由system.security.cryptography命名空間公開的類,使您能更方便地將加密安全解決方案整合到 .net 應用程式之中。

有關 .net 中密碼技術的詳細資訊,請在 msdn 中搜尋標題為「.net framework cryptography model」的網頁。

建立SSL金鑰和證書

使用openssl for windows版,一行命令生成秘鑰和證書檔案,只需替換以下命令列中的紅色部分,複製 貼上 執行即可 openssl req newkey rsa 2048 new nodes x509 days 3650 keyout myserver.key out myserverc...

加密技術 金鑰和證書

非對稱加密使用公鑰 私鑰對。對於使用私鑰加密的資料,只能使用相應的公鑰進行解密,反之亦然。顧名思義,公鑰是指可以提供給很多人的金鑰。相反,私鑰是特定個人所獨有的。向使用者傳送公鑰使用的分發機制是證書。通常,證書頒發機構 ca 對證書進行簽名,以便確認公鑰來自聲稱傳送公鑰的主體。ca 是乙個相互信任的...

簡單openssl生成金鑰證書

11 建立公私鑰證書 無 密私鑰 openssl genrsa out n prikey.pem 1024 有密私鑰,可以設定密碼 openssl genrsa des3 out y prikey.pem 1024 公鑰證書 openssl req new x509 key n prikey.pem...