Professional Documents
Culture Documents
Introducción a la Criptografía
Seguridad en Java
Introducción
Criptografía
Etimología
Criptografía (Cryptography), proviene del griego
kryptos, "ocultar", y grafos, "escribir", literalmente
"escritura oculta“
Seguridad en Java
Introducción
Criptografía
Diccionario de la Real Academia Española
Arte de escribir con clave secreta o de un modo enigmático
Wikipedia
Es una disciplina, rama de la teoría de la información, que estudia los
aspectos matemáticos de la información y su transmisión.
Seguridad en Java
Introducción
Cifrado
Cifrado o Encriptación* (Encryption)
Diccionario de la Real Academia Española
Escrito oscura y misteriosamente.
Seguridad en Java
Introducción
Autenticación
Ejemplos
Cuando se introduce en el navegador web www.urjc.es se
espera conectar a la página web oficial de la Universidad
Rey Juan Carlos
Un documento descargado de la página www.urjc.es se
espera que corresponda a un documento que la
Universidad Rey Juan Carlos mantiene en su servidor y no
se ha modificado en la transmisión
Una aplicación Java descargada de www.sun.com se tiene
que autenticar que corresponde a Sun Microsystems y no
ha sido alterada en la comunicación, ya que podrían
haberla alterado para introducir virus o software malicioso
Seguridad en Java
Introducción
Cifrado y Autenticación
Sólo Cifrado
Si ciframos cierta información, sólo el conocedor de la clave podrá
acceder a dicha información
Sólo Autenticación
La autenticación nos asegura que la información ha sido creada o
proviene de quien parece y nos asegura que no ha sido modificada en
la comunicación
La información podrá leerse por cualquiera, aunque no podrá
modificarse
Cifrado + Autenticación
La autenticación puede usarse junto con el cifrado, de forma que
consigamos la confidencialidad y estemos seguros del origen y la
integridad de la información
Seguridad en Java
Cifrado o Encriptación
El cifrado o encriptación es el proceso de
convertir un texto plano (plain text) en un
galimatías inteligible denominado texto
cifrado (ciphertext) o criptograma
El descrifrado o desencriptación
(decryption) es lo contrario, el proceso que
convierte un texto cifrado (ciphertext) en
texto plano (plaintext)
Seguridad en Java
Cifrado o Encriptación
Algoritmo de Cifrado
Está formado por un par de algoritmos concretos que realizan el
cifrado y descrifado (encriptación y desencriptación)
En inglés se le conoce como cipher o cypher
Está compuesto por una serie de pasos bien definidos que se
pueden seguir como un procedimiento
La operación detallada de un algoritmo de cifrado es controlada
por el algoritmo y, en cada caso concreto, por una clave (key)
Clave
Una clave (key) es una cadena de números larga que debe
tener determinadas propiedades matemáticas en función del
algoritmo concreto para el que se vaya a utilizar
Seguridad en Java
Cifrado o Encriptación
Tipos de Algoritmos de cifrado
Algoritmos de clave simétrica
Usan la misma clave para cifrar y para descifrar
Clave se la denomina clave secreta
Algoritmos de clave asimétrica
También llamados Algoritmos de clave pública y clave
privada
Se utiliza una clave para cifrar (privada) y otra para
descifrar (pública)
Ejemplos de algoritmos de cifrado
AES, DES, triple-DES, RSA, Blowfish
Seguridad en Java
Claves Criptográficas
Clave secreta (Cifrado simétrico)
En una comunicación, ambas partes deben usar la misma
clave
Deben acordar y mantener la clave en secreto
Si alguien descubriese la clave, la confidencialidad estaría
comprometida
Si queremos establecer una comunicación segura a través
de una red, no podemos enviar la clave al otro extremo de
la comunicación, ya que alguien la podría interceptar
Tenemos que aplicar procedimientos de intercambio
seguro de claves
Seguridad en Java
Claves Criptográficas
Clave pública, clave privada (Cifrado asimétrico)
Un participante en la comunicación puede usar la
clave pública y el otro puede usar la clave privada
Cada organización o persona tiene una clave pública
y una clave privada
La clave pública se debe hacer pública (mail, web, CD)
La clave privada debe mantenerse en secreto por su dueño
Si se quiere enviar información a una persona, hay
que cifrar la información con la clave pública de esa
persona y sólo ella podrá descifrarla con su clave
privada
Seguridad en Java
Claves Criptográficas
Clave pública, clave privada (Cifrado
asimétrico)
La información que se cifre con la clave privada
sólo podrá ser descifrada con la clave pública
Si somos capaces de descifrar cierta información
con la clave pública de una organización
estaremos seguros que de la información
proviene realmente de la propia organización
Seguridad en Java
Autenticación
Seguridad en Java
Autenticación
Firma Digital
Firma Digital (Digital Signature)
La firma digital, como la firma real, permite la
autenticación del autor o emisor de un mensaje o
fichero
Además, permite autenticación de datos, es decir,
permite asegurar que el mensaje firmado no ha
sido alterado
Seguridad en Java
Firma Digital
http://es.wikipedia.org/wiki/Imagen:Firma_digital.jpg
Infraestructura de Clave Pública
Infraestructura de clave pública
En inglés, PKI, Public Key Infrastructure
Combinación de hardware y software, políticas y
procedimientos de seguridad que permiten la
ejecución con garantías de operaciones
criptográficas como el cifrado, la firma digital o el
no repudio de transacciones electrónicas
Se refiere al enfoque ingenieril y de
“implementación” de la teoría de criptografía
Infraestructura de Clave Pública
Certificados
Un certificado es un documento que te asegura que la
clave pública de ese documento corresponde a la persona
que se indica
Conceptualmente, un certificado podría ser
Seguridad en Java
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
¿Cómo sabemos que el certificado de la Autoridad
Certificadora es el correcto?
Este problema se solventa incluyendo un conjunto de
certificados de las CA más conocidas en
Navegadores web
Plataforma Java
Aplicaciones de seguridad (p.e. OpenSSL)
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Certificados de las CAs
Ejemplo Firefox
Editar > Preferencias > Avanzado > Cifrado > Ver certificados
Seguridad en Java
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Autenticación de la CA
Ejemplo Java
Panel de Control > Java > Seguridad > Certificados…
Seguridad en Java
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Ejemplo:
Verificación de la clave pública
de la web de Caja Madrid
(https://oi.cajamadrid.es/)
Elaborar un algoritmo de
encriptación…
Seguridad en Java
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Tipos de CA
Organizaciones que actúan como CA para los
miembros de la organización
Empresas de reconocido prestigio que actúan
como CA para cualquier cliente (coste
económico)
Entidades públicas que actúan como CA para los
ciudadanos (sin coste económico)
Redes de confianza que actúan como CA (Al
estilo de PGP)
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Organizaciones que actúan como CA para los
miembros de la organización
Hay organizaciones que disponen de certificados y actúan
como autoridades certificadoras para los certificados
emitidos en esa organización
Universidad de Oviedo
http://directo.uniovi.es/documentacion/autoridad_certificadora.asp
UNED
http://www.uned.es/csi/reduned/ca/
Banesto
http://ca.banesto.es/
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Organizaciones que actúan como CA para los miembros de la
organización
Necesitan instalarse en los navegadores como CA (ejemplo
Firefox)
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Empresas de reconocido prestigio que
actúan como CA para cualquier cliente (coste
económico)
Los navegadores ya incluyen sus certificados
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Entidades públicas que actúan como CA
para los ciudadanos (sin coste económico)
En España existe el proyecto CERES de la
Fábrica Nacional de Moneda y Timbre
http://www.cert.fnmt.es/
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Redes de confianza que actúan como CA (Al
estilo de PGP)
Por ejemplo Thawte dispone de certificados
basados en redes de confianza para email
Comercializa otros tipos de certificados (SSL)
http://www.thawte.com/es/
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
Infraestructura de Clave Pública
Certificados Autofirmados
Certificados autofirmados (self-signed)
Cuando se requiere que la información vaya firmada pero
no se dispone de un certificado de una CA, se pueden
generar un par de claves (pública y privada) y un
certificado autofirmado
El envío de un certificado autofirmado por un usuario no
proporciona ninguna seguridad, porque un atacante podría
alterar la información, crear un nuevo par de claves y
autofirmar sus certificados
Se suele usar para hacer pruebas o test cuando es
necesario un certificado y no se dispone de uno firmado
por una CA
Seguridad en Java
Infraestructura de Clave Pública
Certificados Autofirmados
Certificados autofirmados
Ejemplo, algunas aplicaciones Java Web Start se firman y envían el
certificado autofirmado
http://www.mucommander.com/webstart/mucommander.jnlp
Infraestructura de Clave Pública
Certificados Autofirmados
Certificados autofirmados
Ejemplo, al visitar una página https se utiliza la clave
pública y su certificado para la autenticación
Internet
Explorer 8
https://www.ladyr.es
Infraestructura de Clave Pública
Certificados Autofirmados
Certificados autofirmados
Firefox 2
Seguridad en Java
Infraestructura de Clave Pública
Certificados Autofirmados
Certificados autofirmados
Firefox 3
Seguridad en Java
Infraestructura de Clave Pública
Certificados Autofirmados
Certificados autofirmados
Firefox 2
Seguridad en Java