數字簽名
當收件者必須識別並驗證 郵件發件者時,數位簽名 可用來在純文本 窗體中散發郵件。 簽署訊息不會改變訊息;它只會產生一個數位簽名字符串,您可以搭配訊息或個別傳輸。 數位簽名是一段簡短的數據,會以發件人的 私鑰加密。 使用寄件者的 公鑰解密簽章數據, 證明數據是由寄件者或有權存取發件者私鑰的人員加密。
數字簽名是使用 公鑰 簽章演算法所產生。 私鑰 會產生簽章,而且必須使用對應的公鑰來驗證簽章。 下圖顯示此程式。
從訊息建立數位簽名有兩個步驟。 第一個步驟涉及從訊息建立 哈希 值(也稱為 訊息摘要)。 接著會使用簽署者的私鑰來簽署這個哈希值。 以下是建立數位簽名相關步驟的圖例。
從訊息
若要驗證簽章,需要訊息和簽章。 首先,必須以與建立簽章相同的方式,從訊息建立哈希值。 然後使用簽署者的公鑰,針對簽章驗證此哈希值。 如果哈希值和簽章相符,您可以確信訊息確實是簽署者最初簽署的訊息,而且尚未遭到竄改。 下圖說明驗證數字簽名所涉及的程式。
哈希值是由少量的二進位數據所組成,通常大約160位。 這是使用 哈希演算法所產生的。 本節稍後會列出其中一些演算法。
不論使用的演算法為何,所有哈希值都會共用下列屬性:
- 哈希值的長度取決於所使用的演算法類型,而且其長度不會隨著訊息的大小而有所不同。 最常見的哈希值長度為128或160位。
- 每對非完全相同的訊息都會轉譯成完全不同的哈希值,即使這兩個訊息只有一個位不同。 使用現今的技術,在不中斷哈希演算法的情況下,探索一組轉譯為相同哈希值的訊息是不可行的。
- 每次使用相同演算法來哈希特定訊息時,都會產生相同的哈希值。
- 所有哈希演算法都是單向的。 假設有哈希值,就無法復原原始訊息。 事實上,沒有原始訊息的屬性可以單獨判斷哈希值。