Java Card

Revisión del 09:49 11 abr 2013 de Oren1301adjchlg (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Java Card
Información sobre la plantilla
Java card1.JPG
Tecnología Java Card
Fecha de Creación1996
Última versión estableJava Card 3.0 de marzo del 2008
Java Card. Permite que las Tarjetas Inteligentes y otros dispositivos con memoria muy limitada ejecuten pequeñas aplicaciones, llamadas applet, que utilizan la tecnología Java. Le proporciona a los fabricantes de tarjetas inteligentes una plataforma de ejecución segura e interoperable que puede almacenar y actualizar varias aplicaciones en un único dispositivo. La tecnología Java Card es compatible con las normas de tarjetas inteligentes.

Historia

La primera tarjeta de Java fue introducido en 1996 por la división de tarjetas de Schlumberger, que posteriormente se fusionó con Gemplus para formar Gemalto. los productos Java Card están basados en las especificaciones de la plataforma Java Card desarrollada por Sun Microsystems (más tarde una subsidiaria de Oracle Corporation). Muchos de los productos Java Card también se basan en las especificaciones GlobalPlatform para la gestión segura de las aplicaciones en la tarjeta (descarga, instalación, personalización, supresión).

Java Card se refiere a una tecnología que permite a aplicaciones de Java (applets) que se ejecuten de forma segura en las tarjetas inteligentes. Java Card es el más pequeño de Java dirigida para dispositivos embebidosel mismo ofrece la posibilidad al usuario programar el dispositivo y que sean de aplicación específica. Es ampliamente utilizado en las tarjetas SIM (utilizado en los teléfonos móviles GSM) y tarjetas de cajero automático.

Portabilidad

Java Card tiene por objeto la definición de un estándar de tarjeta inteligente que permite a la misma applet funcionar en diferentes tarjetas inteligentes, de forma muy parecida a cómo un applet de Java se ejecuta en diferentes ordenadores. Al igual que en Java, esto se consigue utilizando la combinación de una máquina virtual (la Máquina virtual de Java Card), y unas librerías cuya API está especificada.

La portabilidad, en todo caso, sigue siendo obviada en muchos casos por cuestiones de tamaño de la memoria, el rendimiento y tiempo de ejecución (por ejemplo para los protocolos de comunicación o algoritmos criptográficos).

Seguridad

La tecnología Java Card fue desarrollada originalmente con el propósito de asegurar la información sensible almacenada en las tarjetas inteligentes. La seguridad está determinada por diversos aspectos de esta tecnología:

  • Applet. El applet es una máquina de estados que sólo procesa los comandos recibidos a través del dispositivo lector enviando y respondiendo con códigos de estado y datos.
  • Separación de applets. Las distintas aplicaciones están, además, separadas unas de otras por un cortafuegos que limita el acceso y control de los elementos de datos de un subprograma a otro.
  • Encapsulación de datos. Los datos se almacenan en la aplicación y las aplicaciones Java Card se ejecutan en un entorno aislado (la tarjeta de Java VM), separada del sistema operativo y del equipo en que se lee la tarjeta.
  • Criptografía. En esta plataforma están implementados los algoritmos criptográficos más comúnmente utilizados como DES, 3DES, AES, RSA (incluyendo el uso de criptografía de curva elíptica). Otros servicios como la firma electrónica o la generación de claves de intercambio también están soportados.

Beneficios

Entre los beneficio de la tecnología Java Card para los proveedores de tarjetas inteligentes se destacan:

  • Interoperable: Los applets, desarrollados con tecnología Java Card se pueden ejecutar en cualquier tarjetas inteligentes, con la tecnología Java Card de tarjetas inteligentes, independientemente del proveedor de la tarjeta y el hardware subyacente.
  • Seguro: la tecnología Java Card se basa en la seguridad inherente del lenguaje de programación Java para proporcionar un entorno de ejecución seguro. Diseñado mediante un proceso abierto, de despliegues probados de la plataforma de la industria y las evaluaciones de seguridad garantizarán que los emisores de tarjetas se benefician de la tecnología más capaz y segura de la actualidad.
  • Aplicación-Multi-Capaz: La tecnología Java Card permite que varias aplicaciones puedan coexistir de forma segura en una única tarjeta inteligente.
  • Compatible con los estándares existentes: Las API Java Card son compatibles con las normas internacionales para las tarjetas inteligentes, tales como ISO7816, o EMV. Principalmente las normas específicas de la industria tales como GlobalPlatform y ETSI se refieren a ella.

Lenguaje de programación Java Card

Es una combinación del lenguaje Java con un entorno de ejecución para tarjetas inteligentes, permite ejecutar applets en el chip embebido en la tarjeta, los cuales contienen funcionalidades que son reutilizables para otros componentes, se ejecutan e interactúan en todo momento con el entorno de ejecución que contiene la máquina virtual de JavaCard, junto a las clases y servicios definidos en las API de estas.

Lenguaje de programación Java Card es un subconjunto de Java: todas las construcciones del lenguaje Java Card existen en Java y se comportan de la misma manera. Esto va hasta el punto de que, como parte de un ciclo estándar de desarrollo, un applet Java Card se compila en un archivo de clase Java (.class) por un compilador Java normal, sin ningún tipo de opción especial (aunque el fichero compilado será procesado posteriormente por herramientas específicas para la plataforma Java Card).

No obstante, muchas características del lenguaje Java no son compatibles con Java Card (en particular algunos tipos básicos (char, double', float y long); los enums; los arrays de más de una dimensión; los hilos (threads) y algunas características son opcionales y están ausentes en la mayoría de las tarjetas inteligentes (pe. el tipo int, en particular, que es el valor por defecto de un tipo de expresión de Java, la recolección de basura).

Desarrollo

Las técnicas de codificación utilizado en un programa de Tarjeta Java Card difiere significativamente del que se utiliza en un programa de Java. Sin embargo, Java Card que utiliza un subconjunto preciso de la velocidad del lenguaje Java en la curva de aprendizaje, y permite utilizar un entorno Java para desarrollar y depurar un programa Java Card se puede ejecutar y depurar tanto el código Java Card para la aplicación como ser incorporado en una tarjeta inteligente, y una aplicación Java que será el huésped mediante la tarjeta inteligente, la cual trabajarán conjuntamente en el mismo entorno.

Facilidades

Java Card ofrece la posibilidad al usuario programar el dispositivo y que sean de aplicación específica. Es ampliamente utilizado en las tarjetas SIM (utilizado en los teléfonos móviles GSM) y tarjetas de cajero automático. Los productos Java Card están basados en las especificaciones de la plataforma Java Card desarrollada por Sun Microsystems (más tarde una subsidiaria de Oracle Corporation).

Muchos de los productos Java Card también se basan en las especificaciones GlobalPlatform para la gestión segura de las aplicaciones en la tarjeta (descarga, instalación, personalización, supresión).

Java Card 3.0

Java Card 3.0 proyecto lanzado en marzo de 2008

La versión 3.0 de la especificación JavaCard (proyecto lanzado en marzo de 2008) se separa en dos ediciones: la edición clásica y la edición Conectada.

  • La edición clásica es una evolución de la versión de la plataforma Java Card 2.2.2 y soporta applets tradicionales de tarjetas en los dispositivos más con recursos limitados.
  • La edición de Conectada proporciona una nueva máquina virtual y un entorno de ejecución de la red mejorada con características orientadas. Las aplicaciones pueden ser desarrolladas como applets de cartas clásico solicitado por los comandos APDU utilizando HTTP para apoyar esquemas basados en la web de la comunicación (HTML, REST, SOAP ...) con la tarjeta.

Fuentes

  • Artículo: Java Card. Disponible en: "www.oracle.com". Consultado: 19 de enero del 2012.
  • Artículo: Java Card. Disponible en: "www.java.sun.com". Consultado: 19 de enero del 2012.
  • Artículo: Java Card. Disponible en: "www.searchsoa.techtarget.com". Consultado: 19 de enero del 2012.
  • Artículo: Java Card. Disponible en: "www.wrankl.de". Consultado: 19 de enero del 2012.