Seguridad en la Plataforma Java 2 JDK 1.2

Un certificado es una sentencia firmada digitalmente de una entidad (persona, compa��a, etc.), diciendo que la clave p�blica de alguna otra entidad tiene un valor particular. Si creemos la firma del certificado, creeremos que la asociaci�n incluida en el certificado entre la clave p�blica especificada y la otra entidad es aut�ntica.

.Algoritmo de Criptograf�a

Un algoritmo criptogr�fico es un algoritmo usado para asegurar uno de los puntos siguientes.

  1. la confidencialidad de los datos
  2. autentificaci�n del emisor de los datos
  3. integridad de los datos enviados
  4. no-repudiaci�n, un emisor no puede negar que ha enviado un mensaje particular.

Un algoritmo de firma digital proporciona algunas de estas caracter�sticas. Tambi�n puedes ver algoritmos message digest.

Una versi�n separada (Java Cryptography Extensions) proporciona APIs y algoritmos relacionados con la encriptaci�n y desencriptaci�n.

.Desencriptaci�n

Desencriptaci�n es la inversa de encriptaci�n; el proceso de tomar los textos ecriptados y la clave criptogr�fica, y producir un texto claro (los datos originales sin encriptar)

.Firma Digital

Una firma digital es una cadena de bits que se ha calculado desde algunos datos (los datos a ser "firmados") y la clave privada de la entidad.

La firma puede ser usada para verificar que los datos fienen de la entidad y que no han sido modificadas durante el tr�nsito.

Como una firma escrita, una firma digital tiene muchas caracter�sticas �tiles.

  • Se puede verificar su autenticidad, mediante un c�lculo que usa la clave p�blica correspondiente a la clave privada usada para generar la firma.
  • No se puede privar de ella, asumiendo que la clave privada mantiene el secreto
  • Es una funci�n de los datos firmados y no puede ser reclamada como la firma de otros datos.
  • No se pueden modificar los datos firmados; si lo son, la firma no se verificar� como aut�ntica.

.Dominio o Protecci�n de Dominio

Una protecci�n de domino ("dominio" para acortar) encierra un conjunto de clases cuyos ejemplares tienen concedidos los mismos permisos.

Adem�s de un conjunto de permisos, un dominio comprende un CodeSource, que es un conjunto de PublicKey junto con un codebase (en el formado de una URL). As�, las clases firmadas por la misma clave y desde la misma URL se sit�an en el mismo dominio. Las clases que tienen los mismos permisos pero tienen diferentes c�digos fuente pertenecen a diferentes dominios.

Actualmente en el JDK 1.2, los dominios se crean "bajo demanda" como resultado de la carga de las clases.

Hoy todo el c�digo enviado como parte del JDK se considera c�digo del sistema y ejecuta dentro del �nico dominio del sistema. Cada applet o aplicaci�n se ejecutan en su propio dominio, determinado por su c�digo fuente.

.Encriptaci�n

Encriptaci�n es el proceso de tomar los datos (llamado textolimpio) y una clave criptogr�fica y producir un textoencriptado, que son unos datos sin significado para cualquiera que no conozca la clave.

.Clase Motor

Una "clase motor" define un servicio criptogr�fico de una forma abstracta (sin una implementaci�n concreta).

Un servicio criptogr�fico siempre est� sociado con un algoritmo o tipo particular, y proporciona operaciones de criptogr�fia (como aquellas para firmas digitales o message digests), genera o suministra el material criptogr�fico (claves o par�metros) requeridos para las operaciones de criptograf�a, o genera objetos de datos (keystores o certificados) que encapsulan claves criptogr�ficas (que pueden ser usadas en una operaci�n criptogr�fica) de una forma segura. Por ejemplo, dos de las clases motor son Signature y KeyFactory. La clase Signature proporciona acceso a la funcionalidad de un algoritmo de firma digital. Un KeyFactory DSA suministra un clave privada DSA o una clave p�blica (desde sus especificaciones codificadas o transparentes) en un formato utilizable por los m�todos initSign o initVerify, respectivamente, de un objeto Signature DSA.

