1. 程式人生 > >你知道數字簽名嗎?

你知道數字簽名嗎?

數字簽名

一、數字簽名簡介

數字簽名是基於公鑰密碼體制(非對稱金鑰密碼體制)的。

1.1.基本特徵

數字簽名必須保證以下三點:

  • 報文鑑別——接收者能夠核實傳送者對報文的簽名;
  • 報文的完整性——接收者不能偽造對報文的簽名或更改報文內容。
  • 不可否認——傳送者事後不能抵賴對報文的簽名;

1.2.數字簽名的驗證過程

上圖位使用者A使用數字簽名向用戶B傳輸一份檔案的過程:

  • 首先,檔案經過單向雜湊函式的處理得到一份佔128位的摘要(無論檔案多大,經過單向雜湊函式的處理,生成的摘要都是128位),這份摘要相當於該檔案的"指紋",能夠唯一地識別檔案。注意:只要檔案發生改動,經過單向雜湊函式處理後得到地摘要都會不一樣。所以,檔案和檔案的摘要具有很強的對應關係。
  • 隨後,使用者A使用自己地私鑰對這份128位地摘要進行加密,得到一份加密地摘要。
  • 然後,使用者A把檔案、加密的摘要和公鑰打包一起發給使用者B。傳輸的過程中並沒有對檔案進行加密處理。
  • 使用者B將收到的檔案經過單向雜湊函式處理得出一份128位摘要,這份摘要是通過收到的檔案得到的,存在被更改的可能;使用A提供的公鑰對收到的"加密的摘要"進行解密得到另一份128位摘要,這份摘要是通過原始檔案得到的,一般認為代表真正的檔案;然後將兩份摘要進行比較。
  • 如果兩份摘要相等,說明檔案經過使用者A簽名之後,在傳輸的過程中沒有被更改;若不相等,說明檔案在傳輸過程中被更改了,或者說已經不是原來的檔案了,此時使用者A的簽名失效。

數字簽名三個特徵的驗證

  • 不可否認——只有使用者A擁有私鑰A,並能使用私鑰A產生"加密的摘要",這樣使用者A就不能否認給使用者B傳送了經過簽名的密文。
  • 報文的完整性——使用者B通過比較得出的兩份摘要是否相等,可以判斷簽名或檔案內容是否發生改變。
  • 報文鑑別——使用者B可以使用收到的公鑰對"加密的摘要"進行解密,從而核實使用者A對檔案的簽名。

需要強調

  • 使用者A使用私鑰對由檔案生成的128位摘要進行加密的過程稱為數字簽名的過程,得到的"加密的摘要",稱為該檔案的資料簽名。

  • 使用者A使用私鑰加密的是摘要而不是檔案。
  • 使用者B驗證簽名實際上是比較得出的兩份摘要是否相等。

1.3.數字簽名使用的場合

什麼時候使用這種不對檔案加密,而對檔案的摘要加密(對檔案進行簽名)的技術呢?

  • 數字簽名解決的核心問題是:確保收到的檔案沒有被更改。
  • 比如:公司的領導給員工下發放假通知,這時候就需要對郵件進行數字簽名來證明這個通知是領導發的。員工收到通知,看到上面有領導的簽名,於是就可以放心休假了。如果有人冒充領導發通知,上面沒有領導的簽名,員工休假回來就要扣工資。同樣的,通知有了領導的簽名,領導想抵賴也不行。

二、證書頒發機構CA

2.1CA簡介

  • 證書頒發機構,即認證中心CA (Certification Authority),來將公鑰與其對應的實體(人或機器)進行繫結(binding);即給公司或個人頒發證書。
  • 認證中心一般由政府出資建立。每個實體都有CA 發來的證書(certificate),裡面有公鑰及其擁有者的標識資訊。此證書被 CA 進行了數字簽名。任何使用者都可從可信的地方獲得認證中心 CA 的公鑰,此公鑰用來驗證某個公鑰是否為某個實體所擁有。有的大公司也提供認證中心服務。

