Hubbry Logo
Format-preserving encryptionFormat-preserving encryptionMain
Open search
Format-preserving encryption
Community hub
Format-preserving encryption
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Format-preserving encryption
Format-preserving encryption
from Wikipedia

In cryptography, format-preserving encryption (FPE), refers to encrypting in such a way that the output (the ciphertext) is in the same format as the input (the plaintext). The meaning of "format" varies. Typically only finite sets of characters are used; numeric, alphabetic or alphanumeric. For example:

  • Encrypting a 16-digit credit card number so that the ciphertext is another 16-digit number.
  • Encrypting an English word so that the ciphertext is another English word.
  • Encrypting an n-bit number so that the ciphertext is another n-bit number (this is the definition of an n-bit block cipher).

For such finite domains, and for the purposes of the discussion below, the cipher is equivalent to a permutation of N integers {0, ... , N−1} where N is the size of the domain.

Motivation

[edit]

Restricted field lengths or formats

[edit]

One motivation for using FPE comes from the problems associated with integrating encryption into existing applications, with well-defined data models. A typical example would be a credit card number, such as 1234567812345670 (16 bytes long, digits only).

Adding encryption to such applications might be challenging if data models are to be changed, as it usually involves changing field length limits or data types. For example, output from a typical block cipher would turn credit card number into a hexadecimal (e.g.0x96a45cbcf9c2a9425cde9e274948cb67, 34 bytes, hexadecimal digits) or Base64 value (e.g. lqRcvPnCqUJc3p4nSUjLZw==, 24 bytes, alphanumeric and special characters), which will break any existing applications expecting the credit card number to be a 16-digit number.

Apart from simple formatting problems, using AES-128-CBC, this credit card number might get encrypted to the hexadecimal value 0xde015724b081ea7003de4593d792fd8b695b39e095c98f3a220ff43522a2df02. In addition to the problems caused by creating invalid characters and increasing the size of the data, data encrypted using the CBC mode of an encryption algorithm also changes its value when it is decrypted and encrypted again. This happens because the random seed value that is used to initialize the encryption algorithm and is included as part of the encrypted value is different for each encryption operation. Because of this, it is impossible to use data that has been encrypted with the CBC mode as a unique key to identify a row in a database.

FPE attempts to simplify the transition process by preserving the formatting and length of the original data, allowing a drop-in replacement of plaintext values with their ciphertexts in legacy applications.

Comparison to truly random permutations

[edit]

Although a truly random permutation is the ideal FPE cipher, for large domains it is infeasible to pre-generate and remember a truly random permutation. So the problem of FPE is to generate a pseudorandom permutation from a secret key, in such a way that the computation time for a single value is small (ideally constant, but most importantly smaller than O(N)).

Comparison to block ciphers

[edit]

An n-bit block cipher technically is a FPE on the set {0, ..., 2n-1}. If an FPE is needed on one of these standard sized sets (for example, n = 64 for DES and n = 128 for AES) a block cipher of the right size can be used.

However, in typical usage, a block cipher is used in a mode of operation that allows it to encrypt arbitrarily long messages, and with an initialization vector as discussed above. In this mode, a block cipher is not an FPE.

Definition of security

[edit]

In cryptographic literature (see most of the references below), the measure of a "good" FPE is whether an attacker can distinguish the FPE from a truly random permutation. Various types of attackers are postulated, depending on whether they have access to oracles or known ciphertext/plaintext pairs.

Algorithms

[edit]

In most of the approaches listed here, a well-understood block cipher (such as AES) is used as a primitive to take the place of an ideal random function. This has the advantage that incorporation of a secret key into the algorithm is easy. Where AES is mentioned in the following discussion, any other good block cipher would work as well.

The FPE constructions of Black and Rogaway

[edit]

Implementing FPE with security provably related to that of the underlying block cipher was first undertaken in a paper by cryptographers John Black and Phillip Rogaway,[1] which described three ways to do this. They proved that each of these techniques is as secure as the block cipher that is used to construct it. This means that if the AES algorithm is used to create an FPE algorithm, then the resulting FPE algorithm is as secure as AES because an adversary capable of defeating the FPE algorithm can also defeat the AES algorithm. Therefore, if AES is secure, then the FPE algorithms constructed from it are also secure. In all of the following, E denotes the AES encryption operation that is used to construct an FPE algorithm and F denotes the FPE encryption operation.

FPE from a prefix cipher

[edit]

