I read on wikipedia what is X.509:

In cryptography, X.509 is a standard defining the format of public key certificates. X.509 certificates are used in many Internet protocols, including TLS/SSL, which is the basis for HTTPS[1], the secure protocol for browsing the web. They are also used in offline applications, like electronic signatures.

but as a beginner it looks still unclear to me, do you please have any concretes examples of daily use cases concerning X.509 ?

As I assume it is a standard defining the format of public key certificates, could it still be used concerning Symmetric-key algorithm ?


No, X.509 cannot be used for symmetric cryptography directly. Inside the certificate is a public key of the subject of the certificate. The subject controls the private key.

The X.509 name is a reference to CCITT / ITU-T X.509; X.509 certificates are used as base of PKIX, the Public Key Infrastructure. PKIX is a tree structure where a Certificate Authority can be used to give trust to end entity certificates by signing them using their own private key. That way a chain of trust is created from the root certificate to the leaf certificate. These certificate chains can be validated if the end user received the root certificate or any intermediate certificate in an initial trust store. The verifier receives a leaf certificate which contains an issuer, which can be used to create a chain to a initially trusted certificate. Of course the certificate should also be validated: the entity name (the server name for TLS), the validity period, certificate status (CRL / OCSP) need to be valid for the certificate and the public key inside it to be trusted.

This kind of trust cannot be build using symmetric cryptography. It is obviously impossible to put the secret key in the certificate as that is supposed to be public; it needs to be trusted by the other party after all. As symmetric cryptography lacks a public key, symmetric cryptography cannot be directly used for X.509 certificates.

The most prevalent use of X.509 certificates is probably TLS. TLS may also be used using other authentication methods, but X.509 is most common. With TLS the initial trust store is distributed with your browser. TLS itself does use symmetric cryptography such as AES and / or HMAC. However, in that case X.509 is mainly used for entity authentication, authenticating the server and optionally the client. The

TLS 1.2 and earlier also used the public key within the certificate to encrypt symmetric master key material. This key material can then be used to derive the session keys. These session keys are used to protect the messages of the transport layer, HTTP data in the case of web technology. Generally however, the RSA key is only used to authenticate the Diffie-Hellman key exchange that performs key agreement creating the same master key material on both sides. In that case RSA is not directly involved in the symmetric part of the protocol. For TLS 1.3, RSA cannot be used anymore to directly establish keys by encrypting them and sending them over.

Generally X.509 certificates and their private keys can be used for any purpose that requires either authentication, non-repudiation (i.e. document signing) and encryption / decryption. The private key is used by the signer for the first two purposes and by the receiver for the latter.

Protocols that use X.509 besides TLS are: Cryptography Message Syntax (both document signing and encryption), XML-DigSig and XML-Enc including in Web-security, PDF signing, application code signing, Windows authentication etc. etc. There are use cases for sectors such government identification / authentication, driver licenses, banking...

Obviously autentication, non-rep and encryption / decryption is pretty broad so countless public or proprietary protocols can benefit from asymmetric crypto and therefore X.509 based PKI.

X.509 may be trickier to use if there is no networking is possible, as the checks for certificate status commonly rely on networking to be present. Similarly, a trusted time source is often needed as well, although with networking NTP is commonly possible. Obviously parties also need to trust one or more Certificate Authorities.

Finally, many protocols and schemes also require some kind of random number generator to be present. Finally, especially for embedded devices and (smart) cards, the processing requirements for generating keys, signing or decryption may be hard to fulfill or hard to secure.

As an extreme hack, you could use the same certificate / private key or two certificates for the same private key for multiple parties, turning the private key into a secret key of sorts. As a public key must be present in the X.509 certificate this is easier than adopting the PKI for symmetric cryptography.

However, to do that a good understanding of the cryptography used is absolutely required, as an adversary can for instance perform encryption with the public key, which is not possible when using symmetric cryptography.

  • $\begingroup$ X.509 is a standard of ITU-T, previously named CCITT, which is not related to ANSI. Also while PKIX is mostly based on X.509, X.509 can be and is used for other things, so I think it is misleading to call it 'part' of PKIX; I would say 'used in' or 'used by' :-) $\endgroup$ – dave_thompson_085 Apr 3 '19 at 1:42
  • $\begingroup$ The X always puts me on the wrong track; adjusted. $\endgroup$ – Maarten Bodewes Apr 3 '19 at 7:28

X.509 is just a standard to verify that a public key belongs to the user, computer or service identity contained within the certificate.

It has concretly nothing to do with symmetric-key algorithms, it just carries the information about the identity to which a certificate is issued and the identity that issued it.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.