Steganography
Steganography conceals the existence of a message, whereas methods of cryptography render the message unintelligible to outsiders by various transformations of the text.
Steganography Techniques
Example techniques include:
- Arrangement of words or letters within an apparently innocuous text spells out the real message.
- Invisible ink: substances used for writing that leave no visible trace until heat / chemical is applied to paper
- Pin punctures: small pin punctures on selected letters are ordinarily not visible unless paper is held up in front of a light
- Least significant bits of frames of an image (or sound file) For example, for a picture of resolution 2048x3072, each pixel contains 24 bits of RGB colour information, the least significant bit of each 24-bit pixel can be changed without greatly affecting the quality of the image.
Relative Advantages of Steganography
| Advantages (w.r.t. encryption) | Disadvantages |
|---|---|
| Can be employed by parties who have something to lose if the fact of their secret communication (not necessarily content) is discovered. | Requires a lot of overhead to hide relatively few bits of information. |
| Encryption flags traffic as important / secret and may identify the sender or receiver with something to hide. | Once the system is discovered, it is worthless. |
Use-cases of Steganography
Watermarking
Watermarking is hiding digital information in a carrier signal; usually some kind of marker covertly embedded in a noise-tolerant signal such as audio (e.g. mp3) or image data (e.g. mpeg).
Link to original
Digital Rights Management
Digital Rights Management (DRM) is a class of technologies that are used by hardware manufacturers, publishers, copyright holders, and individuals with the intent to control the use of digital content and devices after sale.
Link to original
Composite (product) ciphers
Ciphers just based on substitutions or transpositions are not secure, however we can combine ciphers: a substitution followed by a transposition makes a new harder cipher.
Product Cipher
Product (composite) ciphers chain substitution-transposition combinations, it is the execution of or more simple ciphers in sequence so that the result (product) is cryptographically stronger than any of the component ciphers.
Link to original
- The idea is that a cipher with -bit key and -bit blocks allows a total of possible transformations rather than .
Abstract
Most common complex ciphers in use before modern ciphers were rotor machines.
Idea of Feistel Cipher
Many symmetric block encryption algorithms in current use are based on a structure called the Feistel block cipher.
Block Cipher
A block cipher is an encryption scheme that breaks up the plaintext message into strings (blocks) of a fixed length and encrypts one block at a time.
- Encryption: takes in input one block of bits of plaintext and key of bits, producing an output of one block of ciphertext of bits.
- Decryption: takes in input one block of bits of ciphertext and a key of bits, producing an output of one block of plaintext of bits.
Link to original
With a block cipher that encrypts -bit plaintext to -bit ciphertext, there are possible different plaintext blocks. This means we have different transformations. For encryption to be reversible, each of the plaintext blocks must produce a unique ciphertext block.
Ideal (most general form of) block cipher

Can be used to define any reversible mapping plaintext-ciphertext. The -bit input produces one of possible input states, which is mapped by the substitution cipher into a unique one of possible output states, each of which is represented by ciphertext bits. The encryption / decryption mappings can be defined by a tabulation.
Problems with block ciphers
For a small block size (n = 4): equivalent to a classical substitution cipher and hence easily attackable.
For a large block size: usually not practical implementation and performance.
- Mapping is the key.
- Block : key bits
- Block : key of bits = ( bits x rows)
- Block : key of bits = ( bits x rows)
Feistel’s suggestion is to use an invertible product cipher, i.e. approximation to ideal block cipher for large , built out of components that are easily realisable.
S-boxes and P-boxes: confusion and diffusion
The Feistel cipher is a practical application of a proposal by Shannon to develop a product cipher that alternates confusion and diffusion functions.
Product ciphers chain combinations of substitutions and transpositions.
- S-Boxes confuse input bits
- P-Boxes diffuse bits across S-box inputs

Feistel Cipher
In a nutshell, the encryption / decryption works as such:
- Partition input block into two halves
- Process through multiple rounds (usually rounds) which
- perform substitution on left data half (based on round function of right half and subkey)
- then have permutation swapping halves

Details of Feistel encryption
The encryption input is a -bit plaintext block and a key .
The plaintext block is divided into halves and which pass through rounds of processing (here we use ) and then combine to produce a ciphertext block.

Feistel encryption round
Each round has the inputs:
- and which are derived from the previous round.
- Subkey derived from overall (subkeys are different from and each other).
A substitution is performed on by applying a round function to and then XORing the output with .
has same general structure for each round but parameterised by round subkey :
Then a permutation is performed by an interchange of the two halves of data. (the final round is followed by an interchange to undo the final round’s interchange in order to simplify decryption later)
Decryption
Decryption is the same as encryption but performed in reverse. The decryption input is the ciphertext, and the subkeys in reverse order ( to ).
The intermediate values of the decryption process are equal to the corresponding value of encryption process with two halves of the value swapped.
Parameters and design features of Feistel cipher
- Block size
Larger means greater security but reduced en/de-cryption speed.
Greater security achieved by greater diffusion.
New AES uses a 128-bit block size.
- Key size Larger increases security but may decrease en/de-cryption speed. Greater security achieved by greater resistance to brute-force attacks and greater confusion. 128-bits is a common size.
- Number of rounds Single round offers inadequate security. Multiple rounds offer increasing security (typically rounds)
- Subkey generation algorithm and Round function Greater complexity means greater resistance to cryptanalysis
One of the strengths of the Feistel cipher is that each round of encryption and decryption has the general shape where the only difference is that: at each encryption round , the key is used, and at each decryption round , the key is used.

Math behind Feistel encryption / decryption
Show that the output of decryption round is equal to -bit swap of input to encryption round .
Let us take the ciphertext (equal to the -bit swap of output of round ) and use it as input to the same algorithm.
Let’s assume that and that .
Encryption side:
Decryption side:
Hence as required.
Correspondence holds all the way through the iterations
Inputs to iteration of encryption can be recast as a function of the outputs:
After rearranging terms:
Finally, output of last round of decryption is . A -bit swap recovers the original plaintext.
In general, for , we can prove that the output of decryption round (i.e. ) is equal to the -bit swap of the input to encryption round (i.e. ).
That is, we can prove the equation for .
We carry out the proof by induction, by assuming that we have already proved that the output of the decryption round is equal to the -bit swap of the input to the encryption round , by assuming and then showing that the output of decryption round is equal to the -bit swap of the input to encryption round :
Specific example of Feistel cipher
Consider encryption round corresponding to decryption round .
Supposed that -bit blocks (two -bit halves) with a -bit key. At the end of encryption round , the value of the intermediate block is ( and the value of .
Then and . We prove that and :
