Block-Cipher

密碼算法辨識(逆向工程)

  • November 14, 2017

我正在嘗試辨識程序中使用的某種加密算法。通過檢查執行檔,它似乎

  • 有 16 輪(加上 2 個“輪”用於前/後處理)
  • 使用線性同餘生成器(具有固定種子)的結果將輸入明文填充到 256 字節。這可能是一個預處理步驟,而不是實際加密算法的一部分
  • 每一輪都對整個明文進行操作(更新輸出的所有 256 個字節)。在每一輪結束時,從輸出中減去一個 256 字節的數組
  • 使用(隨機)初始化向量,即相同的輸入產生不同的輸出

我懷疑它是 DES 的變體,但為 DES 列出的塊大小只有 64 位。是否有常用的 2048 位變體,或某種優化,允許在仍使用初始化向量的同時並行計算每個塊的下一輪?或者,給定明文和每輪產生的中間值,是否有一種簡單的方法來確定密碼的類型?

是否有常用的 2048 位變體,或某種優化,允許在仍使用初始化向量的同時並行計算每個塊的下一輪?

位切片是一種優化技術,包括計算 $ b $ 函式的實例(例如 $ n $ 塊解密/加密)在一台機器上並行 $ b $ 位。明顯的 2048 位塊大小與 64 位密碼和 32 位位片一致。Bitslicing 只能在數據進行塊操作時進行 $ n+1 $ 不依賴於塊操作的輸出 $ n $ , 所以它對於例如 CBC 模式是無用的,但可以用於例如 CTR 模式。

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