Performance
密碼算法的性能指標
我是一名初學者,正在研究密碼學性能指標。
- 我的問題是檢查密碼算法性能的重要指標是什麼。
密碼學算法的評估標準:
擁有公共規範(唯一的秘密是密鑰)。
專利狀態。
它的目標是:分組密碼(DES、AES..)、密碼、消息摘要、MAC、來源證明、簽名、密鑰建立、TRNG、PRNG。
算法本身的要求和限制。
- 隨機性要求;
- 驗證輸入參數的要求(例如 ECDH 的公鑰)。
對稱(分組密碼、SHA)或非對稱(RSA、ECDSA、ECDH)。
某些威脅模型下的安全性:
- 對密鑰恢復的抵抗力(至少受密鑰大小的限制);
- 塊大小(用於塊密碼);
- 抵抗純密碼分析攻擊;
- 抗側通道洩漏(有許多細分);
- 抗故障注入。
使用算法的複雜性和熟悉度/學習曲線。
參數大小:
- 輸出大小(成本/擴展比);
- 編碼(公共)密鑰大小;
- 接受的輸入尺寸;
速度(通常非常依賴於平台):
- 大消息或使用相同鍵多次使用的周期/字節平均值;
- 是時候設置新密鑰了;
- 時間與大小。
記憶體佔用:
- 程式碼;
- 每個執行實例的 RAM。
在給定平台上具有上述合適特性的版本的可用性。
安全部門的認可。
注意:可以自由重組/添加到列表中,這是一個社區 wiki。
SUPERCOP頁面列出了以下標準:
散列
- 是時候散列一個非常短的數據包了。
- 是時候散列一個典型大小的 Internet 數據包了。
- 是時候散列一條長消息了。
- 雜湊輸出的長度。
對稱加密
- 是時候使用密鑰和隨機數加密一個非常短的數據包了。
- 是時候加密一個典型大小的 Internet 數據包了。
- 是時候加密一條長消息了。
- 密鑰的長度。
- 隨機數的長度。
- 驗證加密短數據包的時間。
- 對典型大小的 Internet 數據包進行身份驗證加密的時間。
- 對長消息進行身份驗證加密的時間。
非對稱算法
- 是時候生成密鑰對(私鑰和相應的公鑰)了。
- 私鑰的長度。
- 公鑰的長度。
- 是時候從私鑰和另一個使用者的公鑰生成共享密鑰了。
- 共享密鑰的長度。
- 是時候使用公鑰加密消息了。
- 加密消息的長度。
- 是時候使用私鑰解密消息了。
- 是時候使用私鑰簽署消息了。
- 簽名消息的長度。
- 是時候使用公鑰驗證簽名消息了。
MACs
奇怪的是,MAC 似乎沒有用 SUPERCOP 測量。AEAD 方案可能包括它們,但沒有用於測量 MAC 的獨立類別。一些相關的指標可能是:
- 密鑰大小
- 是時候評估小消息了
- 是時候評估大型消息了
其他指標
另一個標準指標(如另一個答案中提到的)是每字節的周期數。這是對每個輸入字節執行操作所需的 CPU 週期的度量。
考慮到移動/物聯網設備的普及,我懷疑功耗也可能是一個相關指標。
吞吐量是一個常見的度量標準,它是系統可以處理的每單位時間(例如秒)的數據量。
正如另一個答案中提到的(再次),其中許多指標將取決於平台。
筆記
以上包括用於非對稱算法和散列的指標,但問題提到了對 DES、AES 等的興趣,因此可能只對對稱加密算法或上述所有算法感興趣 - 目前尚不清楚。