I understand how standard numeric FPE using a halved string in cycled Feistel networks is constructed and operates. I then read the paper regarding FFX encryption which should allow for any non-binary alphabet to also be used (http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/ffx/ffx-spec.pdf). However, I am having some trouble understanding how FFX works.

From what I can understand, the round function is the same, except FFX construction also allows for the two halves in the Feistel network to be split into different length strings. This also means that the round function is different, and changes to the described characterwise/blockwise function instead. However, I am not too sure how that method can work when the two halves of the string are no longer equal length. Perhaps I am misunderstanding something about how the XOR replacement works, so could someone help explain it? *Also, I feel like my assumption about the round function may be incorrect. Does the round function need to be chosen out of a different set of PRFs than previously? (ie. not AES) <--- this is actually probably the case because of all the adjusted AES functions mentioned in the FFX paper

The addendum also explains how to construct the cipher while taking a parameter which specifies an arbitrary radix. I also do not understand this part.

Could someone give me a simple overview of how FFX encryption works? Thanks!

  • $\begingroup$ FFX is an unbalanced fiestel cipher . $\endgroup$
    – sashank
    Commented Aug 4, 2015 at 13:09
  • $\begingroup$ I understand that it is unbalanced, but how can that be achieved with the functions which replace XOR? Doesn't characterwise addition require same length? $\endgroup$
    – EL_BR_CV
    Commented Aug 4, 2015 at 13:28
  • $\begingroup$ we just ignore the extra bits $\endgroup$
    – sashank
    Commented Aug 4, 2015 at 15:26
  • $\begingroup$ so are they just unchanged? and appended to the pseduo-xor'ed bitstring? $\endgroup$
    – EL_BR_CV
    Commented Aug 4, 2015 at 15:45
  • $\begingroup$ I guess you are having the classic confusion stated in these questions crypto.stackexchange.com/questions/18741/… and crypto.stackexchange.com/questions/18611/… $\endgroup$
    – sashank
    Commented Aug 4, 2015 at 22:44


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.