Substitution-Cipher
低記憶體使用的高效混淆或加密方法
我們正在製造一種以 8 字節數據包傳輸的感測器。該感測器將由幾個不同的接收器使用,其中一些可用的備用 RAM 非常少 (< 3 kb)。在某些接收器上,我們將提供軟體,在其他情況下,我們將根據 NDA 向製造商提供程式碼。
這是一個商業應用,感測器可以相對容易地複制。為了給模仿設計製造一個小障礙,我們想給數據包添加一些加密或混淆。
關於無線電數據包的一些細節:
- 8字節包
- 每秒發送幾次
- 感測器測量模擬條件,這些條件可以被想要“破解”加密的人改變。數據包的一部分將是這些數據。有時感測器會重複發送一個空信號。
我曾想過使用 Blowfish,但它的 RAM 比我想分配的要多,而且在加密方面可能有點過頭了。Blowfish 是否有更低 RAM 的替代品?
我知道替換密碼相對容易破解,但由於我只是想讓某人慢下來,它可能合適嗎?有人可以向我指出一種 RAM 高效且需要一些工作才能破解的方法嗎?
為了問題的目的加密一個 8 字節的數據包,比使用應用於 8 字節數據包的 64 位密碼和密鑰更糟糕。
候選人包括
- TEA,它具有最低的程式碼佔用量並且實現起來非常簡單
- Speck或Simon(64/128 或 64/96),這可能更有效
- IDEA,但它需要乘法,這可能很難得到恆定的時間。
- DES或3DES,但程式碼更大並且需要查表,從安全形度來看,這可能會出現問題,尤其是在具有記憶體的 CPU 上。
任何這些都可以用很少的 RAM(64 字節就足夠了)來實現。
注意:此替換不提供
- 強大的機密性(特別是相同的值總是以相同的方式加密)
- 完整性保護
- 重放保護
- 強大的防複製保護,例如通過盲目複製感測器的程式碼和數據,或對感測器或使用它的東西進行逆向工程,這仍然是可能的。