Cryptographic technologies are used throughout government and industry to authenticate the source and protect the confidentiality and integrity of information that we communicate and store. Cryptographic technologies include a broad range of protocols, schemes, and infrastructures, but they rely on a relatively small collection of cryptographic algorithms. Cryptographic algorithms are the information transformation engines at the heart of these cryptographic technologies.
Cryptographic algorithms are mathematical functions that transform data, generally using a variable called a key to protect information. The protection of these key variables is essential to the continued security of the protected data. In the case of symmetric cryptographic algorithms, the same key is used by both the originator and the recipient of cryptographically protected information. Symmetric keys must remain secret to maintain confidentiality; anyone with the key can recover the unprotected data. Asymmetric algorithms require the originator to use one key and the recipient to use a different but related key. One of these asymmetric keys (the private key) must be kept secret, but the other key (the public key) can be made public without degrading the security of the cryptographic process. These asymmetric algorithms are commonly called public-key algorithms.
Symmetric algorithms offer efficient processing for confidentiality and integrity, but key management (i.e., establishing and maintaining secrets known only to the communicating parties) poses a challenge. Symmetric algorithms offer weak proofs of origin since either party to an exchange can calculate the transformation. Asymmetric algorithms generally require more processing operations and time than are practical for providing confidentiality protection for more than very small volumes of data. However, these algorithms are practical for cryptographic key establishment and digital signature processes. In the case of public-key cryptography, one of the keys in a pair can be made public, and distribution of private keys is not needed. Asymmetric key algorithms can be used to establish pairwise keys and authenticate an entity and/or data source in many-to-many communications without demanding a secret channel for key distribution. As a result, most cryptographic entity or data source authentication and key establishment functions use public-key cryptography.