5. administracioìn de claves y certificados
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

5. administracioìn de claves y certificados

on

  • 4,480 views

 

Statistics

Views

Total Views
4,480
Views on SlideShare
4,480
Embed Views
0

Actions

Likes
0
Downloads
35
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

5. administracioìn de claves y certificados Presentation Transcript

  • 1. Criptografía en aplicaciones JavaAdministración de claves y certificados
  • 2. Índice de contenidos Introducción. Herramienta keytool. Infraestructura de clases. Clase KeyStore. APIs para la gestión.
  • 3. Introducción La administración de claves constituye uno de los aspectos más apasionantes del establecimiento de un sistema de seguridad. La administración de claves, a partir de JDK 1.2, se basa en el concepto de almacén de claves (Keystore). Definición: contenedor de claves secretas, pares de claves pública-secreta y certificados que prueban la validez de una clave pública.
  • 4. Introducción Existen una serie de tareas importantes: Generación de claves. Almacenamiento de claves. Acuerdo/Distribución de claves. Verificación de claves. Para manejar todo esto de una forma potente aparece el concepto de Keystore: Base de datos, protegida por un password, que contiene claves y certificados.
  • 5. Introducción
  • 6. Introducción Un almacén de claves puede contener dos tipos de entradas: Entrada de clave. Entrada de certificado fiable. Cada una de las entradas de un Keystore está asociada a un único alias, nos permiten identificar dichas entradas cuando queremos recuperarlas.
  • 7. Introducción Las bibliotecas criptográficas de Java proporcionan soporte para tres tipos de almacenes de clave: JKS: almacén de claves disponible en el JDK tradicionalmente (proveedor “SUN”). JCEKS: almacén de claves (proveedor “SunJCE”). PKCS12: almacén de claves (proveedor “SunJSSE”). JCEKS debe utilizarse si, de alguna forma, se necesita utilizar funcionalidades de la extensión criptográfica de Java, en cualquier otro caso no será necesario.
  • 8. Introducción Los almacenes de claves pueden gestionarse de dos formas diferentes: Mediante una herramienta en línea de comandos, keytool. De forma programática aprovenchando la API que proporciona toda implementación de seguridad. Se analizan a continuación ambas alternativas.
  • 9. Herramienta keytool Esta herramienta se encarga de administrar claves. Es una utilidad incluida en JRE. Permite crear nuevas claves, importar certificados digitales, exportar claves existentes y, en general, interactuar con el sistema de gestión de claves.
  • 10. Herramienta keytool Trabaja en línea de comandos:
  • 11. Herramienta keytool Trabaja en línea de comandos: La sintaxis a utilizar es muy simple: >keytool -opcion1 valor1 -opcion2 valor2 ...
  • 12. Herramienta keytool Opciones Globales: −alias alias. −dname distinguishedName. −keypass password. −keystore filename. −storepass password. −storetype storetype. −v.
  • 13. Herramienta keytool Vamos a describir a continuación un conjunto de operaciones habituales: Creación de una entrada para clave. Generación de una petición de certificado. Importación de un certificado. Creación de una entrada para certificado. Modificación de entradas de almacén de claves. Borrado de entradas de almacén de claves. Exploración de los datos de un almacén. Cambio de clave.
  • 14. Creación de una entrada para clave Opción -genkey: Se puede crear una nueva clave sobre el almacén por defecto:  Almacén por defecto: .keystore .  No se utiliza la opción -keystore .  Para acceder al almacén debemos conocer su clave de acceso. Se puede crear una nueva clave sobre un nuevo almacén:  Se utiliza la opción -keystore.  Creamos un password asociado al nuevo almacén de claves.
  • 15. Creación de una entrada para clave Almacén por defecto:
  • 16. Creación de una entrada para clave Una nueva clave sobre un nuevo almacén:
  • 17. Generación de una petición para certificado Para obtener un certificado de una Autoridad certificadora (CA), se debe generar una petición (CSR -Certificate Signing Request-). Opciones globales: −alias alias −keypass keypass −keystore keystore −storepass storepass −storetype storetype −v
  • 18. Generación de una petición para certificado Opciones específicas: −sigalg signatureAlgorithm:  Algoritmo usado para firmar la petición. −file outputFile:  Fichero donde se va a almacenar la petición generada.
  • 19. Borrado de una entrada Opción -delete: Si utiliza la opción -alias, borra la entrada asociada a dicho alias tras insertar la clave del almacen. Si no indicas el alias te lo pide.
  • 20. Exploración de un almacen Opción -list: Te permite explorar el almacén o alguna de sus entrada.
  • 21. Exploración de un almacen Opción -list: Uso de la opción -v: aparecerá el contenido del certificado. >keytool -list -keystore almacen -v Uso de la opción -rfc: el certificado aparecerá en formato RFC 1421. >keytool -list -keystore almacen -rfc No se pueden mezclar ambas opciones.
  • 22. Exportación de una entrada Opción -export: >keytool -export -alias clave1 -keystore almacen -file cert1 Nota:  Se utiliza la opción -alias para indicar qué entrada quiere exportarse y -file para indicar dónde almacenar la exportación.  Si quieremos guardar en formato imprimible usaremos la opción: -rfc
  • 23. Importación de un certificado Opción -import: Se puede incluir en nuestro almacén de claves un certificado que ha sido creado previamente. Opciones particulares: −file inputFile. −noprompt. −trustcacerts.
  • 24. Importación de un certificado
  • 25. Infraestructura de clases Las clases e interfaces necesarios para manejar almacenes de claves, certificados, listas de revocación, etc, se encuentran en los paquetes: java.security:  En este paquete se encuentran todas las clases e interfaces que nos permiten tratar con almacenes de claves y sus entradas. java.security.cert:  En este paquete se encuentran todas las clases e interfaces que permiten manejar certificados, listas de revocación, etc.
  • 26. Clase KeyStore La clase java.security.KeyStore encapsula la noción del almacén de claves. Es una clase abstracta que ejecutan implementaciones específicas del proveedor. El tipo de almacén de claves que soporta JDK 1.2 es JKS para el almacén de claves de Java. El tipo PKCS12 también se define pero no se implementa.
  • 27. Clase KeyStore Los métodos de administración de KeyStore son los siguientes: getInstance(String type). getInstance(String type, String provider). getDefaultType(). getType(). getProvider(). store(...). size() ... http://java.sun.com/j2se/1.4.2/docs/api/
  • 28. Clase KeyStore
  • 29. Clase KeyStore Existen dos formas de pedir un almacén de claves: especificando el tipo de keystore, o el tipo y el proveedor: KeyStore ks = KeyStore.getInstance("JKS");  El sistema determina si hay una implementación disponible de ese keystore en el entorno, si hay más de una selecciona en función de un criterio. KeyStore ks = KeyStore.getInstance("JKS", "SUN");  El sistema determina si hay una implementación disponible de ese keystore en el paquete solicitado y si no lo hay lanza una excepción. Antes de poder utilizarlo se deberá utilizar el método load().
  • 30. Clase KeyStore ¿Cuál es el proveedor que estoy utilizando?
  • 31. Clase KeyStore ¿Tipo de KeyStore?
  • 32. Clase KeyStore El manejo de un almacen de claves de forma programática se realiza de la siguiente manera: Obtención del almacen: este proceso es algo más complejo. Gestión del almacen.
  • 33. Clase KeyStore Obtención del almacen: Paso 1: Obtener la instancia del almacen:  Método getInstance(). Paso 2: Obtener el flujo de entrada asociado al fichero que representa al almacen y contraseña de acceso. Paso 3: Asociar el almacen al objeto anteriormente creado:  Método load().
  • 34. Clase KeyStore Gestión del almacen: Una vez creada adecuadamente la instancia de KeyStore, su gestión consiste en el manejo de sus métodos asociados:  aliases(): devuelve el nombre de todos los alias de las entradas en el almacen.  deleteEntry(): borra una entrada.  getCertificate(): se obtiene un certificado a partir de su alias.  getCertificateChain(): devuelve una cadena de certificados.  getEntry(): devuelve una entrada.
  • 35. Clase KeyStore Gestión del almacen:  setEntry(): guarda una entrada en el almacen de claves.  setCertificateEntry: guarda un certificado en el almacen de claves.  ... Una vez que se ha terminado de operar sobre un almacen se debe utilizar el método store() para actualizar los cambios.
  • 36. Clase KeyStore Las entradas del almacén de claves: KeyStore.PrivateKeyEntry: entrada asociada a clave privada. KeyStore.SecretKeyEntry: entrada asociada a clave secreta. KeyStore.TrustedCertificateEntry: entrada asociada a certificado de confianza.
  • 37. JarSigner Herramienta que genera firmas para ficheros jar y verifica la firma de ficheros jar que ya han sido firmados. Sintaxis: jarsigner [ opciones ] jar-file alias jarsigner -verify [ opciones ] jar-file
  • 38. JarSigner Opciones: -keystore url. -storetype storetype. -keypass password. -sigfile file. -signedjar file. ...
  • 39. JarSigner Ejemplos: jarsigner -keystore /working/mystore -storepass myspass -keypass j638klm -signedjar sbundle.jar bundle.jar jane jarsigner -verify sbundle.jar. Cuando un fichero jar es firmado el contenido del fichero es el mismo, excepto en que aparecen dos nuevos ficheros en un directorio META-INF: Fichero con extensión .SF . Fichero con extensión .DSA .
  • 40. JarSigner
  • 41. APIs para la gestión Keytool: línea de comandos. Gestión de claves programáticamente. Java proporciona APIs para leer y escribir almacenes de claves y sus entradas. Las clases e interfaces más significativas son: interface Principal. clase KeyStore.
  • 42. TrustStore JSSE introduce el concepto de Truststore como una base de datos que almacena certificados. Este concepto tiene una serie de elementos en común con un keystore: Tiene el mismo formato que un Keystore. Son administrados mediante la herramienta keytool. Ambos son representados, programáticamente hablando, mediante instancias de la clase KeyStore. La diferencia entre un keystore y un truststore es el tipo de servicio que ofrece.