DKIM &PGP 電子郵件安全
我試圖弄清楚在使用 DKIM 時它會簽署所有電子郵件,包括正文消息和發件人地址,並且使用 pgp 它使用唯一密鑰,而在 dkim 中是通用密鑰……但使用兩種加密方式,電子郵件都可以還要改嗎?他們可以告訴我電子郵件是否已更改,但他們不能阻止它被更改?
謝謝
PGP 消息有時通過電子郵件發送,但並非必須如此。因此,PGP 只能對消息的一部分(正文)進行簽名,甚至無法檢測攻擊者是否修改了消息的其餘部分(主題和其他標頭)。
DKIM 對整個消息進行身份驗證。
身份驗證只允許檢測修改,沒有辦法阻止修改。但是,如果身份驗證失敗,好的客戶端根本不應該顯示該消息。
OpenPGP 旨在對特定消息進行簽名。當與 OpenPGP/MIME 一起使用時,它會驗證消息的正文並防止其被修改。如果做得正確,這包括所有的身體,包括所有的部分,如附件。可以在事後附加其他部分,並且某些環境(例如郵件列表)會執行此操作,在這種情況下,這些部分未經過身份驗證。在這種情況下,數字簽名通常(但不一定)由消息的作者製作。
DKIM 對整個正文以及在消息中指定的一組標頭進行簽名。通常包括
From
標題和其他數據,但並非所有標題都包括在內。這種情況下的簽名通常由郵件伺服器為該消息的原始域進行。這是因為密鑰必須在 DNS 中,並且通常只由域的所有者處理。在這兩種情況下,如果可以訪問消息,就可以修改消息。例如,如果將電子郵件發送到郵件列表,郵件列表軟體可能會對其進行修改。通常這樣做是為了向消息添加預告片。在這種情況下,對於 OpenPGP,如果預告片作為單獨的部分附加到正文中,則簽名不會覆蓋該數據,但簽名仍將驗證已簽名的數據。對於 DKIM,對正文的任何修改都會導致簽名驗證失敗。
可能發生修改的其他情況包括處理數據的系統之一的系統管理員或網路路徑上的惡意方(如果用於發送郵件的連接未使用 TLS 保護)。(嚴格來說,即使使用TLS也可以修改數據,但由於適當的參與者會中止協議,因此 SMTP 事務不會完成。)
在這些情況下,都不會阻止修改,但可以檢測到它。通常,當人們收到帶有無效簽名的數據時,人們會認為該數據不受信任,並且至少不會對其採取行動。一個人還可以選擇丟棄數據,並且在某些情況下,通過安全通道通知另一方有關篡改的資訊。
實際上,大多數參與方知道消息已通過數字簽名或 MAC(例如在 TLS 中)進行身份驗證,不會嘗試主動嘗試篡改數據,除非他們的意圖是阻止通信(例如,由政府),因為對其他人來說很明顯已經發生了篡改。大多數修改情況的發生是因為有人沒有考慮到消息可能經過身份驗證(因此沒有考慮是否會檢測到修改),例如我們的郵件列表範例,或者由於某種意外(網路問題,損壞軟體等)。