Ficheros JAR (Java ARchives)

La plataforma Java te permite firmar digitalmente tus ficheros JAR. Se firma digitalmente un fichero por la misma raz�n por la que se firma un documento de papel - para permitir a los lectores saber que t� has escrito el documento, o al menos que el documento tiene tu aprovaci�n.

Por ejemplo, cuando firmas una carta, quien reconozca tu firma puede confirmar que t� has escrito la carta. De forma similar, cuando firmas un fichero digitalmente, aquel que "reconozca" tu firma digital sabe que el fichero viene de t�. El proceso de "reconocimiento" de firmas electr�nicas se llama verificaci�n.

�Por qu� es tan importante firmar y verificar los ficheros? Cuando descargas un fichero de un applet sin firmar de la web, la plataforma Java no le permite que realice operaciones sensibles a la seguridad como leer o escribir ficheros locales o ejecutar programas locales. Pero �qu� sucede si dichas operaciones son una parte crucial de la funcionalidad del applet? y �qu� pasa si quieres que tu applet realice una operaci�n prohibida normalmente? Aqu� es donde aparecen la firma y la verificaci�n.

Si un applet est� firmado, t� puedes determinar si viene de una fuente correcta. Una vez que t� (o tu navegador) hayas verificado que el applet viene de una fuente correcta, la plataforma puede relajar las restricciones de seguridad y permitir que el applet realice algunas operaciones que ordinariamente estar�an prohibidas. En la versi�n 1.1 de la plataforma Java, un applet verdadero tiene la misma libertad que una aplicaci�n local. En la versi�n 1.2 de la plataforma, un applet verdadero tiene las libertades especificadas en el fichero de polic�a.

La plataforma Java permite la firma y verificaci�n utilizando n�meros especiales llamados claves p�blica y privada. Estas claves vienen en parejas y juegan papeles complementarios.

La clave privada es el "l�piz" electr�nico con el que t� firmas un fichero. Como su nombre indica, tu clave privada s�lo la conoces t�, por eso nadie puede falsificar tu firma. Un fichero firmado con tu clave privada s�lo puede ser verificado por la correspondiente clave p�blica.

Sin embargo, s�lo las claves p�blica y privada, no son suficientes para verificar una firma. Una clave p�blica s�lo puede verificar que un fichero firmado fue firmado por la clave privada correspondiente. Por eso aunque una clave p�blica puede decirte que una firma es "aut�ntica", no puede decirte de quien es la firma!

Por lo tanto, se requiere un elemento m�s para hacer el trabajo de firma y verificaci�n. El elemento adicional es el certificado que los firmantes incluyen en un fichero JAR firmado. Un certificado es una sentencia firmada digitalmente por una autoridad en certificaci�n que indica quien es el propietario de una firma particular. En el caso de los ficheros JAR firmados, el certificado indica a qui�n pertenece la clave p�blica contenida en el fichero JAR.

Cuando firmas un fichero JAR tu clave p�blica se sit�a dentro del archivo junto con un certificado asociado para facilitar el uso por cualquiera que quiera verificar tu firma.

Para sumarizar la firma digital.

  • El firmante firma el fichero JAR utilizando una clave privada.
  • La correspondiente clave p�blica se sit�a dentro del fichero JAR, junto con su certificado, para que sea posible su uso por quien quiera verificar la firma.

.�El fichero de Firma

Cuando firmas un fichero JAR, se a�ade autom�ticamente un fichero de firma en el directorio META-INF del fichero JAR. Este es el mismo directorio que contiene el manifesto del fichero JAR. Los ficheros de firma tienen la extensi�n .SF.

Aqu� tienes un ejemplo del contenido de un fichero de firma.

Signature-Version: 1.0
SHA1-Digest-Manifest: h1yS+K9T7DyHtZrtI+LxvgqaMYM=
Created-By: SignatureFile JDK 1.2

Name: test/classes/Manifest.class
SHA1-Digest: fcav7ShIG6i86xPepmitOVo4vWY=

Name: test/classes/SignatureFile.class
SHA1-Digest: xrQem9snnPhLySDiZyclMlsFdtM=

Name: test/images/manifest-concept.gif
SHA1-Digest: kdHbE7kL9ZHLgK7akHttYV4XIa0=

Name: test/images/manifest-schematic.gif
SHA1-Digest: mF0D5zpk68R4oaxEqoS9Q7nhm60=

El fichero de firma contiene entradas para cada nombre de fichero el valor de resumen. La l�nea SHA1-Digest-Manifest contiene el resumen del fichero de manifiesto.

Los valores de resumen son representaciones codificadas del contenido de los ficheros en el momento en que fueron firmados. El resumen de un fichero cambiar� s�lo si cambia el propio fichero. Cuando se verifica un fichero JAR firmado, se calcula el resumen de cada fichero y se compara con el resumen almacenado en el fichero de manifiesto para asegurarse de que el contenido del fichero JAR no ha cambiado desde que se firm�.

Puedes encontrar informaci�n adicional sobre la firma de ficheros en las p�ginas de documentaci�n del JDK Formato del Manifesto.

.�El fichero de bloques de firmas

Adem�s del fichero de firma, cuando se firma un fichero JAR se a�ade autom�ticamente un fichero de bloque de firma en el directorio META-INF. Al contrario que el fichero de manifiesto o el fichero de firma, los ficheros de bloques de firmas no tienen un formato leible.

El fichero de bloque de firmas contiene dos elementos esenciales para la verificaci�n.

  • La firma digital para el fichero JAR que fue generado por la clave privada del firmante.
  • La clave p�blica del firmante, junto con su certificado, para ser utilizadas por cualquiera que quiera verificar el fichero JAR.

Los nombres de los ficheros de bloques de firmas normalmente tienen la extensi�n, .DSA indicando que han sido creados por el Algoritmo de Firma Digital por defecto. Sin embargo, son posibles otras extensiones si las claves est�n asociadas con otros algoritmos est�ndard.

.�Documentaci�n Relacionada

Para informaci�n adicional sobre las claves, los certificados, y autoridades de certificaci�n, puedes ver

Para m�s informaci�n sobre la arquitectura de seguridad de la plataforma Java, puedes ver esta documentaci�n relacionada.

COMPARTE ESTE ARTÍCULO

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

SIGUIENTE ARTÍCULO