ES2352556T3 - Sistema y método de firma mediante código por software. - Google Patents

Sistema y método de firma mediante código por software. Download PDF

Info

Publication number
ES2352556T3
ES2352556T3 ES05024662T ES05024662T ES2352556T3 ES 2352556 T3 ES2352556 T3 ES 2352556T3 ES 05024662 T ES05024662 T ES 05024662T ES 05024662 T ES05024662 T ES 05024662T ES 2352556 T3 ES2352556 T3 ES 2352556T3
Authority
ES
Spain
Prior art keywords
software application
signature
digital signature
software
hash algorithm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES05024662T
Other languages
English (en)
Inventor
David P. Yach
Michael S. Brown
Herbert A. Little
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=27398521&utm_source=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2352556(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Research in Motion Ltd filed Critical Research in Motion Ltd
Application granted granted Critical
Publication of ES2352556T3 publication Critical patent/ES2352556T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1483Countermeasures against malicious traffic service impersonation, e.g. phishing, pharming or web spoofing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/067Network architectures or network communication protocols for network security for supporting key management in a packet data network using one-time keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Circuits Of Receivers In General (AREA)
  • Electrotherapy Devices (AREA)
  • Plural Heterocyclic Compounds (AREA)
  • Container Filling Or Packaging Operations (AREA)

Abstract

Un método para controlar el acceso a una interfaz de programación de aplicación (API) sensible que tiene un identificador de firma en un dispositivo móvil (62), que comprende las etapas de: registrar uno o más desarrolladores de software en los que se confía para desarrollar la aplicación de software (66) que acceda a la API sensible; recibir un algoritmo de Hash de una aplicación de software; determinar si el algoritmo de Hash ha sido enviado por un desarrollador de software registrado; y generar una firma digital (96) utilizando el algoritmo de Hash de la aplicación de software (66) y una identificación de firma (94) que corresponde al identificador de firma (92) cuando el algoritmo de Hash ha sido enviado por el desarrollador de software registrado; en el que la firma digital (96) y la identificación de firma (94) son agregadas a la aplicación de software (66); y el dispositivo móvil (62) verifica la autenticidad de la firma digital (96) para controlar el acceso a la API sensible mediante la aplicación de software (66) cuando la identificación de firma (94) se corresponde con el identificador de firma (92).

Description

ANTECEDENTES
1. CAMPO DE LA INVENCIÓN
Esta invención está relacionada en general con el campo de los protocolos de seguridad para aplicaciones de software. 5 Más en particular, la invención proporciona un sistema y método de firma mediante código que está adaptado perfectamente en particular para las aplicaciones Java® para los dispositivos móviles de comunicaciones, tal como los Asistentes Digitales Personales (PDA), teléfonos celulares, y dispositivos de comunicaciones radioeléctricas bilaterales (denominados colectivamente de ahora en adelante como “dispositivos móviles” o sencillamente “dispositivos”).
2. DESCRIPCIÓN DE LA TÉCNICA RELACIONADA 10
Son conocidos los protocolos de seguridad que incluyen esquemas de firma mediante códigos por software. Típicamente, dichos protocolos de seguridad se utilizan para asegurar la fiabilidad de las aplicaciones de software que se descargan desde Internet. En un esquema típico de firma mediante código por software, se encuentra asociada una firma digital a la aplicación de software que identifica al desarrollador del software. Una vez que el software se descarga por el usuario, el usuario tiene que utilizar típicamente su propia evaluación para determinar si la aplicación del software 15 es fiable o no, basándose solamente en su conocimiento de la reputación del desarrollador del software. Este tipo de esquema de firma mediante código no asegura que la aplicación de software escrita por una tercera parte para un dispositivo móvil pueda interactuar debidamente con las aplicaciones nativas del dispositivo y con otros recursos. Debido a que los protocolos de las firmas por código típicas no son seguros y que se basan solo en el juicio del usuario, existe un riesgo serio de que aplicaciones de software del tipo de “caballo de Troya” puedan ser descargadas e 20 instaladas en un dispositivo móvil.
La exposición “Handbuch der Chipkarten” (Manual de las tarjetas de chip) de W. Rankl / W. Effing. Edición 3ª, de 1999, describe el control de acceso mediante métodos a múltiples miniaplicaciones o subprogramas de carga segura en un Sistema de entorno Java Card.
Permanece también la necesidad de operadores de redes que tengan un sistema y método para mantener el control 25 sobre las aplicaciones de software que se activan en los dispositivos móviles.
Permanece la necesidad adicional en las redes de 2,5G y 3G en las que los clientes de corporaciones o bien los operadores de redes les gustaría controlar los tipos de software en los dispositivos suministrados a sus empleados.
SUMARIO
Se proporciona un sistema y código de firma mediante código. El sistema de firma mediante código opera con 30 conjunción con una aplicación de software que tiene una firma digital y que incluye una plataforma de la aplicación, una interfaz de programación de la aplicación (API), y una máquina virtual. La interfaz API está configurada para enlazar la aplicación de software con la plataforma de la aplicación. La máquina virtual verifica la autenticidad de la firma digital con el fin de controlar el acceso a la API mediante la aplicación del software.
Un sistema de firma por código para la operación en conjunción con una aplicación de software que tiene una firma 35 digital, de acuerdo con otra realización de la invención, que comprende una plataforma de aplicación, una pluralidad de API, configurada cada una para enlazar la aplicación del software con un recurso en la plataforma de la aplicación, y una máquina virtual que verifica la autenticidad de la firma digital, con el fin de controlar el acceso a la API por la aplicación del software, en el que la maquina virtual verifica la autenticidad de la firma digital con el fin de controlar el acceso a la pluralidad de API por la aplicación del software. 40
De acuerdo con una realización adicional de la invención, un método de controlar el acceso a las interfaces de programación de aplicaciones sensibles en un dispositivo móvil que comprende las etapas de cargar una aplicación de software en el dispositivo móvil que requiere el acceso a una API sensible, determinando si la aplicación de software incluye o no una firma digital asociada con la API sensible, y si la aplicación de software no incluye una firma digital asociada con la API sensible, denegando entonces el acceso de la aplicación de software a la API sensible. 45
En otra realización de la invención, un método para controlar el acceso a una interfaz de programación de la aplicación (API) en un dispositivo móvil mediante una aplicación de software creada por un desarrollador de software que comprende las etapas de recibir la aplicación de software desde el desarrollador de software, revisando la aplicación de software para determinar si puede acceder a la API, si la aplicación de software puede acceder a la API, y asociando entonces una firma digital a la aplicación de software, verificando la autenticidad de una firma digital asociada con una 50 aplicación del software, y proporcionando el acceso a la API en las aplicaciones de software para las cuales es auténtica la firma digital asociada.
Un método para restringir el acceso a una interfaz API en un dispositivo móvil, de acuerdo con una realización adicional de la invención, que comprende las etapas de registrar uno o más desarrolladores de software de confianza probada
para diseñar aplicaciones de software que tengan acceso a la API sensible, recibiendo un algoritmo de Hash de una aplicación de software, determinando si la aplicación del software fue diseñada por uno de los desarrolladores de software registrados, y si la aplicación de software fue diseñada por uno de los desarrolladores de software registrados, generándose entonces una firma digital utilizando el algoritmo de Hash de la aplicación de software, en el que la firma digital puede asociarse a la aplicación del software, y en el que el dispositivo móvil verifica la autenticidad de la firma 5 digital con el fin de controlar el acceso a la interfaz API sensible por la aplicación de software.
En una realización adicional más, un método para restringir el acceso a las interfaces de programación de aplicaciones en un dispositivo móvil que comprende las etapas de cargar una aplicación de software en el dispositivo móvil que requiere el acceso a una o más interfaces API, determinando si el software de aplicación incluye o no una firma digital asociada con el dispositivo móvil, y si la aplicación de software no incluye una firma digital asociada con el dispositivo 10 móvil, denegando entonces el acceso a la aplicación de software de una ó más API.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama que muestra un protocolo de firma de código de acuerdo con una realización de la invención;
la figura 2 es un diagrama de flujo del protocolo de firma de código descrito anteriormente con referencia a la figura 1;
la figura 3 es un diagrama de bloques de un sistema de firma por código en un dispositivo móvil; 15
la figura 3A es un diagrama de bloques de un sistema de firma por código en una pluralidad de dispositivos móviles;
la figura 4 es un diagrama de flujo que muestra la operación del sistema de firma por código descrito anteriormente con referencia a la figura 3 y a la figura 3A;
la figura 5 es un diagrama de flujo que muestra la gestión de las autoridades de firma por código descrita con referencia a la figura 3A; y 20
la figura 6 es un diagrama de bloques de un dispositivo de comunicaciones móviles en el cual puede ser implementado un sistema y método de firma por código.
DESCRIPCIÓN DETALLADA
Con referencia ahora a las figuras de los dibujos, la figura 1 es un diagrama que muestra un protocolo de firma por código de acuerdo con una realización de la invención. El desarrollador de aplicaciones 12 crea una aplicación de 25 software 14 (aplicación Y) para un dispositivo móvil que requiere el acceso una o más interfaces API sensibles en el dispositivo móvil. La aplicación de software Y 14 puede ser, por ejemplo, una aplicación Java, que opera en una máquina virtual Java instalada en el dispositivo móvil. Una API habilita la aplicación de software Y para hacer de interfaz con una plataforma de la aplicación que puede incluir, por ejemplo, recursos tales como el hardware del dispositivo, sistema operativo y software central y modelos de datos. Con el fin de llamadas de función o bien para interactuar con 30 dichos recursos del dispositivo, la aplicación de software Y tiene que tener acceso a una o más API. Las API pueden por tanto “puentear” una aplicación de software y los recursos asociados del dispositivo. En esta descripción y en las reivindicaciones adjuntas, las referencias al acceso de las API deberán ser interpretadas en el sentido de incluir el acceso de una API de forma que permite que la aplicación de software Y interactúe con uno o más recursos del dispositivo correspondientes, Proporcionando el acceso a cualquier API se permite por tanto que una aplicación de 35 software Y pueda interactuar con los recursos asociados del dispositivo, por lo que denegando el acceso a una API se impide que la aplicación se software Y pueda interactuar con los recursos asociados. Por ejemplo, una API de base datos puede comunicarse con un fichero del dispositivo o un sistema de almacenamiento de datos, y tener acceso a la API de la base de datos que proporcionaría la interacción entre una aplicación de software Y y el fichero o el sistema de almacenamiento de datos. La API de la interfaz de usuario (UI) se comunicaría con los controladores y/o el software de 40 control de los componentes del dispositivo tal como una pantalla, teclado y cualesquiera otros componentes que proporcionen la salida hacia el usuario o acepten la entrada del usuario. En un dispositivo móvil, una API de radio puede proporcionarse tan bien como una interfaz para los recursos de comunicaciones radioeléctricas tales como un transmisor y un receptor. De forma similar, una interfaz API criptográfica puede proporcionarse para interactuar con un módulo de criptografía que pueda implementar algoritmos en un dispositivo. Estos son ejemplos meramente ilustrativos 45 de API que pueden proporcionarse en un dispositivo. El dispositivo puede incluir cualquiera de esta API a modo de ejemplo, o bien diferentes API en lugar de la adición en las descritas anteriormente.
Preferiblemente, cualquier API puede ser clasificada como sensible por un fabricante de dispositivos móviles, o posiblemente por un autor de API, un operador de una red radioeléctrica, un propietario u operador del dispositivo, o alguna otra entidad que puede estar afectada por un virus o código malicioso en una aplicación de software del 50 dispositivo. Por ejemplo, el fabricante del dispositivo móvil puede clasificar como sensibles aquellas API que hagan de interfaz con las rutinas criptográficas, funciones de comunicaciones radioeléctricas, o modelos de datos de propietario tales como un libro de direcciones o entradas de calendario. Para la protección contra el acceso no autorizado de estas API sensibles, se precisa que el desarrollador de la aplicación 12 pueda obtener una o más firmas digitales del fabricante del dispositivo móvil o bien otra entidad que esté clasificada como sensible por las API, o bien a partir de una 55
autoridad 16 de firmas por código que actúe en nombre del fabricante o bien otra entidad con interés en la protección del acceso a las API del dispositivo sensible, y asociando la firma(s) a la aplicación de software Y 14.
En una realización la firma digital se obtiene para API sensible o librería que incluye una API sensible para la cual se requiere el acceso de la aplicación de software. En algunos casos, son deseables múltiples firmas. Esto permitiría un proveedor de servicios, compañía o bien un operador de redes para restringir algunas o todas las aplicaciones de 5 software cargadas o actualizadas en un conjunto en particular de dispositivos móviles. En este escenario de múltiples firmas, todas las API están restringidas y bloqueadas hasta que se verifique una firma “global” para una aplicación de software. Por ejemplo, una compañía puede desear impedir que sus empleados puedan ejecutar cualesquiera aplicaciones de software en sus dispositivos sin antes obtener un permiso del departamento de tecnología de información corporativa o del departamento de servicios de ordenadores. Todos los mencionados dispositivos móviles 10 de la corporación pueden estar configurados entonces para que precisen de la verificación de al menos una firma global antes de que pueda ejecutarse una aplicación de software. El acceso a las API de los dispositivos sensibles y a las librerías, si las hubiera, podría estar restringido adicionalmente, dependiendo de la verificación de las firmas respectivas digitales correspondientes.
La representación ejecutable binaria de la aplicación de software Y 14 puede ser independiente del tipo en particular del 15 dispositivo móvil o modelo de un dispositivo móvil. La aplicación en particular Y 14 puede estar por ejemplo en un formato binario de escritura una sola vez y ejecutable en cualquier parte, tal como es el caso con las aplicaciones de software de Java. No obstante, puede ser deseable tener una firma digital para cada tipo o modelo de dispositivo móvil, o alternativamente para cada plataforma o fabricante del dispositivo móvil. En consecuencia, la aplicación de software Y 14 puede estar sometida a varias autoridades de firmas por código si la aplicación de software Y 14 está dirigida a 20 varios dispositivos móviles.
La aplicación de software Y 14 se envía desde el desarrollador de software 12 a la autoridad 16 de firmas por código. En la realización mostrada en la figura 1, la autoridad de firmas por código 16 revisa la aplicación de software Y 14, aunque se describe con más detalles más adelante, y se contempla que la autoridad 16 de firmas por código puede también considerar en su lugar la identidad del desarrollador del software 12, para determinar si la aplicación de software Y 14 25 debería estar firmada o no. La autoridad 16 de firmas por código es preferiblemente uno o más representantes del fabricante del dispositivo móvil, los autores de cualesquiera API sensible o posiblemente otros que tengan conocimiento de la operación de las API sensibles a las cuales tenga necesite tener acceso la aplicación de software.
Si la autoridad 16 de firmas por código determina que la aplicación de software Y 14 puede tener acceso a la API sensible y que por tanto deberá tener firma, entonces se generará una firma (no mostrada) para la aplicación de 30 software Y 14 por la autoridad 16 de firmas por código y asociada a la aplicación de software Y 14. La aplicación de software firmada Y 22, que comprende la aplicación de software Y 14 y la firma digital, es retornada entonces al desarrollador de la aplicación 12. La firma digital es preferiblemente una etiqueta que se genera utilizando una clave 18 de firma privada mantenida solamente por la autoridad 16 de firma por código. Por ejemplo, de acuerdo con un esquema de firmas, puede generarse un algoritmo de Hash de la aplicación de software Y 14, utilizando un algoritmo de 35 Hash tal como el Algoritmo de Hash Seguro SHA1, y utilizándose después con la clave de firma privada 18, para crear la firma digital. En algunos esquemas de firma, la clave de firma privada se utiliza para encriptar un algoritmo de Hash de la información a firmar, tal como la aplicación de software Y 14, mientras que en otros esquemas, la clave privada puede utilizarse con otras formas para generar una firma a partir de la información a firmar o una versión transformada de la información. 40
La aplicación de software firmada Y 22 puede ser entonces enviada al dispositivo móvil 28 o siendo descargada por el dispositivo móvil 28 a través de una red radioeléctrica 24. Se comprenderá, no obstante, que el protocolo de firmas por código de acuerdo con la presente invención no está limitado a las aplicaciones de software que se descarguen a través de una red radioeléctrica. Por ejemplo, en realizaciones alternativas, la aplicación de software firmada Y 22 puede ser descargada a un ordenador personal a través de una red de ordenadores y cargada en el dispositivo móvil a través de 45 un enlace serie, o bien puede adquirirse desde el desarrollador de aplicaciones 12 de cualquier otra forma y descargada en el dispositivo móvil. Una vez que la aplicación de software firmada Y 22 se cargue en el dispositivo móvil 28, cada firma digital será verificada preferiblemente con una clave de firma publica 20 antes de que la aplicación de software Y 14 tenga garantizado el acceso a una librería API sensible. Aunque la aplicación de software firmada Y 22 se cargue en un dispositivo, se observará que la aplicación de software que puede ser ejecutada eventualmente en el dispositivo es la 50 aplicación de software Y 14. Tal como se expuso anteriormente, la aplicación de software firmada Y 22 incluye la aplicación de software Y 14 y una o más firmas digitales asociadas (no mostradas). Cuando se verifican las firmas, la aplicación de software Y 14 puede ser ejecutada en el dispositivo y teniendo acceso a cualesquiera de las API para las cuales hayan sido verificadas las correspondientes firmas.
La clave de firma pública 20 corresponde a la clave de firma privada 18 mantenida por la autoridad de firma por código 55 16, y siendo instalada preferiblemente en el dispositivo móvil junto con la API sensible. No obstante, la clave pública 10 puede ser obtenida en su lugar a través de un repositorio de claves publicas (no mostrado), utilizando el dispositivo 28 o posiblemente un sistema de ordenador, e instalada en el dispositivo 28 según sea preciso. De acuerdo con una realización de un esquema de firmas, el dispositivo móvil 28 calcula un algoritmo de Hash de la aplicación de software Y 14 en la aplicación de software firmado Y 22, utilizando el mismo algoritmo de Hash que la autoridad de firmas por 60
código 16, y utiliza la firma digital y la clave de firma publica 20 para recuperar el algoritmo de Hash calculado por la autoridad de firmas 16. El algoritmo de Hash resultante calculado localmente y el algoritmo de Hash recuperado de la firma digital se comparan, y si los algoritmos de Hash son el mismo, queda velicada la firma. La aplicación de software Y 14 puede ser entonces ejecutada en el dispositivo 28 y teniendo acceso a cualesquiera API sensible para las cuales se haya verificado la firma(s) correspondiente. Tal como se ha expuesto anteriormente, la invención no está limitada en 5 forma alguna a este esquema de firma a modo de ejemplo ilustrativo en particular. Pueden utilizarse otros esquemas de firmas incluyendo además los esquemas de firmas de claves públicas, en conjunción con métodos y sistemas de firmas de códigos aquí descritos.
La figura 2 es un diagrama de flujo 30 del protocolo de firmas por código anteriormente descrito con referencia a la figura 1. El protocolo comienza en la etapa 32. En la etapa 34, un desarrollador de software escribe la aplicación de 10 software Y para un dispositivo móvil que requiere el acceso a una API o librería sensible que expone una API sensible (librería de API). Tal como se expuso anteriormente, algunas o todas las API en un dispositivo móvil pueden ser clasificadas como sensibles, requiriendo por tanto la verificación de una firma digital para obtener el acceso por cualquier aplicación de software, tal como la aplicación de software Y. En la etapa 36, la aplicación Y se comprueba por el desarrollador de software, utilizando preferiblemente un simulador de dispositivos en el cual ha sido inhabilitada la 15 función de verificación de la firma digital. De esta forma, el desarrollador de software puede depurar la aplicación de software Y antes de que se adquiera la firma digital a partir de la autoridad de firmas por código. Una vez que la aplicación de software Y haya sido escrita y depurada, se envía a la autoridad de firmas por código en la etapa 38.
En las etapas 40 y 42, la autoridad de firmas por código revisa la aplicación de software Y para determinar si deberá dar acceso o no a la API sensible, y si acepta o rechaza la aplicación de software. La autoridad de firmas por código puede 20 aplicar varios criterios para determinar si concede o no el acceso de la aplicación de software a la API sensible, incluyendo por ejemplo la magnitud del tamaño de la aplicación de software, los recursos del dispositivo a los que tienen acceso la API, la utilidad detectada de la aplicación de software, la interacción con otras aplicaciones de software, la inclusión de un virus o de otro código destructor, y si el desarrollador tiene o no una obligación contractual o bien otra configuración de negocios con el fabricante del dispositivo móvil. Los detalles adicionales de las autoridades de firmas 25 por código y los desarrolladores se describen más adelante con referencia a la figura 5.
Si la autoridad de firmas por código acepta la aplicación de software Y, entonces se asociará una firma digital, y preferiblemente una identificación de la firma, a la aplicación de software Y en la etapa 46. Tal como se expuso anteriormente, la firma digital puede ser generada mediante la utilización de un algoritmo de Hash de la aplicación de software Y, y una clave de firma privada 18. La identificación de la firma está descrita más adelante con referencia a las 30 figuras 3 y 4. Una vez que la firma digital y la identificación de la firma se encuentren asociadas con la aplicación de software Y para generar una aplicación de software firmada, la aplicación de software Y es retornada al desarrollador de software en la etapa 48. El desarrollador de software puede entonces dar licencia a la aplicación de software firmada Y a cargar en un dispositivo móvil (etapa 50). Si la autoridad de firmas por código rechaza la aplicación de software Y, no obstante, entonces se envía preferiblemente una notificación de rechazo al desarrollador de software (etapa 44), y la 35 aplicación de software Y estará inhabilitada para tener acceso a cualesquiera API asociadas con la firma.
En una realización alternativa, el desarrollador de software puede proporcionar a la autoridad de firmas por código solo un código de Hash de la aplicación de software Y, o bien proporcionar la aplicación de software Y en algún tipo de formato resumido. Si la aplicación de software Y es una aplicación Java, entonces los ficheros de clase binaria “*” independientes del dispositivo podrán ser utilizados en la operación del algoritmo de Hash, aunque los ficheros 40 dependientes del dispositivo tales como los ficheros “*.cod” utilizados por el concesionario de la presente aplicación pueden en su lugar ser utilizados en la operación de Hash o bien en otras operaciones de la firma digital cuando las aplicaciones de software tengan por objeto la operación en dispositivos en particular o en distintos tipos de dispositivos. Mediante el suministro de solo un algoritmo de Hash una versión resumida de la aplicación de software Y, el desarrollador de software puede tener la aplicación de software Y sin revelar el código de propietario a la autoridad de 45 firmas por código. El algoritmo de Hash de la aplicación de software Y, junto con la clave de la firma publica 18, pueden ser utilizados entonces por la autoridad de firmas por código, para generar la firma digital. En caso de enviar otra versión resumida de la aplicación de software Y a la autoridad de firmas por código, entonces la versión resumida puede ser utilizada de forma similar para generar la firma digital, en el supuesto de que el esquema o algoritmo de resumen, al igual que un algoritmo de Hash, genere diferentes salidas para las distintas entradas. Esto asegura que cualquier 50 aplicación tenga una versión resumida distinta y por tanto que una firma diferente pueda ser verificada solamente cuando se asocie a la aplicación de software correspondiente a partir de la cual se generó la versión resumida. Debido a que esta realización no habilita a la autoridad de firmas por código para revisar en su totalidad la aplicación de software en cuanto a virus y otros códigos destructivos, no obstante, podrá requerirse un proceso de registro entre el desarrollador de software y la autoridad de firmas por código. Por ejemplo, la autoridad de firmas por código puede 55 acordar por adelantado el proporcionar un acceso del desarrollador de software de confianza probada para un conjunto limitado de API sensibles.
En otra realización inclusive alternativa, la aplicación de software Y puede estar sometida a más de una autoridad de firmas por código. Cada autoridad de firmas puede ser por ejemplo responsable de las firmas para las aplicaciones de software para API sensibles en particular en un modelo en particular de dispositivo móvil o conjunto de dispositivos 60 móviles que soporten las API sensibles requeridas por la aplicación de software. Un fabricante, operador de redes de
comunicaciones móviles, proveedor de servicios, o un cliente de la corporación, por ejemplo, puede tener por tanto una autoridad de firma sobre el uso de API sensibles para su modelo(s) de dispositivos móviles en particular, o sobre los dispositivos móviles que operen en una red en particular, abonándose a uno o más servicios en particular, o distribuidos a los empleados de la corporación. La aplicación del software firmado puede incluir una aplicación de software y al menos una firma digital asociada para cada una de las autoridades firmantes. Incluso aunque estas autoridades de firma 5 en este ejemplo pudieran generar una firma para la misma aplicación de software, los distintos esquemas de verificación de la firma pueden estar asociados con las distintas autoridades de la firma.
La figura 3 es un diagrama de bloques de un sistema de firma por código 60 en un dispositivo móvil 62. El sistema 60 incluye una máquina virtual 64, una pluralidad de aplicaciones de software 66-70, una pluralidad de librerías API 72-78, y una plataforma de aplicaciones 80. La plataforma de aplicaciones 80 incluye preferiblemente todos los recursos del 10 dispositivo móvil 62 a los que puede tener acceso mediante las aplicaciones de software 66-70. Por ejemplo, la plataforma de aplicaciones puede incluir un hardware del dispositivo 82, el sistema 84 operativo del dispositivo móvil, o el software central y los modelos de datos 86. Cada librería API 72-78 incluye preferiblemente una pluralidad de API que hacen de interfaz con un recurso disponible en la plataforma de aplicaciones. Por ejemplo, una librería API podría incluir todas las API que hagan de interfaz con un programa de calendario y los modelos de datos de entrada del calendario. 15 Otra librería API podría incluir todas las API que hicieran de interfaz con el circuito de transmisión y funciones del dispositivo móvil 62. Incluso otra librería API podría incluir todos las API capaces de hacer de interfaz con los servicios de nivel inferior ejecutados por el sistema operativo 84 del dispositivo móvil. Adicionalmente, la pluralidad de librerías API 72-78 puede incluir tanto las librerías que exponen una API sensible 74 y 78, tal como una interfaz para una función criptográfica, como las librerías 72 y 76, a las que puede tenerse acceso sin exponer las API sensibles. De forma 20 similar, la pluralidad de aplicaciones de software 66-70 puede incluir las aplicaciones 66 y 70 de software firmadas que requieren el acceso a una o más API sensibles, y las aplicaciones de software sin firmar tales como 68. La máquina virtual 64 es preferiblemente un entorno de ejecución orientado a objetos, tal como el sistema J2ME® de Sun Micro System (Plataforma Java 2, Edición Micro), que gestiona la ejecución de todas las aplicaciones de software 66-70 que operen en el dispositivo móvil 62, y enlaza o vincula las aplicaciones de software 66-70 con las distintas librerías de las 25 API 72-78.
La aplicación de software Y 70 es un ejemplo de una aplicación de software. Cada aplicación de software firmado incluye una aplicación de software real tal como una aplicación de software Y que comprende el código de software a modo de ejemplo que puede ser ejecutado en la plataforma de aplicación 80, una o más identificaciones de la firma 94 y una o más firmas 96 digitales correspondientes. Preferiblemente cada firma digital 96 y la identificación firmada 30 asociada 94 en la aplicación de software firmado 66 ó 70 corresponde a una librería 74 ó 78 de las API para las cuales se precisa el acceso de la aplicación de software X o la aplicación de software Y. La librería 74 o 78 de las API sensibles puede incluir una o más API sensibles. En una realización alternativa, las aplicaciones de software firmadas 66 y 70 pueden incluir una firma digital 96 para API sensible dentro de una librería 74 ó 78 de las API. Las identificaciones 94 de la firma pueden ser enteros exclusivos o bien otros medios de relación de una firma digital 96 con una librería 74 o 78 de 35 las API específicas, API, plataforma de aplicaciones 80, o el modelo del dispositivo móvil 62.
La librería A 78 de las API es un ejemplo de una librería API que expone una API sensible. Cada librería 74 y 78 de las API que incluye una API sensible deberán incluir preferiblemente una cadena de la descripción 88, una clave de firma pública 20, y un identificador de firma 92. El identificador de firma 92 corresponde preferiblemente a una identificación de firma 94 en una aplicación 66 ó 70 de software firmado, y que habilita a la máquina virtual 64 para buscar la 40 coincidencia rápida con una firma digital 96 con una librería 74 ó 78 de las API. La clave de la firma publica 20 corresponde a la clave 18 de la firma privada mantenida por la autoridad de firma de código, y se utiliza para verificar la autenticidad de una firma digital 96. La cadena de descripción 88 puede ser por ejemplo una mensaje de texto que se visualice en el dispositivo móvil cuando se cargue una aplicación 66 ó 70 de software firmado, o alternativamente cuando la aplicación de software X ó Y intenta acceder a una API sensible. 45
Operativamente, cuando una aplicación de software firmado 68-70, que incluye respectivamente una aplicación de software X, Z ó Y, que requiere el acceso a una librería API sensible 74 ó 78, se carga en un dispositivo móvil, la máquina virtual 64 busca la firma digital 96 asociada con la librería API 74 ó 78. Preferiblemente, la firma digital apropiada 96 se localiza por la maquina virtual 74 por la coincidencia del identificador de la firma 92 en la librería API 74 o 78 con una identificación de firma 94 en la aplicación de software firmado. Si la aplicación de software firmado incluye 50 la firma digital apropiada 96, entonces la máquina virtual 64 verifica su autenticidad utilizando la clave de firma pública 20. A continuación, una ves que la firma 96 digital apropiada haya sido localizada y verificada, la cadena de descripción 88 se visualiza preferiblemente en el dispositivo móvil antes de que se ejecute la aplicación de software X o Y y tenga acceso a la API sensible. Por ejemplo, la cadena de descripción 88 puede visualizar un mensaje constatando que la “Aplicación Y está intentando tener acceso a la Librería A de la API”, y proporcionando por tanto al dispositivo móvil el 55 control final para conceder o denegar el acceso a la API sensible.
La figura 3A es un diagrama de bloques de un sistema de firmas digitales de códigos 61 en una pluralidad de dispositivos móviles 62E, 62F y 62G. El sistema 61 incluye una pluralidad de dispositivos móviles en el que se muestran solamente tres de los mismos, los dispositivos móviles 62E, 62F y 62G. Así mismo se muestra una aplicación de software firmado 70, incluyendo una aplicación de software Y a la cual se han asociado dos firmas digitales 96E y 96F 60 con las correspondientes identificaciones de firma 94E y 94F. En el sistema del ejemplo 61, cada par compuesto por la
firma digital y la identificación, 94E/96E y 94F/96F, corresponde un modelo de dispositivo móvil 62, la librería 78 de las API, o la plataforma asociada 80. Si las identificaciones de la firma 94E y 94F corresponden a diferentes modelos del dispositivo móvil 62, entonces cuando una aplicación de software Y que requiera el acceso a la librería 78 de la API sensible se cargue en el dispositivo móvil 62E, la maquina virtual 64 buscará la aplicación de software firmado 70 para una firma digital 96E asociada con la librería 78 de las API mediante la coincidencia del identificador 94E con el 5 identificador de firma 92. De forma similar, cuando una aplicación de software firmado 70 incluyendo una aplicación de software Y que requiere el acceso a una librería 78 de las API se carga en un dispositivo móvil 62F, la maquina virtual 64 en el dispositivo 62F busca la aplicación del software firmado 70 para una firma digital 96F asociada con la librería 78 de las API. No obstante, cuando una aplicación de software Y en una aplicación de software firmado 70 que requiere el acceso a una librería 78 de API sensible se carga en un modelo de dispositivo móvil para el cual el desarrollador de 10 software no ha obtenido la firma digital, el dispositivo 62G en el ejemplo de la figura 3A, la máquina virtual 64 en el dispositivo 64G no encuentra una firma digital asociada a la aplicación Y de software, y consecuentemente se deniega el acceso a la librería 78 de las API en el dispositivo 62G. Se observará a partir de la descripción anterior que la aplicación de software tal como la aplicación de software Y puede tener múltiples especificaciones del dispositivo, librerías específicas o firmas especificas de las API o bien alguna combinación de dichas firmas asociadas. De forma 15 similar, pueden configurarse diferentes requisitos de verificación de la firma para los distintos dispositivos. Por ejemplo, el dispositivo 62E puede precisar la verificación de la firma global, así como también las firmas adicionales para cualesquiera API sensible a la cual una aplicación de software precise el acceso con el fin de poder ejecutar la aplicación de software, mientras que el dispositivo 62F puede requerir la verificación de solo una firma global, y el dispositivo 62G puede requerir la verificación de firmas solamente para sus API sensibles. Es evidente también que el 20 sistema de comunicación puede incluir dispositivos (no mostrados) sobre los cuales una aplicación de software Y recibida como parte de una aplicación de software firmado tal como la 70 podrá ser ejecutada sin ninguna verificación de la firma. Aunque la aplicación de software firmado tiene una o más firmas asociadas al mismo, la aplicación de software Y podría posiblemente ser ejecutada en algunos dispositivos sin haberse verificado primeramente cualquiera de sus firmas. La firma de una aplicación de software no interfiere preferiblemente con su ejecución en dispositivos en 25 los cuales no esté implementada la verificación de la firma digital.
La figura 4 es un diagrama de flujo 100 que muestra la operación del sistema de firma por código descrita anteriormente con referencia a las figuras 3 y 3A. En la etapa 102, la aplicación de software se carga en un dispositivo móvil. Una vez que se haya cargado la aplicación de software, el dispositivo, preferiblemente utilizando una máquina virtual, determina si la aplicación de software requiere o no el acceso a cualesquiera librerías API que expongan una API sensible (etapa 30 104). En caso negativo, entonces la aplicación de software se enlaza con todas las librerías API requeridas y ejecutadas (etapa 118). Si la aplicación de software no requiere el acceso a las API sensibles, no obstante, entonces la máquina virtual verifica que la aplicación de software incluya una firma digital válida asociada con cualesquiera API sensibles a la cual se requiera el acceso en las etapas 106-116.
En la etapa 106, la maquina virtual recupera la clave de la firma publica 20 y el identificador de firma 92 de la librería API 35 sensible. El identificador de firma 92 se utiliza entonces por la maquina virtual en la etapa 108 para determinar si la aplicación de software tiene o no una firma digital asociada 96 con una identificación 94 de firma correspondiente. En caso negativo, entonces la aplicación de software no será aprobada para el acceso a las API sensibles por la autoridad de firma por código, y la aplicación de software queda impedida preferiblemente de ser ejecutada en la etapa 116. En realizaciones alternativas, la aplicación de software sin una firma digital apropiada 96 puede ser purgado del dispositivo 40 móvil, o bien se le puede denegar el acceso a la librería API que exponga la API sensible pero ejecutándose hasta un grado posible sin el acceso a la librería API. Se contempla también que se pueda invitar al usuario a que introduzca una entrada cuando falle la verificación de la firma, proporcionando por tanto al usuario el control de dichas operaciones subsiguientes como el purgado de la aplicación de software del dispositivo.
En caso de que una firma digital 96 correspondiente a la librería API sensible esté asociada a la aplicación de software y 45 esté localizada por la máquina virtual, entonces la máquina virtual utilizará la clave pública 20 para verificar la autenticidad de la firma digital 96 en la etapa 110. Esta etapa puede ser ejecutada, por ejemplo, mediante el uso del esquema de verificación de la firma descrito anteriormente o con otros esquemas alternativos de la firma. Si la firma digital 96 no es auténtica, entonces la aplicación de software preferiblemente no será ejecutada, o bien purgada o restringida en el acceso a las API sensibles, según lo descrito anteriormente, con referencia a la etapa 116. Si la firma 50 digital es auténtica, no obstante, entonces la cadena de descripción 88 será visualizada preferiblemente en la etapa 112, avisando al usuario del dispositivo móvil de que la aplicación de software requiere el acceso a la API sensible, e invitando al usuario a la autorización para ejecutar o cargar la aplicación de software (etapa 114). Cuando se tienen que verificar más de una firma para una aplicación de software, entonces las etapas 104-110 se repiten preferiblemente para firma antes de que se invite al usuario en la etapa 112. Si el usuario del dispositivo móvil en la etapa 114 autoriza la 55 aplicación de software, entonces podrá ser ejecutado y enlazado a la librería de las API en la etapa 118.
La figura 5 es un diagrama de flujo 200 que muestra la gestión de las autoridades de firma por código descrita con referencia a la figura 3A. En la etapa 210, un desarrollador de software ha desarrollado una aplicación de software nueva que tiene por objeto ser ejecutada en uno o más modelos o tipos de dispositivos. Los dispositivos de objetivo pueden incluir conjuntos de dispositivos de diferentes fabricantes, conjuntos de modelos o tipos de dispositivos del 60 mismo fabricante, o generalmente conjuntos de dispositivos que tengan una firma en particular y distintos requisitos de verificación. El término “dispositivo de objetivo” se refiere a cualquier conjunto de dispositivos que tengan un requisito de
firma común. Por ejemplo, un conjunto de dispositivos que requieran la verificación de la firma global especifica del dispositivo para la ejecución de las aplicaciones de software puede comprender un dispositivo de objetivo, y dispositivos que requieran una firma global y firmas adicionales para las API sensibles que puedan ser parte de más de un conjunto de dispositivos de objetivo. La aplicación de software puede estar escrita en una forma independiente del dispositivo mediante la utilización de al menos una API conocida, soportada al menos en un dispositivo de objetivo con una librería 5 API. Preferiblemente, la aplicación de software desarrollada tiene por objeto ser ejecutable en varios dispositivos de objetivo, en donde cada uno tiene al menos una librería API.
En la etapa 220, una autoridad de firma por código para un dispositivo de objetivo recibe una petición de firma de objetivo desde el desarrollador. La petición de firma de objetivo incluye la aplicación de software o un algoritmo de Hash de la aplicación de software, un identificador del desarrollador, así como también al menos un identificador del 10 dispositivo de objetivo, el cual identifica el dispositivo de objetivo para el cual se solicita la firma. En la etapa 230, la autoridad de la firma consulta una base de datos 235 de desarrolladores o bien otros registros, para determinar si confiar o no en el desarrollador 220. Esta determinación puede efectuarse de acuerdo con varios criterios expuestos anteriormente, tales como si el desarrollador tiene o no una obligación contractual o si ha entrado en algún tipo de acuerdo de negocios con un fabricante del dispositivo, operador de redes, proveedor de servicios o fabricante del 15 dispositivo. Si es desarrollador es fiable, entonces el método avanza hasta la etapa 240. No obstante, si el desarrollador no es fiable, entonces la aplicación de software será rechazada (250) y no será firmada por la autoridad de la firma. Suponiendo que el desarrollador fuera fiable, en la etapa 240 la autoridad de la firma determina si tiene la clave privada de objetivo correspondiente al identificador de objetivo mediante la consulta de un almacenamiento de claves privadas tal como una base de datos 245 de claves privadas. Si se encuentra la clave privada de objetivo, entonces se generará 20 una firma digital para la aplicación de software en la etapa 260 y la firma digital o la aplicación de software firmado incluyendo la firma digital asociada con la aplicación de software serán retornadas al desarrollador en la etapa 280. No obstante si la clave no se encuentra en la etapa 240, entonces la aplicación de software será rechazada en la etapa 270 y no se generará ninguna firma digital para la aplicación de software.
Ventajosamente, si las autoridades de firmas de objetivo siguen realizaciones compatibles del método descrito en la 25 figura 5, una red de autoridades de firmas de objetivo podrá ser establecida con el fin de gestionar rápidamente las autoridades de firma por código y un proceso de firmas por código de comunidades de desarrolladores para múltiples objetivos con una baja probabilidad de un código destructivo.
En caso de haber encontrado un código problemático o destructivo en una aplicación de software o bien que sea sospechosa de haber demostrado dicho comportamiento al ejecutar la aplicación de software en un dispositivo, 30 entonces el registro o los privilegios del correspondiente desarrollador de la aplicación con cualquiera de las autoridades de firmas podrán ser suspendidos o revocados, puesto que la firma digital proporciona una auditoria a través de la cual el desarrollador de una aplicación de software problemático puede ser identificado. En dicho caso, se puede informar de la revocación mediante su configuración para descargar periódicamente las listas de revocación de la firma. Si las aplicaciones para las cuales se han revocado las firmas digitales correspondientes se ejecutan en un dispositivo, el 35 dispositivo puede detener la ejecución de cualquier mencionada aplicación y posiblemente purgar la aplicación de software de su almacenamiento local. Si se prefiere, los dispositivos pueden ser configurados también para re-ejecutar las verificaciones de la firma digital, por ejemplo de forma periódica o cuando se descargue la nueva lista de revocación.
Aunque la firma digital generada por una autoridad de firmas es dependiente de la autenticación del desarrollador de software y de la confirmación de que el desarrollador de la aplicación haya sido registrado debidamente, la firma digital 40 se generará preferiblemente a partir de un algoritmo de Hash o bien otra versión transformada de la aplicación de software, y siendo por tanto específica de la aplicación. Esto contrasta con los conocidos esquemas de firmas por código, en los cuales se concede el acceso a las API para cualesquiera aplicaciones de software que lleguen desde los desarrolladores o autores de aplicaciones de plena confianza. En los sistemas de firma por código y en los métodos aquí descritos, el acceso a las API se concede sobre la base de aplicación por aplicación, y por tanto de este modo 45 puede controlarse o regularse de forma más estricta.
La figura 6 es un diagrama de bloques de un dispositivo de comunicaciones móviles en el cual pueden implementar el sistema y método de firma por código. El dispositivo de comunicaciones móviles 610 es preferiblemente un dispositivo de comunicaciones bilaterales, que tiene al menos unas capacidades de voz y de comunicaciones de datos. El dispositivo tiene preferiblemente la capacidad de comunicarse con otros sistemas de ordenadores de Internet. 50 Dependiendo de la funcionalidad proporcionada por el dispositivo, el dispositivo puede denominarse como dispositivo de mensajería de datos, buscapersonas bilateral, teléfono celular con capacidades de mensajería de datos, dispositivo de Internet sin hilos, o dispositivo de comunicaciones de datos (cono sin capacidades de telefonía).
Cuando el dispositivo 610 está habilitado para las comunicaciones bilaterales, el dispositivo incorporará un subsistema 611 de comunicaciones, incluyendo un receptor 612, un transmisor 614, y los componentes asociados tales como uno o 55 más, preferiblemente embebidos o internos, elementos de antena 616 y 618, osciladores locales (LO) 613, y un modulo de procesamiento tal como un procesador de señales digitales (DSP) 620. Tal como es evidente para los técnicos especializados en la técnica de las comunicaciones, el diseño particular del subsistema de comunicaciones 611 dependerá de la red de comunicaciones en las que el dispositivo tiene por objeto ser instalado para su operación. Por ejemplo, el dispositivo 610 destinado al mercado de América del Norte puede incluir un subsistema de comunicaciones 60
811 diseñado para operar dentro del sistema de comunicaciones móviles Mobitex® o el sistema de comunicaciones móviles DataTAC®, mientras que el dispositivo 610 que tiene por objeto su utilización en Europa puede incorporar un subsistema 611 de comunicaciones del Servicio de Radio por Paquetes (GPRS).
Los requisitos de acceso de red variarán también dependiendo del tipo de red 919. Por ejemplo, en las redes de Mobitex y DataTAC, los dispositivos móviles tales como el 610 están registrados en la red utilizando un número de identificación 5 exclusivo asociado con cada dispositivo. En las redes GPRS, no obstante, el acceso de red está asociado con un abonado o usuario de un dispositivo 610. El dispositivo GPRS requiere por tanto un módulo de identidad de abonado (no mostrado), denominado comúnmente como la tarjeta SIM, con el fin de operar en la red GPRS. Sin una tarjeta SIM, el dispositivo GPRS no será totalmente funcional. Las funciones de comunicaciones locales o fuera de la red (si las hubiere) pueden ser operables, pero el dispositivo 610 será incapaz de llevar a cabo cualesquiera funciones que 10 incluyan comunicaciones a través de la red 619, distintas a cualquiera de las operaciones requeridas legalmente, tales como la llamada de emergencia del número “911”.
Al haber completado los procesos de registro o activación de la red requerida, el dispositivo 610 puede enviar y recibir señales de comunicaciones a través de la red 619. Las señales recibidas por la antena 616 a través de la red de comunicaciones 619 son introducidas en el receptor 612, el cual puede ejecutar dichas funciones del receptor de tipo 15 común tales como la amplificación, conversión de reducción de la frecuencia, filtrado, selección de canal y similares, y en el sistema del ejemplo mostrado en la figura 6, la conversión analógica-digital. La conversión analógica-digital de la señal recibida permite funciones de comunicaciones más complejas tales como la demodulación y la decodificación a ejecutar en el DSP 620. De una forma similar, las señales a transmitir son procesadas, incluyendo la modulación y la codificación, por ejemplo, mediante el DSP 620 y su introducción en el transmisor 614 para la conversión digital-20 analógica, conversión de elevación de la frecuencia, filtrado, amplificación y transmisión a través de la red de comunicaciones 619 por medio de la antena 618.
El procesador DSP 620 no solo procesa las señales de comunicaciones, sino también proporciona el control del receptor y del transmisor. Por ejemplo, las ganancias aplicadas a las señales de comunicaciones en el receptor 612 y el transmisor 614 pueden estar controladas adaptativamente a través de algoritmos de control de ganancia automática 25 implementados en el DSP 620.
El dispositivo 610 incluye preferiblemente un microprocesador 638 que controla la operación completa del dispositivo. Las funciones de comunicaciones, incluyendo al menos las comunicaciones de datos y voz, se ejecutan a través del subsistema de comunicaciones 611. El microprocesador 638 interactúa también con subsistemas de dispositivos adicionales o con recursos tales como la pantalla 622, memoria Flash 624, memoria de acceso aleatorio (RAM) 626, 30 subsistemas de entradas/salidas (I/O) auxiliares 628, puerto serie 630, teclado 632, altavoz 634, micrófono 636, subsistema de comunicaciones de cobertura corta 640 y cualesquiera subsistemas de dispositivos, denominados generalmente como 642. Las API, incluyendo las API sensibles que requieren la verificación de una o más firmas digitales correspondientes antes de que pueda concederse el acceso, pueden proporcionarse en el dispositivo 610 para hacer de interfaz entre las aplicaciones de software y cualquiera de los recursos mostrados en la figura 6. 35
Algunos de los subsistemas mostrados en la figura 6 ejecutan funciones relacionadas con las comunicaciones, mientras que otros subsistemas pueden proporcionar funciones “residentes” o funciones incorporadas en el propio dispositivo. Algunos subsistemas tales como el teclado 632 y la pantalla 622 por ejemplo pueden utilizarse para ambas funciones relacionadas con las comunicaciones, tales como la introducción de un mensaje de texto para la transmisión a través de la red de comunicaciones, y funciones residentes en el propio dispositivo tales como una calculadora o lista de tareas. 40
El software del sistema operativo utilizado por el microprocesador 638, y posiblemente las API para su acceso por las aplicaciones de software, está almacenado preferiblemente en una memoria persistente tal como la memoria Flash 624, la cual puede ser en su lugar una memoria de solo lectura (ROM), o un elemento de almacenamiento similar (no mostrado). Los técnicos expertos en la técnica observaran que el sistema operativo, las aplicaciones de software del dispositivo específico, o las partes del mismo, pueden ser cargados temporalmente en una memoria volátil tal como la 45 RAM 626. Se contempla que las señales de comunicaciones recibidas y transmitidas pueden ser almacenadas también en la memoria RAM 626.
El microprocesador 638, además de sus funciones del sistema operativo, permite preferiblemente la ejecución de las aplicaciones de software en el dispositivo. Un conjunto predeterminado de aplicaciones que controlan las operaciones del dispositivo básico, incluyendo las aplicaciones de comunicaciones de datos y voz al menos, por ejemplo, podrán 50 instalarse en el dispositivo 610 durante su fabricación. La aplicación preferida 610 que puede ser cargada en el dispositivo puede ser una aplicación de un gestor de información personal (PIM) teniendo la posibilidad de organizar y gestionar los temas de datos relativos al usuario del dispositivo tales como, aunque sin limitación, los correos electrónicos, eventos del calendario, correos de voz, citas, y temas de tareas. Naturalmente, una o más memorias estarían disponibles para facilitar el almacenamiento de los temas de los datos PIM en el dispositivo. Tal aplicación SIM 55 tendría preferiblemente la capacidad de enviar y recibir temas de datos, a través de la red sin hilos. En una realización preferida, los temas de los datos PIM están integrados sin interrupciones, sincronizados y actualizados, a través de la red sin hilos, con los temas de los datos correspondientes del usuario del dispositivo, almacenados o asociados con un sistema de ordenador servidor, creando por tanto un ordenador servidor en el dispositivo móvil al menos con respecto a
los temas de los datos. Esto sería especialmente ventajoso en el caso en el que el sistema del ordenador servidor sea el sistema de ordenadores de oficina del usuario del dispositivo móvil. Las aplicaciones adicionales, incluyendo las aplicaciones de software firmado según se ha descrito anteriormente, pueden cargarse también en el dispositivo 610 a través de la red 619, un subsistema de E/S auxiliar 628, puerto serie 630, subsistema de comunicaciones de corto alcance 640 o cualquier otro subsistema adecuado 642. El microprocesador del dispositivo 638 puede entonces verificar 5 cualesquiera firmas digitales, incluyendo posiblemente las firmas de dispositivos “globales” y las firmas de
API específicas, asociadas a dicha aplicación de software antes de que la aplicación de software pueda ser ejecutada por el microprocesador 638 y/o con el acceso a cualquier API sensible asociada. Dicha flexibilidad en la instalación de la aplicación incrementa la funcionalidad del dispositivo y puede proporcionar funciones mejoradas en el dispositivo, funciones relacionadas con las comunicaciones, o ambas. Por ejemplo, las aplicaciones de comunicaciones seguras 10 pueden permitir funciones de comercio electrónico y otras transacciones financieras a ejecutar utilizando el dispositivo 610, a través de una API encriptada y un modulo de encriptado el cual implemente los algoritmos de encriptado en el dispositivo (no mostrado).
En el modo de comunicaciones de datos, la señal recibida tal como un mensaje de texto o la descarga de una pagina WEB, serán procesadas por el subsistema de comunicaciones 611 e introducida al microprocesador 638, el cual 15 además procesará la señal recibida para su salida en la pantalla 622, o alternativamente al dispositivo de E/S auxiliar 628. El usuario del dispositivo 610 puede también componer temas de datos tales como mensajes de correo electrónico por ejemplo, utilizando el teclado 632, el cual es preferiblemente un teclado alfanumérico completo o bien un teclado del tipo de teléfono, en conjunción con la pantalla 622 y posiblemente un dispositivo 628 de E/S auxiliar. Tales temas compuestos pueden ser transmitidos a través de una red de comunicaciones a través del subsistema 611 de 20 comunicaciones.
Para las comunicaciones de voz, la operación global del dispositivo 610 es substancialmente similar, excepto que las señales recibidas serían suministradas a la salida a un altavoz 634, y las señales para la transmisión se generarían por un micrófono 636. Los subsistemas alternativos de voz o audio de E/S tales como el subsistema de grabación de mensajes de voz pueden ser implementados también en el dispositivo 610. Aunque la salida de la señal de voz o audio 25 se realiza preferiblemente a través del altavoz 634, la pantalla 622 puede ser utilizada también para proporcionar una indicación de la identidad de la parte llamante, la duración de la llamada de voz, o bien cualquier otra información por ejemplo relacionada con la llamada de voz.
El puerto serie 630 en la figura 6 estaría implementado normalmente en un dispositivo de comunicaciones del tipo de asistente digital personal (PDA), siendo deseable la sincronización con un ordenador de sobremesa del usuario (no 30 mostrado), aunque es un componente del dispositivo opcional. Dicho puerto 630 permitiría al usuario el configurar las preferencias a través de un dispositivo externo o una aplicación de software, y ampliarían las posibilidades del dispositivo para proporcionar información o las descargas del software al dispositivo 610 en forma distinta a una red de comunicaciones radioeléctricas. El recorrido de descarga alternativo puede ser utilizado por ejemplo para cargar una clave de encriptado en el dispositivo a través de una conexión directa y por tanto fiable y probada, para permitir por 35 tanto una comunicación segura del dispositivo.
El subsistema 640 de comunicaciones de corto alcance es un componente opcional adicional que puede proporcionar la comunicación entre el dispositivo 624 y los sistemas o dispositivos distintos, que no necesitan ser necesariamente unos dispositivos similares. Por ejemplo, el subsistema 640 puede incluir un dispositivo de infrarrojos y circuitos asociados y componentes o un modulo de comunicaciones Bluetooth® para proporcionar la comunicación con sistemas y 40 dispositivos habilitados de forma similar.
Las realizaciones aquí descritas son ejemplos de estructuras, sistemas o métodos que tiene elementos correspondientes a los elementos de la invención expuestos en las reivindicaciones. Esta descripción expuesta puede permitir a los técnicos especializados en la técnica poder crear y utilizar las realizaciones teniendo elementos alternativos que corresponden de forma similar a los elementos de la invención expuestos en las reivindicaciones. El 45 alcance pretendido de la invención incluye otras estructuras, sistemas o métodos que no difieren del lenguaje literal de las reivindicaciones, y que además incluye otras estructuras, sistemas o métodos con diferencias insubstanciales con respecto al lenguaje literal las reivindicaciones.
Por ejemplo, cuando una aplicación de software es rechazada en la etapa 250 en el método mostrado en la figura 5, la autoridad de la firma puede solicitar que el desarrollador firme un contrato o bien entre en una relación de negocios con 50 un fabricante de dispositivos o bien otra entidad en cuyo nombre pueda actuar la autoridad de las firmas. De forma similar, si una aplicación de software es rechazada en la etapa 270, la autoridad de la firma de la aplicación de software puede delegar a una autoridad de firmas distinta. La firma de una aplicación de software con posterioridad a la delegación de la firma de la aplicación del software ante una autoridad distinta puede proceder substancialmente tal como se muestra en la figura 5, en la que la autoridad de firma de objetivo que recibe la petición original del 55 desarrollador probado en la etapa 220 solicita que la aplicación de software sea firmada por la autoridad de firma distinta en nombre del desarrollador probado con respecto a la autoridad de firma de objetivo. Una vez que la relación haya sido establecida entre las autoridades de la firma por código, la claves de firma por código privadas de objetivo podrían ser
compartidas entre las autoridades de la firma por código para mejorar la eficacia del método en la etapa 240, o bien un dispositivo puede ser configurado para validar firmas digitales desde cualquiera de las autoridades de firmas probadas.
Además de ello, aunque se ha expuesto principalmente en el contexto de las aplicaciones de software, los sistemas y métodos de firma por código de acuerdo con la presente invención puede ser aplicados también a otros componentes relacionados con el dispositivo, incluyendo aunque no en forma limitante las ordenes y los argumentos de ordenes 5 asociadas, y las librerías configuradas para hacer de interfaz con los recursos del dispositivo. Dichas órdenes y librerías pueden enviarse a los dispositivos móviles mediante los fabricantes de los móviles, propietarios de los móviles, operadores de las redes, proveedores de servicios, desarrolladores de las aplicaciones de software y similares. Sería deseable el controlar la ejecución de cualquier orden que pueda afectar a la operación del dispositivo, tal como una orden para cambiar el código de identificación del dispositivo o la dilección de la red de comunicaciones radioeléctricas, 10 por ejemplo mediante la petición de la verificación de una o más firmas digitales antes de que una orden pueda ser ejecutada en un dispositivo, de acuerdo con los sistemas y métodos de firma por código aquí descritos y reivindicados.
Tal como se ha descrito, un sistema de firmas por código para el funcionamiento u operación en conjunto con una aplicación de software que tiene una firma digital, comprende una plataforma de aplicación; una interfaz de programación de aplicación (API) configurada para enlazar la aplicación de software con la plataforma de aplicación; y 15 una máquina virtual que verifica la autenticidad de la firma digital para controlar el acceso a la API mediante la aplicación de software.
La máquina virtual puede denegar el acceso de la aplicación de software a la API si la firma digital no es auténtica. La máquina virtual puede purgar la aplicación de software si la firma digital no es auténtica. El sistema de firmas por código puede ser instalado en un dispositivo móvil. La firma digital puede ser generada mediante una autoridad de firmas por 20 código.
El sistema de firmas por código puede comprender además una pluralidad de librerías API incluyendo cada una de ellas una pluralidad de API, en las que los controles de la máquina virtual acceden a la pluralidad de librerías API mediante la aplicación de software.
Una o más de la pluralidad de librerías API puede ser clasificada como sensible, y la máquina virtual puede utilizar la 25 firma digital para controlar el acceso a las librerías API sensibles mediante la aplicación de software. La aplicación de software puede incluir una firma digital única para cada librería API sensible. La aplicación de software puede incluir una identificación de firma para cada firma digital única; cada librería API sensible puede incluir un identificador de firma; y la máquina virtual puede comparar la identificación de la firma y el identificador de firma para emparejar las firmas digitales únicas con las librerías API sensibles. 30
La firma digital puede ser generada utilizando una clave de firma privada, y la máquina virtual puede utilizar una clave de firma pública para verificar la autenticidad de la firma digital. La firma digital puede ser generada aplicando la clave de firma privada a un algoritmo de Hash de la aplicación de software; y la máquina virtual puede verificar la autenticidad de la firma digital generando un algoritmo de Hash de la aplicación de software para obtener un algoritmo de Hash generado, aplicando la clave de firma pública a la firma digital para obtener un algoritmo de Hash recuperado, y 35 comparando el algoritmo de Hash generado con el algoritmo de Hash recuperado.
La API puede comprender además una cadena de descripción que es visualizada a través del dispositivo móvil cuando la aplicación de software intenta acceder a la API. La plataforma de aplicación puede comprender un sistema operativo. La plataforma de aplicación puede comprender una o más funciones centrales de un dispositivo móvil. La plataforma de aplicación puede comprender hardware en un dispositivo móvil. El hardware puede comprender una tarjeta (SIM) del 40 módulo de identidad del abonado. La aplicación de software puede ser una aplicación Java para un dispositivo móvil. La API puede funcionar en conjunto con una rutina criptográfica en la plataforma de aplicación. La API puede funcionar en conjunto con un módulo de datos registrados en la plataforma de aplicación. La máquina virtual puede ser una máquina virtual instalada en un dispositivo móvil.
Tal como también se ha descrito, un sistema de firmas por código para funcionar u operar en conjunción con una 45 aplicación de software que tiene una firma digital, comprende una plataforma de aplicación: una pluralidad de interfaces de programación de aplicaciones (API), configurada cada una de ellas para enlazar la aplicación de software con un recurso en la plataforma de aplicación; y una máquina virtual que verifique la autenticidad de la firma digital para controlar el acceso a la API mediante la aplicación de software, en el que la máquina virtual verifica la autenticidad de la firma digital para controlar el acceso a la pluralidad de las API mediante la aplicación de software. 50
La pluralidad de API puede ser incluida en una librería API, una o más de la pluralidad de API puede ser clasificada como sensible, y la máquina virtual puede utilizar la firma digital para controlar el acceso a las API sensibles. Para funcionar u operar en conjunción con una pluralidad de aplicaciones de software, una o más de la pluralidad de aplicaciones de software puede tener una firma digital, y la máquina virtual puede verificar la autenticidad de la firma digital de cada una de la pluralidad de las aplicaciones de software para controlar el acceso a las API sensibles 55 mediante cada una de las aplicaciones de software. El recurso en la plataforma de aplicación puede comprender un sistema de comunicación inalámbrico. El recurso de la plataforma de aplicación puede comprender un módulo
criptográfico que implemente los algoritmos criptográficos. El recurso de la plataforma de aplicación puede comprender un almacén de datos. El recurso de la plataforma de aplicación puede comprender una interfaz de usuario (UI).
Tal como también se ha descrito, un método para controlar el acceso a interfaces de programación de aplicaciones sensibles en un dispositivo móvil, comprende las etapas de: cargar una aplicación de software en el dispositivo móvil que requiere el acceso a una interfaz de programación de aplicación (API) sensible; determinar si o no, la aplicación de 5 software incluye una firma digital asociada con la API sensible; y si la aplicación de software no incluye una firma digital asociada con la API sensible, entonces denegar el acceso de la aplicación de software a la API sensible.
El método puede comprender la etapa adicional de: si la aplicación de software no incluye una firma digital asociada con la API sensible, entonces purgar la aplicación de software del dispositivo móvil. La firma digital puede ser generada por una autoridad de firmas por código. El método puede comprender las etapas adicionales de: si la aplicación de software 10 incluye una firma digital asociada con la API sensible, entonces verificar la autenticidad de la firma digital; y si la firma digital no es auténtica, entonces denegar el acceso de la aplicación de software a la API sensible. El método puede comprender además la etapa adicional de: si la firma digital no es auténtica, entonces purgar la aplicación de software del dispositivo móvil. La firma digital puede ser generada aplicando una clave de firma privada a un algoritmo de Hash de la aplicación de software, y la etapa de verificar la autenticidad de la firma digital puede ser realizada por un método 15 que comprende las etapas de: almacenar una clave de firma pública que corresponde a la clave de firma privada en el dispositivo móvil; generar un algoritmo de Hash de la aplicación de software para obtener un algoritmo de Hash generado; aplicar la clave de firma pública a la firma digital para obtener un algoritmo de Hash recuperado; y comparar el algoritmo de Hash generado con el algoritmo de Hash recuperado. La firma digital puede ser generada calculando un algoritmo de Hash de la aplicación del software y aplicando la calve de firma privada. El método puede comprender la 20 etapa adicional de: visualizar una cadena de descripción que notifica a un usuario del dispositivo móvil que la aplicación de software requiere el acceso a la API sensible. El método puede comprender además la etapa adicional de: recibir una orden del usuario concediendo o denegando el acceso de la aplicación de software a la API sensible.
Además se ha descrito un método para controlar el acceso a una interfaz de programación de aplicación (API) en un dispositivo móvil mediante una aplicación de software creada por un desarrollador de software que comprende las 25 etapas de: recibir la aplicación de software del desarrollador de software; revisar la aplicación de software para determinar si puede acceder a la API; si la aplicación de software puede acceder a la API, entonces agregar una firma digital a la aplicación de software; verificar la autenticidad de una firma digital agregada a una aplicación de software; y proporcionar el acceso de las aplicaciones de software a la API para aquellas cuya firma sea auténtica.
La etapa de revisar la aplicación de software puede ser realizada por una autoridad de firmas por código. La etapa de 30 agregar la firma digital a la aplicación de software puede ser realizada mediante un método que comprende las etapas de: calcular un algoritmo de Hash de la aplicación de software; y aplicar una clave de firma al algoritmo de Hash de la aplicación de software para generar la firma digital. El Algoritmo de Hash Seguro (SH1). La etapa de verificar la autenticidad de una firma digital puede comprender las etapas de proporcionar una clave de firma correspondiente en el dispositivo móvil; calcular el hash de la aplicación de software en el dispositivo móvil para obtener un algoritmo de Hash 35 calculado; aplicar la correspondiente clave de firma a la firma digital para obtener un algoritmo de Hash recuperado; y determinar si la firma digital es auténtica comparando el algoritmo de Hash calculado con el algoritmo de Hash recuperado. El método puede comprender además la etapa de, si la firma digital no es auténtica, entonces denegar el acceso de la aplicación de software a la API. La clave de la firma puede ser una clave de firma privada y la correspondiente clave de firma una clave de firma pública. 40
También se ha descrito un método para controlar el acceso a una interfaz de programación de aplicación (API) sensible en un dispositivo móvil, que comprende las etapas de: registrar uno o más desarrolladores de software en los que se confía para diseñar aplicaciones de software que accedan a la API sensible: recibir un algoritmo de Hash de una aplicación de software; determinar si la aplicación de software fue diseñada por alguno de los desarrolladores de software registrados; y si la aplicación de software fue diseñada por uno de los desarrolladores de software registrados, 45 entonces generar una firma digital utilizando el algoritmo de Hash de la aplicación de software, en el que la firma digital puede ser agregada a la aplicación de software; y el dispositivo móvil verifica la autenticidad de la firma digital para controlar el acceso de la aplicación de software a la API sensible.
La etapa de generar la firma digital puede ser realizada por una autoridad de firmas por código. La etapa de generar la firma digital puede ser realizada aplicando una clave de firma al algoritmo de Hash de la aplicación de software. El 50 dispositivo móvil puede verificar la autenticidad de la firma digital realizando las etapas adicionales de: proporcionar una clave de firma correspondiente en el dispositivo móvil; calcular el algoritmo de hash de la aplicación de software en el dispositivo móvil; calcular el algoritmo de Hash de la aplicación de software en el dispositivo móvil para obtener un algoritmo de Hash calculado; aplicar la correspondiente clave de firma a la firma digital para obtener un algoritmo de Hash recuperado; determinar si la firma digital es auténtica comparando el algoritmo de Hash calculado con el algoritmo 55 de Hash recuperado; y si la firma digital no es auténtica, entonces denegar el acceso de la aplicación de software a la API sensible.
Tal como se ha descrito, un método para restringir el acceso a interfaces de programación de aplicaciones en un dispositivo móvil, comprende las etapas de: cargar una aplicación de software en el dispositivo móvil que requiere el
acceso a una o más interfaces de programación de aplicaciones (API); determinar si o no la aplicación de software incluye una firma digital auténtica asociada con el dispositivo móvil; y si la aplicación de software no incluye una firma digital auténtica asociada con el dispositivo móvil, entonces denegar el acceso de la aplicación de software a uno o más API.
El método puede comprender la etapa adicional de: si la aplicación de software no incluye una firma digital auténtica 5 asociada con el dispositivo móvil, entonces purgar la aplicación de software del dispositivo móvil. La aplicación de software puede incluir una pluralidad de firmas digitales. La pluralidad de firmas digitales puede incluir firmas digitales asociadas respectivamente con diferentes tipos de dispositivos móviles.
Cada una de la pluralidad de firmas digitales puede ser generada por la respectiva autoridad de firmas por código correspondiente. La etapa de determinar si o no la aplicación de software incluye una firma digital auténtica asociada 10 con el dispositivo móvil puede comprender las etapas adicionales de: determinar si la aplicación de software incluye una firma digital asociado con el dispositivo móvil; y si es así, entonces verificar la autenticidad de la firma digital. Una o más de las API puede incluir una o más API clasificadas como sensibles, y el método puede incluir además las etapas de, para cada API sensible, determinar si o no la aplicación de software incluye Una firma digital auténtica asociada con la API sensible; y si la aplicación de software no incluye una firma digital auténtica asociada con la API sensible, entonces 15 denegar el acceso de la aplicación de software a la API sensible. Cada una de la pluralidad de firmas digitales puede ser generada por su correspondiente autoridad de firmas por código, aplicando una respectiva clave de firma privada asociada con la autoridad de firmas por código para un algoritmo de Hash de la aplicación de software. La etapa de determinar si o no la aplicación de software incluye una firma digital auténtica asociada con el dispositivo móvil, puede comprender las etapas de: determinar si la aplicación de software incluye una firma digital asociada con el dispositivo 20 móvil; y si es así, entonces verificar la autenticidad de la firma digital, en el que la etapa de verificar la autenticidad de la firma digital se realiza mediante un método que comprende las etapas de: almacenar una clave de firma pública en un dispositivo móvil, que corresponde a la clave de firma privada asociada con la autoridad de firmas por código que genera la firma asociada con el dispositivo móvil; generar un algoritmo de Hash de la aplicación de software para obtener un algoritmo de Hash generado; aplicar la clave de firma pública a la firma digital para obtener un algoritmo de 25 Hash recuperado; y comparar el algoritmo de Hash generado con el algoritmo de Hash recuperado.

Claims (9)

  1. REIVINDICACIONES
    1. Un método para controlar el acceso a una interfaz de programación de aplicación (API) sensible que tiene un identificador de firma en un dispositivo móvil (62), que comprende las etapas de:
    registrar uno o más desarrolladores de software en los que se confía para desarrollar la aplicación de software (66) que 5 acceda a la API sensible;
    recibir un algoritmo de Hash de una aplicación de software;
    determinar si el algoritmo de Hash ha sido enviado por un desarrollador de software registrado; y
    generar una firma digital (96) utilizando el algoritmo de Hash de la aplicación de software (66) y una identificación de firma (94) que corresponde al identificador de firma (92) cuando el algoritmo de Hash ha sido enviado por el 10 desarrollador de software registrado; en el que la firma digital (96) y la identificación de firma (94) son agregadas a la aplicación de software (66); y
    el dispositivo móvil (62) verifica la autenticidad de la firma digital (96) para controlar el acceso a la API sensible mediante la aplicación de software (66) cuando la identificación de firma (94) se corresponde con el identificador de firma (92).
  2. 2. El método de la reivindicación 1, en el que la etapa de generar la firma digital (96) se realiza mediante una autoridad 15 de firmas por código.
  3. 3. El método de la reivindicación 1 ó de la reivindicación 2, en el que la etapa de generar la firma digital (96) se realiza aplicando una clave de firma al logaritmo de Hash de la aplicación de software (66).
  4. 4. El método de la reivindicación 3, en el que el dispositivo móvil (62) verifica la autenticidad de la firma digital (96), realizando las etapas adicionales de: 20
    proporcionar una clave de firma correspondiente en el dispositivo móvil (62);
    calcular el algoritmo de Hash de la aplicación de software (66) en el dispositivo móvil (62) para obtener un algoritmo de Hash calculado;
    aplicar la clave de firma correspondiente a la firma digital para obtener un algoritmo de Hash recuperado;
    determinar si la firma digital (96) es auténtica comparando el algoritmo de Hash calculado con el algoritmo de Hash 25 recuperado; y
    denegar a la aplicación de software (66) el acceso cuando la firma digital (96) no es autenticada.
  5. 5. El método de cualquiera de las reivindicaciones precedentes, en el que se suministra una máquina virtual (64) que verifica la autenticidad de la firma digital (96).
  6. 6. El método de la reivindicación 5, en el que la máquina virtual (64) deniega el acceso de la aplicación de software a la 30 API, si la firma digital (96) no es autenticada.
  7. 7. El método de la reivindicación 5, en el que la máquina virtual (64) purga la aplicación de software (66) si la firma digital (96) no es autenticada.
  8. 8. El método de la reivindicación 5, en el que la firma digital (96) se genera utilizando una clave de firma privada, y la máquina virtual (64) utiliza una clave de firma pública para verificar la autenticidad de la firma digital (96). 35
  9. 9. El método de la reivindicación 8, en el que:
    la firma digital (96) se genera aplicando la clave de firma privada a un algoritmo de Hash de la aplicación de software (66); y
    la máquina virtual (64) verifica la autenticidad de la firma digital (96) generando un algoritmo de Hash de la aplicación de software (66) para obtener un algoritmo de Hash generado, aplicando la clave de firma pública a la firma digital (96) para 40 obtener un algoritmo de Hash recuperado, y comparando el algoritmo de Hash generado con el algoritmo de Hash recuperado.
ES05024662T 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software. Expired - Lifetime ES2352556T3 (es)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US23415200P 2000-09-21 2000-09-21
US23535400P 2000-09-26 2000-09-26
US235354P 2000-09-26
US27066301P 2001-02-20 2001-02-20
US270663P 2001-02-20
US234152P 2009-08-14

Publications (1)

Publication Number Publication Date
ES2352556T3 true ES2352556T3 (es) 2011-02-21

Family

ID=27398521

Family Applications (6)

Application Number Title Priority Date Filing Date
ES01973901T Expired - Lifetime ES2253426T5 (es) 2000-09-21 2001-09-20 Sistema y metodo de firma mediante codigo por software.
ES10186194.6T Expired - Lifetime ES2545791T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software
ES05024661T Expired - Lifetime ES2385565T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software
ES05024662T Expired - Lifetime ES2352556T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software.
ES05024663T Expired - Lifetime ES2360005T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software.
ES10186296.9T Expired - Lifetime ES2465967T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software

Family Applications Before (3)

Application Number Title Priority Date Filing Date
ES01973901T Expired - Lifetime ES2253426T5 (es) 2000-09-21 2001-09-20 Sistema y metodo de firma mediante codigo por software.
ES10186194.6T Expired - Lifetime ES2545791T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software
ES05024661T Expired - Lifetime ES2385565T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software

Family Applications After (2)

Application Number Title Priority Date Filing Date
ES05024663T Expired - Lifetime ES2360005T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software.
ES10186296.9T Expired - Lifetime ES2465967T3 (es) 2000-09-21 2001-09-20 Sistema y método de firma mediante código por software

Country Status (11)

Country Link
US (8) US8489868B2 (es)
EP (8) EP2284644B1 (es)
CN (4) CN101694688B (es)
AT (4) ATE479930T1 (es)
AU (1) AU2001293563A1 (es)
BR (1) BRPI0114066B1 (es)
CA (3) CA2422917C (es)
DE (3) DE60142991D1 (es)
ES (6) ES2253426T5 (es)
HK (7) HK1055629A1 (es)
WO (1) WO2002025409A2 (es)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002025409A2 (en) 2000-09-21 2002-03-28 Research In Motion Limited Software code signing system and method
US7631196B2 (en) * 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US20030191943A1 (en) * 2002-04-05 2003-10-09 Poisner David I. Methods and arrangements to register code
JP2003337716A (ja) * 2002-05-20 2003-11-28 Ntt Docomo Inc 電子機器、データ共用方法、プログラム及び記憶媒体
FR2840134B1 (fr) * 2002-05-21 2004-08-13 France Telecom Procede de controle d'acces a des ressources cryptographiques, plate-forme informatique et module logiciel utilisables dans la mise en oeuvre du procede
US20080313282A1 (en) 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
FR2849230B1 (fr) * 2002-12-24 2005-04-22 Francois Bangui Procede et dispositif de verification de l'integrite d'une application logicielle sans cle de chiffrement/dechiffrement
US7096005B2 (en) * 2003-01-23 2006-08-22 Inventec Appliances Corp. Method of carrying out a safe remote electronic signing by cellular phone
US7565551B2 (en) * 2003-02-19 2009-07-21 Microsoft Corporation Enhancing software integrity through installation and verification
US7921302B2 (en) 2003-03-10 2011-04-05 Igt Universal game download methods and system for legacy gaming machines
US8491391B2 (en) 2003-03-10 2013-07-23 Igt Regulated gaming—agile media player for controlling games
US7802087B2 (en) 2003-03-10 2010-09-21 Igt Universal method for submitting gaming machine source code software to a game certification laboratory
CA2724141A1 (en) 2003-03-10 2004-09-23 Mudalla Technology, Inc. Dynamic configuration of a gaming system
US7600251B2 (en) 2003-03-10 2009-10-06 Igt Universal peer-to-peer game download
US7337330B2 (en) 2003-03-10 2008-02-26 Cyberview Technology, Inc. Universal game download system for legacy gaming machines
US7966493B2 (en) * 2003-11-18 2011-06-21 Oracle International Corporation Method of and system for determining if an electronic signature is necessary in order to commit a transaction to a database
WO2005071515A1 (en) * 2004-01-22 2005-08-04 Koninklijke Philips Electronics N.V. Method of authorizing access to content
US20050289350A1 (en) * 2004-06-25 2005-12-29 Markus Schmidt-Karaca Method and system for secure synchronization between an enterprise system and a device
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US9313214B2 (en) 2004-08-06 2016-04-12 Google Technology Holdings LLC Enhanced security using service provider authentication
GB2422919B (en) * 2004-11-02 2009-05-27 T Mobile Int Ag & Co Kg Software application security access management in mobile communication devices
WO2006054128A1 (en) * 2004-11-22 2006-05-26 Nokia Corporation Method and device for verifying the integrity of platform software of an electronic device
JP4727278B2 (ja) * 2005-04-05 2011-07-20 株式会社エヌ・ティ・ティ・ドコモ アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム
US20060236100A1 (en) * 2005-04-19 2006-10-19 Guruprasad Baskaran System and method for enhanced layer of security to protect a file system from malicious programs
DE102005030590B4 (de) * 2005-06-30 2011-03-24 Advanced Micro Devices, Inc., Sunnyvale Sicheres Patchsystem
WO2007005140A1 (en) * 2005-06-30 2007-01-11 Advanced Micro Devices, Inc. Secure patch system
US8838974B2 (en) * 2005-07-15 2014-09-16 The Mathworks, Inc. System and method for verifying the integrity of read-only components in deployed mixed-mode applications
US8320880B2 (en) * 2005-07-20 2012-11-27 Qualcomm Incorporated Apparatus and methods for secure architectures in wireless networks
JP2007081482A (ja) * 2005-09-09 2007-03-29 Canon Inc 端末認証方法及びその装置、プログラム
US20070074031A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited System and method for providing code signing services
US20070074032A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Remote hash generation in a system and method for providing code signing services
US20070074033A1 (en) * 2005-09-29 2007-03-29 Research In Motion Limited Account management in a system and method for providing code signing services
US8340289B2 (en) 2005-09-29 2012-12-25 Research In Motion Limited System and method for providing an indication of randomness quality of random number data generated by a random data service
US7797545B2 (en) 2005-09-29 2010-09-14 Research In Motion Limited System and method for registering entities for code signing services
US20070083378A1 (en) * 2005-10-11 2007-04-12 Microsoft Corporation Secure application programming interface
JP4854000B2 (ja) * 2005-11-02 2012-01-11 株式会社日立ソリューションズ 機密ファイル保護方法
SE530662C2 (sv) * 2005-11-09 2008-08-05 Noll Och Ett Data Ab Förfarande och anordning
WO2007097439A1 (ja) * 2006-02-21 2007-08-30 Nec Corporation プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
JP2007328770A (ja) * 2006-05-10 2007-12-20 Ricoh Co Ltd 情報処理装置、アクセス制御方法、アクセス制御プログラム、記録媒体、及び画像形成装置
US8341747B2 (en) * 2006-08-08 2012-12-25 International Business Machines Corporation Method to provide a secure virtual machine launcher
US8615801B2 (en) * 2006-08-31 2013-12-24 Microsoft Corporation Software authorization utilizing software reputation
EP2009565A1 (en) * 2007-06-28 2008-12-31 Gemplus Method for securely loading a client applet in an electronic portable device
US8842836B2 (en) * 2007-11-26 2014-09-23 Koolspan, Inc. System for and method of cryptographic provisioning
US8364978B2 (en) * 2007-11-26 2013-01-29 Koolspan, Inc. System for and method of auto-registration with cryptographic modules
US9223938B2 (en) * 2007-12-31 2015-12-29 Google Technology Holdings LLC Location bound secure domains
WO2009097350A1 (en) * 2008-01-29 2009-08-06 Palm, Inc. Secure application signing
EP2252957A1 (en) * 2008-03-04 2010-11-24 Apple Inc. Managing code entitlements for software developers in secure operating environments
US20090228704A1 (en) * 2008-03-04 2009-09-10 Apple Inc. Providing developer access in secure operating environments
EP2404428B1 (en) 2009-03-06 2017-11-15 Gemalto SA A system and method for providing security in browser-based access to smart cards
US8818412B2 (en) * 2009-03-18 2014-08-26 Wavemarket, Inc. System for aggregating and disseminating location information
US20100242097A1 (en) 2009-03-20 2010-09-23 Wavemarket, Inc. System and method for managing application program access to a protected resource residing on a mobile device
US8683554B2 (en) * 2009-03-27 2014-03-25 Wavemarket, Inc. System and method for managing third party application program access to user information via a native application program interface (API)
US8839458B2 (en) * 2009-05-12 2014-09-16 Nokia Corporation Method, apparatus, and computer program for providing application security
US20110137817A1 (en) * 2009-06-01 2011-06-09 Wavemarket, Inc. System and method for aggregating and disseminating personal data
CN102087689B (zh) * 2009-12-04 2013-04-03 北大方正集团有限公司 一种软件重用模块的保护方法及装置
AU2010335972B2 (en) 2009-12-21 2013-10-03 13079023 Canada Association Systems and methods for accessing and controlling media stored remotely
US8533811B2 (en) * 2010-01-20 2013-09-10 Microsoft Corporation Developer phone registration
US9264448B2 (en) * 2010-01-20 2016-02-16 Blackberry Limited Apparatus, and an associated method, for facilitating secure operations of a wireless device
CN102130907B (zh) * 2010-01-20 2014-05-07 微软公司 开发者电话注册
JP2012003679A (ja) * 2010-06-21 2012-01-05 Kyocera Mita Corp 画像形成装置用追加アプリケーションのセキュリティ確保方法、画像形成システム及び画像形成装置
US20120089978A1 (en) * 2010-10-12 2012-04-12 I O Interconnect, Ltd. Method for managing applications of portable devices
US20120090021A1 (en) * 2010-10-12 2012-04-12 Ansca, Inc. Platform Specific Application Building
US8621591B2 (en) * 2010-10-19 2013-12-31 Symantec Corporation Software signing certificate reputation model
US8938809B2 (en) 2011-06-24 2015-01-20 Google Technology Holdings LLC Retrieval of data across multiple partitions of a storage device using digital signatures
US8745616B1 (en) * 2011-09-23 2014-06-03 Symantec Corporation Systems and methods for providing digital certificates that certify the trustworthiness of digitally signed code
US8572368B1 (en) 2011-09-23 2013-10-29 Symantec Corporation Systems and methods for generating code-specific code-signing certificates containing extended metadata
KR101430240B1 (ko) * 2011-12-19 2014-08-19 주식회사 케이티 어플리케이션 서명 장치 및 방법
US9042266B2 (en) 2011-12-21 2015-05-26 Kik Interactive, Inc. Methods and apparatus for initializing a network connection for an output device
KR101876297B1 (ko) * 2012-03-16 2018-07-10 삼성전자주식회사 전자 서명 검증 장치 및 방법
US9009705B2 (en) * 2012-10-01 2015-04-14 International Business Machines Corporation Authenticated distribution of virtual machine images
EP2750065A1 (en) * 2012-12-27 2014-07-02 Telefonica S.A. Method, system and computer program product for managing operations of service terminals
US8894485B2 (en) * 2013-03-18 2014-11-25 Cadillac Jack, Inc. Electronic gaming system with ROM-based media validation
IN2013MU01235A (es) * 2013-03-28 2015-04-10 Tata Consultancy Services Ltd
US9158932B2 (en) 2013-05-08 2015-10-13 Sap Se Modeled authorization check implemented with UI framework
US9515832B2 (en) * 2013-06-24 2016-12-06 Microsoft Technology Licensing, Llc Process authentication and resource permissions
US9385869B1 (en) * 2014-03-26 2016-07-05 Symantec Corporation Systems and methods for trusting digitally signed files in the absence of verifiable signature conditions
US20160048688A1 (en) * 2014-08-14 2016-02-18 Google Inc. Restricting System Calls using Protected Storage
US10050993B2 (en) * 2014-09-24 2018-08-14 Mcafee, Llc Non-invasive whitelisting
US9843451B2 (en) * 2014-10-30 2017-12-12 Motorola Solutions, Inc. Apparatus and method for multi-state code signing
US10303891B2 (en) * 2014-12-30 2019-05-28 Data I/O Corporation Automated manufacturing system with job packaging mechanism and method of operation thereof
US9536080B2 (en) * 2015-05-29 2017-01-03 Apple Inc. Method for validating dynamically loaded libraries using team identifiers
US10044701B2 (en) * 2016-05-24 2018-08-07 Vantiv, Llc Technologies for token-based authentication and authorization of distributed computing resources
US10419224B2 (en) * 2016-06-14 2019-09-17 International Business Machines Corporation Preventing monoculture in application distribution
CN108259413B (zh) * 2016-12-28 2021-06-01 华为技术有限公司 一种获取证书、鉴权的方法及网络设备
SE541713C2 (en) * 2017-05-03 2019-12-03 Enigio Time Ab Method and system for registering digital documents
US11354399B2 (en) 2017-07-17 2022-06-07 Hewlett-Packard Development Company, L.P. Authentication of entitlement certificates
US20190026442A1 (en) * 2017-07-24 2019-01-24 Microsoft Technology Licensing, Llc Offline activation for application(s) installed on a computing device
CN108768664B (zh) * 2018-06-06 2020-11-03 腾讯科技(深圳)有限公司 密钥管理方法、装置、***、存储介质和计算机设备
US10719373B1 (en) * 2018-08-23 2020-07-21 Styra, Inc. Validating policies and data in API authorization system
US11520877B2 (en) * 2018-12-12 2022-12-06 Raytheon Company Resilient multi-variant execution verification
RU2706873C1 (ru) * 2018-12-28 2019-11-21 Акционерное общество "Лаборатория Касперского" Система и способ проверки ЭЦП файла
US10897361B1 (en) * 2019-09-04 2021-01-19 Garantir LLC Automated hash validation
US11645410B2 (en) 2019-10-09 2023-05-09 Intertrust Technologies Corporation Content management systems and methods
KR102644153B1 (ko) * 2019-10-31 2024-03-07 삼성에스디에스 주식회사 데이터 보안 장치 및 방법
US11244077B2 (en) * 2020-01-31 2022-02-08 Fortanix, Inc. Securing data integrity for an application
US11431510B1 (en) 2020-04-30 2022-08-30 Wells Fargo Bank, N.A. Code-sign white listing (CSWL)
US11003498B1 (en) 2020-08-10 2021-05-11 Coupang Corp. Computerized systems and methods for fail-safe loading of information on a user interface using a circuit breaker
US11334345B2 (en) * 2020-10-08 2022-05-17 Pelion Technology, Inc. Differential firmware update generation
US20220141029A1 (en) * 2020-10-29 2022-05-05 Microsoft Technology Licensing, Llc Using multi-factor and/or inherence-based authentication to selectively enable performance of an operation prior to or during release of code
US11057215B1 (en) 2021-01-27 2021-07-06 Garantir LLC Automated hash validation
US12008146B2 (en) * 2021-03-31 2024-06-11 Seagate Technology Llc Code-based signatures for secure programs
US11954007B2 (en) 2022-04-20 2024-04-09 International Business Machines Corporation Tracking usage of common libraries by means of digitally signed digests thereof

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5005200A (en) 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5412717A (en) 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
KR0161361B1 (ko) 1993-04-28 1999-03-20 사또 후미오 구동 회로 장치
US5421013A (en) 1993-07-08 1995-05-30 Park City Group, Inc. Agent-based multithreading application programming interface
US6135646A (en) 1993-10-22 2000-10-24 Corporation For National Research Initiatives System for uniquely and persistently identifying, managing, and tracking digital objects
US5625690A (en) 1993-11-15 1997-04-29 Lucent Technologies Inc. Software pay per use system
NZ329891A (en) * 1994-01-13 2000-01-28 Certco Llc Method of upgrading firmware of trusted device using embedded key
US5724425A (en) 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5680619A (en) 1995-04-03 1997-10-21 Mfactory, Inc. Hierarchical encapsulation of instantiated objects in a multimedia authoring system
US5657378A (en) 1995-04-11 1997-08-12 M Power Corporation Digital screen phone terminal with graphical user interface
US5966714A (en) 1995-04-28 1999-10-12 Intel Corporation Method and apparatus for scaling large electronic mail databases for devices with limited storage
US5845282A (en) 1995-08-07 1998-12-01 Apple Computer, Inc. Method and apparatus for remotely accessing files from a desktop computer using a personal digital assistant
US5797089A (en) 1995-09-07 1998-08-18 Telefonaktiebolaget Lm Ericsson (Publ) Personal communications terminal having switches which independently energize a mobile telephone and a personal digital assistant
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US6253027B1 (en) * 1996-06-17 2001-06-26 Hewlett-Packard Company System, method and article of manufacture for exchanging software and configuration data over a multichannel, extensible, flexible architecture
US6067582A (en) 1996-08-13 2000-05-23 Angel Secure Networks, Inc. System for installing information related to a software application to a remote computer over a network
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US6023509A (en) * 1996-09-30 2000-02-08 Intel Corporation Digital signature purpose encoding
US5958051A (en) 1996-11-27 1999-09-28 Sun Microsystems, Inc. Implementing digital signatures for data streams and data archives
US5903882A (en) 1996-12-13 1999-05-11 Certco, Llc Reliance server for electronic transaction system
US6009176A (en) 1997-02-13 1999-12-28 International Business Machines Corporation How to sign digital streams
US5935249A (en) * 1997-02-26 1999-08-10 Sun Microsystems, Inc. Mechanism for embedding network based control systems in a local network interface device
EP1004992A3 (en) * 1997-03-24 2001-12-05 Visa International Service Association A system and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
US6233683B1 (en) * 1997-03-24 2001-05-15 Visa International Service Association System and method for a multi-application smart card which can facilitate a post-issuance download of an application onto the smart card
US6212636B1 (en) * 1997-05-01 2001-04-03 Itt Manufacturing Enterprises Method for establishing trust in a computer network via association
EP0983541B1 (en) * 1997-05-29 2003-08-06 Sun Microsystems, Inc. Method and apparatus for signing and sealing objects
US6389534B1 (en) 1997-06-30 2002-05-14 Taher Elgamal Cryptographic policy filters and policy control method and apparatus
US5940379A (en) 1997-07-23 1999-08-17 Motorola, Inc. Apparatus and method for using multiple spreading codes for data transmission in a satellite communication system
US6188995B1 (en) * 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
EP1040630B1 (en) * 1997-12-19 2004-11-03 BRITISH TELECOMMUNICATIONS public limited company Data communications
US8489860B1 (en) * 1997-12-22 2013-07-16 Texas Instruments Incorporated Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device
DE69911174T2 (de) 1998-02-03 2004-07-01 Mondex International Ltd. System und verfahren zur kontrolle des zugangs zu dem computercode in einer chipkarte
US6131166A (en) 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6324650B1 (en) * 1998-03-16 2001-11-27 John W.L. Ogilvie Message content protection and conditional disclosure
US20010044901A1 (en) * 1998-03-24 2001-11-22 Symantec Corporation Bubble-protected system for automatic decryption of file data on a per-use basis and automatic re-encryption
US6374357B1 (en) * 1998-04-16 2002-04-16 Microsoft Corporation System and method for regulating a network service provider's ability to host distributed applications in a distributed processing environment
US6256393B1 (en) 1998-06-23 2001-07-03 General Instrument Corporation Authorization and access control of software object residing in set-top terminals
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6085321A (en) * 1998-08-14 2000-07-04 Omnipoint Corporation Unique digital signature
US6230184B1 (en) 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
US6748541B1 (en) * 1999-10-05 2004-06-08 Aladdin Knowledge Systems, Ltd. User-computer interaction method for use by a population of flexibly connectable computer systems
JP4764536B2 (ja) * 1998-11-17 2011-09-07 株式会社リコー 画像計測機器
US6390374B1 (en) * 1999-01-15 2002-05-21 Todd Carper System and method for installing/de-installing an application on a smart card
US6298354B1 (en) 1999-02-19 2001-10-02 Sun Microsystems, Inc. Mechanism and process to transform a grammar-derived intermediate form to an object-oriented configuration database
US6256737B1 (en) * 1999-03-09 2001-07-03 Bionetrix Systems Corporation System, method and computer program product for allowing access to enterprise resources using biometric devices
US6223291B1 (en) * 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6574636B1 (en) * 1999-05-04 2003-06-03 Accenture Llp Method and article of manufacture for isolating data within a computer program
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
US6895507B1 (en) * 1999-07-02 2005-05-17 Time Certain, Llc Method and system for determining and maintaining trust in digital data files with certifiable time
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US6526513B1 (en) * 1999-08-03 2003-02-25 International Business Machines Corporation Architecture for dynamic permissions in java
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
ATE306096T1 (de) * 1999-08-31 2005-10-15 Swisscom Ag Mobiler roboter und steuerverfahren für einen mobilen roboter
US6289382B1 (en) * 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
US20050160272A1 (en) * 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US20020112078A1 (en) * 1999-12-03 2002-08-15 David Yach Virtual machine web browser
US6931546B1 (en) 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
US7162035B1 (en) * 2000-05-24 2007-01-09 Tracer Detection Technology Corp. Authentication method and system
US6687837B1 (en) 2000-06-15 2004-02-03 Cisco Technology, Inc. Method and system for controlling the supply of power to a circuit card in a card shelf through an activation signal
US6981262B1 (en) * 2000-06-27 2005-12-27 Microsoft Corporation System and method for client interaction in a multi-level rights-management architecture
US6678887B1 (en) 2000-07-11 2004-01-13 Networks Associates Technology, Inc. Customizing business logic and data sources by modifying methods defined within an API
US6766353B1 (en) * 2000-07-11 2004-07-20 Motorola, Inc. Method for authenticating a JAVA archive (JAR) for portable devices
US6721809B1 (en) 2000-08-21 2004-04-13 Oracle International Corporation Method and apparatus for configuring extensible application programming interfaces
EP1314294B1 (en) * 2000-08-25 2005-10-19 Research In Motion Limited System and method for implementing an enhanced transport layer security protocol
WO2002025409A2 (en) 2000-09-21 2002-03-28 Research In Motion Limited Software code signing system and method
US7295836B2 (en) * 2001-03-09 2007-11-13 Research In Motion Limited Advanced voice and data operations in a mobile data communication device
CA2450601C (en) * 2001-06-12 2012-10-16 Research In Motion Limited System and method for compressing secure e-mail for exchange with a mobile data communication device
CA2717229A1 (en) * 2001-06-12 2002-12-19 Research In Motion Limited Certificate management and transfer system and method
ATE375686T1 (de) * 2001-07-12 2007-10-15 Research In Motion Ltd System und verfahren zum datenzugriff für ein mobiles telekommunikationsendgerät
US7526572B2 (en) * 2001-07-12 2009-04-28 Research In Motion Limited System and method for providing remote data access for a mobile communication device
CN103178963A (zh) * 2001-07-16 2013-06-26 捷讯研究有限公司 用于在移动通信设备上支持多证书授权的***和方法
CA2394503A1 (en) * 2001-07-23 2003-01-23 Research In Motion Limited System and method for pushing information to a mobile device
BRPI0211756B1 (pt) * 2001-08-06 2016-09-06 Blackberry Ltd sistema e método para processar mensagens codificadas
US20030063772A1 (en) 2001-09-06 2003-04-03 Smith Joshua R. System and method for authentication and tracking of a workpiece that includes an optically active medium
CA2464361C (en) * 2001-10-25 2010-09-14 Research In Motion Limited Multiple-stage system and method for processing encoded messages
US20040166334A1 (en) 2003-02-26 2004-08-26 Shigeo Kawabata Decorative film-like material
WO2006016407A1 (ja) * 2004-08-12 2006-02-16 Fujitsu Limited Javaアプレット、JARファイル生成方法、JARファイル生成プログラム、JARファイル生成装置
CN102301127B (zh) 2008-12-02 2014-03-26 维斯塔斯风力***有限公司 安装风轮机的方法、风轮机机舱和运输风轮机元件的方法
US20110162074A1 (en) 2009-12-31 2011-06-30 Sap Portals Israel Ltd Apparatus and method for remote processing while securing classified data
US7944079B1 (en) 2010-04-21 2011-05-17 General Electric Company Systems and methods for assembling a gearbox handling assembly for use in a wind turbine
WO2012105971A1 (en) 2011-02-02 2012-08-09 Smith Matthew K Nacelle-mounted maintenance system for wind turbines

Also Published As

Publication number Publication date
EP1626324B1 (en) 2012-04-11
EP2278429A1 (en) 2011-01-26
CA2422917C (en) 2016-03-29
US20190392115A1 (en) 2019-12-26
ES2253426T3 (es) 2006-06-01
ES2253426T5 (es) 2009-12-14
EP1626324A2 (en) 2006-02-15
HK1091665A1 (en) 2007-01-26
US20130145150A1 (en) 2013-06-06
ATE553426T1 (de) 2012-04-15
US20150026457A1 (en) 2015-01-22
US9507920B2 (en) 2016-11-29
CN1541350A (zh) 2004-10-27
EP1626324A3 (en) 2009-06-17
CA2923740C (en) 2018-07-10
DE60115072T3 (de) 2010-04-01
US8489868B2 (en) 2013-07-16
EP1320795A2 (en) 2003-06-25
BR0114066A (pt) 2004-02-10
HK1154427A1 (en) 2012-04-20
CN101694688B (zh) 2014-07-16
US20180330065A1 (en) 2018-11-15
WO2002025409A2 (en) 2002-03-28
EP1626325B1 (en) 2010-09-01
WO2002025409A3 (en) 2002-06-13
US20120179917A1 (en) 2012-07-12
HK1153829A1 (en) 2012-04-05
ES2465967T3 (es) 2014-06-09
DE60142992D1 (de) 2010-10-14
EP1320795B1 (en) 2005-11-16
CA2923740A1 (en) 2002-03-28
ES2360005T3 (es) 2011-05-31
HK1055629A1 (en) 2004-01-16
DE60115072T2 (de) 2006-07-27
EP2284644B1 (en) 2014-03-05
HK1091666A1 (en) 2007-01-26
DE60142991D1 (de) 2010-10-14
DE60115072D1 (de) 2005-12-22
CA3006733A1 (en) 2002-03-28
CN101694687B (zh) 2017-04-12
BRPI0114066B1 (pt) 2016-08-02
CN100573402C (zh) 2009-12-23
US9922175B2 (en) 2018-03-20
CN101714201A (zh) 2010-05-26
EP2306260A2 (en) 2011-04-06
EP2306259A2 (en) 2011-04-06
CA2422917A1 (en) 2002-03-28
EP2306260A3 (en) 2011-07-20
US11030278B2 (en) 2021-06-08
EP1626326A3 (en) 2009-06-17
ATE479931T1 (de) 2010-09-15
HK1156409A1 (en) 2012-06-08
EP2306260B1 (en) 2014-02-26
EP1320795B2 (en) 2009-08-26
ATE310271T1 (de) 2005-12-15
ES2385565T3 (es) 2012-07-26
AU2001293563A1 (en) 2002-04-02
EP2306259B1 (en) 2015-05-27
EP1626326A2 (en) 2006-02-15
ES2545791T3 (es) 2015-09-15
ATE479930T1 (de) 2010-09-15
HK1091667A1 (en) 2007-01-26
US20180211015A1 (en) 2018-07-26
US10437967B2 (en) 2019-10-08
CN101694688A (zh) 2010-04-14
US10032007B1 (en) 2018-07-24
US8984278B2 (en) 2015-03-17
EP1626325A3 (en) 2009-06-17
EP1626325A2 (en) 2006-02-15
CN101694687A (zh) 2010-04-14
EP1626326B1 (en) 2010-09-01
US20170076071A1 (en) 2017-03-16
EP2278429B1 (en) 2014-03-12
EP2284644A1 (en) 2011-02-16
CN101714201B (zh) 2016-02-03
EP2306259A3 (en) 2011-07-20
US20040025022A1 (en) 2004-02-05

Similar Documents

Publication Publication Date Title
ES2352556T3 (es) Sistema y método de firma mediante código por software.
US7797545B2 (en) System and method for registering entities for code signing services
US20070074033A1 (en) Account management in a system and method for providing code signing services
US20070074031A1 (en) System and method for providing code signing services
Bush SAVAJE™ OS