Implementation

加密算法的修改實現是個好主意嗎?

  • November 12, 2014

標準加密算法的修改實現是否比標準版本更好?既然算法不標準,是不是更難破解?它更安全嗎?

不,修改後的算法不太可能更難破解,除非密碼學家明確做出更改以使算法更安全。它們當然不會因為它們不同而更安全。

  • 由於 Kerckhoff 原則,您應該假設該算法是已知的。所以算法本身的改變並不會增加安全性;
  • 如果進行了微不足道的更改,那麼對算法的所有攻擊仍然有效;
  • 如果是不平凡的更改,則算法需要新的安全描述或證明;基本上它應該被視為一種新算法。

現在在後一種情況下,算法當然可以更安全,並且原始安全證明的許多部分都可能成立。有許多算法已經在一定程度上進行了調整,以使它們更安全或更實用,通常是由它們的原作者進行的。例如,對於 SHA-1,可以在野外找到稱為 SHA-0 的原始、未經調整的變體。

但是在沒有明確想法的情況下更改算法以修復以前的算法不太可能使其更安全。大多數時候,算法的安全性會降低。


請注意,即使對稱算法的向量(內部常數)的微小變化也可能完全破壞算法的安全性。通常這些表是專門為增加安全性而創建的。如果您更改其中的一個常量,您可能已經破壞了安全性。其他特定常量可能同樣安全,甚至更安全(例如,參見作者對許多 SHA-3 參賽者所做的更改)。換句話說,微小的變化可能並不等同於微不足道的變化。


例如,如果您將 SHA-256 的 SHA-2 向量更改為新的安全集,則可能會使彩虹表的使用變得更加困難。但是,如果您正確使用 SHA-2,那麼彩虹表應該不是問題(因為使用 salt 進行基於密碼的密鑰派生)。這樣,對於非常具​​體的攻擊場景,使用修改後的算法可能會帶來一些本地化的好處。但總的來說,當然,更改密鑰派生原語會更明智。

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