Wed, Mar. 10th, 2010, 10:57 pm
feistel networks, XOR. block cipher basics.

Feistel Networks   --- A Feistel network is a general method of transforming any function (usually called the F function) into a permutation. It was invented by Horst Feistel [FNS75] in his design of Lucifer [Fei73], and popularized by DES [NBS77].

All commonly used symmetric block ciphers are product ciphers; they are strong ciphers constructed by many iterations of a round function, which is itself a kind of weak cipher. In a Feistel cipher, the round function consists of taking one part of the data being encrypted, feeding it into some key dependent function F, and then XORing (or otherwise combining) the result into another part of the block. If the part of the data used as input to the F function and the part of the data combined with output from the F function are each half of the block, then the cipher is a “balanced” Feistel network [SK96].

XOR - The logical operation exclusive disjunction, also called exclusive or (symbolized XOR, EOR, or ⊕), is a type of logical disjunction on two operands that results in a value of true if exactly one of the operands has a value of true.[1] A simple way to state this is "one or the other but not both."

XOR truth table

F, F -- F           0, 0 -- 0
F, T -- T   or    0, 1 -- 1
T, F -- T           1, 0 -- 1
T, T -- F           1, 1 -- 1

symbol: ><

Whitening: The technique of XORing key material before the first round and after the last round, was used by Ralph Merkle in Khufu/Khafre, and independently invented by Ron Rivest for DES-X [KR96a].

S-boxes  -- An S-box is a table-driven non-linear substitution operation used in most block ciphers. S-boxes vary in both input size and output size, and can be created either randomly or algorithmically. S-boxes were first used in Lucifer, then DES, and afterwards in most encryption algorithms.


(from "Wiley - Bruce Schneier - The Twofish Encryption Algorithm - A 128--Bit Block Cipher")