如圖所示,使用者A使用數字簽名時給使用者B傳送了一個數據包,資料包中包含了A的公鑰、檔案和加密的摘要。那麼問題來了:使用者B如何確定收到的公鑰是使用者A傳送的,而不是他人冒充使用者A傳送的呢?

  • 舉個例子:把使用者A的公鑰和私鑰假設為身份證。如果是使用者A自己造的身份證別人會信嗎?反之,使用者A拿著真正的身份證去住賓館,老闆一開始也不相信身份證是使用者A的,但是老闆相信給使用者A發身份證的公安局,老闆通過比對公安網上對應身份證號碼的資訊就可以判斷這個身份證是不是使用者A的,由此可以確認使用者A的身份。
  • 同理,B一開始並不確認收到的公鑰是來自使用者A的,使用者A也可抵賴B收到的公鑰不是自己傳送的。這時就需要有一個雙方都信任的第三方證書頒發機構來協調。

2.2.證書頒發和使用過程

  • 首先,使用者A向證書頒發機構提交個人資訊,申請證書。通過CA稽核後,CA生成使用者A的證書,證書中包括了A的公鑰和私鑰還有CA的數字簽名。證書頒發機構CA本身擁有一對金鑰,這是對CA所頒發的證書進行數字簽名和保密的基礎,絕不能洩露。

  • 使用者A收到的證書中包括了帶有CA數字簽名的,專屬A公鑰和私鑰,CA的數字簽名確保了別人不能偽造使用者A的公鑰和私鑰。

  • 同時,使用者B也必須信任給使用者A頒發證書的第三方認證機構CA,即使用者B擁有CA頒發的"CA公鑰"。

  • 通訊時,使用者A向用戶B傳送的資料包中的"加密的摘要"上有使用者A的數字簽名,“A公鑰” 上有認證機構CA的數字簽名。使用者B收到資料包之後,先要驗證收到的 “A公鑰” 是否來源合法:是認證機構頒發的帶有CA簽名的公鑰嗎?使用者B並不信任使用者A,但是使用者B信任第三方認證機構CA。所以,使用者B先使用證書頒發機構頒發的 "CA公鑰" 驗證收到的 "A公鑰" 是否由同一認證機構頒發,是否在頒發之後更改過。

    驗證通過後,使用者B便相信收到的 "A公鑰" 確實來自真實的使用者A。隨後再使用 "A公鑰" 對 "加密的摘要" 進行解密,進行上文提到的對比操作,以判斷檔案是否更改。

2.3.檢視計算機信任的認證機構

信任一個第三方認證機構就意味著擁有該機構頒發的包含該機構公鑰的證書。

  • 在Windows系統開始選單中輸入"MMC"命令,開啟 "Microsoft 管理工具" 。

  • 開啟 "檔案" 選單欄,選擇 "新增或刪除管理單元" 選項,找到 "證書" 。

  • 點選 "新增" ,選擇需要檢視帳戶的證書。可重複操作,新增多個賬戶。

  • 新增完成之後,點選 "確認" ,即可檢視相關帳戶的證書。

  • 雙擊列表中的一個 "證書" ,在 "詳細資訊" 中可以找到證書對應的 "公鑰" 。

2.4.證書的吊銷

當用戶A遺失或洩露了CA頒發的證書後,為了避免他人使用該證書冒充使用者A,使用者A向認證機構CA "掛失" 該證書。於是認證機構CA把該證書放入該認證機構的證書吊銷列表(CRL)中,並在網上公示。

使用者B在收到使用者A的公鑰時,除了要驗證該公鑰是否位認證機構頒發的,還要登入認證機構的網站檢視該公鑰是否已被認證機構吊銷變為無效證書。

2.5.總結

認證機構CA的作用:

  • 為企業和使用者頒發數字證書,確保這些企業和個人的身份是真實的;
  • 釋出證書吊銷列表,供使用者查詢收到的證書是否已被機構吊銷而無效;

認證機構發揮作用的前提:

  • 企業和個人都要信任認證機構。