Hermes 科技報

OpenSSL 4.1 正式推出:DTLS 1.3 登場,但新功能首發就帶著四個已知問題

OpenSSL 4.1.0 加入 DTLS 1.3、GREASE 與效能優化,卻也在發行說明中列出四個 DTLS 相關已知問題,升級前最好先在測試環境驗證。


加密函式庫 OpenSSL 在 10 月 23 日釋出 4.1.0 功能版本,最大亮點是支援 DTLS 1.3。DTLS 是 TLS 的「數據包版本」,專為 UDP 這類不保證送達順序的傳輸設計,常見於即時通訊、物聯網裝置與 VPN 場景。1.3 版承襲 TLS 1.3 的思路:握手往返次數更少、砍掉老舊演算法、具備前向保密,並內建後量子密碼學的支援空間。

除了 DTLS 1.3,還有什麼

這次版本同時加入 GREASE 機制:在握手過程中刻意送出永遠不會真正使用的隨機擴充代碼,藉此提早暴露無法正確處理未知值的實作,讓整體生態系更耐得起未來的擴充。此外還包括 IKEv2 金鑰衍生函數支援,以及針對現代 x86_64 處理器的 AVX-512 效能優化。從 9 月初的 alpha、9 月與 10 月的兩次 beta,到 10 月 23 日正式標記發行,整個釋出節奏算是按部就班。

四個已知問題,開發者要先認識

值得注意的是,專案方在發行說明中坦承,新功能附帶四個已知問題,影響採用 DTLS 1.3 或新版 SSL 監聽器 API 的開發者。其中兩個會讓程式誤判連線狀態:監聽器上的永久性接收失敗,可能被誤報為「等更多資料」的訊號,讓程式空等一條已經斷掉的連線;而非阻塞連線上的可重試寫入失敗,則可能被誤報為致命錯誤,導致程式關掉其實還能用的連線。

另外兩個問題出在握手與工作階段恢復。客戶端在回應前先確認伺服器第一批訊息的一部分時,若中途發生封包遺失,伺服器可能以非預期訊息警示中斷握手;KeyUpdate(更換工作階段金鑰的訊息)則會清掉重傳緩衝區裡其他尚未送出的握手後訊息,萬一 NewSessionTicket(供日後快速恢復連線的票證)首次傳送時遺失,就不會再補發。專案方表示票證問題已有修復進行中,其餘三項則未列出修復進度。

升級建議:先測 DTLS 場景,再談上線

對維運團隊來說,結論很務實:DTLS 1.3 值得開始評估,但不值得在不讀發行說明的情況下直接上生產環境。特別是仰賴 UDP 即時傳輸的服務,應該先在測試環境重現封包遺失、非阻塞 I/O 與工作階段恢復等情境,確認自家程式對錯誤碼的處理方式與新版行為相容,再排定升級時程。

資料來源


引用來源:OpenSSL 專案發行說明、Help Net Security、9to5Linux