Los clientes API piden y utilizan ejemplares de clases motor para llevar a cabo las operaciones correspondinetes. Las siguientes clases motor est�n definidas en el JDK 1.2.

  • MessageDigest - usada para calcular el mensaje message digest (hash) de los datos especificados.
  • Signature - usada para firmar los datos y verificar las firmas digitales.
  • KeyPairGenerator - usada para generar una pareja de claves p�blica y privada disponibles para una algoritmo especificados.
  • KeyFactory - usada para convertir claves criptogr�ficas opacas del tipo Key en especificaciones de claves (representaciones (transparentes de material clave), y viceversa.
  • CertificateFactory - usado para crear certificados de clave p�blica y Certificate Revocation Lists (CRLs).
  • KeyStore - usado para crear y manejar un keystore. Un keystore es una base de datos de claves. Las claves privadas de un keystore tienen una cadena de certificados asociadas con ellas, que autentifican la correspondiente clave p�blica. Un keystore tambien contiene certificados de entidades verdaderas.
  • AlgorithmParameters - usado para manejar los par�metros de un algoritmo particular, incluyendo los par�metros de codificiaci�n y descodificaci�n.
  • AlgorithmParameterGenerator - usada para generar un conjunto de par�metros disponibles para un algoritmo especificado.
  • SecureRandom - usada para generar n�meros pseudo-aleatorios.

Una clase motor proporciona el interface para la funcionalidad de un tipo espec�fico de servicio criptogr�fico (independiente de un algoritmo criptogr�fico particular). Define m�todos de "Application Programming Interface" (API) que permiten a las aplicaciones acceder a tipos espec�ficos de servicios criptogr�ficos que proporciona. Las implementaciones actuales (para uno o m�s proveedores) son aquellas para algoritmos espec�ficos. La clase motor Signature, por ejemplo, proporciona acceso a la funcionalidad de un algoritmo de firma digital. La implementaci�n actual suministrada en una subclase SignatureSpi ser� aquella para una clase espec�fica de algoritmo de firma, como SHA1 con DSA, SHA1 con RSA, MD5 con RSA, e incluso algunos algoritmos de firmas propietarios.

Los interfaces de aplicaci�n suministrados por una clase motor est�n implementados en t�rminos de un "Service Provider Interface" (SPI). Es decir, para cada clase motor, hay una correspondiente clase abstracta SPI. que define los m�todos del Service Provider Interface que le proveedor de servicios criptogr�ficos debe implementar.

Un ejemplar de una clase motor se crea llamando al m�todo factory getInstance de la clase motor, que encapsula la implementaci�n del SPI y lo devuelve al llamador. Cada m�todo del API del ejemplar de la clase motor generada incova al m�todo del SPI correspondiente del objeto SPI encapsulado.

El nombre de cada clase SPI es el mismo que el de la correspondiente clase motor, seguido por "Spi". Por ejemplo, la clase SPI correspondiente a la clase motor Signature es la clase SignatureSpi.

.Algoritmo Resumen de Mensaje

Un Resumen de mensaje es una funci�n que toma una antrada de datos de tama�o arbitrario (referido como un mensaje) y genera una salida de tama�o fijo, llamada resumen (o picadillo). Un resumen tiene las siguientes propiedades

  • Deber�a ser computacionalmente infalible para encontrar otra cadena de entrada que genere el mismo resumen.
  • El resumen no revela nada sobre la entrada usada para generarlo.

Los algoritmos de resumen de mensaje se usan para producir un identificador de datos �nico y fiable . Los resumenes algunas veces se llaman "huellas dactilares digitales".

Algunos algoritmos de firma digital usan un algoritmo de resumen de mensaje para calcular el picadillo de los datos que est�n siendo firmados, y luego firma digitalmente el valor del picadillo en vez de firmar los datos originales, ya que firmar los datos originales podr�a ser muy costoso.

.Representaci�n de Clave Opaca

Una representaci�n de clave opaca es aquella en la que no tenemos acceso directo al material que constituye la clave. En otras palabras: "opaco" ofrece un acceso limita a la clave - tres m�todos definidos por el interface "Key": getAlgorithm, getFormat, y getEncoded.

Esto est� en contraste con una representaci�n transparente, en la que podemos acceder a cada valor del material de la clave individualmente, atrav�s de uno de los m�todos "get" definidos en la especificaci�n de la clase correspondiente.

.Representaci�n Opaca de Par�metros

Una representaci�n de par�metros opaca es aquella en la que no tenemos acceso directo a las campos de par�metros; s�lo podemos el nombre del algoritmo asociado con el conjunto de par�metros y alguna clase de codificaci�n para el conjunto de par�metros.

Esto contrasta con una representaci�n transparente, en la que podemos acceder a cada valor del material de la clave individualmente, atrav�s de uno de los m�todos "get" definidos en la especificaci�n de la clase correspondiente.

.Permiso

Un permiso representa acceso a un recurso del sistema. Para poder conceder a un applet el acceso a un recurso (o a una aplicaci�n ejecut�ndose con un controlador de seguridad), el permiso correspondiente debe concederse expl�citamente.

La pol�tica efectiva para un entorno de aplicaci�n Java espec�fica aquellos permisos que est�n disponibles para varios fuentes (ver Pol�tica).

Un permiso tiene t�picamente un nombre (frecuentemente definido como "target name") y, en algunos casos, una lista separada por comas de una o m�s acciones.

El JDK tiene un n�mero de tipos de permisos internos (clases), y nuevos tipos que pueden ser a�adidos por los clientes.

.Pol�tica

La pol�tica en efecto para un entorno de aplicaci�n Java espec�fica qu� permisos est�n disponibles para el c�digo de varias fuentes.

La localizaci�n de la fuente de la informaci�n de pol�tica se configura con la implementaci�n de Pol�tica. El JDK contiene una implementaci�n de pol�tica por defecto que obtiene su informaci�n desde ficheros de configuraci�n de pol�tica est�ticos.

.Fichero de Pol�tica

La pol�tica para un entorno de aplicaci�n Java (especificaci�n de los permisos disponibles para c�digo de varias fuentes) est� representada por un objeto Policy.

La localizaci�n de la fuente de la informaci�n de pol�tica se configura con la implementaci�n de Pol�tica. El JDK 1.2 contiene una implementaci�n de Policy por defecto que obtiene su informaci�n desde ficheros de configuraci�n de pol�tica est�ticos, tambi�n conocidos como "ficheros de pol�tica".

.Clave Privada

Una clave privada es un n�mero que se supone conocido s�lo por una entidad particular. Es decir, las claves privadas siempre deben mantenerse en secreto. Podemos usarlas para generar firmas digitales. Una clave privada siempre est� asociada con una s�la clave p�blica.

.Privilegiado

Siempre que se intenta un acceso a recursos, todo el c�digo del thread hasta ese punto debe tener permiso para acceder a los recursos, a menos que el c�digo del thread haya sido marcado como "privileged". Es decir, supongamos el control de acceso chequeando las ocurrencias en la ejecuci�n del thread que tiene una cadena de m�ltiples llamadores. Cuando se llama al m�todo checkPermission de AccessController el llamador m�s reciente, el algoritmo b�sico para decidir si se permite o deniega el acceso requerido de esta forma.

Si el dominio de cualquier llamante de la cadena de llamadas no tiene el permiso requerido, se lanza una AccessControlException, a menos que lo siguiene sea cierto: un llamador cuyo dominio tenga concedido el permiso ha sido marcado como "privileged" (ver abajo) y todas las llamadas subsecuentes (directas o indirectas) tienen el mismo permiso.

(Nota: El c�digo de sistema autom�ticamente tiene todos los permisos.)

Marcar un c�digo como "privileged" permite a un trozo de c�digo verdadero un permiso temporal para acceder a m�s recursos de los que ten�a disponible el c�digo que lo llam�. Esto es necesario en algunas situaciones. Por ejemplo, una aplicaci�n podr�a no tener pemritido el acceso directo a ficheros que contienen fuentes, pero la utilidad del sistema para mostrar un documento debe obtener dichas fuentes, en beneficio del usuario. Para poder hacer esto, la utiliza del sistema se convierte en privilegiada mientras obtiene las fuentes.

.Dominio Protegido

Ver Dominio.

.Proveedor

Las implementaciones para varios algoritmos criptogr�ficos est�n proporcionadas por Cryptographic Service Providers. Los proveedores son esencialmente paquetes que implementan una o m�s clases motor para algoritmos espec�ficos. Por ejemplo, el proveedor del JDK, por defecto, llamado "SUN" suministra implementaciones para el algoritmo de firma DSA y los algoritmos de resumen de mensaje MD5 y SHA-1. Otros proveedores podr�an definir sus propias implementaciones de estos algoritmos o de otros, como una implementaci�n de una RSA-basada en algoritmo de firma o del algoritmo de resumen de mensaje MD2.

.Clave P�blica

Una clave p�blica es un n�mero asocido con una entidad particular (por ejemplo, una persona o una organizaci�n). Una clave p�blica est� dise�ada para ser conocida por todos aquellos que necesiten interacciones verdaderas con dicha entidad. Una clave p�blica siempre est� asociada con una �nica clave privada, y puede ser usada para verificar la firma digital generada usando la clave privada.

.Controlador de Seguridad

Actualmente, todo el c�digo de sistema del JDK llama a los m�todos del controlador de seguridad para comprovar la pol�tica actualmente en efectivo para realizar controles de acceso. Hay un controlador de seguridad (implementaci�n de SecurityManager) instalado siempre que se ejecuta un applet; el appletviewer y la mayor�a de los navegadores, instalan un controlador de seguridad. El controlador de seguridad previene de que el c�digo del applet pueda acceder a recursos a menos que tenga permiso expl�cito para hacer esto en una entrada en un fichero de pol�tica.

Un controlador de seguridad no se instala autom�ticamente cuando se ejecuta una aplicaci�n, y as� la aplicaci�n tiene total acceso a los recursos (como fue siempre en el caso del JDK 1.1). Para aplicar la misma pol�tica de seguridad para una aplicaci�n encontrada en el sistema local de ficheros como si fuera un applet descargado, ejecutando la aplicaci�n en la m�quina virtual jaca con el nuevo argumento de la l�nea de comandos "-Djava.security.manager" o la propia aplicaci�n debe llamar al m�todo setSecurityManager en la clase java.lang.System para instalar un controlador de seguridad.

.Certificado Auto-Firmado

Un certificado auto-firmado es aqu�l en que el emisor-firmante es el mismo que el sujeto la entidad cuya clave p�blica est� siendo autentificada por el certificado).

