You are on page 1of 43

Seguridad Informática

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.

 La disciplina que se ocupa de las comunicaciones con seguridad


(confidencialidad de mensajes, integridad de mensajes, autenticación
del emisor, no-repudio de los mensajes o cualquier otro aspecto
relacionado); en presencia de agresores.
Introducción
Criptografía
 Originalmente se centraba únicamente en el estudio de la
ocultación de mensajes (cifrado)
 El arte o ciencia de cifrar y descifrar información utilizando
técnicas matemáticas que hagan posible el intercambio de
mensajes de manera que sólo puedan ser leídos por las
personas a quienes van dirigidos
 Actualmente también se incluye en la criptografía todos los
aspectos relacionados con comunicaciones seguras
(autenticación)
 Asegurar que el remitente es quien dice ser
 Asegurar que la información no se ha modificado en la
comunicación

Seguridad en Java
Introducción
Cifrado
 Cifrado o Encriptación* (Encryption)
 Diccionario de la Real Academia Española
 Escrito oscura y misteriosamente.

 En criptografía, el cifrado es el proceso de transformar


la información para hacerla ilegible si no se tiene
conocimiento especial, ficheros de claves (keys) y/o
contraseñas (passwords)

* Encriptación no es un término aceptado por la RAE, aunque se utiliza


bastante como sinónimo de cifrado
Seguridad en Java
Introducción
Cifrado
 ¿Para qué sirve el cifrado?
 Confidencialidad en la transmisión de información por
un canal que puede ser leído por otros usuarios o
sistemas
 Confidencialidad en el almacenamiento de la
información
 Ejemplos:
 Enviar archivos confidenciales por correo electrónico
 Incluir el número de la tarjeta de crédito en una página web
 Recibir ficheros confidenciales desde un servidor de código
 Enviar fotografías confidenciales mediante mensajería
Seguridad en Java
Introducción
Autenticación
 Autenticación (Authentication)
 Dar seguridad de que alguien o algo es lo que representa o
parece
 Validar o confirmar la autenticidad de algo
 En criptografía existen varias formas de autenticación
 Autenticación del autor o remitente
 Asegurarse de que el autor de una determinada información o el
remitente de una comunicación es quien dice ser
 Autenticación de los datos
 Asegurarse de que la información no ha sido modificada en el
transcurso de la comunicación por alguien distinto a su autor o
emisor original
 También conocido como integridad de la información
Seguridad en Java
Introducción
Autenticación
 ¿Para qué sirve la autenticación?
 Conectarse realmente a la página web de la
entidad que parece ser.
 Conectarse realmente al servidor de código que
corresponde al nombre del host.
 Asegurarse de que la información que le llega al
usuario es la que envió la organización y no ha
sido modificada durante la transmisión.

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

 Haciendo uso de los algoritmos de cifrado


asimétricos podemos conseguir autenticación
de datos y de emisor.

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

 Que un certificado sea válido, no indica que la persona a la


que corresponde sea de confianza
Seguridad en Java
Infraestructura de Clave Pública
Certificados
 Los certificados se utilizan actualmente en todas las
comunicaciones en las que se requiera una comunicación
segura, como mecanismo de cifrado y autenticación
 Tecnologías apoyadas en certificados
 Comunicaciones seguras con sitios web (https)
 Comunicaciones seguras con sockets (SSL)
 Identificación del remitente de correo
 Cifrado y firma de documentos electrónicos (facturae)
 …
 Estándares
 El estándar más usado es el X.509 (http://es.wikipedia.org/wiki/X.509)
Seguridad en Java
Infraestructura de Clave Pública
Autoridad Certificadora (CA)
 ¿Cómo se comprueba la validez de un certificado
con una Autoridad Certificadora?
 El certificado es un documento firmado por la autoridad
certificadora
 La autoridad certificadora es una organización bien
conocida
 Fábrica Nacional de Moneda y Timbre
 VeriSign
 Thawte …
 La CA se encarga de comprobar la identidad real de la
persona que tiene el certificado y lo firma con su clave
privada como prueba de veracidad

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

You might also like