One simple way to create an FPE algorithm on {0, ..., N-1} is to assign a pseudorandom weight to each integer, then sort by weight. The weights are defined by applying an existing block cipher to each integer. Black and Rogaway call this technique a "prefix cipher" and showed it was provably as good as the block cipher used.

Thus, to create a FPE on the domain {0,1,2,3}, given a key K apply AES(K) to each integer, giving, for example,

weight(0) = 0x56c644080098fc5570f2b329323dbf62
weight(1) = 0x08ee98c0d05e3dad3eb3d6236f23e7b7
weight(2) = 0x47d2e1bf72264fa01fb274465e56ba20
weight(3) = 0x077de40941c93774857961a8a772650d

Sorting [0,1,2,3] by weight gives [3,1,2,0], so the cipher is

F(0) = 3
F(1) = 1
F(2) = 2
F(3) = 0

This method is only useful for small values of N. For larger values, the size of the lookup table and the required number of encryptions to initialize the table gets too big to be practical.

FPE from cycle walking

[edit]

If there is a set M of allowed values within the domain of a pseudorandom permutation P (for example P can be a block cipher like AES), an FPE algorithm can be created from the block cipher by repeatedly applying the block cipher until the result is one of the allowed values (within M).

CycleWalkingFPE(x) {
    if P(x) is an element of M then
        return P(x)
    else
        return CycleWalkingFPE(P(x))
}

The recursion is guaranteed to terminate. (Because P is one-to-one and the domain is finite, repeated application of P forms a cycle, so starting with a point in M the cycle will eventually terminate in M.)

This has the advantage that the elements of M do not have to be mapped to a consecutive sequence {0,...,N-1} of integers. It has the disadvantage, when M is much smaller than P's domain, that too many iterations might be required for each operation. If P is a block cipher of a fixed size, such as AES, this is a severe restriction on the sizes of M for which this method is efficient.

For example, an application may want to encrypt 100-bit values with AES in a way that creates another 100-bit value. With this technique, AES-128-ECB encryption can be applied until it reaches a value which has all of its 28 highest bits set to 0, which will take an average of 228 iterations to happen.

FPE from a Feistel network

[edit]

It is also possible to make a FPE algorithm using a Feistel network. A Feistel network needs a source of pseudo-random values for the sub-keys for each round, and the output of the AES algorithm can be used as these pseudo-random values. When this is done, the resulting Feistel construction is good if enough rounds are used.[2]

One way to implement an FPE algorithm using AES and a Feistel network is to use as many bits of AES output as are needed to equal the length of the left or right halves of the Feistel network. If a 24-bit value is needed as a sub-key, for example, it is possible to use the lowest 24 bits of the output of AES for this value.

This may not result in the output of the Feistel network preserving the format of the input, but it is possible to iterate the Feistel network in the same way that the cycle-walking technique does to ensure that format can be preserved. Because it is possible to adjust the size of the inputs to a Feistel network, it is possible to make it very likely that this iteration ends very quickly on average. In the case of credit card numbers, for example, there are 1015 possible 16-digit credit card numbers (accounting for the redundant check digit), and because the 1015 ≈ 249.8, using a 50-bit wide Feistel network along with cycle walking will create an FPE algorithm that encrypts fairly quickly on average.

The Thorp shuffle

[edit]

A Thorp shuffle is like an idealized card-shuffle, or equivalently a maximally-unbalanced Feistel cipher where one side is a single bit. It is easier to prove security for unbalanced Feistel ciphers than for balanced ones.[3]

VIL mode

[edit]

For domain sizes that are a power of two, and an existing block cipher with a smaller block size, a new cipher may be created using VIL mode as described by Bellare, Rogaway.[4]

Hasty Pudding Cipher

[edit]

The Hasty Pudding Cipher uses custom constructions (not depending on existing block ciphers as primitives) to encrypt arbitrary finite small domains.

The FFSEM/FFX mode of AES

[edit]

The FFSEM mode of AES (specification[5]) that has been accepted for consideration by NIST uses the Feistel network construction of Black and Rogaway described above, with AES for the round function, with one slight modification: a single key is used and is tweaked slightly for each round.

As of February 2010, FFSEM has been superseded by the FFX mode written by Mihir Bellare, Phillip Rogaway, and Terence Spies. (specification,[6][7] NIST Block Cipher Modes Development, 2010).

FPE for JPEG 2000 encryption

[edit]

