Format-Preserving
在偏移範圍內格式化保留數字?
很短的問題。
是否可以使用 FPE 在 10 000 到 n 範圍內加密數字序列,其中可能的加密值是偏移的並且只能在 10 000 到 n 範圍內?
例如。最多 10 位的序列號將用零填充 (0000 0532 12) 並加密到 PAN 號的 IAN 部分(等效數字大小)。任何大於 9999 的序列號都不應加密為具有六個前導零 xxxx xxxx 0000 0020 31y 的 IAN。
是否可以使用 FPE 在 10 000 到 n 範圍內加密數字序列,其中可能的加密值是偏移的並且只能在 10 000 到 n 範圍內?
容易地; 這是加密值的簡單 3 步過程 $ x \in [10000, n] $ :
- 從 n 中減去 10000
- 使用處理範圍的 FPE 方法對其進行加密 $ [0, n-10000] $ . 這可能涉及選擇適當的基礎,如果密文超出範圍,則可能重新加密
- 將 10000 添加到結果中
對應的解密過程應該很明顯了……
而且,在一定範圍內處理明文/密文的標準方法 $ [0, x] $ 有底座 $ b^e > x $ 是:
- 將明文表示為 $ e $ 根據- $ b $ 數字(使用基本轉換常式)
- 使用密鑰加密明文
- 如果結果恰好是 $ > x $ ,然後使用相同的密鑰重新加密該結果(並重複直到結果在範圍內)
- 將該結果轉換為密文(使用另一個基本轉換常式)
這需要可變時間,但是它不會洩漏任何資訊(因為攻擊者無法從超出範圍的中間結果中推斷出任何資訊)。而且,它總是會停止(因為FPE加密是雙射,多次加密的結果將是一個循環,所以只要你從一個範圍內的值開始,你就會得到一個範圍內的值)