Certificats digitals

Un certificat digital és un document electrònic que actua com una mena d'identitat digital per a persones, serveis o dispositius. La seva funció principal és vincular una clau pública amb una identitat concreta de manera fiable, gràcies a la signatura digital d'una Autoritat de Certificació (CA).

Les CAs no signen directament tots els certificats digitals, sinó que utilitzen els certificats intermedis, que serveixen de pont entre els certificats arrel (CA) i els finals.

Aquestes són funcions que permeten els certificats:

  • Autenticació: Verifiquen la identitat de l'entitat amb qui es comunica el sistema. Per exemple, quan accedeixes a un lloc web segur (HTTPS), el certificat del servidor t'assegura que estàs parlant amb el lloc web legítim.
  • Integritat: Gràcies a la signatura digital, qualsevol modificació del certificat un cop emès pot ser detectada.
  • Xifratge: Faciliten l'intercanvi segur de claus per establir connexions xifrades (com en TLS/SSL).
  • No repudiació: Proporcionen una evidència que l'entitat posseïa la clau privada corresponent en el moment de la signatura.

L'especificació més comuna dels certificats és la X.509, que inclou aquests camps:

  • Identificació del subjecte: El nom o l'entitat a la qual es fa referència (p. ex., domini web, nom de persona o organització).
  • Clau pública: La clau que s'utilitza per xifrar dades o verificar signatures. Identificació de l'emissor (CA): Informació sobre l'autoritat de certificació que ha emès el certificat.
  • Període de validesa: La data d'inici i de caducitat del certificat.
  • Número de sèrie: Un identificador únic per al certificat.
  • Algoritme de signatura: L'algoritme utilitzat per generar la signatura digital.

Els certificats X.509 segueixen un estàndard que defineix què han de contenir i com s'organitzen, però per a poder ser emmagatzemats, transmesos o usats en diferents entorns, cal "encapsular-los" en un format concret. Aquí tenim les principals maneres de codificar i empaquetar-los:

  • DER (Distinguished Encoding Rules): és una codificació binària per als certificats X.509. Aquest format és compacte i està dissenyat perquè l'estructura del certificat es pugui interpretar de manera inequívoca per les màquines.

  • PEM (Privacy-Enhanced Mail): és essencialment la codificació DER convertida a text mitjançant Base64. Els certificats en format PEM tenen delimitadors clars, com ara:

-----BEGIN CERTIFICATE----- (dades codificades en Base64) -----END CERTIFICATE-----

Aquest format és molt popular perquè és fàcil d'utilitzar en entorns de text i és compatible amb molts programes.

  • PKCS#7: és un format que permet empaquetar una o diverses certificats (per exemple, tot el camí de certificació) en un sol fitxer. Aquest format és molt utilitzat en entorns on es necessita transmetre tota la cadena de certificació, com en certs sistemes de correu electrònic segur (S/MIME).

  • PKCS#12: aquest format permet empaquetar no només els certificats X.509, sinó també la seva clau privada associada. Els fitxers PKCS#12 (habitualment amb extensions .pfx o .p12) solen estar protegits amb una contrasenya per garantir la seguretat de la clau privada.