In JPEG 2000 standard, the marker codes (in the range 0xFF90 through 0xFFFF) should not appear in the plaintext and ciphertext. The simple modular-0xFF90 technique cannot be applied to solve the JPEG 2000 encryption problem. For example, the ciphertext words 0x23FF and 0x9832 are valid, but their combination 0x23FF9832 becomes invalid since it introduces the marker code 0xFF98. Similarly, the simple cycle-walking technique cannot be applied to solve the JPEG2000 encryption problem since two valid ciphertext blocks may give invalid ciphertext when they get combined. For example, if the first ciphertext block ends with bytes "...30FF" and the second ciphertext block starts with bytes "9832...", then the marker code "0xFF98" would appear in the ciphertext.

Two mechanisms for format-preserving encryption of JPEG 2000 were given in the paper "Efficient and Secure Encryption Schemes for JPEG2000"[8] by Hongjun Wu and Di Ma. To perform format-preserving encryption of JPEG 2000, the technique is to exclude the byte "0xFF" in the encryption and decryption. Then a JPEG 2000 encryption mechanism performs modulo-n addition with stream cipher; another JPEG 2000 encryption mechanism performs the cycle-walking technique with block cipher.

Other FPE constructions

[edit]

Several FPE constructs are based on adding the output of a standard cipher, modulo n, to the data to be encrypted, with various methods of unbiasing the result. The modulo-n addition shared by many of the constructs is the immediately obvious solution to the FPE problem (thus its use in a number of cases), with the main differences being the unbiasing mechanisms used.

Section 8 of the FIPS 74, Federal Information Processing Standards Publication 1981 Guidelines for Implementing and Using the NBS Data Encryption Standard,[9] describes a way to use the DES encryption algorithm in a manner that preserves the format of the data via modulo-n addition followed by an unbiasing operation. This standard was withdrawn on May 19, 2005, so the technique should be considered obsolete in terms of being a formal standard.

Another early mechanism for format-preserving encryption was Peter Gutmann's "Encrypting data with a restricted range of values"[10] which again performs modulo-n addition on any cipher with some adjustments to make the result uniform, with the resulting encryption being as strong as the underlying encryption algorithm on which it is based.

The paper "Using Datatype-Preserving Encryption to Enhance Data Warehouse Security"[11] by Michael Brightwell and Harry Smith describes a way to use the DES encryption algorithm in a way that preserves the format of the plaintext. This technique doesn't appear to apply an unbiasing step as do the other modulo-n techniques referenced here.

The paper "Format-Preserving Encryption"[12] by Mihir Bellare and Thomas Ristenpart describes using "nearly balanced" Feistel networks to create secure FPE algorithms.

The paper "Format Controlling Encryption Using Datatype Preserving Encryption"[13] by Ulf Mattsson describes other ways to create FPE algorithms.

An example of FPE algorithm is FNR (Flexible Naor and Reingold).[14]

Acceptance of FPE algorithms by standards authorities

[edit]

NIST Special Publication 800-38G, "Recommendation for Block Cipher Modes of Operation: Methods for Format-Preserving Encryption"[15] specifies two methods: FF1 and FF3. Details on the proposals submitted for each can be found at the NIST Block Cipher Modes Development site,[16] including patent and test vector information. Sample values are available for both FF1 and FF3.[17]

  • FF1 is FFX[Radix] "Format-preserving Feistel-based Encryption Mode" which is also in standards processes under ANSI X9 as X9.119 and X9.124. It was submitted to NIST by Mihir Bellare of University of California, San Diego, Phillip Rogaway of University of California, Davis, and Terence Spies of Voltage Security Inc. Test vectors are supplied and parts of it are patented. (DRAFT SP 800-38G Rev 1) [18] requires the minimum domain size of the data being encrypted to be 1 million (previously 100).
  • FF3 is BPS named after the authors. It was submitted to NIST by Éric Brier, Thomas Peyrin and Jacques Stern of Ingenico in France. Authors declared to NIST that their algorithm is not patented.[19] The CyberRes Voltage product, although claims to own patents also for BPS mode.[20][21] On 12 April 2017, NIST concluded that FF3 is "no longer suitable as a general-purpose FPE method" because researchers found a vulnerability.[22]
  • FF3-1 (DRAFT SP 800-38G Rev 1) [18] replaces FF3 and requires the minimum domain size of the data being encrypted to be 1 million (previously 100). On 3 February 2025, NIST withdrew FF3 entirely in the second draft revision (DRAFT SP 800-38G Rev 2) stating "An attack by Beyne [2021] on both FF3 and FF3-1 led to the removal of FF3".[23]

