Performance

密碼算法的性能指標

  • March 1, 2019

我是一名初學者,正在研究密碼學性能指標。

  • 我的問題是檢查密碼算法性能的重要指標是什麼。

密碼學算法的評估標準:

  • 擁有公共規範(唯一的秘密是密鑰)。

  • 專利狀態。

  • 它的目標是:分組密碼(DES、AES..)、密碼、消息摘要、MAC、來源證明、簽名、密鑰建立、TRNG、PRNG。

  • 算法本身的要求和限制。

    • 隨機性要求;
    • 驗證輸入參數的要求(例如 ECDH 的公鑰)。
  • 對稱(分組密碼、SHA)或非對稱(RSA、ECDSA、ECDH)。

  • 某些威脅模型下的安全性:

    • 對密鑰恢復的抵抗力(至少受密鑰大小的限制);
    • 塊大小(用於塊密碼);
    • 抵抗純密碼分析攻擊;
    • 抗側通道洩漏(有許多細分);
    • 抗故障注入。
  • 使用算法的複雜性和熟悉度/學習曲線。

  • 參數大小:

    • 輸出大小(成本/擴展比);
    • 編碼(公共)密鑰大小;
    • 接受的輸入尺寸;
  • 速度(通常非常依賴於平台):

    • 大消息或使用相同鍵多次使用的周期/字節平均值;
    • 是時候設置新密鑰了;
    • 時間與大小。
  • 記憶體佔用:

    • 程式碼;
    • 每個執行實例的 RAM。
  • 在給定平台上具有上述合適特性的版本的可用性。

  • 安全部門的認可。

注意:可以自由重組/添加到列表中,這是一個社區 wiki。

SUPERCOP頁面列出了以下標準:

散列

  • 是時候散列一個非常短的數據包了。
  • 是時候散列一個典型大小的 Internet 數據包了。
  • 是時候散列一條長消息了。
  • 雜湊輸出的長度。

對稱加密

  • 是時候使用密鑰和隨機數加密一個非常短的數據包了。
  • 是時候加密一個典型大小的 Internet 數據包了。
  • 是時候加密一條長消息了。
  • 密鑰的長度。
  • 隨機數的長度。
  • 驗證加密短數據包的時間。
  • 對典型大小的 Internet 數據包進行身份驗證加密的時間。
  • 對長消息進行身份驗證加密的時間。

非對稱算法

  • 是時候生成密鑰對(私鑰和相應的公鑰)了。
  • 私鑰的長度。
  • 公鑰的長度。
  • 是時候從私鑰和另一個使用者的公鑰生成共享密鑰了。
  • 共享密鑰的長度。
  • 是時候使用公鑰加密消息了。
  • 加密消息的長度。
  • 是時候使用私鑰解密消息了。
  • 是時候使用私鑰簽署消息了。
  • 簽名消息的長度。
  • 是時候使用公鑰驗證簽名消息了。

MACs

奇怪的是,MAC 似乎沒有用 SUPERCOP 測量。AEAD 方案可能包括它們,但沒有用於測量 MAC 的獨立類別。一些相關的指標可能是:

  • 密鑰大小
  • 是時候評估小消息了
  • 是時候評估大型消息了

其他指標

另一個標準指標(如另一個答案中提到的)是每字節的周期數。這是對每個輸入字節執行操作所需的 CPU 週期的度量。

考慮到移動/物聯網設備的普及,我懷疑功耗也可能是一個相關指標。

吞吐量是一個常見的度量標準,它是系統可以處理的每單位時間(例如秒)的數據量。

正如另一個答案中提到的(再次),其中許多指標將取決於平台。

筆記

以上包括用於非對稱算法和散列的指標,但問題提到了對 DES、AES 等的興趣,因此可能只對對稱加密算法或上述所有算法感興趣 - 目前尚不清楚。

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