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