Cryptographic Algorithms
Cryptographic algorithms can be roughly classified in two categories:
- Encryption algorithms transform an input file into an output
file from which it is (quite) impossible to recover the original without
the appropriate key. Encryption requires either a key (e.g., a predefined
sequence of bytes) or a key pair. In the former case, the same key is used
for both encryption and decryption (symmetric crypto). In the
latter case, the key is split into a public part and a private part (public
key crypto).
- Hash algorithms create a brief representation of the input
message, called a digest. A hashing algorithm must fulfill three
requirements: it must not be reversible; it must produce fixed-length
output sequences (regardless of the input data length); and it must not
generate collisions (i.e., two different messages must always yield
different digests).
Symmetric cryptography algorithms are subdivided further as flow
ciphers, encrypting one byte at a time, and block ciphers,
encrypting blocks of input data at a time. Block ciphers operate
either in ECB (electronic codebook) mode or in CBC (Cipher
block chaining) mode.
Public key cryptography (PKC) algorithms use a pair of keys to perform
data encoding and decoding. When one of them is used for encryption, the
other one must be used for decryption. For a brief description of PKC
mechanisms see the Resources. When used in conjunction with hash algorithms, PKC
is an essential component of modern security systems. In particular,
it allows to create digital signatures, a digest computed
over a document encrypted with the originator's private key, and
certificates, a public key signed by a trusted party called a
certification authority.
Cryptography strength is given both by the algorithm and by the key
length. Symmetric keys are usually shorter (around 128 bits), whereas
PKC key pairs require a greater length (usually 1024 to 2048 bits)
to provide the same level of security.
The following is a list of the most commonly used crypto algorithms.
Asymmetric Key Algorithms
- RSA: Rivest-Shamir-Adleman, standard PKCS#1 by RSA Data Security, Inc.
- DSA: Digital Signing Algorithm
Symmetric Key Algorithms
- Flow ciphers:
- RC4: fixed length keys (128 bits max)
- Block ciphers:
- DES: Data Encryption Standard, 56 bits key (broken!)
- 3DES: Triple DES, 3*56 bits key
- IDEA: International Data Encryption Algorithm, 128 bits key
RC2
Digests
- SHA-1: Secure Hash Algorithm, produces 160 bits strings
- MD5: Message Digest 5, RFC 1321, produces 128 bits strings
Digital Certificates
- X.509: ITU-T rec., describes in ASN.1 syntax a digital certificate
- PKCS#6: extended certificate
- PKCS#12: defines a portable format for transport and storage of private
keys, certificates, and so on.