Sui 中使用的加密庫 Fastcrypto 打破了多項速度記錄,我們在基準測試和安全分析方面的工作修復了大量安全漏洞,同時通過發現新穎的優化技巧爲創新打開了大門。

在倫敦帝國理工學院國際性能工程會議 (ICPE) 的基準測試研討會上,最近發表了一篇論文《Fastcrypto:通過持續基準測試開創密碼學》,描述了我們對 Fastcrypto 庫中的加密函數進行的持續和系統的基準測試。

此次演講是軟件系統負載測試和基準測試研討會中“性能測試創新:策略和技術”環節的一部分。此次會議吸引了來自學術界和業界的嘉賓,包括 MongoDB 和亞馬遜的代表,他們也在同一研討會上發言。

我們重點介紹了 Fastcrypto 庫的系統性和持續性基準測試,該庫是數字簽名、哈希函數和零知識證明等加密函數的集合。在 Fastcrypto 中,所有函數在發佈時和按需進行持續基準測試,結果在線發佈。可以輕鬆比較類似的函數,並且我們保留歷史數據以便能夠跟蹤一段時間內的性能。

演示強調了這些基準如何促進 Fastcrypto 和 Sui 開發中更明智的決策,影響依賴項和使用方式的選擇,以及優化開發人員資源的重點。

根據基準做出合格的決策

論文中的案例研究解決了在 Sui 中爲驗證者選擇簽名方案的挑戰。對於向 Sui 提交交易的用戶,交易必須由法定人數的驗證者簽名,併合併到交易證書中。法定人數約爲 100 名驗證者,權益分佈均勻,法定人數由 67 名驗證者組成,這意味着每個驗證者必須驗證每筆交易 67 個簽名。

BLS 簽名方案允許將多個簽名像單個簽名一樣進行驗證,但它比 EdDSA 等替代方案慢得多。詳細的基準測試顯示,這兩種方案的盈虧平衡點在 40 到 45 個簽名之間。因此,對於 Sui 來說,使用 BLS 效率更高,這確實是目前所使用的方法。

EdDSA 和 BLS 簽名方案的基準測試顯示,40 到 45 個批量簽名的盈虧平衡點,表明藉助 Sui 的驗證器池,BLS 是一個性能良好的選擇。

“如果軟件速度突然變快了很多,你也應該感到擔憂”

演示還展示了基準測試如何發現意外的軟件行爲。其中一個例子涉及實現 EdDSA 簽名方案的庫,該方案假定公鑰應被緩存並作爲簽名函數的輸入提供。如果提供了錯誤的公鑰,則可能導致提取私鑰(如我們的 ed25519-unsafe-libs GitHub 中所示)。

之所以檢測到此問題,是因爲某些庫表現出異常快速的性能,繞過了公鑰的派生並使用可能不正確的公鑰作爲參數。雖然基準測試通常旨在加速軟件,但“如果軟件突然快了很多,你也應該擔心”,正如研討會上的一位觀衆所指出的那樣。