Format-Preserving

在偏移範圍內格式化保留數字?

  • May 4, 2022

很短的問題。

是否可以使用 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加密是雙射,多次加密的結果將是一個循環,所以只要你從一個範圍內的值開始,你就會得到一個範圍內的值)

引用自:https://crypto.stackexchange.com/questions/99964