Firmas digitales de un MIDlet para ejecución privilegiada en un equipo Nextel
Existen una serie de funciones estándar de Java ME MIDP 2.0 (y algunas funciones propietarias de Motorola) en los equipos Motorola iDEN que están cubiertas bajo la arquitectura de seguridad de MIDP 2.0 (conocida en inglés como "Security Domains Architecture"). El sistema de seguridad se definió en la especificación de MIDP 2.0 para prevenir el abuso de ciertas funciones Java ME que, si bien tienen usos legítimos, pueden tener implicaciones de seguridad o de costo para un usuario. Las políticas de seguridad de MIDP 2.0 controlan las circunstancias bajo las cuales un MIDlet puede hacer uso de esas funciones.
Bajo esta arquitectura de seguridad, ciertas funciones o grupos de funciones dentro de un API se pueden proteger, definiéndolas como disponibles sólo a aquellas aplicaciones que estén debidamente autorizadas. La arquitectura de seguridad consiste de tres partes:
- Grupos de funciones, los cuales son arreglos lógicos de funciones que tienen efectos finales similares;
- el nivel de seguridad ("security domain") del MIDlet, el cual especifica el nivel de confianza que le dio al MIDlet el operador o fabricante del equipo (Nextel o Motorola en este caso);
- la configuración de permisos del MIDlet, definida en su archivo JAD ó en la pantalla de seguridad del entorno de aplicaciones, la cual, basada en el nivel de seguridad, le otorga permiso al MIDlet de ejecutar las acciones incluidas dentro de un grupo de funciones.
Los siguientes son los grupos de funciones que se definieron en la plataforma Falcon de Motorola (equipos con tres dígitos y MIDP 2.0), e incorporan todas las funciones que ejecutan las acciones listadas:
- Recibo de llamadas (Phone Call Receive) [com.motorola.iden.call.CallReceive]
- Funciones que permiten a un MIDlet manejar una llamada de voz entrante
- Mensagería (Messaging) [javax.wireless.messaging.sms.*, javax.microedition.io.Connector.sms, javax.wireless.messaging.mms.*, javax.microedition.io.Connector.mms]
- Funciones que permiten interacción entre un MIDlet y el sistema de SMS o MMS del equipo
- Acceso a red de datos (Net Access) [javax.microedition.io.Connector.*]
- Funcioens que resultan en una conexión de datos activa
- Invocación automática de aplicaciones (Application Auto Invocation) [javax.microedition.io.PushRegistry, javax.microedition.midlet.MIDlet.platformRequest.*]
- Funcioens que permiten que un MIDlet sea lanzado automáticamente o que execute alguna acción definida por la plataforma (por ejemplo, lanzar el navegador WAP)
- Conectividad Local (Local Connectivity) [javax.microedition.io.Connector.comm]
- Funciones que activan el puerto serial del equipo
- Grabado de multimedios (Multimedia Recording) [javax.microedition.media.control.RecordControl, javax.microedition.media.control.VideoControl.getSnapshot]
- Funciones que permiten que un MIDlet capture imágenes, audio o video
- Lectura de datos del usuario (Read User Data Access) [com.motorola.iden.udm.*, com.motorola.iden.recentcalls.Read, com.mot.iden.customercare.CustomerCare.UserInfo, javax.microedition.pim.Contact.read, javax.microedition.pim.Event.read]
- Funciones que permiten que un MIDlet pueda leer la agenda, lista de contactos, o números del usuario como su número de teléfono o radio
- Escritura de datos del usuario (Write User Data Access) [com.motorola.iden.udm.WritePhoneBook, com.motorola.iden.udm.WriteDateBook, com.motorola.iden.recentcalls.Write, javax.microedition.pim.Contact.write, javax.microedition.pim.Event.write]
- Funciones que permiten que un MIDlet pueda modificar la agenda, lista de contactos, y la lista de llamadas recientes
- Localización (Location) [javax.microedition.io.Connector.mposition, javax.microedition.location.*]
- Información del sistema (System information access) [com.mot.iden.customercare.CustomerCare.UnitInfo, com.mot.iden.customercare.CustomerCare.ReadMsgConfig]
- Funciones que permiten que un MIDlet pueda obtener información sobre el sistema, tal como el IMEI, número de serie, versión del sistema operativo, modelo de equipo, etc
- Control de sistema (System control) [com.mot.iden.device.AudioManager.Control, com.mot.iden.customercare.CustomerCare.WriteMsgConfig]
- Funciones que permiten que un MIDlet controle las configuraciones del equipo, tales como el volumen del mismo
Funciones que permiten que un MIDlet reciba datos de la localización física de un equipo. Este grupo está sujeto a ser controlado por las pólizas de privacidad de GPS en el equipo
La referencia en corchetes después del nombre de cada grupo es el prefijo de texto que se ingresa en el atributo
MIDlet-Permissions:
del archivo JAD para establecer que el MIDlet requiere ese permiso (más detalles a continuación).
A un MIDlets se le otorga o niega acceso a las funciones dependiendo del nivel de seguridad que éste reciba:
- Fabricante (Manufacturer domain)
- incluye MIDlets desarrollados por o a pedido de Motorola
- Operador (Operator domain ú OPA)
- incluye MIDlets desarrollados por o a pedido de Nextel
- Tercero Confiable (Trusted Third Party domain ó TTP)
- incluye MIDlets de terceros que hayan recibido aprobación de Motorola y Nextel (y que no requieran el acceso necesario otorgado por el nivel operador), expresado como una firma digital en el archivo JAD del MIDlet a través de un proceso de firma digital
- Tercero Desconocido (Untrusted domain)
- incluye cualquier otro MIDlet que no tenga una firma digital en el archivo JAD
Dependiendo del nivel de seguridad, un MIDlet puede recibir varios niveles de acceso para ejecutar las funciones en un grupo:
- Siempre Permitido(Allowed)
- otorga permiso explícito para un grupo de funciones basado exclusivamente en el dominio de seguridad del MIDlet. Cuando un grupo de funciones tiene este nivel de permiso, no requiere ninguna interacción del usuario para que la función opere.
- General(Blanket)
- otorga permiso explícito para un MIDlet para un grupo de funciones específico hasta que el MIDlet sea borrado del equipo o hasta que el usuario cambie el permiso. Las aplicaciones con permiso General generan una alerta que le pide al usuario que confirme, una sola vez, si la función puede o no completar su operación
- Sesión (Session)
- otorga permiso para que un MIDlet de acceso a un grupo de funciones específico durante esa operación del MIDlet. El usuario debe confirmar solamente una vez por sesión, pero cada vez que se vuelve a iniciar el MIDlet debe dar su permiso
- Una vez (Oneshot)
- permite que el MIDlet le de acceso a un grupo de funciones pero el usuario deberá confirmar ese permiso cada vez que la función sea llamada
- Negado (Deny)
- impide que el MIDlet de acceso a un grupo de funciones específico si el nivel de seguridad del MIDlet bloquea esa función
La matriz que presenta las combinaciones de niveles de seguridad, grupos de funciones y permisos disponibles viene a continuación:
| Grupo de Funciones | Fabricante | Operador | Tercero Confiable | Tercero Desconocido | |
|
Phone Call Receive |
Patrón | A | A | A | A |
| Otros | B, S, O | B, S, O | B, S, O | B, S, O | |
| Messaging | Patrón | A | A | O | O |
| Otros | B, S, O | B, S, O | S | S | |
| Application Auto Invocation | Patrón | A | A | S | S |
| Otros | B, S, O | B, S, O | B, O | B, O | |
| Multimedia recording | Patrón | A | A | S | O |
| Otros | B, S, O | B, S, O | B | S | |
| Read User Data Access | Patrón | A | A | O | O |
| Otros | B, S, O | B, S, O | S, B | N/A | |
| Write User Data Access | Patrón | A | A | O | O |
| Otros | B, S, O | B, S, O | S, B | N/A | |
| System Information Access | Patrón | A | A | S | O |
| Otros | B, S, O | B, S, O | O, B | N/A | |
| System Control | Patrón | A | A | O | O |
| Otros | B, S, O | B, S, O | N/A | N/A | |
| GPS Location | Patrón | A | A | B | B |
| Otros | B, S, O | B, S, O | S, O | S, O | |
| Network Access | Patrón | A | A | A | A |
| Otros | B, S, O | B, S, O | B, S, O | B, S, O | |
| Local Connectivity | Patrón | A | A | A | A |
| Otros | B, S, O | B, S, O | B, S, O | B, S, O |
| KEY: | |
| A – "Always Allowed" -- Siempre permitido, nunca pide permiso | S – "Session" -- Sesión, pide permiso una vez por instalación |
| B – "Blanket" -- Genereal, pide permiso sólo una vez por ejecución | O – "Oneshot" -- Una vez, pide permiso cada vez |
Firmas digitales durante el proceso de desarrollo
El SDK de Motorola iDEN para J2ME (MIDP 2.0) incluye una herramienta de firmas digitales que permite que un MIDlet opere bajo los niveles de Tercero Confiado ú Operador por 48 horas en un solo equipo. Esta herramienta se usa durante el proceso de desarrollo. Para firmar un MIDlet con le herramienta, haga lo siguiente:
- Usando el Manifest/JAD Editor del SDK, visite la lengüeta "Security", y agregue los APIs que esté usando que estén cubiertos bajo los niveles de seguridad listados arriba (aquellos que se ven arriba entre corchetes). Tenga en cuenta que también puede agregar estos valores manualmente en el JAD con un editor de texto, pero tenga en mente que si no tiene el número exacto de comas y espacios entre cada declaración, el proceso de firma digital fallará.
- Una vez que el JAD haya sido editado, haga click en "JAD Sign" en la barra, y elija TTP para Tercero Confiado ("Trusted Third Party") ú OPA para Operador ("Operator"), dependiendo de los permisos que requiera
- Ingrese el IMEI del equipo en el cual va a probar el MIDlet. La firma generada por la herramienta está ligada al IMEI, y sólo funcionará en el equipo con ese IMEI
- Haga click en "Sign". Si todo resulta exitoso, recibirá el mensaje "sign successfully". Desde este momento, la aplicación tendrá permiso de operar bajo el nivel de seguridad indicado durante el proceso de firma por 48 horas. Una vez que caduque la firma, tendrá que re-firmarla y re-instalarla en el equipo.
Si tiene dificultades con la herramienta de firma, verifique lo siguiente:
- Verifique que su configuración del Java 2 Standard Edition (J2SE) esté correcta. Si recibe un mensaje "failed to sign", la causa más probable es que keytool.exe (parte del Java Development Kit que viene con J2SE) no esté declarado en su variable PATH. Encuentre dónde está keytool.exe (generalmente en el directorio bin\ dentro del directorio del JDK) y ponga ese directorio en la declaración del PATH.
- Verifique que el archivo JAD no esté bloquado para la escritura, y que sea editable.
- Si la firma completa con éxito pero recibe un "Authentication Error" una vez que instala el MIDlet en el equipo, puede deberse a que ingresó un IMEI errado en la herramienta de firma. Asegúrese que tiene el IMEI correcto pulsando las teclas
# * MENU flecha_derecha
en la pantalla principal del equipo;
- Si su archivo JAR contiene archivos tipo .class que nunca serían invocados, puede también resultar en un "authentication error". Esto puede ocurrir si se creó una clase que luego se decidió no usar, y que las referencias a esta clase se eliminaron del código fuente luego de una primera compilación. Intente borrar todos los archivos tipo .class en el directorio de su proyecto y vuelva a compilar su aplicación antes de firmarla nuevamente
.
Firmas digitales en producción o para pruebas en campo
Es importante tener en menta que una firma digital no se requiere para que gran parte de estas funciones operen de manera aceptable, ya que en la mayoría de los casos con la confirmación del usuario operarán las funciones. Sólo tres tipos de funcionalidades requieren una firma digital en nivel OPA: com.moto.iden.CustomerCare.getMyInfo, com.moto.iden.CustomerCare.getClientInfo, platformRequest("http://*")) y las funciones que permiten cambiar el volumen del equipo. En la gran mayoría de los otros casos, los permisos que se establecen por defecto causan la operación más recomendada, ya que notifican al usuario que alguna operación va a ocurrir. En casos donde esto no sea deseable (como por ejemplo en las soluciones empresariales donde el usuario no debe tener la opción de prevenir ciertas operaciones), posiblemente sea de beneficio obtener una firma que siempre otorgue permisos para las funciones correspondientes.
Cuando su aplicación esté lista para ser lanzada, y si ésta requiere una firma TTP ú OPA, debe pedir una firma digital del mercado Nextel en el cual ejecutará la aplicación. Si ya tiene un contacto establecido con personal de ventas de datos o con un representante del grupo de mercadotecnia de Nextel en su país, le recomendamos contactar a esa persona primero. Si desea pedir una firma digital y no tiene un contacto en su mercado, por favor póngase en contacto con nosotros y lo guiaremos con gusto.
Una aplicación firmada por Nextel o Motorola bajo los niveles TTP ú OPA no tienen el límite de 48 horas o restricciones sobre el número de equipos en los que puede ejecutar la aplicación. Cada vez que recompile su aplicación o cause alguna modificación al JAR del equipo, requerirá una firma nueva.
- Inicie sesión o regístrese para enviar comentarios
- 2471 lecturas
