PKI abarca una red de algoritmos, mecanismos, software, hardware y roles que colaboran para establecer una infraestructura segura para firmas digitales.
Por ejemplo, los siguientes servicios de seguridad usan PKI:
- Comunicaciones: SSL, IPsec, https
- Email: S/MIME y PGP
- Intecambio de valor: SET
- Otros: DNI electrónico, servicios de voto electrónico, pago electrónico, impuestos,..
Los 3 principios básicos de seguridad CIA:
- Confidentiality: Confidencialidad: Información no accesible por entidades no autorizadas
- Integrity: Integridad: El dato no pueda ser cambiado.
- Availability: Disponibilidad: Asegurar acceso al dato cuando lo necesitamos. Cuando no es posible puede deberse a fallo físico de los servidores, fallo de comunicación o a un ataque DoS (Denial of Service attack).
Partes de un sistema de encriptación (Cryptosystem):
- Generación de llaves
- Encriptación: Convierte el texto del mensaje (Message Plaintext) a Ciphertext
- Desencriptación: Convierte Ciphertext a texto plano.
Para facilitar la explicación, usaremos a Alice y Bob intercambiando mensajes.
Encriptación simétrica (Symmetric encryption)
Alice y Bob comparten previamente una llave secreta (secret key): Una llave secreta (key) es simplemente una cadena de texto con números y letras, necesarios para la encriptación y desencriptación.
Cuando Alice envía un mensaje a Bob, el flujo es el siguiente:
- Alice encripta el mensaje con la llave secreta (que habían intercambiado previamente)
- Alice envía el mensaje a Bob
- Bob desencripta el mensaje de Alice (con la misma llave secreta que habían compartido)
Nadie que observe la comunicación o intercepte el mensaje puede descifrarlo sin la llave secreta.
Hash
Una función hash se aplica sobre un texto, y tiene las siguiente características:
- Longitud fija independientemente de la longitud del texto.
- Un pequeño cambio en el texto, produce un hash totalmente distinto.
- Un mismo texto produce siempre un mismo hash.
- Unidireccional: Conociendo el hash es imposible conocer el texto.
- Muy rápido de calcular al aplicarlo sobre un texto, aunque tenga mucha extensión.
Dado un mensaje, y su hash, podemos ver si el mensaje ha cambiado o no, viendo si preserva el hash.
Digest: Aplicación de función hash a un texto plano del mensaje.
Encriptación asimétrica (Asymmetryc encription)
También se conoce como «Encriptación de clave pública» (public key encryption).
En esta caso, tenemos dos llaves (key pair), y con cada una de ellas podemos encriptar, pero para desencriptar necesitamos la otra llave del par:
- Public Key: La conoce todo el mundo. Cualquiera puede encriptar mensajes con la llave pública, pero solo se podrán desencriptar con la llave privada.
- Private Key: Solo la tiene el que ha generado el par de llaves.
Ejemplo de comunicación:
- Alice encripta el mensaje con la llave publica de Bob
- Alice envía el mensaje a Bob
- Solo Bob puede desencriptar el mensaje con su llave privada.
Nadie que observe la comunicación o intercepte el mensaje puede descifrarlo sin la llave privada de Bob.
Certificados
También conocido como Certificado de Clave Pública (Public Key Certificate) o Certificado de Identidad (Identity Certificate).
Un certificado consta de:
- Public Key: Llave pública
- Identidad asociada a la llave pública (DNI, CIF)
- Periodo de validez del certificado y de la llave pública
- Otros metadatos: Método de encriptación (por ejemplo rsaEncryption), nº serie, versión, información del propietario (email, teléfono,…)
- CA: Certificate Authority: Entidad certificadora emisora del certificado: La validez del sistema se basa en que la clave pública sea la que corresponda. Si un «man in the middle» intercepta los mensajes e interpone su propio par de claves puede leer todos los mensajes. Para evitarlo, se crea una «cadena de confianza» mediante certificados hasta llegar a un certificado raíz que permite verificar que efectivamente la llave pública es de quien dice ser. La CA debe ser aceptada por ambas partes de la comunicación.
Non-repudiation // No repudio
Propiedad de un proceso que permite que una entidad no niegue haber realizado una determinada acción.
Por ejemplo: Contratos, presentación de impuestos, transferencias,.. deben ser procesos que admitan una propiedad de «no repudio» una vez realizadas.
Digital Signature // Firma digital
Mecanismo para facilitar procesos de no repudio.
Una firma es el digest (hash) encriptado con llave privada.
Para ello:
- El documento es firmado con la llave privada del firmante. Para ello se encripta el «digest» (hash) del mensaje, y se adjunta junto con el mensaje completo.
- Se puede identificar al firmante, al usar su llave pública para verificar si el firmante es quien dice ser.
Llamemos mensaje a un texto plano (plaintext) a comunicar entre Alice y Bob:
- Alice encripta un mensaje con la clave pública de Bob -> Obtiene el Ciphertext del mensaje.
- Alice genera un digest (hash del texto plano) del mensaje y lo encripta con su llave privada (es decir, lo firma), incluyendo en el envío: Ciphertext, firma y certificado
- Al recibir el mensaje, Bob puede desencriptar el Ciphertext con su clave privada, obteniendo el texto plano.
- Para saber si es Alice realmente quien envió el mensaje, Bob consulta a la CA si el certificado que viene con el mensaje pertenece a Alice.
- A continuación, desencripta la firma, usando la clave pública de Alice, obteniendo el digest del mensaje.
- A continuación, aplica el algoritmo de hash al texto plano del mensaje, y lo compara con el digest
- Si cuadran, Bob puede confirmar que el mensaje es de Alice y que no ha sido modificado, y Alice no puede negar haberlo enviado al estar firmado con su clave privada.
Aseguramiento CIA:
- Confidencialidad: Alice y Bob solo comparten su clave pública. Solo con la privada desencriptamos.
- Integridad: Mediante la forma digital y comparación de hash aseguramos la integridad del mensaje.
- Disponibilidad: PKI no la asegura, pero evita accesos no deseados, ayudando a la disponibilidad.