Crux 是一種跨語言驗證工具,旨在驗證人類難以確保正確性的程式碼,例如加密模組和序列化/反序列化器對。Crux 建立在與成熟的 SAW-Cryptol 工具鏈相同的框架之上,但提供了一個以符號單元測試形式表達證明的介面。
Crux 的目標是驗證那些複雜、高度優化且封裝在具有精確演算法規範的介面後面的程式碼。這些特性描述了幾種重要且對安全性至關重要的系統類別,特別是加密模組(如 AES、SHA、ECDSA 等)以及序列化/反序列化器(如在網路介面中找到的那些)。
Crux 的主要優勢在於其組合了符號測試介面(如 CBMC 和其他工具中所見)和組合符號模擬(如 SAW-Cryptol 中所見)以及跨語言的擴展等價性證明。
Crux-MIR 是 Crux 的 Rust 前端,它是一個位精確的驗證工具,可以推理安全和不安全的 Rust 程式碼。Crux-MIR 的證明介面非常新穎,它結合了符號測試介面(如 CBMC 和其他工具中所見)和組合符號模擬(如 SAW-Cryptol 中所見)以及跨語言的擴展等價性證明。
Crux-MIR 已被用於 Amazon Web Services 的工業部署中,作為 Shardstore(一種鍵值儲存節點實現)的保證過程的一部分。Crux 被用來證明反序列化程式碼的無恐慌性。
Crux-MIR 已被用於驗證 ring crate 中的 SHA1 和 SHA2 的 Rust 實現,並根據從 Cryptol 和 hacspec 標準化規範檔案庫中提取的通用(即非 Rust 或 ring 特定)規範進行驗證。
Crux 的未來方向包括支援 SAW-Core 項重寫,這對於處理最複雜的目標是必要的。
Na inny język
z treści źródłowej
arxiv.org
Głębsze pytania