Block Cipher modes of Operation
Mode of Operations in Block Cipher
Encryption algorithms are divided into two
categories based on the input type, as a block
cipher and stream cipher.
Block cipher is an encryption algorithm that
takes a fixed size of input say b bits and
produces a cipher text of b bits again. If the
input is larger than b bits it can be divided
further.
For different applications and uses, there are
several modes of operations for a block cipher.
      Electronic code book(ECB)
• Electronic code book is the easiest block
  cipher mode of functioning. It is easier
  because of direct encryption of each block of
  input plaintext and output is in form of blocks
  of encrypted cipher text.
• Generally, if a message is larger than b bits in
  size, it can be broken down into a bunch of
  blocks and the procedure is repeated.
                      ECB
Advantages of using ECB –
Parallel encryption of blocks of bits is possible,
  thus it is a faster way of encryption.
Simple way of the block cipher.
Disadvantages of using ECB –
• Prone to cryptanalysis since there is a direct
  relationship between plaintext and
  ciphertext.
     Cipher Block Chaining(CBC)
• In CBC, the previous cipher block is given as
  input to the next encryption algorithm after
  XOR with the original plaintext block.
• A cipher block is produced by encrypting an
  XOR output of the previous cipher block and
  present plaintext block.
                      CBC
Advantages of CBC –
• CBC works well for input greater than b bits.
• CBC is a good authentication mechanism.
• Better resistive nature towards cryptanalysis
  than ECB.
Disadvantages of CBC –
• Parallel encryption is not possible since every
  encryption requires a previous cipher.
        Cipher Feedback Mode (CFB)
• CFB mode operates on segments instead of blocks. The segment length
  (called s) is between one bit and the block size (called b) for the
  underlying algorithm (DES or AES), inclusive.
• Each encryption step takes an input block, enciphers it with the key
  provided to generate an output block, takes the most significant s bits of
  the output block, and then exclusive ORs that with the plaintext segment.
  The first input block is the ICV and each subsequent input block is formed
  by concatenating the (b-s) least significant bits of the previous input block
  and the ciphertext (s bits) from the previous step to form a full block. The
  input text can be of any length. The output text will have the same length
  as the input text.
    Cipher Feedback Mode (CFB)
In this mode the cipher is given as feedback to
the next block of encryption with some new
specifications: first, an initial vector IV is used for
first encryption and output bits are divided as a
set of s and b-s bits. The left-hand side s bits are
selected along with plaintext bits to which an
XOR operation is applied. The result is given as
input to a shift register having b-s bits to lhs,s
bits to rhs and the process continues.
        Output Feedback Mode
• The output feedback mode follows nearly the
  same process as the Cipher Feedback(CFB) mode
  except that it sends the encrypted output as
  feedback instead of the actual cipher which is
  XOR output.
• In this output feedback mode, all bits of the block
  are sent instead of sending selected s bits. The
  Output Feedback mode of block cipher holds
  great resistance towards bit transmission errors.
  It also decreases the dependency or relationship
  of the cipher on the plaintext.
OFB
          Counter Mode(CTR)
• The Counter Mode or CTR is a simple counter-
  based block cipher implementation. Every
  time a counter-initiated value is encrypted
  and given as input to XOR with plaintext which
  results in cipher text block. The CTR mode is
  independent of feedback use and thus can be
  implemented in parallel.