ADVERTISEMENT
近期一項針對全球前一百萬個網站的 SPF、DKIM 和 DMARC 記錄的研究揭露了一個令人震驚的事實:超過 1,700 個網站仍在使用長度短於 1,024 位元的 DKIM 金鑰,其中甚至包含知名房地產網站 redfin.com。這個結果令人驚訝,因為自2018年RFC 8301發表以來,少於1,024位元的RSA金鑰已被視為不安全,並被棄用。
為了驗證這些短金鑰的安全性,研究團隊決定嘗試破解其中一個金鑰。他們的目標是從公開的RSA金鑰中提取私密金鑰,藉此模擬電子郵件的簽署並驗證這些偽造郵件是否能通過主要電子郵件提供商的DKIM驗證,包括Gmail、Outlook.com和Yahoo Mail(雅虎郵件)。
DKIM 金鑰是什麼?
DKIM(網域金鑰識別郵件)是一種電子郵件驗證技術,用於驗證郵件是否確實來自聲稱的發件人,並確保郵件內容在傳輸過程中未被篡改。其原理是使用數位簽章來驗證郵件的真實性。
ADVERTISEMENT
研究人員發現,這些短於 1,024 位元的 RSA 金鑰存在安全風險,可被破解並偽造簽章。為驗證此漏洞,研究人員選擇了 redfin.com 作為實驗對象,並成功破解了其 512 位元的 DKIM 金鑰。
破解實驗:選擇redfin.com的512位元金鑰
研究人員鎖定了一個位於域名 key1._domainkey.redfin.com 的512位元RSA金鑰:
$ dig +short TXT key1._domainkey.redfin.com "k=rsa; p=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMx7VnoRmk/wFPeFWxrVUde6AJQI51/uPFL2CbiHGMnRSnLjPs72AgxAVHIe5QrNQ2riR5+7u47Sgh5R5va/d0cCAwEAAQ=="
透過解碼此金鑰,研究人員獲得了模數(n)與公鑰指數(e)。他們隨後使用CADO-NFS工具進行模數分解,將n分解為兩個質數(p與q)。
ADVERTISEMENT
使用雲端伺服器完成分解
為加快分解過程,研究團隊選擇了Hetzner雲端服務,租用了一台搭載8核心AMD EPYC處理器及32GB記憶體的伺服器,並安裝了CADO-NFS。分解過程耗時約86小時,成功將n分解為以下兩個質數:
p = 97850895333751392558280999318309697780438485965134147739065017624372104720767
q = 109447953515671602102748820944693252789237215829169932130613751100276125683257
完成p與q的計算後,研究人員利用Python生成私密金鑰,並配置到OpenDKIM系統中,用於模擬簽署redfin.com的郵件。他們發現,儘管多數電子郵件提供商會因512位元金鑰的不安全性拒絕驗證,但Yahoo Mail、Mailfence與Tuta仍報告簽署驗證通過(dkim=pass)。
測試結果
- 通過(PASS):Yahoo Mai、Mailfence、Tuta
- 失敗(FAIL):Gmail、Outlook、Zoho、Fastmail、Proton Mail、GMX、OnMail
研究人員使用破解的私鑰偽造了 redfin.com 的電子郵件簽章,並發送至各大電子郵件供應商進行測試。由於 redfin.com 啟用了 DMARC(基於網域的訊息驗證、報告和一致性)機制,通過 DKIM 驗證也意味著通過了 DMARC 驗證,甚至符合 BIMI(品牌指標識別)的標準。這表示攻擊者可以利用此漏洞偽造 redfin.com 的電子郵件,進行釣魚攻擊或其他惡意行為。
ADVERTISEMENT
儘管 Gmail、Outlook 等大多數供應商都能正確識別出不安全的 512 位元金鑰並拒絕驗證,但 Yahoo Mail、Mailfence 和 Tuta 卻通過了 DKIM 驗證。
專家呼籲提升安全性
研究人員已將此漏洞通報給 Yahoo、Mailfence 和 Tuta,並呼籲所有電子郵件供應商應自動拒絕驗證任何使用短於 1,024 位元 RSA 金鑰生成的 DKIM 簽章。同時,也建議網域所有者檢查其 DNS 設定,確保所有 DKIM 記錄都符合 1,024 位元的最低標準,以提升電子郵件安全性。
此實驗顯示,破解512位元RSA金鑰現已成為低成本、短時間內即可完成的任務。研究團隊已通知Yahoo Mail(雅虎郵件)、Mailfence(郵件圍欄)與Tuta,建議他們全面拒絕接受低於1,024位元的DKIM簽署。同時,研究人員呼籲域名所有者檢查其DNS紀錄,確保DKIM金鑰符合1,024位元的最低標準。
ADVERTISEMENT
如何檢查 DKIM 金鑰安全性?
檢查 DKIM 記錄的 p
標籤中的 Base64 字元數量即可:1,024 位元 RSA 公開金鑰至少會有 216 個字元。
ADVERTISEMENT