X.500 Standard status
(Implementors' Guide)
X.509 Related activities
How to be involved
More Information
Tutorial section 1
X.500 General
Tutorial section 2
X.509 specific
X.509 at work
X.509 is part of the X.500 Series of Recommendations. However, X.509 is a subject of its own. It also has a life outside the remaining of X.500. It is the basis for many other specifications, such as the Secure Socket Layer (SSL) and the IETF PKIX specifications. X.509 is about message integrity, authentication and authorisation.
The X.509 specification covers the following aspects:
The basic aspects of X.509 considered here are:
Hashing is the transformation of a message into a usually shorter fixed-length string value called a message digest that represents the original string using some kind of hashing algorithm. To be useful, such an algorithm must have the following characteristics:
A message digest may be used to give some level of message integrity. If the message digest is attached a transmitted message together with an identification of the used hashing algorithm, the receiver can create its own message digest and compare it with the one attached. If different, the message has been changed during the transfer and should be discarded.
There are several hashing algorithm defined as exemplified later on this page.
Transmitting a message digest together with a message only gives limited protection. It only protect against modification during transfer, but is does not provide any authentication of the creator of the message. Authentication of the creator of a message may be accomplished by the the use of a so-called asymmetric encryption technique. This technique is described briefly in the following.
There are two distinct types of encryption:

Asymmetric encryption requires the use of two related keys. Such a key-pair consists of a private key and a corresponding public key. A message encrypted using one of these keys can only be decrypted using the other key. Each key is the inverse function of the other; what one does, only the other one can undo. The owner of the key pair shall keep the private key in confidence. Copies of the public key may be distributed to several parties.
A digital signature is like a handwritten signature. Only one specific entity can have created the signature.

The following steps are taken by the sender when creating a digitally signed message:
The following steps are taken by the receiver of a digitally signed message:

A hashing, an encryption or a signature algorithm is identified by an object identifier. Some algorithms, but not all, require some parameters to be applied by the algorithm. These parameters are supplied as part of the algorithm identifier. The fact the the parameters are not always there (OPTIONAL in ASN.1 sense), is indicated by square bracket in figure 3.
AlgorithmIdentifier{ALGORITHM:SupportedAlgorithms} ::= SEQUENCE {
algorithm ALGORITHM.&id ({SupportedAlgorithms}),
parameters ALGORITHM.&Type ({SupportedAlgorithms}{@algorithm}) OPTIONAL }
In the ASN.1 notation, the algorithm identifier is written as as parametrized data type, where the components are fields of the ALGORITHM ASN.1 information object class. This parametrized data type take as argument (also called a parameter) the set of supported algorithms.
There has been some confusion about the above ASN.1 specification. At one time this resulted in the parameters component being mandatory. If an AlgorithmIdentifier instance did not require the parameters component, this field was given the ASN.1 NULL value. This notation is still in use in many documents. It is recommended not to specify NULL for the parameters component, but the leave out the component. However, an implementation evaluating an AlgorithmIdentifier instance should accept a NULL value and consider that as equivalent to the component being absent.
Several hashing algorithm have been defined for use in an X.509 environment. RFC 3279 describes the following hashing algorithm together with their identifying object identifiers:
RFC 4055 list the algorithm identifier for a SHA-2 series of hashing algorithms, while FIPS 180-3 gives the official specifications.
RFC 4491 introduces GOST R 34.11-94 developed by "GUBS of Federal Agency Government Communication and Information" and "All-Russian Scientific and Research Institute of Standardization". The algorithm GOST R 34.11-94 produces a 256-bit hash value of an arbitrary finite bit length input.
There are different public-key (asymmetric) algorithms available. So, presenting an encryption key is not enough for an entity to encrypt or decrypt. The type of encryption algorithm for which the key is constructed must also be known by the user of the key.
RFC 3279 describes the following encryption algorithms together with their identifying object identifiers:
A signature algorithm is a combination of a hashing algorithm and an encryption algorithm identified by a single object identifier.
RFC 3279 describes the following encryption together with their identifying object identifiers: