Encryption

分析/性能測量密碼實現的理想方法

  • June 24, 2016

我已經實現了兩個密碼的位切片版本(Gibbon-120 和 Hanuman-120,都是靈長類密碼家族的一部分:http: //primates.ae/wp-content/uploads/primatesv1.02.pdf

我現在想衡量與參考實現相比,我的位切片密碼給我帶來的有效性的提高。當然,我也想知道我在一般情況下的實現性能/速度。

到目前為止,我嘗試的是對 100byte、100kbyte 和 100mbyte 進行 10 次加密和解密,然後查看加密和解密不同數據量的平均掛鐘時間是多少。我懷疑這是否是明智的做法。雖然位切片實現在執行時間上是恆定的,但參考實現是另一回事。他們使用查找表,因此在第一次加密後可以提高速度,因為現在有可能來自查找表的記憶體命中。還有一個問題是,如果它是按掛鐘時間測量的,那麼我電腦上的後台程序可能會降級或以其他方式導致結果出現噪音。

另一方面,我可以計算編譯程式碼中的指令(雖然我還不知道如何)。不過,這似乎也不是理想的方法,因為不同的指令具有不同的延遲和吞吐量。如果一個密碼使用 10 個加法,另一個使用 10 個乘法,那麼前者可能會更快,儘管它們使用相同數量的指令。我在位切片實現中使用的一些 AVX 指令就是這種情況(如果我沒記錯的話,置換指令需要 3 倍於隨機播放指令的時間)。

解決這個問題的標準方法是什麼?當發布新的最新密碼密碼設計或實現時,衡量密碼性能的事實標準是什麼?

我的實現是用 C 語言編寫的,無論其價值如何(並使用 Intel Intrinsics 進行 AVX)。

對於較新的 CPU,僅計算指令數是不可行的,因為較新的 CPU 每個週期可以執行多個指令,並且具有多個核心等等。

每字節週期數是當今衡量性能的常用方法。當然,為了讓它盡可能的公平和可比,程式碼只理想地執行在一個核心上,渦輪增壓和超執行緒關閉等。

引用自:https://crypto.stackexchange.com/questions/36866