Format-Preserving
這是使用 FPE 進行自行車步行的正確程序嗎?
加密一組值(比如從 1001 到 2001 的年份範圍)
- 對集合進行排名
{0 = 1001, 1 = 1002, 2 = 1003…999 = 2001} 2. 從集合中取你要加密的值(年份 = 1995)並確定排名值 = 996 3. 將此轉換為二進制 996 = 1111100100 4. 使用 FPE(1111100100) = En 加密二進制值,其中 n 是迭代 5. 如果 En 落在期望的最大值 999 之外,取 En 並再次加密 FPE(En) = En+1 6. 當 En+1 在 0 - 999 範圍內時停止,否則重複步驟 5
問題,
- 這是使用任何 FPE 執行自行車行走的正確方法嗎?
- 落在期望範圍之外的最小機率是多少?最大的是什麼?
注意: 在我的情況下,我使用 BPS 作為我的 FPE,它具有至少兩個“字元”作為輸入的限制,因此對於二進制數,可能的最小輸入值是 00、01、10 或 11。十進制是0、1、2、3。因此,您可以從這些值創建的最小範圍是 0 - 1。因此,落在這兩個值之外的機率為 50%。這個對嗎?
50% 是否會是在最小範圍之外著陸的最大機率 - 隨著範圍的增加機率會變小?
是的,您所描述的是使用 FPE 進行自行車步行的正確方法。
在您的情況下,您要加密的值是 10 位,因此最大可能的密文是 1024。如果密文在 1000-1024 之間,您只需要循環行走,因此可能的 1024 值中有 24 個將導致迭代. 這意味著對於任何特定值,您騎自行車的機率是 $ \frac{24}{1024} \approx \frac{1}{40} $ , 這是相當小的。