Conventional Encryption Algorithms
From Computing and Software Wiki
(90 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
- | '''Conventional Encryption''' | + | '''Conventional Encryption''' involves transforming plaintext messages into ciphertext messages that are to be decrypted only by the intended receiver. Both sender and receiver agree upon a secrete key to be used in encrypting and decrypting. Usually the secrete key is transmitted via public key encryption methods. |
- | + | ||
- | + | [[Image:FlowDiagram.jpg|thumb|350px|centre|Figure 1: Flow Diagram]] | |
+ | In conventional encryption, it is assumed that it is mathematically impossible to derive the plaintext from the ciphertext without the key.<sup>[R1]</sup> Therefore, it is essential that the key remains secret. | ||
+ | |||
+ | These encryption algorithms are used in practice due to their efficiency in encrypting/decrypting but these algorithms have vulnerabilities. One aspect of these vulnerabilities is the total number of keys available to choose from. Larger key domains reduce possibility of brute force attacks. The key length is another aspect of these vulnerabilities since they will produce periodic patterns in the ciphertext. Longer keys often reduce periodicity. The goal of conventional encryption algorithms is to produce truly randomized ciphertexts, such that the use of frequency analysis on individual ciphertext symbols or ciphertext blocks is useless. | ||
+ | |||
+ | __TOC__ | ||
== Classification of Ciphers == | == Classification of Ciphers == | ||
- | === Monoalphabetic | + | [[Image:CipherClassification.jpg|thumb|right|200px|Figure 2: Types of Ciphers]] |
- | === Polyalphabetic | + | There are several techniques in which encryption algorithms can produce ciphertext. The simplest forms of encryption are via substitution, where plaintext symbols are replaced and via transposition, where plaintext symbols are rearranged. Other approaches such as stream and block translation involve converting plaintext to ciphertext either one symbol at a time or several symbols at a time respectively. In addition, steganographic techniques can be used, where symbols are introduced in the ciphertext to hide the plaintext meaning. A particular encryption/decryption implementation could incorporate multiple techniques to increase security. |
- | === Transposition | + | |
- | === Synchronous Stream | + | === Monoalphabetic === |
- | === Asynchronous Stream | + | This is a substitution technique that uses a single alphabet to replace symbols of plaintext for symbols of ciphertext as dictated by the key. The key often represents the number of symbols to shift the plaintext from a circular alphabet. These techniques are relatively easy to break due to the fact that symbol frequencies remain invariant.<sup>[R5]</sup> |
+ | |||
+ | === Polyalphabetic === | ||
+ | This is a substitution technique that uses multiple alphabets to replace symbols of plaintext for symbols of ciphertext as dictated by the key. The key often represents a keyword where each letter defines the alphabet being used to encrypt each symbol of the plaintext. The keyword is repeated throughout the length of the message. These techniques suppress individual symbol frequency making these ciphers harder to break. However, the keyword length determines the periodicity in which alphabets are used. This periodicity is a major vulnerability of these types of ciphers. | ||
+ | |||
+ | === Polygraphic === | ||
+ | This is a substitution technique that replaces a group of n plaintext symbols by a group of ''n'' ciphertext symbols.<sup>[R2]</sup> In doing so, the individual frequency of symbols is hidden. In generality, this technique is similar to that of monoalphabetic ciphers with only using larger alphabets. | ||
+ | |||
+ | === Route Transposition === | ||
+ | This is a transposition technique where the plaintext is first written out in an ''mxn'' grid region. The key often represents a path on how to read from the grid, such as clockwise outward spiral, vertical zigzag, triangulation, etc.<sup>[R3]</sup> The ciphertext then becomes the sequence of symbols as read by the path. These techniques provide enormous amounts of available keys in which to use. However, some choices of keys are poor ones since they may leave sections of the ciphertext in their original or reversed plaintext order giving hints as to which key where used. | ||
+ | |||
+ | === Columnar Transposition === | ||
+ | This is a transposition technique where the plaintext is first written out in ''n''-length rows. The key often represents a keyword of length n that defines the plaintext ordering of columns. The ordering could be done by sorting the keyword letters in alphabetical order or in any predefined order. | ||
+ | |||
+ | === Synchronous Stream === | ||
+ | This is a stream translation technique that combines plaintext with a key stream usually in the form of an XOR operation to form ciphertext one symbol at a time.<sup>[R4]</sup> These techniques require that the encoder and decoder be synchronized in the information they are processing. If information get introduced or lost during transition, decryption will be erroneous. If information gets corrupted only the particular symbol remains corrupted. | ||
+ | |||
+ | === Asynchronous Stream === | ||
+ | This is a stream translation technique that combines plaintext with a key stream that is generated from some fixed number of ciphertext symbols to produce the next ciphertext symbol. | ||
+ | |||
+ | === Iterated Block === | ||
+ | This is a block translation technique that iteratively converts an ''n''-sized block of plaintext into ciphertext at the same time. | ||
+ | |||
+ | === Fractioned Block === | ||
+ | This is a block translation technique that breaks up single symbols into parts and then combines the pieces of multiple plaintext letters in order to get the ciphertext. | ||
+ | |||
+ | === Steganographic === | ||
+ | This is a technique that involves inserting random symbols at random locations of a plaintext message with the goal of hiding the message. | ||
== Popular Algorithms == | == Popular Algorithms == | ||
- | = | + | {| align="center" border="1" cellpadding="4" cellspacing="0" style="background:white; text-align:center; width:40%" |
- | [1] [http://www. | + | |+ ''Conventional Encryption'' |
+ | |- style="background:lightgray" | ||
+ | ! style="width:20%" | Algorithm | ||
+ | ! style="width:20%" | Type | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Caesar_cipher Caesar] || Monoalphabetic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/ROT13 ROT13] || Monoalphabetic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Four-square_cipher Four Square] || Monoalphabetic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Running_key_cipher Running Key] || Polyalphabetic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher Vigenère] || Polyalphabetic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/One_time_pad One Time Pad] || Polyalphabetic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Playfair_cipher Playfair] || Polygraphic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Trifid_cipher Trifid] || Polygraphic | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Rail_Fence_Cipher Rail Fence] || Route Transposition | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/A5/1 A5/1] || Synchronous Stream | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Rabbit_%28cipher%29 Rabbit] || Asynchronous Stream | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Autokey_cipher Autokey] || Asynchronous Stream | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES] || Iterated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Blowfish_%28cipher%29 Blowfish] || Iterated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Data_Encryption_Standard DES] || Iterated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/IDEA_cipher IDEA] || Iterated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/SMS4 SMS4] || Iterated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/ADFGVX_cipher ADFGVX] || Fractionated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Straddling_checkerboard Straddling Checkboard] || Fractionated Block | ||
+ | |- | ||
+ | | [http://en.wikipedia.org/wiki/Bacon%27s_cipher Bacon] || Steganographic | ||
+ | |} | ||
+ | |||
+ | == References == | ||
+ | [R1] McMaster University - CAS. "Overview of Cryptography". Software Engineering 4C03, Lecture 07. 2008 | ||
+ | |||
+ | [R2] Irwin, Paul L. "Elementary Cryptanalysis - A Mathematical Approach". Copyright Yale University. 1966 | ||
+ | |||
+ | [R3] Foster, Caxton C. "Cryptanalysis For Microcomputers". University of Massachusetts. 1982 | ||
+ | |||
+ | [R4] Wikipedia. "Stream Cipher", Wikipedia, 2008-02-02. Retrieved on April 9/2008. http://en.wikipedia.org/wiki/Stream_cipher | ||
+ | |||
+ | [R5] Beker H., Piper F. "Cypher Systems". Northwood Publications. 1982 | ||
+ | |||
+ | == See Also == | ||
+ | [[Public Key Encryption Algorithms]] | ||
+ | |||
+ | [[Digital Signatures]] | ||
+ | |||
+ | == External Links == | ||
+ | [http://www.ling.ohio-state.edu/~cbrew/2008/winter/484/monoalphabetic.pdf Monoalphabetic Ciphers] | ||
+ | |||
+ | [http://www.quadibloc.com/crypto/pp010303.htm Polyalphabetic Substitution] | ||
+ | |||
+ | [http://www.quadibloc.com/crypto/pp010302.htm Polygraphic Ciphers & Fractionation] | ||
+ | |||
+ | [http://www.mathsyear2000.org/explorer/codebreaking/transposition-ciphers.php Codebreaking] | ||
- | |||
- | [[User:Angiusei| | + | --[[User:Angiusei|Angiusei]] 17:03, 10 July 2008 (EDT) |
Current revision as of 21:03, 10 July 2008
Conventional Encryption involves transforming plaintext messages into ciphertext messages that are to be decrypted only by the intended receiver. Both sender and receiver agree upon a secrete key to be used in encrypting and decrypting. Usually the secrete key is transmitted via public key encryption methods.
In conventional encryption, it is assumed that it is mathematically impossible to derive the plaintext from the ciphertext without the key.[R1] Therefore, it is essential that the key remains secret.
These encryption algorithms are used in practice due to their efficiency in encrypting/decrypting but these algorithms have vulnerabilities. One aspect of these vulnerabilities is the total number of keys available to choose from. Larger key domains reduce possibility of brute force attacks. The key length is another aspect of these vulnerabilities since they will produce periodic patterns in the ciphertext. Longer keys often reduce periodicity. The goal of conventional encryption algorithms is to produce truly randomized ciphertexts, such that the use of frequency analysis on individual ciphertext symbols or ciphertext blocks is useless.
Contents |
Classification of Ciphers
There are several techniques in which encryption algorithms can produce ciphertext. The simplest forms of encryption are via substitution, where plaintext symbols are replaced and via transposition, where plaintext symbols are rearranged. Other approaches such as stream and block translation involve converting plaintext to ciphertext either one symbol at a time or several symbols at a time respectively. In addition, steganographic techniques can be used, where symbols are introduced in the ciphertext to hide the plaintext meaning. A particular encryption/decryption implementation could incorporate multiple techniques to increase security.
Monoalphabetic
This is a substitution technique that uses a single alphabet to replace symbols of plaintext for symbols of ciphertext as dictated by the key. The key often represents the number of symbols to shift the plaintext from a circular alphabet. These techniques are relatively easy to break due to the fact that symbol frequencies remain invariant.[R5]
Polyalphabetic
This is a substitution technique that uses multiple alphabets to replace symbols of plaintext for symbols of ciphertext as dictated by the key. The key often represents a keyword where each letter defines the alphabet being used to encrypt each symbol of the plaintext. The keyword is repeated throughout the length of the message. These techniques suppress individual symbol frequency making these ciphers harder to break. However, the keyword length determines the periodicity in which alphabets are used. This periodicity is a major vulnerability of these types of ciphers.
Polygraphic
This is a substitution technique that replaces a group of n plaintext symbols by a group of n ciphertext symbols.[R2] In doing so, the individual frequency of symbols is hidden. In generality, this technique is similar to that of monoalphabetic ciphers with only using larger alphabets.
Route Transposition
This is a transposition technique where the plaintext is first written out in an mxn grid region. The key often represents a path on how to read from the grid, such as clockwise outward spiral, vertical zigzag, triangulation, etc.[R3] The ciphertext then becomes the sequence of symbols as read by the path. These techniques provide enormous amounts of available keys in which to use. However, some choices of keys are poor ones since they may leave sections of the ciphertext in their original or reversed plaintext order giving hints as to which key where used.
Columnar Transposition
This is a transposition technique where the plaintext is first written out in n-length rows. The key often represents a keyword of length n that defines the plaintext ordering of columns. The ordering could be done by sorting the keyword letters in alphabetical order or in any predefined order.
Synchronous Stream
This is a stream translation technique that combines plaintext with a key stream usually in the form of an XOR operation to form ciphertext one symbol at a time.[R4] These techniques require that the encoder and decoder be synchronized in the information they are processing. If information get introduced or lost during transition, decryption will be erroneous. If information gets corrupted only the particular symbol remains corrupted.
Asynchronous Stream
This is a stream translation technique that combines plaintext with a key stream that is generated from some fixed number of ciphertext symbols to produce the next ciphertext symbol.
Iterated Block
This is a block translation technique that iteratively converts an n-sized block of plaintext into ciphertext at the same time.
Fractioned Block
This is a block translation technique that breaks up single symbols into parts and then combines the pieces of multiple plaintext letters in order to get the ciphertext.
Steganographic
This is a technique that involves inserting random symbols at random locations of a plaintext message with the goal of hiding the message.
Popular Algorithms
Algorithm | Type |
---|---|
Caesar | Monoalphabetic |
ROT13 | Monoalphabetic |
Four Square | Monoalphabetic |
Running Key | Polyalphabetic |
Vigenère | Polyalphabetic |
One Time Pad | Polyalphabetic |
Playfair | Polygraphic |
Trifid | Polygraphic |
Rail Fence | Route Transposition |
A5/1 | Synchronous Stream |
Rabbit | Asynchronous Stream |
Autokey | Asynchronous Stream |
AES | Iterated Block |
Blowfish | Iterated Block |
DES | Iterated Block |
IDEA | Iterated Block |
SMS4 | Iterated Block |
ADFGVX | Fractionated Block |
Straddling Checkboard | Fractionated Block |
Bacon | Steganographic |
References
[R1] McMaster University - CAS. "Overview of Cryptography". Software Engineering 4C03, Lecture 07. 2008
[R2] Irwin, Paul L. "Elementary Cryptanalysis - A Mathematical Approach". Copyright Yale University. 1966
[R3] Foster, Caxton C. "Cryptanalysis For Microcomputers". University of Massachusetts. 1982
[R4] Wikipedia. "Stream Cipher", Wikipedia, 2008-02-02. Retrieved on April 9/2008. http://en.wikipedia.org/wiki/Stream_cipher
[R5] Beker H., Piper F. "Cypher Systems". Northwood Publications. 1982
See Also
Public Key Encryption Algorithms
External Links
Polygraphic Ciphers & Fractionation
--Angiusei 17:03, 10 July 2008 (EDT)