Saltar la navegación

4.1.- Arquitectura criptográfica de Java.

Estudiante sentado de espalda trabajando con ordenador y un libro.

La arquitectura criptográfica de Java, denominada JCA, es la pieza principal de la criptografía de Java y está diseñada en torno a los siguientes principios:

  • Independencia de la aplicación. Los programas no necesitan implementar algoritmos criptográficos, sino que los utilizan a través de la plataforma Java, mediante su solicitud a un PSC. Además, se pueden utilizar varios proveedores en la misma aplicación.
  • Interoperabilidad. Los diferentes proveedores son compatibles con todas las aplicaciones, esto es, una aplicación concreta no tiene por que estar ligada a un proveedor específico, ni un proveedor estará ligado a una aplicación específica.
  • Extensibilidad. La plataforma Java incluye una serie de proveedores integrados que implementan un conjunto básico de servicios de seguridad utilizados ampliamente en la actualidad, pero también permite la instalación de proveedores personalizados que implementan nuevos servicios.

La arquitectura JCA, emplea un modelo basado en el uso de proveedores, de manera que se puede decir que incluye dos tipos de componentes:

  • Bibliotecas de clases e interfaces: paquete java.security.
  • Proveedores de servicios criptográficos que proporcionan las implementaciones de diferentes algoritmos criptográficos, como por ejemplo Sun.

La extensión criptográfica de Java (JCE), emplea el mismo modelo basado en proveedores que JCA, en este caso está presente mediante el proveedor SunJCE y proporciona una serie de servicios que permiten complementar los servicios de seguridad de JCA, mediante los paquetes javax.crypto, javax.crypto.spec, javax.crypto.interfaces.

Ya te hemos comentado que a partir de JDK 1.4, la distinción entre JCA y JCE es menos evidente, al ir incluido JCE en le propio JDK, de manera que se habla de estos componentes de manera conjunta. Por tanto, podemos decir que la arquitectura criptográfica de Java incluye los siguientes componentes software:

  • Las bibliotecas de clases e interfaces que proporcionan las diferentes funcionalidades de seguridad, como son:
    • java.security. Consiste básicamente en clases abstractas e interfaces que proporcionan el manejo de certificados, claves, resúmenes de mensajes y firmas digitales.
    • javax.crypto. Proporciona las clases e interfaces para realizar operaciones criptográficas como encriptación/desencriptación, generación de claves y acuerdo de claves, así como generación de códigos de autentificación de mensajes (MAC).
    • javax.crypto.spec. Incluye varias clases de especificación de claves y de parámetros de algoritmos.
    • javax.crypto.interfaces. presenta las interfaces de las claves empleadas en los algoritmos de tipo Diffie-Hellman (clases DHKey, DHPrivateKey y DHPublicKey).
  • Los proveedores de servicios criptográficos, tales como Sun, SunRsaSign, SunJCE, que contienen las implementaciones de diferentes algoritmos criptográficos.
Lo que se conoce como Arquitectura de Proveedores es lo que permite que coexistan múltiples implementaciones de algoritmos criptográficos.

Autoevaluación

Pregunta 1

La arquitectura criptográfica de Java está diseñada de manera que siempre se deben utilizar los mismos algortimos criptográficos.

Citas para pensar

"Sorprenderse, extrañarse, es comenzar a entender".

José Ortega y Gasset.