¿Cómo puedo verificar que efectivamente esa persona lo firmó?

Supongamos que alguien me envía un archivo firmado electrónicamente. ¿Cómo puedo verificar que efectivamente esa persona lo firmó?

Según entiendo, para hacer la verificación, debo usar la clave pública del firmante para reconstruir el hash del documento y compararlo con el hash incluido en la firma digital. Sin embargo, tengo algunas dudas:

  1. ¿Cómo obtengo la clave pública de la persona que firmó?

  2. ¿Esa clave me la debe enviar directamente el firmante?

  3. ¿Debo solicitarla a una autoridad certificadora?

  4. ¿La clave pública viene adjunta al documento firmado?

Me gustaría entender mejor este proceso, ya que no me queda claro cómo asegurarme de que la firma proviene realmente de esa persona y no ha sido manipulada.


 El proceso técnico es exactamente como dices:

  1. Recibes el documento original + la firma (que incluye el hash cifrado con la clave privada del remitente).

  2. Usas la clave pública del remitente para descifrar el hash que viene en la firma. Obtienes "Hash A".

  3. Tú mismo calculas el hash del documento que recibiste. Obtienes "Hash B".

  4. Comparas "Hash A" con "Hash B". Si son idénticos, la firma es válida y el documento no ha sido alterado.

La pregunta crucial es: ¿Cómo obtienes de forma segura la clave pública de esa persona?

Aquí es donde entra el concepto de Certificado Digital y Autoridad de Certificación (AC). Un certificado digital es como un documento de identidad electrónico para una clave pública.


La Pieza que Te Faltaba: El Certificado Digital

Un certificado digital no es solo la clave pública. Es un archivo que contiene:

  1. La clave pública de la persona o empresa.

  2. La identidad del dueño (nombre, email, empresa, etc.).

  3. La fecha de validez (cuándo expira).

  4. La firma digital de una Autoridad de Certificación (AC) de confianza.

¿Viene adjunto el certificado? ¡Sí, casi siempre! Cuando alguien firma un documento electrónicamente, lo común es que adjunte o incruste su certificado digital en el archivo de la firma (por ejemplo, en un PDF firmado, el certificado va dentro del propio PDF).

El Papel de la Autoridad de Certificación (AC)

La AC es una entidad de confianza (como un notario digital) que verifica la identidad de una persona antes de emitirle un certificado. Cuando la AC firma el certificado, está avalando que "esta clave pública pertenece realmente a Juan Pérez".

El Proceso Completo y Corregido

Entonces, el proceso real es más completo:

  1. Recibes: El documento + La firma digital + El certificado digital del remitente.

  2. Verificación de la identidad (Confianza): Tu software (Adobe Reader, un programa de firma, etc.) hace lo siguiente:

    • Extrae el certificado del remitente.

    • Verifica que el certificado sea válido y no esté caducado.

    • Busca la firma de la Autoridad de Certificación (AC) que lo emitió.

    • Comprueba si tu sistema confía en esa AC. Tu ordenador, navegador y programas tienen una lista de ACs en las que confían por defecto (GlobalSign, Izenpe, Actalis, etc.). Si confía en la AC, automáticamente confía en que la clave pública del certificado pertenece a la persona que dice ser.

  3. Verificación técnica de la firma (Integridad y Autenticidad): Una vez establecida la confianza en el certificado:

    • Tu software usa la clave pública que está dentro del certificado verificado para descifrar el hash de la firma ("Hash A").

    • Calcula el hash del documento recibido ("Hash B").

    • Compara ambos hashes.

Respuestas Directas a Tus Preguntas

  • ¿Cómo sé yo la clave pública de esa persona?
    La obtienes de su certificado digital, que suele venir adjunto con el documento firmado.

  • ¿El me la tendría que mandar? ¿Se la pido a la autoridad certificadora?
    Normalmente no hace falta. Él te la manda incrustada en el documento firmado. Tú no contactas con la AC directamente; tu software lo hace automáticamente para verificar la validez del certificado.

  • ¿Viene adjunta en el documento firmado?
    Sí, esa es la práctica más común. Es la forma más eficiente.

Resumen con una Analogía: El DNI y el Notario

  • Clave pública: Sería como tu número de DNI.

  • Certificado digital: Es tu DNI físico. No es solo el número, sino un documento que incluye tu nombre, foto, número y la firma y sello del organismo oficial que lo emitió.

  • Autoridad de Certificación (AC): Es la Dirección General de la Policía (o el organismo emisor) que garantiza que el DNI es auténtico y que tú eres quien dice ser.

Cuando muestras tu DNI para demostrar tu identidad, la otra persona confía en ti porque confía en el organismo que emitió el DNI. No necesitan llamar a la Policía para verificarlo cada vez (a menos que haya dudas de falsificación).

De la misma manera, tu software confía en el certificado porque confía en la AC que lo firmó.

En conclusión: Tu trabajo es asegurarte de usar un software que gestione firmas electrónicas (como Adobe Reader para PDFs, o herramientas específicas). El software se encargará de todo el proceso: extraer el certificado, verificar su validez con las ACs de confianza y luego realizar la comparación técnica de los hashes. Tú solo verás un mensaje de "Firma válida" o "Firma inválida".

Tu clave pública es solo una parte (una pieza crítica) de tu certificado digital (.cer). Pensémoslo así:

  • La clave pública es como tu número de DNI. Es un dato único que te identifica.

  • El certificado (.cer) es como tu DNI físico completo. No solo contiene tu número de DNI (la clave pública), sino también tu nombre, fecha de nacimiento, fecha de expedición y caducidad, y lo más importante: la firma y el sello de la autoridad que lo emitió (la Autoridad de Certificación).


Desglose de lo que contiene un archivo .cer (certificado digital)

Un archivo .cer (o .pem.crt) es un contenedor que incluye esta información:

  1. Información del titular: Tu nombre, email, organización, etc.

  2. La clave pública: Esta es la parte que otros usan para verificar tus firmas o cifrar información para ti.

  3. Información de validez: Fecha de emisión y fecha de caducidad.

  4. Información del emisor: ¿Qué Autoridad de Certificación (AC) lo emitió?

  5. La firma digital de la Autoridad de Certificación (AC): Esto es lo crucial. La AC firma todo el paquete de información anterior con su propia clave privada. Esta firma es lo que permite a cualquier persona verificar que el certificado es auténtico y que la clave pública que contiene realmente te pertenece a ti.


Comentarios

Entradas más populares de este blog

firma digitales PKI utilizando solo javascript y node,

convertir un certificado .key a formato PEM utilizando solo la Web Crypto API

Pilares de la firma electronica-pki-RSA