Speck
帶符號數學的斑點
我發現自己在一個只做有符號數學的工業控制器中實現了 Speck。
如果 Speck 算法是使用有符號數學實現的,會有什麼加密後果?
只要您的微控制器實現的有符號算術是二進制補碼,我認為沒有重大的實現問題。
Speck是一個加-旋轉-異或 (ARX) 密碼:在位級別,有符號二進制補碼加法與無符號加法相同,並且旋轉和 XOR 無論如何都是相同的。如果您只有保留符號的右移可用,您可能需要做一些額外的屏蔽來實現旋轉。
在任何情況下,只要您正確地實現算法,它(根據定義)將產生與 Speck 的任何其他正確實現相同的輸出(以原始 Speck 規範中的一些不幸的字節順序問題為模)。因此,無論您最終“在幕後”做什麼來實現密碼,只有當這些實現細節以某種方式通過某些側通道(例如執行時序或功率分析)變得可觀察時,才會產生密碼學後果。
雖然針對側通道攻擊加強實施的具體方法超出了此答案的範圍,但您應該知道它們的存在。(我們甚至在這里為他們提供了一個完整的側通道攻擊標籤。)只需查看微控制器的指令時序,並避免具有數據相關時序的指令(以及諸如依賴敏感數據的條件跳轉之類的東西)就是一個好的開始。