已保存的消息是有價值的證據,但新消息 DKIM 驗證是一個新事件。它測試保存的表示和當時驗證者規則下的可用金鑰。將原始接收者報告的結果與新測試一起保留,以便可以調查明顯的分歧,而不是默默地覆蓋。
解析前保留輸入
將訊息儲存為位元組並計算 SHA-256 指紋,然後在可能重寫標頭、行尾或MIME結構的軟體中開啟它。將所有分析或修訂保留在派生文件中。 DKIM在規範化的訊息資料上運行,而不是在螢幕截圖或視覺上等效的渲染訊息上運行。 RFC 6376定義簡單輕鬆 規範化 具有特定的公差。 RFC 6376第 3.4 節.
寬鬆的簽名可以容忍某些空白差異;它不授權任意重寫。對簽名文字的更改仍然可能使其失效。在描述簽名保護的內容之前,請檢查簽名標頭清單和任何正文長度標籤。具有有限主體覆蓋範圍的簽章與涵蓋整個規範化主體的簽章不同。
記錄金鑰和驗證者上下文
簽署的 d= 和 s= 值標識簽名域並 選擇器 用於查找公鑰。記錄查詢的名稱、回應時間、解析器上下文和合法可用時保留的密鑰位元組。由於輪換、撤銷或DNS更改,當前查找可能與交付時存在的密鑰不同。現在未能取得金鑰並不能證明接收者當時缺少金鑰。 RFC 6376第 3.6 節及第 6 節.
記錄驗證者名稱、版本、設定和所選簽名。多個簽名可能會產生不同的結果。不要將對一個簽名的預設檢查描述為對所有簽名的驗證。過期、演算法支援和本地策略也會影響結果,因此保留診斷而不是減少「訊息被篡改」的每次失敗。
將假設的舊通過與新的失敗進行比較
假設受信任的接收者在交付時記錄了DKIM通行證,但隨後的保存檔案檢查無法取得選擇器金鑰。新的結果建立了當前的驗證限制,而不是舊的失敗。保留查詢名稱、查找時間和診斷資訊;如果問題需要,請尋求授權的歷史密鑰或DNS證據。
在另一種情況下,目前金鑰可用,但分析人員的導數已變更簽署正文。在指責中繼或發送者之前,請單獨測試已儲存的原件。如果只有編輯過的副本倖存下來,歷史簽名結果仍然懸而未決。這些是假設的診斷分支,未執行加密操作或DNS重播。
如果公鑰是透過本地回調提供的,而不是從DNS取得的,請明確標記該輸入。注入密鑰下的傳遞並不能確定簽章域已發布或授權該密鑰。切勿在證物包中包含私人簽名金鑰。
解釋分歧但不要過度誇大
如果已儲存的副本失敗,但受信任的接收者記錄了通過,請比較工件來源、轉換、金鑰可用性和驗證者行為。如果已儲存的副本通過,則根據提供的金鑰和規則建立測試簽名,而不是收件匣放置、寄件者意圖或當前 DMARC 政策。 DKIM的簽章身分和DMARC 結盟 是單獨的問題。
用兩行結束證據記錄:接收者在交付時報告的內容以及獨立檢查現在觀察到的內容。包括時間戳、工件雜湊、簽名身份和未解決的差異。即使無法重建原始環境,這也可以保留有用的稽核追蹤。
保持驗證範圍與DMARC不同
傳遞簽章根據實際金鑰來源、位元組和驗證者規則建立選定的DKIM結果。 DMARC也需要簽章域與 From 保持一致以及適用的策略評估。使用目前 RFC 9989第 5.3 和 5.4 節 而不是將每個DKIM通行證視為DMARC通行證或安全內容聲明。
分別記錄歷史和當前結果
- 在解析之前保留已保存的位元組及其指紋。
- 識別準確的簽名、 d=, s=,規範化和簽名覆蓋率。
- 保留公鑰來源、查找時間、驗證器版本和診斷。
- 在不假設篡改的情況下比較轉換和關鍵更改。
- 將原始接收者報告和新評估保留為兩個帶有時間戳的觀察結果。