Another mode was included in the draft NIST guidance but was removed before final publication.

  • FF2 is VAES3 scheme for FFX: An addendum to "The FFX Mode of Operation for Preserving Encryption": A parameter collection for encipher strings of arbitrary radix with subkey operation to lengthen life of the enciphering key. It was submitted to NIST by Joachim Vance of VeriFone Systems Inc. Test vectors are not supplied separately from FF1 and parts of it are patented. Authors have submitted a modified algorithm as DFF[24] which is under active consideration by NIST.

Korea has also developed a FPE standard, FEA-1 and FEA-2.

Implementations

[edit]

Open Source implementations of FF1 and FF3 are publicly available in C language, Go language, Java, Node.js, Python, C#/.Net and Rust

References

[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
Format-preserving encryption (FPE) is a cryptographic method that encrypts data into while preserving the original format of the data, including properties such as length, character set, and structural constraints. This technique ensures that the ciphertext remains compatible with systems expecting data in a specific format, such as encrypting a 16-digit number into another valid 16-digit number. The formalization of FPE began with a seminal 2009 paper by Mihir Bellare, Thomas Ristenpart, Phillip Rogaway, and Till Stegers, which defined the security model for FPE schemes and proposed constructions using block ciphers to achieve format preservation through methods such as unbalanced Feistel networks and cycle-walking. This work established FPE as a way to provide indistinguishable from a over the message space under chosen-plaintext attacks. In 2010, the FFX mode of operation was introduced as a flexible framework for building FPE algorithms, emphasizing efficiency and security for practical applications. NIST further advanced the field in 2016 by publishing Special Publication 800-38G, which initially recommended two approved FPE modes—FF1 and FF3—for use with underlying block ciphers, providing standardized methods to encrypt domain-specific data like social security numbers or identifiers without altering storage schemas. In its 2025 revision (Rev. 1), FF3 was deprecated due to a vulnerability, leaving FF1 as the approved mode. These modes leverage tweakable block ciphers to support variable-length inputs and ensure reversibility, making FPE suitable for protecting personally identifiable information (PII) in and legacy systems. While FPE offers strong , its bounds are tied to the size of the format domain, potentially requiring larger key sizes for equivalent protection compared to unrestricted block ciphers.

Overview

Definition

Format-preserving encryption (FPE) is a cryptographic technique that encrypts plaintext data while preserving its original format and structure, ensuring the ciphertext belongs to the same domain as the plaintext. In essence, FPE defines a permutation on a finite domain DD, where the encryption function \Enck:DD\Enc_k: D \to D maps elements of DD to other elements within the same domain, and the decryption function \Deck:DD\Dec_k: D \to D serves as its inverse, such that \Deck(\Enck(m))=m\Dec_k(\Enc_k(m)) = m for any plaintext mDm \in D. This bijectivity ensures that encryption is reversible and that every possible plaintext has a unique ciphertext counterpart, maintaining the full size of the domain D|D| without loss or duplication. The domain DD typically consists of strings of fixed length over a specified alphabet, such as decimal digits or alphanumeric characters, allowing FPE to operate on structured data like identifiers or codes. For a fixed key kk from the key space K\mathcal{K}, the keyed function \Enck\Enc_k must be a bijection on DD, providing a one-to-one correspondence that preserves the cardinality of the domain. This setup contrasts with traditional block ciphers, which often require padding to fit fixed block sizes and produce ciphertexts in a binary format that may not align with the input's structure, potentially necessitating additional formatting layers in applications. In FPE, no such expansion or reformatting occurs; the ciphertext directly substitutes the plaintext while adhering to the same constraints, such as length and valid character sets. Practical examples illustrate this preservation: encrypting a 16-digit number (from the domain of all valid 16-digit strings) yields another 16-digit number, ensuring compatibility with systems expecting that format. Similarly, FPE can encrypt alphanumeric license plates, mapping a like "ABC123" to another valid plate format such as "XYZ789" under the key kk, without altering the overall structure or requiring post-encryption adjustments. These properties make FPE particularly suited for domains where format integrity is essential, though its security relies on the underlying construction achieving strong behavior.

Historical Development

The origins of format-preserving encryption (FPE) trace back to the late and early , when early efforts focused on adapting block ciphers like the (DES) to handle data in non-binary formats without altering their structure. In 1981, the U.S. National Bureau of Standards (now NIST) published FIPS PUB 74, which included guidelines for implementing DES that described a method to encipher strings over a fixed , such as decimal digits, by treating the as a number in that base and performing with DES outputs to produce a in the same domain. This approach, while innovative for its time, was ad-hoc and lacked formal , serving primarily as an implementation aid for DES in legacy systems. By the mid-1990s, interest in preserving data formats grew with the rise of and structured information systems, leading to further informal proposals. In 1997, Peter Gutmann discussed a modulo-n addition scheme using a to encrypt values within restricted ranges, such as numbers or identifiers, in a posting to the sci.crypt newsgroup. That same year, Michael Brightwell and H. Smith introduced the concept of "datatype-preserving encryption" in a presentation at the 20th National Information Systems Security Conference, emphasizing its practical utility for encrypting database fields like Social Security numbers while maintaining compatibility with existing software. These ideas highlighted the challenges of format preservation but remained largely , without rigorous cryptographic foundations. The shift toward provably secure FPE began in the early , driven by the need for constructions that could handle arbitrary domains while offering strong security guarantees. In 2002, John Black and Phillip Rogaway formalized FPE for integers, proposing cycle-walking as a method to map outputs back into the desired domain using a , though they noted its inefficiency for large domains. This laid groundwork for more systematic approaches. A major milestone came in 2009 with the work of Mihir Bellare, Thomas Ristenpart, Phillip Rogaway, and Till Stegers, who introduced a framework for building efficient, provably secure FPE schemes based on tweakable s, including unbalanced Feistel networks that support domains of any size while achieving indistinguishability from random permutations under standard assumptions. Rogaway's 2011 synopsis further synthesized these developments, outlining FPE's security models and constructions. Standardization efforts accelerated around 2010, with proposals like the FFX mode, developed by Rogaway and colleagues, providing a Feistel-based construction for encrypting variable-length strings over arbitrary alphabets. In 2016, NIST formalized FPE in Special Publication 800-38G, approving the FF1 and FF3 algorithms as modes of operation for approved block ciphers like AES, enabling secure encryption of formatted data such as numbers. However, shortly after publication, cryptanalytic results emerged; in 2017, Betül Durak and Serge Vaudenay demonstrated message-recovery attacks on Feistel-based FPE schemes like FF3, exploiting structural weaknesses in small domains to recover plaintexts with practical complexities. Subsequent analyses reinforced these vulnerabilities. This led to NIST's revision of SP 800-38G in 2025, withdrawing FF3 entirely while retaining FF1 with strengthened parameters to ensure security for domains of at least one million elements. Overall, the evolution of FPE has progressed from rudimentary, DES-era techniques to modern, provably secure schemes integrated into standards, reflecting a post-2000s emphasis on cryptographic rigor amid growing demands for data privacy in formatted environments.

Motivation and Applications

Reasons for Format Preservation

Format-preserving encryption (FPE) addresses critical constraints in legacy systems, where data structures often feature fixed field lengths that cannot accommodate the variable or expanded outputs produced by traditional encryption schemes, such as padded block ciphers. For instance, mainframe databases commonly enforce rigid formats like 8-character fields, making standard ciphertexts incompatible without extensive refactoring. By mapping plaintexts to ciphertexts of identical length and character set, FPE enables retrofitting of encryption into these environments without disrupting operational workflows or requiring hardware upgrades. Another primary motivation stems from format-specific requirements that ensure data validity for downstream applications, particularly where built-in checks like the must remain intact. Credit card numbers, for example, include a check digit computed via the Luhn method to verify integrity; conventional encryption would typically produce outputs failing this validation, halting processing in payment gateways or verification systems. FPE constructions preserve such structural invariants by transforming valid inputs into equally valid outputs, maintaining seamless with existing validation logic. FPE also alleviates integration challenges in contemporary systems, such as SQL databases and APIs that rely on exact formats for queries, joins, and . Altering field lengths or types via traditional could necessitate modifications, API revisions, or custom layers, introducing complexity and potential points of failure. With FPE, sensitive can be encrypted in place, preserving and allowing applications to process ciphertexts as if they were plaintexts, thus minimizing deployment friction. In terms of efficiency, FPE eliminates the need for ancillary format conversions or additional storage to handle ciphertext expansion, which is especially advantageous in high-volume transactional systems where even minor overheads can accumulate significantly. This direct mapping reduces both computational load and database footprint, enabling scalable protection without performance degradation. Finally, FPE supports regulatory compliance by facilitating the encryption of personally identifiable information within unaltered data , easing tokenization and auditing processes under standards like PCI DSS. This approach allows organizations to meet security mandates for protecting formats like numbers while avoiding pipeline disruptions that could complicate verification or reporting.

Real-World Use Cases

In the financial sector, format-preserving encryption (FPE) is widely used to encrypt primary account numbers (PANs) and other account identifiers while maintaining their original digit length, ensuring compliance with Payment Card Industry Data Security Standard (PCI DSS) requirements. This approach allows financial institutions to perform detection, transaction auditing, and reporting without altering database schemas or disrupting legacy processing systems. For instance, numbers can be encrypted such that a 16-digit input yields a 16-digit , preserving compatibility with validation algorithms and point-of-sale integrations. In healthcare, FPE facilitates the tokenization of sensitive patient identifiers, such as Social Security numbers (SSNs) and numbers, within (EHR) systems, thereby supporting Health Insurance Portability and Accountability Act (HIPAA) compliance. By retaining the alphanumeric format, encrypted data remains usable for queries, joins, and reporting in clinical workflows, avoiding disruptions to search functionalities or interoperability standards like HL7. Examples include encrypting nine-digit SSNs to produce similarly structured tokens, enabling secure analysis of patient data in and environments without exposing personally identifiable information (PII). For data analytics, FPE enables the secure sharing of de-identified datasets in multi-tenant cloud environments, particularly for AI and (ML) training where format preservation ensures across distributed systems. In platforms like or AWS, encrypted fields such as emails or phone numbers maintain their structural properties, allowing joins, filters, and aggregations without decryption, thus supporting privacy-preserving analytics on sensitive spans of . This is especially valuable in multi-tenant SaaS applications, where tenant-specific keys isolate encrypted while permitting collaborative ML model development on anonymized datasets. In government and identity management, FPE protects sensitive identifiers in systems handling voter information and official documents, maintaining alphanumeric structures essential for operational continuity. For example, it secures Social Security numbers in databases and similar IDs in systems, enabling secure data sharing with partners while complying with regulations like GDPR equivalents, without requiring modifications in legacy COBOL-based infrastructures. This preserves functionality for identity verification processes, such as those in passport databases, where format changes could invalidate cross-referencing protocols. As of 2025, notable developments include the integration of FPE for PII protection in SnapLogic's platform, where the new FPE Snap Pack employs the NIST-approved FF1 algorithm to encrypt fields like SSNs and numbers in real-time pipelines, enhancing compliance in hybrid cloud environments. Similarly, ALTR's solutions leverage FPE in multi-tenant environments to dynamically encrypt sensitive data for analytics and sharing, supporting deterministic operations across tenants without performance overhead. These advancements underscore FPE's role in enabling operations akin to , such as range queries and on , without altering data formats or necessitating full decryption.

Theoretical Foundations

Comparison to Random Permutations

An ideal on a domain DD is a uniformly chosen from DD to itself, offering perfect as it maps every element equally likely to any other without patterns or biases. This construction provides the theoretical for format-preserving encryption (FPE), ensuring that no information about the leaks through the beyond the format preservation itself. However, generating and storing such a permutation becomes computationally infeasible for large domains, as it requires precomputing and maintaining a table of size D|D|, each entry specifying the image of an input under the bijection. For practical domains in FPE applications, such as numbers forming a set of 101610^{16}, storing a table would demand approximately 101610^{16} entries (e.g., 64 bits each), equating to roughly 80 petabytes of storage—far beyond current practical capabilities and economic feasibility. Even smaller domains, like 101010^{10} elements, render table-based approaches like the prefix impractical due to the linear space and time requirements for initialization. In contrast, the total number of possible permutations, D!|D|!, grows factorially, making or random selection without storage impossible even for modest D|D|, as it exceeds any polynomial-time . FPE schemes address this by constructing keyed pseudorandom permutations (PRPs) that mimic the behavior of ideal random permutations under computational constraints, using efficient algorithms like Feistel networks to achieve bijections on arbitrary finite domains. These PRPs are deterministic functions keyed with a secret value, computable in polynomial time relative to the security parameter, avoiding the exponential storage and time costs of true random permutations. The efficiency stems from leveraging underlying block ciphers or hash functions to build the permutation iteratively, enabling encryption and decryption in constant or logarithmic time per operation, scalable to large domains like 21282^{128}. The primary security goal of FPE is computational indistinguishability from a , analogous to IND-CPA security but adapted for permutations: an adversary with access to an (chosen-plaintext queries) should not distinguish the FPE scheme from a truly random with more than negligible advantage, bounded by the number of queries and domain size. This PRP security ensures that for practical query limits (e.g., far below D\sqrt{|D|}
Add your contribution
Related Hubs
User Avatar
No comments yet.