基於乘法的對稱加密算法
我一直在想這一段有一段時間了:
乘法是一個很好的混合功能。如果您根據 AND 和 XOR 計算出乘法的樣子,那麼 64 位乘法的複雜程度就顯而易見了。在硬體中實現它所需的晶體管數量禁止在大多數密碼算法中使用乘法運算。但是對於只需要在通用 CPU 上執行的非加密 PRNG,乘法非常有用,因為已經有硬體實現。
https://tom-kaitchuck.medium.com/designing-a-new-prng-1c4ffd27124d
通常在加密算法中,我們使用模加法、旋轉和異或運算。但是有什麼東西會妨礙使用模乘、旋轉和異或運算嗎?
模組化乘法比加法慢,但可能不會慢很多,而且肯定是更強的混合功能。乘法實際上是一個很好的混合函式,那麼為什麼它在對稱密碼學中很少使用呢?我認為即使是智能手機也可以非常快速地進行 64 位乘法,並且有一些用於乘法的硬體實現(但我不確定)。
乘法的緩慢真的是一個大問題,以至於乘法無法在快速的輕量級加密算法中得到廣泛應用嗎?可能在物聯網設備或 RFID 晶片上可能是個問題,但對於電腦和智能手機,基於乘法的加密算法不會是個問題,不是嗎?
乘法的緩慢真的是一個大問題,以至於乘法無法在快速的輕量級加密算法中得到廣泛應用嗎?可能在物聯網設備或 RFID 晶片上可能是個問題,但對於電腦和智能手機,基於乘法的加密算法不會是個問題,不是嗎?
部分問題似乎是“輕量級”的定義,以及它所針對的預期平台。智能手機上的 CPU 實際上非常強大。我不會將這些平台(或筆記型電腦)描述為必然“輕量級”。輕量級加密通常在設計時考慮到微控制器;通常,這些微控制器沒有內置的 64x64 位乘法指令。
現在,模乘(對於模數為 2 的冪)可以通過一系列移位和條件加法來實現;當然可行,但比加法操作要貴得多。
另一個問題似乎是模乘法並不像您希望的那樣美妙。對於這個討論,我將把我的討論限制在以 2 的冪為模的乘法上(以素數為模的乘法沒有這些問題;它們確實在不是 2 的冪的範圍記憶體在問題)。
- 模組化多陽離子沒有任何“正確詞”傳播;例如,翻轉其中一個輸入的高位只會影響輸出的高位;其他位不受影響。當然,模組化加法也有同樣的問題;但是它也更便宜。
- 模乘確實有很強的微分;最強是基於身份 $ (-x)y = -(xy) $ (並且模運算不會打破這一點)。
這兩個問題都可以通過適當的設計來解決;然而,你必須這樣做的事實使它不那麼有吸引力。此外,它引出了一個問題:為什麼不在 $ GF(2^k) $ 反而?如果我們正在執行移位/加法實現,伽羅瓦乘法的雙/異或實現不會貴很多,並且它避免了上述兩個問題……