Saltar la navegación

4.- Criptografía en Java.

Caso práctico

Foto de Ada mirando al frente.

Ada se ha reunido con Juan y Ana para ver la marcha del proyecto. Por fin le han dejado la documentación completa y la copia de la aplicación que deben modificar. Como la aplicación no la realizó la empresa BK Programación, han tenido algún que otro problemilla con la obtención de toda la documentación. Juan le pregunta a Ada: —¿En que lenguaje está desarrollada la aplicación antigua?" —En Java — contesta Ada.

Ana sonríe, muestra una cara de total satisfacción, y dice —¡Estupendo!, justo este último trimestre hemos trabajado en clase con las API criptográficas de Java.

Ada la observa orgullosa, realmente están muy contentos con el trabajo de Ana en la empresa, y le dice —entonces, ya tenéis trabajo ganado —mirando a Juan les dice a ambos— ¡Manos a la obra!, que el cliente necesita tener resueltos los problemas de seguridad antes de que finalice este mes.

Dibujo de un rótulo sobre blanco con las palabras JCA, JCE Y JSSE en rojo, verde y azul respectivamente.

Java nos prorporciona diferentes APIs para la creación de aplicaciones con comunicaciones seguras. Con estas APIs podremos realizar, entre otras las siguientes tareas:

  • Encriptación de la información con clave pública y privada.
  • Firma digital y su verificación.
  • Resúmenes de mensajes (HASH).
  • Certificados digitales y validación de ceritificados.
  • Comunicaciones de red seguras con el protocolo SSL.

Además, estas APIs permiten utilizar diferentes algoritmos criptográficos (DES, RSA, MD5, etc.), proporcionados por lo que Java denomina proveedor de servicios criptográficos (PSC).

La arquitectura criptográfica de Java fue introducida en el JDK 1.1, incluyendo bibliotecas de acceso a funciones criptográficas de propósito general, conocidas como Arquitectura Criptográfica de Java (JCA), y otras utilidades criptográficas que complementan a las primeras y que se conocen como Extension Criptográfica de Java (JCE).

A partir de JDK 1.4, JCE viene incluido en el JDK y la distinción entre ambos componentes cada vez es menos evidente, por lo que podemos decir que JCA es el core o corazón del API de seguridad en Java y que JCE es una parte de la JCA.

Los paquetes que conforman la arquitectura criptográfica JCA y JCE son:

  • Paquete java.security.
  • Paquete javax.crypto.

Otras bibliotecas disponibles en el JDK, y que utilizan la arquitectura proveedor de JCA, son las que proporcionan:

  • Comunicaciones seguras.
    • Extensión Java Sockets Seguros.(JSSE). javax.net.ssl.SSLSocket
    • Servicio General de Seguridad a través de Kerberos. (JGSS).
    • Capa de autenticación y seguridad Java (SASL). javax.security.sasl.Sasl
  • Autenticación y control de Acceso.
    • Servicio de Autenticación y Autorización. (JAAS). javax.security.auth.login.