Format-Preserving
整數加密保持相等
我已經閱讀了太多不同的加密選項,現在我感到很迷茫。我需要一個簡單、安全(不是我們所有人)的方案來加密具有以下要求的整數(32 位):
- 密文也是整數(32 位)或長整數(64 位)
- 對於整數 x1=x2 則密文 E(x1)=E(x2)
- 對於整數 x1<>x2 然後密文 E(x1)<>E(x2)
- 如果我知道 E(x1),那麼在沒有(私鑰)的情況下很難解密 x1
有這麼簡單的方案嗎?
加密方案的定義已經滿足了您的一些條件:
- 加密必須是可逆的,以便密文可以是(至多)一個明文的加密。
- 您的最後一點基本上只是密文攻擊。這通常是被認為是最弱的攻擊,對於今天的安全定義來說還不夠。所以任何被認為是安全的方案,它也包括這個。
唯一重要的部分是您的第一點,因為要找到具有 32 位或 64 位長度的密文的加密方案並不容易。當然你可以使用 3DES(64 位),但是今天不應該再推薦了。但還有其他選擇:
- 流密碼不會擴展密文。選擇流密碼時,請使用目前密碼,並考慮在某個門檻值之後開始使用密鑰流 btis。RC4 很流行,但也有不少安全問題。
- 在 OFB 中使用分組密碼,CTR(或 KFB)操作模式的功能與流密碼非常相似,您可以刪除不需要的位。
- 格式保留加密是一種使您能夠擁有 32 位到 32 位關係的方法。但是有很多構造,並且有不少是基於其他提到的方法。