資訊與網路安全技術 第 五章 密碼系統實習環境 - OpneSSL  上一頁    

 

5-9 數位簽章與驗證操作

內容:

  • 5-9-1 RSA 簽署與驗證文件

  • 5-9-2 DSA 簽署與驗證文件

訊息摘要配合公開鑰匙系統操作,則可達成數位簽章與驗證功能。欲完成數位簽章須具備下列程序:

  • 產生一對 RSA DSA 鑰匙配對,並將公開鑰匙廣播給參與通訊者。

  • 傳送端將傳輸訊息經由雜湊演算法編碼產生一個訊息摘要。

  • 利用 RSA DSA 私有鑰匙對訊息摘要加密(或簽署),產生簽署碼。簽署碼與原訊息一併傳送給接收端。

  • 接收端收到訊息後,利用傳送者的公開鑰匙向簽章碼解密,也將所收到的訊息經過相同的湊演算法編碼得到另一個訊息摘要,如果兩訊息摘要相同的話,則表示驗證正確。

5-9-1 RSA 簽署與驗證文件

吾人利用一個簡單範例來說明 RSA 簽章文件與驗證的操作程序,如下步驟:

  • 步驟 1:產生 RSA 鑰匙配對檔案(rsapriv.pem),其中包含了私有鑰匙,操作如下:

H:\SecureLab\sign>openssl genrsa -out rsapriv.pem -passout pass:12345 -des3 1024

  • 步驟 2:利用 rsapriv.pem 產生公開鑰匙(rsapub.pem),操作如下:(產生 rsapriv.pem rsapub.pem 鑰匙配對)

H:\SecureLab\sign>openssl rsa -in rsapriv.pem -passin pass:12345 -out rsapub.pem -pubout

  • 步驟 3:利用某一種雜湊演算法(如 sha1,雙方已協議)向訊息(data.doc)計算得到訊摘要,接著利用私有鑰匙對該訊息摘要加密,得到一個簽章碼,並將儲存於 sign.txt 檔案內,操作如下:(完成後,將 data.doc sign.txt 一併傳送給接收端)

H:\SecureLab\sign>openssl sha1 -sign rsapriv.pem -out sign.txt data.doc

Enter pass phrase for rsapriv.pem:####              【輸入通行碼 12345

 

H:\SecureLab\sign>dir/b sign.txt

sign.txt

  • 步驟 4:接收端收到訊息後(data.doc),即可利用對方的公開鑰匙(rsapub.pem)驗證簽章碼(sign.txt),如果正確的話(Verified OK),則可確認該訊息是傳送端發送的,並非被偽造或遭受竄改。操作如下:

H:\SecureLab\sign>openssl sha1 -verify rsapub.pem -signature sign.txt data.doc

Verified OK

5-9-2 DSA 簽署與驗證文件

吾人還是利用一個簡單範例,說明 DSA 系統簽署與認證文件的步驟。

  • 步驟 1:產生一組 DSA 鑰匙參數(dsaparam.pem),它可以產生多個鑰匙配對。操作如下:

H:\SecureLab\dsa>openssl dsaparam -out dsaparam.pem 1024

  • 步驟 2:再利用 gendsa 命令由已產生的鑰匙參數,製造出一個 DSA 私有鑰匙,該鑰匙利用 des3 演算法加密,加密鑰匙是 02468。操作如下:

H:\SecureLab\dsa>openssl gendsa -out dsapriv.pem -des3 -passout pass:02468 dsaparam.pem

Loading 'screen' into random state - done

Generating DSA key, 1024 bits

  • 步驟 3:接著利用 dsa 命令,由私有鑰匙(dsapriv.pem)製作出相對應的公開鑰匙(dsapub.pem)。操作如下:(將公開鑰匙發布給參與通訊者)

H:\SecureLab\dsa>openssl dsa -in dsapriv.pem -out dsapub.pem -pubout

read DSA key

Enter PEM pass phrase: #####                 【輸入通行碼】

writing DSA key

 

H:\SecureLab\dsa>dir/b

dsaparam.pem

dsapriv.pem

dsapub.pem

  • 步驟 4:傳送端將所欲傳送的訊息(data.doc)經由 DSA 簽章工具 dss1 與自己的私有鑰匙(dsapriv.pem)簽署後,得到一個簽章碼並將它儲存於 sign.txt 檔案內。操作如下:(將訊息與簽章碼一併傳送給接收端)

H:\SecureLab\dsa>openssl dgst -dss1 -sign dsapriv.pem -out sign.txt data.doc

Enter pass phrase for dsapriv.pem:           【輸入通行碼】

 

H:\SecureLab\dsa>dir/b sign.txt

sign.txt

  • 步驟 5:接收端利用對方的公開鑰匙(dsapub.pem)驗證,操作如下:

H:\SecureLab\dsa>openssl dgst -dss1 -verify dsapub.pem -signature sign.txt data.doc

Verified OK

 

主講人:粘添壽博士

 

資訊與網路安全技術