|
Monday, December 28, 2009 - 4:51 PM
Much of the theoretical work in cryptography concerns cryptographic primitives
— algorithms with basic cryptographic properties — and their
relationship to other cryptographic problems. More complicated
cryptographic tools are then built from these basic primitives. These
primitives provide fundamental properties, which are used to develop
more complex tools called cryptosystems or cryptographic protocols, which guarantee one or more high-level security properties. Note however, that the distinction between cryptographic primitives and cryptosystems, is quite arbitrary; for example, the RSA
algorithm is sometimes considered a cryptosystem, and sometimes a
primitive. Typical examples of cryptographic primitives include pseudorandom functions, one-way functions, etc. Cryptosystems
One or more cryptographic primitives are often used to develop a more complex algorithm, called a cryptographic system, or cryptosystem. Cryptosystems (e.g. El-Gamal encryption)
are designed to provide particular functionality (e.g. public key
encryption) while guaranteeing certain security properties (e.g. CPA security in the random oracle model).
Cryptosystems use the properties of the underlying cryptographic
primitives to support the system's security properties. Of course, as
the distinction between primitives and cryptosystems is somewhat
arbitrary, a sophisticated cryptosystem can be derived from a
combination of several more primitive cryptosystems. In many cases, the
cryptosystem's structure involves back and forth communication among
two or more parties in space (e.g., between the sender of a secure
message and its receiver) or across time (e.g., cryptographically
protected backup data). Such cryptosystems are sometimes called cryptographic protocols.
Some widely known cryptosystems include RSA encryption, Schnorr signature, El-Gamal encryption, PGP, etc. More complex cryptosystems include electronic cash[25] systems, signcryption systems, etc. Some more 'theoretical' cryptosystems include interactive proof systems,[26] (like zero-knowledge proofs,[27]), systems for secret sharing, etc.
Until recently, most security properties of most cryptosystems were
demonstrated using empirical techniques, or using ad hoc reasoning.
Recently, there has been considerable effort to develop formal
techniques for establishing the security of cryptosystems; this has
been generally called provable security.
The general idea of provable security is to give arguments about the
computational difficulty needed to compromise some security aspect of
the cryptosystem (ie, to any adversary).
The study of how best to implement and integrate cryptography in software applications is itself a distinct field, see: cryptographic engineering and security engineering. Louis J. Sheehan, Esquire
|