Symmetric-key algorithms[a] arealgorithms forcryptography that use the samecryptographic keys for both the encryption ofplaintext and the decryption ofciphertext. The keys may be identical, or there may be a simple transformation to go between the two keys.[1] The keys, in practice, represent ashared secret between two or more parties that can be used to maintain a private information link.[2] The requirement that both parties have access to the secret key is one of the main drawbacks ofsymmetric-key encryption, in comparison topublic-key encryption (also known as asymmetric-key encryption).[3][4] However, symmetric-key encryption algorithms are usually better for bulk encryption. With exception of theone-time pad they have a smaller key size, which means less storage space and faster transmission. Due to this, asymmetric-key encryption is often used to exchange the secret key for symmetric-key encryption.[5][6][7]
Symmetric-key encryption can use eitherstream ciphers orblock ciphers.[8]
Stream ciphers encrypt the digits (typicallybytes), or letters (in substitution ciphers) of a message one at a time. An example isChaCha20.Substitution ciphers are well-known ciphers, but can be easily decrypted using afrequency table.[9]
Block ciphers take a number of bits and encrypt them in a single unit, padding the plaintext to achieve a multiple of the block size. TheAdvanced Encryption Standard (AES) algorithm, approved byNIST in December 2001, uses 128-bit blocks.
Examples of popular symmetric-key algorithms includeTwofish,Serpent,AES (Rijndael),Camellia,Salsa20,ChaCha20,Blowfish,CAST5,Kuznyechik,RC4,DES,3DES,Skipjack,Safer, andIDEA.[10]
Symmetric ciphers are commonly used to achieve othercryptographic primitives than just encryption.[citation needed]
Encrypting a message does not guarantee that it will remain unchanged while encrypted. Hence, often amessage authentication code is added to a ciphertext to ensure that changes to the ciphertext will be noted by the receiver. Message authentication codes can be constructed from anAEAD cipher (e.g.AES-GCM).
However, symmetric ciphers cannot be used fornon-repudiation purposes except by involving additional parties.[11] See theISO/IEC 13888-2 standard.
Another application is to buildhash functions from block ciphers. Seeone-way compression function for descriptions of several such methods.
Many modern block ciphers are based on a construction proposed byHorst Feistel. Feistel's construction makes it possible to build invertible functions from other functions that are themselves not invertible.[citation needed]
Symmetric ciphers have historically been susceptible toknown-plaintext attacks,chosen-plaintext attacks,differential cryptanalysis andlinear cryptanalysis. Careful construction of the functions for eachround can greatly reduce the chances of a successful attack.[citation needed] It is also possible to increase the key length or the rounds in the encryption process to better protect against attack. This, however, tends to increase the processing power and decrease the speed at which the process runs due to the amount of operations the system needs to do.[12]
Most modern symmetric-key algorithms appear to be resistant to the threat ofpost-quantum cryptography.[13]Quantum computers would exponentially increase the speed at which these ciphers can be decoded; notably,Grover's algorithm would take the square-root of the time traditionally required for abrute-force attack, although these vulnerabilities can be compensated for by doubling key length.[14] For example, a 128 bit AES cipher would not be secure against such an attack as it would reduce the time required to test all possible iterations from over 10 quintillion years to about six months. By contrast, it would still take a quantum computer the same amount of time to decode a 256 bit AES cipher as it would a conventional computer to decode a 128 bit AES cipher.[15] For this reason, AES-256 is believed to be "quantum resistant".[16][17]
Symmetric-key algorithms require both the sender and the recipient of a message to have the same secret key. All early cryptographic systems required either the sender or the recipient to somehow receive a copy of that secret key over a physically secure channel.
Nearly all modern cryptographic systems still use symmetric-key algorithms internally to encrypt the bulk of the messages, but they eliminate the need for a physically secure channel by usingDiffie–Hellman key exchange or some otherpublic-key protocol to securely come to agreement on a fresh new secret key for each session/conversation (forward secrecy).
When used with asymmetric ciphers for key transfer,pseudorandom key generators are nearly always used to generate the symmetric cipher session keys. However, lack of randomness in those generators or in theirinitialization vectors is disastrous and has led to cryptanalytic breaks in the past. Therefore, it is essential that an implementation use a source of highentropy for its initialization.[18][19][20]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(December 2015) (Learn how and when to remove this message) |
A reciprocal cipher is a cipher where, just as one enters theplaintext into thecryptography system to get theciphertext, one could enter the ciphertext into the same place in the system to get the plaintext. A reciprocal cipher is also sometimes referred asself-reciprocal cipher.[21][22]
Practically all mechanical cipher machines implement a reciprocal cipher, amathematical involution on each typed-in letter.Instead of designing two kinds of machines, one for encrypting and one for decrypting, all the machines can be identical and can be set up (keyed) the same way.[23]
Examples of reciprocal ciphers include:
The majority of all modern ciphers can be classified as either astream cipher, most of which use a reciprocalXOR cipher combiner, or ablock cipher, most of which use aFeistel cipher orLai–Massey scheme with a reciprocal transformation in each round.[citation needed]
{{cite journal}}
:Cite journal requires|journal=
(help)Random number generators (RNGs) are consistently a weak link in the secure use of cryptography.