Is it possible to use X.509 for a symmetric-key algorithm? 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.