Cryptography - SEED Encryption Algorithm



SEED encryption is a symmetric key encryption technique created by the Korean Information Security Agency. It is a block cipher encryption technique which works with 16-byte data blocks and a 128-bit key length.

The SEED encryption algorithm encrypts plain text data into cipher text by combining substitution and permutation techniques. To generate the final cipher text, the process uses a Feistel network structure that goes through several rounds of encryption.

Encryption of SEED

  • SEED encryption uses a key schedule to create round keys, which are used in each round of encryption.
  • The key schedule is created by performing a series of bitwise operations on the original key, like XOR, AND, and left and right shifts.
  • The encryption procedure requires dividing the plain text into 16-byte blocks and executing the encryption algorithm to each block separately.
  • The algorithm encrypts the data using a combination of substitution and permutation algorithms, and then applies numerous rounds of encryption to each block to produce the final cipher text.

Decryption of SEED

  • The decryption procedure reverses the encryption process.
  • The cipher text is divided into 16-byte blocks, and the decryption technique is executed to each block individually, using the identical round keys created during the encryption procedure.

Structure of SEED

SEED's input/output block size and key length are both 128 bits. SEED features a 16-round Feistel structure. A 128-bit input is separated into two 64-bit blocks (L, R). The right 64-bit block is used to input the round function F, which generates a 64-bit subkey Ki based on the key schedule.

A pseudo code for SEED's structure is as follows −

for (i = 1; i <= 16; i++) {
   L = R;
   R = L ^ F(Ki, R);
}

Round Function F

SEED makes use of two 8x8 S-boxes, permutations, rotations, and fundamental modular operations like exclusive OR (XOR) and adds to ensure huge security, speed, and simplicity in implementation.

The round function F divides a 64-bit input block into two 32-bit blocks (R0, R1) and uses four phases −

  • A mixing phase for two 32-bit subkey blocks (Ki0, Ki1).
  • Function G has three layers and allows for the mixing of two 32-bit blocks.

Function F produces the following outputs (R0' and R1') −

R0' = G[G[G[(R0 ^ Ki0) ^ (R1 ^ Ki1)] + (R0 ^ Ki0)] + G[(R0 ^ Ki0) ^ (R1 ^ Ki1)] + G[G[(R0 ^ Ki0) ^ (R1 ^ Ki1)] + (R0 ^ Ki0)]

R1' = G[G[G[(R0 ^ Ki0) ^ (R1 ^ Ki1)] + (R0 ^ Ki0)]. + G[(R0 ^ Ki0) ^ (R1 ^ Ki1)] + G[G[(R0 ^ Ki0) ^ (R1 ^ Ki1)]

Function G

The function G consists of two layers: two 8x8 S-boxes and block permutation with sixteen 8-bit sub-blocks. The function G with four 8-bit inputs (X0, X1, X2, and X3) gives the following outputs −

Z0 equals {S1(X0) & m0} ^ {S2(X1) & m1} ^ {S1(X2) & m2} ^ {S2(X3) & m3}
Z1 equals {S1(X0) & m1} ^ {S2(X1) & m2} ^ {S1(X2) & m3} ^ {S2(X3) & m0}
Z2 equals {S1(X0) & m2} ^ {S2(X1) & m3} ^ {S1(X2) & m0} ^ {S2(X3) & m1}
Z3 equals {S1(X0) & m3} ^ {S2(X1) & m0} ^ {S1(X2) & m1} ^ {S2(X3) & m2}

where m0 = 0xfc; m1 = 0xf3; m2 = 0xcf; and m3 = 0x3f.

To improve G function efficiency, four 'SS-box' are defined as follows −

SS0(X) = {S1(X)& m3} || {S1(X) & m2} || {S1(X) & m1} || {S1(X) & m0}
SS1(X) = {S2(X) & m0} || {S2(X) & m3} || {S2(X) & m2} || {S2(X) & m1}
SS2(X) = {S1(X) & m1} || {S1(X) & m0} || {S1(X) & m3} || {S1(X) & m2}
SS3(X) = {S2(X) & m2} || {S2(X) & m1} || {S2(X) & m0} || {S2(X) & m3}

Applications of SEED

  • SEED encryption is used to secure network communication, which includes VPNs, SSL/TLS, and IPsec.
  • SEED encryption secures data saved on discs, USB drives, and other storage media.
  • This encryption technique is used to protect data on mobile devices like smartphones and tablets.
  • Government agencies and military organisations utilise SEED encryption to secure confidential material.

Advantages

Below are some advantages and benifits of using SEED encryption technique −

  • SEED encryption has a 128-bit key length, making it highly resistant to brute force attacks.
  • SEED encryption is a rapid method that can encrypt and decrypt data easily, making it ideal for real-time applications.
  • SEED encryption is widely used and supported by various security products and services.
  • SEED encryption can be utilised in a wide range of applications, like network security, data storage, and mobile devices.
  • SEED encryption has undergone substantial research and is resistant to several known cryptanalysis attacks.

Disadvantages

Besides the advantages of SEED algorithm it also has some disadvantages of using it.

  • SEED encryption needs good key management because the encryption's security is dependent on the key's strength and confidentiality.
  • SEED encryption has a key length of 128 bits, which can be insufficient for some applications that demand stronger encryption.
  • SEED encryption is subject to side-channel attacks such as timing and power analysis.
Advertisements