# Defining format-preserving encryption for natural language

Assume we have plaintext in natural language. Can we use format-preserving encryption in such a way that the produced ciphertext cannot be distinguished from natural language?

• This is a form of steganography. It is feasible if we accept that ciphertext is significantly larger than plaintext, for some definition of natural language (especially if that includes modern poetry, or something looking like the output of automatic translation, or/and if we feed the encryption program with natural text that it slightly transforms). – fgrieu May 5 '15 at 7:32
• You could use format-preserving encryption along with a word dictionary to create a permutation over all possible words in your given natural language. – pg1989 May 5 '15 at 16:49
• @fgrieu it is interesting to see this from steganography perspective. i did not thought that way before ! – sashank May 7 '15 at 2:02

The below is assuming a natural language is the one that has sentences from a well defined dictionary for that language (ex: oxford dictionary for english ).

We can do this with the standard approach for FPE i.e $rank-encrypt-derank$. Build a $key-value$ pair map of all the words in the language of preference Where $key$ is the number and $value$ is the word. {Say from $1$ to $n$ }. $n$ being maximum number of words in dictionary.

1. Rank : For each word find the key which is a number
2. Encrypt: Apply the FPE algorithm of your choice (FF-1,2,3 OR FNR) or even simple fiestel network.
3. Derank the ciphertext of FPE algorithm which is a number by finding the respective word in the map. So the deranked word would be actual ciphertext

Decryption is similar .

• "spashy strip accord ajar morsel". That's the result of following this procedure to come up with a five word ciphertext (using an English dictionary) -- would that count as "a natural language text"? Or, might there be more to natural languages than "each word must be in the dictionary"? – poncho May 6 '15 at 19:30
• good point , now lets define a "natural language" ? and the "formats" to preserve ? – sashank May 7 '15 at 1:33