工程開發
constant-time-testing avatar

constant-time-testing

檢測密碼學實作中的時間側通道漏洞,防止金鑰外洩及加密安全防護被繞過。

簡介

常數時間測試 (Constant-time testing) 是一項專為稽核人員、密碼學工程師及安全研究人員設計的關鍵安全技能,旨在驗證敏感程式碼是否以常數時間執行。時間攻擊利用執行時間的可觀察差異來提取私鑰或工作階段權杖等機密資訊。此技能提供系統性的指導,用於識別在 RSA、ECDH 及現代後量子演算法等協定的加密操作中,因機密資料而導致的條件分支、表格查找以及非常數時間算術運算(如除法或位移)等漏洞模式。

  • 分析原始程式碼是否存在時間洩漏及微架構相依性,這些因素會導致執行時間與機密資料產生關聯。

  • 提供結構化方法來識別常見違規模式,包括條件跳轉、快取時間敏感的陣列存取,以及變動時間的整數算術運算。

  • 整合現代驗證工具鏈,例如用於統計時間分析的 dudect、執行階段追蹤工具 timecop,以及 SideTrail、ct-verif 與 FaCT 等形式驗證框架。

  • 支援加密原語與協定的安全性稽核,以確保實作層級具備抵禦側通道攻擊的穩健性。

  • 提供緩解策略的實作建議,包括消除執行時間與敏感輸入之間關聯的遮罩技術。

  • 在部署前進行密碼學稽核、審查涉及加密原語的 Pull Request,或從零開發自訂加密函式庫時使用此技能。

  • 適用於攻擊者可能擁有時間預言機 (timing oracle) 或網路層級可觀測性的環境。

  • 透過將程式碼路徑與潛在的時間變異性進行比對來運作;為獲得最佳效果,需明確定義機密輸入。

  • 輸出內容提供可執行的見解,包括已識別的漏洞程式碼片段及建議的形式或統計驗證方法。

  • 請注意,雖然形式化方法提供高保證的驗證結果,但複雜度較高;統計方法則提供一種更實用、負擔較輕的方式,適用於在雜訊環境中偵測現實世界的時間差異。

倉庫統計

Star 數
4,856
Fork 數
421
Open Issue 數
29
主要語言
Python
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月28日 上午11:37
在 GitHub 查看