Feistel network

From CRYPTUTOR

Jump to: navigation, search

A Feistel network is a construction to transform an arbitrary function into a permutation.

Definition

For any function f:\{0,1\}^k \rightarrow \{0,1\}^k, we define the (single-layer) Feistel network of f to be the function:

F_f(x,y)=(y,x\oplus f(y)),

where \oplus denotes bitwise exclusive-or (XOR). Note that no matter what f is, F_f\, is a permutation over \{0,1\}^{2k}\,.

A multi-layer Feistel network of functions f_1, \ldots, f_t is simply the composition of their single-layer Feistel networks:

F_{f_1,\ldots,f_t}(x,y)=F_{f_t}(\ldots(F_{f_1}(x,y))\dots)

The functions f_1,\ldots,f_t are called the round functions of the Feistel network.

See also