.Firma

Ver Firma Digital.

.C�digo Firmado

Una forma abreviada de decir "c�digo en un fichero class que aparece en un fichero JAR que fue firmado". Ver Firma Digital.

.Representaci�n de Clave Transparente

Una representaci�n de clave transparente significa que puedes acceder a cada valor material de la clave de forma individual, atrav�s de uno de los m�todos "get" definidos en la espec�ficaci�n de la clase correspondiente. Por ejemplo, DSAPrivateKeySpec define los m�todos getX, getP, getQ, y getG, para acceder a la clave privada x, y los par�metros del algoritmo DSA usada para calcular la clave: la principal p, la sub-principal q, y la base g.

Esto est� en contraste con una representaci�n opaca, est� definido por el interface Key, en el que no tenemos acceso a los campos materiales de la clave.

.Representaci�n de Par�metros Transparente

Una representaci�n transparente de un conjunto de par�metros significa que podemos acceder al valor de par�metro individualmente, a trav�s de uno de los m�todos "get" definidos en la especificaci�n de la clase correspondiente. Por ejemplo, DSAParameterSpec define los m�todos getP, getQ, y getG, para acceder a los par�metros comunitarios DSA "p", "q", y "g", respectivamente.

Eeto est� en contraste con una representaci�n opaca, como la suministrada por la clase AlgorithmParameters, en la que no tenemos acceso directo a los campos de par�metros; s�lo podemos obtener el nombre del algoritmo asociado con el juego de par�metros (mediante getAlgorithm) y alg�n tipo de c�dificaci�n para el conjunto de par�metros (mediante getEncoded).

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR