Title: Seguridad Informtica
1Seguridad Informática
Introducción a la Criptografía Java SE
Security Micael.Gallego_at_urjc.es
Seguridad en Java
2Índice
- Introducción
- Cifrado o Encriptación
- Claves Criptográficas
- Autenticación
- Certificados
Seguridad en Java
3IntroducciónCriptografía
- Etimología
- Criptografía (Cryptography), proviene del griego
kryptos, "ocultar", y grafos, "escribir",
literalmente "escritura oculta - Definiciones
- Diccionario de la Real Academia Española (RAE)
- Wikipedia
- Wiktionary
Seguridad en Java
4IntroducciónCriptografí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 - Un notable criptógrafo (Ron Rivest) define la
criptografía como la comunicación en presencia
de adversarios, resaltando su aspecto ingenieril - Wiktionary
- 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
5Introducció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
6Introducción Cifrado
- Cifrado o Encriptación (Encryption)
- Diccionario de la Real Academia Española
- Escrito oscura y misteriosamente
- Wikipedia / Wiktionary
- 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
7Introducció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
8Introducció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
9Introducció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
10Introducció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
11IntroducciónCifrado 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
12Índice
- Introducción
- Cifrado o Encriptación
- Claves Criptográficas
- Autenticación
- Certificados
Seguridad en Java
13Cifrado 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
14Cifrado 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
15Cifrado 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
16Índice
- Introducción
- Cifrado o Encriptación
- Claves Criptográficas
- Autenticación
- Certificados
Seguridad en Java
17Claves 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
18Claves 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
19Claves 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
20Claves Criptográficas
- Clave pública, clave privada (Cifrado asimétrico)
- La gestión de las claves públicas también tiene
ciertos problemas, no existe un lugar
centralizado que almacene dichas claves. Pero
existen algunas técnicas para obtener claves
públicas - El cifrado y descifrado con algoritmos
asimétricos es más costoso computacionalmente que
con algoritmos simétricos
Seguridad en Java
21Índice
- Introducción
- Cifrado o Encriptación
- Claves Criptográficas
- Autenticación
- Certificados
Seguridad en Java
22Autenticación
- Haciendo uso de los algoritmos de cifrado
asimétricos podemos conseguir autenticación de
datos y de emisor - Pero el cifrado/descifrado con algoritmos
asimétricos es costoso computacionalmente - Para reducir el coste computacional en vez de
cifrar el mensaje o fichero completo, se cifra un
pequeño resumen del mismo
Seguridad en Java
23Autenticación Resúmenes de Mensajes
- Resúmenes de Mensajes (Message Digests)
- Un resumen es una huella dactilar digital de un
mensaje o documento. Es una pequeña secuencia de
bytes que resume el mensaje o documento - Se le conoce como Message Digest, Digest o Hash
- Se construye usando un algoritmo de resumen de
mensajes (message digest algorithm), también
llamado función hash criptográfica (cryptographic
hash function) - Habitualmente no se usan claves para generar los
resúmenes, es decir, dado un mismo documento y un
algoritmo, siempre se obtiene el mismo resumen
Seguridad en Java
24Autenticación Resúmenes de Mensajes
- Este tipo de resúmenes tienen ciertas propiedades
- Pequeñas variaciones en el documento, hacen que
el resumen sea completamente diferente - Partiendo de un resumen no se puede obtener el
documento original - Dado un resumen concreto, no se puede crear un
documento que tenga ese mismo resumen - Ejemplos de algoritmos de resúmenes
- SHA-1, MD5, RIPEMD-160
Seguridad en Java
25Autenticació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
26Autenticación Firma Digital
- Firma de un mensaje
- 1) El emisor construye un pequeño resumen del
mensaje que hay que autenticar con un algoritmo
de resúmenes conocido - 2) Cifra el resumen con su clave privada
- 3) Envía el mensaje junto con el resumen-cifrado
- Verificación de la firma (autenticación)
- 1) El receptor crea un resumen del mensaje con el
algoritmo - 2) Descifra el resumen-cifrado con la clave
pública del emisor - 3) Compara el resumen-descifrado con el resumen
que el receptor ha generado, si son iguales, el
mensaje no ha sido alterado y ha sido firmado con
la clave privada del emisor (autenticación de
datos y de emisor)
Seguridad en Java
27Firma Digital
http//es.wikipedia.org/wiki/ImagenFirma_digital.
jpg
28Índice
- Introducción
- Cifrado o Encriptación
- Claves Criptográficas
- Autenticación
- Infraestructura de clave pública
Seguridad en Java
29Infraestructura 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
30Infraestructura de Clave Pública
- Las claves son un componente necesario de muchas
operaciones criptográficas (crear y verificar
firmas digitales, cifrar información) - Hay dos tipos de claves
- Claves simétricas (claves secretas)
- Claves asimétricas (claves públicas y claves
privadas, par de claves)
Seguridad en Java
31Infraestructura de Clave Pública
- Si una persona tiene una clave pública y una
clave privada, necesita que el resto de la gente
tenga su clave pública - Si esa persona firma un documento digital (usando
su clave privada), el receptor del documento
necesitará su clave pública para verificar la
firma
Seguridad en Java
32Infraestructura de Clave Pública
- El problema es cómo se envía la clave pública al
receptor del documento? Si la envía por mail, la
podrían interceptar y modificar - Otro problema es que la clave no proporciona
información sobre la identidad de la persona a la
que pertenece, es sólo una secuencia de números
Seguridad en Java
33Infraestructura de Clave Pública Certificados
- Certificados
- Asocian información de la persona u organización
a su clave pública - Se usan cuando se quiere enviar la clave pública
- El receptor del certificado se puede asegurar de
que esa clave pública corresponde a esa persona - Una entidad bien conocida llamada Autoridad
Certificadora (certificate authority, CA) asegura
que la clave pública corresponde realmente a esa
persona
Seguridad en Java
34Infraestructura 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
35Infraestructura 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
36Infraestructura 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
37Infraestructura de Clave Pública Autoridad
Certificadora (CA)
- Cómo sabemos que el certificado de la Autoridad
Certificadora es el correcto? - Es la pescadilla que se muerde la cola
- 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)
38Infraestructura de Clave Pública Autoridad
Certificadora (CA)
- Certificados de las CAs
- Ejemplo Firefox
- Editar gt Preferencias gt Avanzado gt Cifrado gt Ver
certificados
Seguridad en Java
39Infraestructura de Clave Pública Autoridad
Certificadora (CA)
- Autenticación de la CA
- Ejemplo Java
- Panel de Control gt Java gt Seguridad gt
Certificados
Seguridad en Java
40Infraestructura de Clave Pública Autoridad
Certificadora (CA)
- Certificados de las CAs
- Ejemplo Opera
Seguridad en Java
41Infraestructura 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/)
42Infraestructura de Clave Pública Autoridad
Certificadora (CA)
- Cadena de Autenticación de la CA
- Algunas veces, el certificado de una autoridad
certificadora no está disponible en el sistema - Si llega un certificado firmado por ella, no se
podría validar - Hay autoridades certificadoras que generan
certificados para autenticar los certificados de
otras autoridades certificadoras - La cadena de certificación (chain) puede tener
varios niveles
Seguridad en Java
43Infraestructura de Clave Pública Autoridad
Certificadora (CA)
- Cadena de Autenticación de la CA
- Por ejemplo
- En la plataforma tenemos la clave pública de CA
Telefónica - Recibimos un documento firmado digitalmente por
un profesor de la URJC con su certificado - El certificado del profesor está firmado por la
CA URJC - Si podemos obtener un certificado de la CA URJC
firmado por la CA Telefónica, podemos verificar
la clave de la URJC y por lo tanto con esa clave
podemos también verificar el documento del
profesor
Seguridad en Java
44Infraestructura 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)
45Infraestructura 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_c
ertificadora.asp - UNED
- http//www.uned.es/csi/reduned/ca/
- Banesto
- http//ca.banesto.es/
46Infraestructura 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)
47Infraestructura 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
48Infraestructura de Clave Pública Autoridad
Certificadora (CA)
49Infraestructura 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/
50Infraestructura de Clave Pública Autoridad
Certificadora (CA)
51Infraestructura 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/
52Infraestructura de Clave Pública Autoridad
Certificadora (CA)
53Infraestructura 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
54Infraestructura 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.jn
lp
55Infraestructura 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
56Infraestructura de Clave Pública Certificados
Autofirmados
- Certificados autofirmados
Firefox 2
Seguridad en Java
57Infraestructura de Clave Pública Certificados
Autofirmados
- Certificados autofirmados
Firefox 3
Seguridad en Java
58Infraestructura de Clave Pública Certificados
Autofirmados
- Certificados autofirmados
Firefox 2
Seguridad en Java