Symmetric-key algorithm

From Wikipedia, the free encyclopedia
  (Redirected from Symmetric key)
Jump to: navigation, search

Symmetric-key algorithms[1] are algorithms for cryptography that use the same cryptographic keys for both encryption of plaintext and decryption of ciphertext. The keys may be identical or there may be a simple transformation to go between the two keys. The keys, in practice, represent a shared secret between two or more parties that can be used to maintain a private information link.[2] This requirement that both parties have access to the secret key is one of the main drawbacks of symmetric key encryption, in comparison to public-key encryption.[3]

Types of symmetric-key algorithms[edit]

Symmetric-key encryption can use either stream ciphers or block ciphers.[4]

  • Stream ciphers encrypt the digits (typically bytes) of a message one at a time.
  • Block ciphers take a number of bits and encrypt them as a single unit, padding the plaintext so that it is a multiple of the block size. Blocks of 64 bits have been commonly used. The Advanced Encryption Standard (AES) algorithm approved by NIST in December 2001 uses 128-bit blocks.


Examples of popular symmetric algorithms include Twofish, Serpent, AES (Rijndael), Blowfish, CAST5, RC4, 3DES, Skipjack, Safer+/++ (Bluetooth), and IDEA.[citation needed]

Cryptographic primitives based on symmetric ciphers[edit]

Symmetric ciphers are commonly used to achieve other cryptographic primitives than just encryption.[citation needed]


However, symmetric ciphers cannot be used for non-repudiation purposes except by involving additional parties. See the ISO/IEC 13888-2 standard.[citation needed]

Another application is to build hash functions from block ciphers. See one-way compression function for descriptions of several such methods.[citation needed]

Construction of symmetric ciphers[edit]

Main article: Feistel cipher

Many modern block ciphers are based on a construction proposed by Horst Feistel. Feistel's construction makes it possible to build invertible functions from other functions that are themselves not invertible.[citation needed]

Security of symmetric ciphers[edit]

Symmetric ciphers have historically been susceptible to known-plaintext attacks, chosen plaintext attacks, differential cryptanalysis and linear cryptanalysis. Careful construction of the functions for each round can greatly reduce the chances of a successful attack.[citation needed]

Key generation[edit]



  1. ^ Other terms for symmetric-key encryption are secret-key, single-key, shared-key, one-key, and private-key encryption. Use of the last and first terms can create ambiguity with similar terminology used in public-key cryptography. Symmetric-key cryptography is to be contrasted with asymmetric-key cryptography.
  2. ^ Delfs, Hans & Knebl, Helmut (2007). "Symmetric-key encryption". Introduction to cryptography: principles and applications. Springer. ISBN 9783540492436. 
  3. ^ Mullen, Gary & Mummert, Carl (2007). Finite fields and applications. American Mathematical Society. p. 112. ISBN 9780821844182. 
  4. ^ Pelzl & Paar (2010). Understanding Cryptography. Berlin: Springer-Verlag. p. 30. 
  5. ^ Ian Goldberg and David Wagner. "Randomness and the Netscape Browser". January 1996 Dr. Dobb's Journal. quote: "it is vital that the secret keys be generated from an unpredictable random-number source."
  6. ^ Thomas Ristenpart , Scott Yilek. "When Good Randomness Goes Bad: Virtual Machine Reset Vulnerabilities and Hedging Deployed Cryptography (2010)" CiteSeerX: quote from abstract: "Random number generators (RNGs) are consistently a weak link in the secure use of cryptography."